Symptoms
- On-premises to VPC traffic fails, or moves to the backup VPN with higher latency.
- CloudWatch
ConnectionState= 0 orVirtualInterfaceBgpStatusdown.
1. Connection layer
aws directconnect describe-connections \
--query "connections[].{id:connectionId, name:connectionName, state:connectionState, loc:location, bw:bandwidth}" --output table
connectionState | Meaning |
|---|---|
available | Physical/logical link up |
down | Layer 1/2 problem: cross-connect, optics, provider circuit |
ordering / requested / pending | Not provisioned yet (hosted connections need acceptance) |
deleted / rejected | Someone removed it or didn't accept |
down → check your router interface, light levels on the optics, and open a case with your colocation/provider. AWS Health may show maintenance at the location.
2. Virtual interface and BGP
aws directconnect describe-virtual-interfaces \
--query "virtualInterfaces[].{vif:virtualInterfaceId, type:virtualInterfaceType, state:virtualInterfaceState, vlan:vlan, asn:asn, bgp:bgpPeers[].bgpStatus}" --output table
| Finding | Check |
|---|---|
VIF down, connection available | VLAN tag mismatch on your router |
BGP down | Peer IPs, your ASN, MD5 auth key, TCP 179 not filtered |
BGP up, no traffic | Advertised prefixes, route propagation, prefix limits |
aws directconnect describe-virtual-interfaces --virtual-interface-id dxvif-abc123 \
--query "virtualInterfaces[0].{amazonAddress:amazonAddress, customerAddress:customerAddress, authKey:authKey, routeFilterPrefixes:routeFilterPrefixes}"
Compare with your router config. A changed MD5 key on one side is a classic cause after maintenance.
3. Prefix limits
If you advertise more prefixes than the virtual interface allows, the BGP session goes down (idle). Check the current Direct Connect quotas for routes per BGP session on private and transit VIFs, count what you advertise, and summarise.
router# show ip bgp neighbors 169.254.10.1 advertised-routes | count
4. Gateway and VPC routing
aws directconnect describe-direct-connect-gateway-attachments --direct-connect-gateway-id <dxgw-id> --output table
aws ec2 describe-route-tables --filters Name=vpc-id,Values=vpc-0123 \
--query "RouteTables[].Routes[?GatewayId!='local'].[DestinationCidrBlock,GatewayId,TransitGatewayId,State,Origin]" --output table
- VGW route propagation must be enabled on VPC route tables (private VIF via VGW).
- For a transit VIF, check the Transit Gateway route table has the on-prem prefixes and the allowed prefixes on the DX gateway association include your VPC CIDRs.
5. Failover
With a second connection at another location, check both BGP sessions and that your router prefers the healthy one. With a VPN backup, AWS prefers Direct Connect routes over VPN for the same prefix; when DX is down, confirm VPN tunnels are UP and that more specific routes aren't still pointing at the dead path.
aws ec2 describe-vpn-connections --query "VpnConnections[].VgwTelemetry[].[OutsideIpAddress,Status,StatusMessage]" --output table
Prevent it next time
- Two connections at two locations for critical workloads (the AWS resiliency recommendations).
- CloudWatch alarms on
ConnectionStateandVirtualInterfaceBgpStatus. - Use BFD for faster failover and test failover twice a year.