AWS Cloud
AWS owns one end: building Direct Connect from the on-prem side, step by step
From the cross-connect patch outward — router, optics, VLANs, BGP, routing policy, encryption — Direct Connect is your build, and that's exactly where every bring-up fails.
Scope & versions: AWS Direct Connect as documented mid-2026 (DX User Guide), with Cisco IOS-XE and Juniper Junos config patterns. Version-sensitive values — optics per speed tier, prefix limits, MTU, BFD timers, MACsec availability, BGP community values, optical dBm ranges — are attributed inline. Re-verify against the current User Guide before you order or cut over.
The clicks that lie — where AWS's job ends and yours begins
The Direct Connect console makes it look like a few clicks: request a connection, create a virtual interface, done. Then the port comes up and BGP won't establish — or it establishes and drops an hour later — and none of it is in the console. It's your VLAN tag, your MD5 key, your prefix count, your MTU. AWS owns exactly one end of this circuit: from its Direct Connect device inward. Everything from the cross-connect patch outward is yours to order, cable, and configure. This guide walks that on-prem build end to end, with the router config and the failures that actually bite.
TL;DR
- The demarcation is the cross-connect. AWS owns from its DX device inward; the router, optics, fiber, VLAN, BGP, routing policy, and encryption are all yours — so bring-up failures are almost always on your side of the patch.
- The connection model sets the workload. A dedicated port (1/10/100/400 Gbps) means you do the full physical build and order the cross-connect; a hosted connection (50 Mbps–25 Gbps) means a partner already did the physical and you peer over one VIF that AWS polices.
- Each VIF is a VLAN plus a BGP session you configure: the 802.1Q tag, the /30 or /31 peer IPs, your ASN (AWS is 7224 on public VIFs), and a matching MD5 key. A mismatch on any one and BGP never comes up.
- The limits are unforgiving: advertise more than 100 routes on a private or transit VIF and the whole BGP session goes idle; MTU must match on both ends (9001 private, 8500 transit); above 1 Gbps, turn auto-negotiation off.
- Resiliency and encryption are on-prem work too: a second device in a second DX location for the 99.99% SLA, BFD for sub-second failover, and MACsec (dedicated 10/100/400 G) or an IPsec VPN over a public VIF — and you must test failover before you trust it.
The one line to keep in your head: from the AWS DX router inward — the backbone, the gateways, the Regions — is theirs. From the cross-connect patch outward — router, optics, fiber, BGP config, routing policy — is yours. The colo owns the physical patch in the middle. Almost everything that goes wrong at bring-up lives in the part AWS can't see.
What you're building, and what you need in place first
Before the phases, hold the whole picture. A Direct Connect deployment is a chain, and your team owns most of the links in it: an edge router with the right optics, a cross-connect through a colo meet-me room, an AWS DX port, then a band of virtual interfaces — each a VLAN with its own BGP session — reaching a VPC, the Transit Gateway, or AWS's public service prefixes.
One detail the corridor above hides: your edge router usually doesn't sit in your data center — it lives in the Direct Connect colo, and a backhaul circuit carries traffic the rest of the way to where your servers actually are. That last mile is yours too, and it is often the real bottleneck and the single point of failure.
Prerequisites — have these before you order
| Prerequisite | Why it matters |
|---|---|
| Presence in a Direct Connect location | Your own cage or rack in the facility, or a Direct Connect Partner / provider who has it. No presence means you cannot order a cross-connect yourself. |
| A router that speaks BGP + BGP MD5 | Any modern edge router (Cisco IOS-XE, Juniper, Arista). BFD support for fast failover; MACsec-capable ports for L2 encryption. |
| Single-mode fiber + the right optic | One transceiver per speed tier (see Phase 4). Wrong wavelength or reach and the link stays dark. |
| An ASN | A public ASN you own, or a private one (64512–65534, or 4-byte 4200000000–4294967294). It must differ from the AWS-side ASN. |
| A peering-IP plan | A /30 or /31 per VIF (RFC 3021 31-bit is supported), or let AWS assign a /29 from 169.254.0.0/16. |
| Public prefixes (public VIF only) | Ranges you own and that are registered to you in the regional registry — AWS verifies ownership. |
| An AWS account | To place the order and create VIFs. |
The phases below run in bring-up order, and each one names who does the work — because the split between your team, the colo, and the AWS console is exactly where hand-offs drop.
Phase 1 — Dedicated or hosted: the choice that sets everything
This is the one decision that reshapes the whole build, so make it first. A dedicated connection is a physical port that's yours alone. You order it from AWS at 1, 10, 100, or 400 Gbps and you supply the router, the optics, and the cross-connect into the Direct Connect location. You get the full physical build — and the full VIF budget: up to 50 private/public VIFs plus 4 transit VIFs on one port. Provisioning realistically takes weeks, most of it circuit and cross-connect lead time, not AWS.
A hosted connection is capacity a partner carves off their own port for you. The Direct Connect Partner has already done the physical work — their gear, their cross-connect — so you contact them, they provision it, and it appears in your console to accept. Hosted speeds run 50 Mbps–25 Gbps (sub-1G is hosted-only). The trade: a hosted connection carries exactly one VIF, and AWS traffic-polices it, so bursts above your rate get dropped.
| Dedicated | Hosted | |
|---|---|---|
| Speeds | 1 / 10 / 100 / 400 Gbps | 50 Mbps – 25 Gbps |
| Who runs the physical / cross-connect | You (with the colo) | The partner |
| Presence in the DX location | Required (or a provider who has it) | Not required |
| VIFs per connection | 50 private/public + 4 transit | 1 (policed) |
| Lead time | Weeks | Hours–days |
| How you get it | Order in the console | Partner provisions; you accept |
The honest read: if you don't already have gear in a Direct Connect location, a hosted connection is faster and lets you skip most of Phases 2–4 — at the cost of the multi-VIF budget and some burst headroom. If you need 100 Gbps, many VIFs, MACsec, or a LAG, you're on dedicated and you're doing the physical build. The rest of this guide assumes dedicated, since that's where the on-prem work lives; hosted users can jump to Phase 5.
Phases 2–3 — Order the port, pull the LOA-CFA, run the cross-connect
Goal: a provisioned AWS port, the one document that unlocks the physical build, and a lit fiber path from your panel to AWS's.
In the console you request a dedicated connection: pick the Direct Connect location, the port speed, and whether you're reaching it through a partner. AWS reviews the request — up to 72 business hours — and may email for detail (you have 7 days to respond or it's deleted). You can't change the speed later; to change it you delete and recreate. What you're waiting for is the LOA-CFA, the Letter of Authorization and Connecting Facility Assignment: a signed, watermarked PDF naming the AWS patch panel and port assignment that authorizes the facility to run a cross-connect to it. That single artifact turns an AWS order into a physical build.
The cross-connect itself is a fiber patch inside the facility's meet-me room (MMR), joining your patch panel to AWS's. You hand the LOA-CFA to the colo (or your partner) and they run it — AWS keeps physical separation between its cage and yours through the MMR's structured cabling. If you have no equipment in the location, you cannot order this yourself; that's the whole reason presence-or-partner is a prerequisite.
① Order the dedicated port in the AWS console. ② AWS issues the LOA-CFA — the authorization to patch. ③ The colo runs the cross-connect in the meet-me room. ④ Light appears on your interface.
The 90-day clock starts at the LOA-CFA. Billing begins when the port goes active or 90 days after the LOA-CFA is issued, whichever comes first. If the port isn't up at 90 days, AWS emails a 10-day deletion warning; miss that and the port is deleted and you restart. Don't pull the LOA until your cross-connect and router work is actually scheduled. (AWS Direct Connect User Guide, dedicated connections — version-sensitive.)
Validation: you should see light on the interface once the patch is complete. Ask the colo for an optical signal report and check the receive level is in spec. One practitioner troubleshooting write-up cites roughly −14.4 to +2.50 dBm for 1–10 Gbps and −4.3 to +4.5 dBm for 100 Gbps (awsforengineers.com — practitioner figures; treat as a sanity range and confirm against your optic's datasheet and your colo). No light means the patch isn't done, the strands are swapped (Tx/Rx), or the optic is wrong — the next phase. Rollback: nothing to undo on your router yet; if the location or speed was wrong, delete the AWS connection within the 90-day window and re-order.
Phase 4 — Cable and light the router: fiber, optics, port settings
Goal: a clean Layer-1/Layer-2 link — interface up, 802.1Q trunking, no auto-negotiation surprises. The optic has to match the speed tier exactly. Direct Connect is single-mode fiber only, with a specific transceiver per speed; get the wavelength or reach wrong and the link stays dark.
| Port speed | Required optic | Fiber |
|---|---|---|
| 1 Gbps | 1000BASE-LX (1310 nm) | Single-mode |
| 10 Gbps | 10GBASE-LR (1310 nm) | Single-mode |
| 100 Gbps | 100GBASE-LR4 | Single-mode |
| 400 Gbps | 400GBASE-LR4 | Single-mode |
(AWS User Guide — network requirements; version-sensitive, verify the current table.)
Two more physical requirements from the same doc. First, 802.1Q VLAN encapsulation must work across the entire path, including any intermediate switch — Direct Connect delivers your VIFs as tagged VLANs on a trunk, so a device that strips tags kills it. Second, auto-negotiation is endpoint-dependent: AWS says it "might need to be enabled or disabled" depending on the DX endpoint, and the practical rule practitioners land on is that above 1 Gbps you disable auto-negotiation and hard-set speed and full-duplex on both the port and any transport in between.
interface TenGigE0/0/0
description AWS-Direct-Connect-dxcon-xxxx
no negotiation auto ! hard-set above 1G; do not auto-negotiate
mtu 9100 ! headroom for jumbo VIFs + VLAN tag + FCS
no shutdown
!
! 802.1Q comes from the per-VIF subinterfaces in Phase 5 —
! this physical interface is the dot1q trunk that carries them.set interfaces xe-0/0/0 description "AWS-Direct-Connect-dxcon-xxxx"
set interfaces xe-0/0/0 gigether-options no-auto-negotiation
set interfaces xe-0/0/0 mtu 9192
set interfaces xe-0/0/0 flexible-vlan-tagging
set interfaces xe-0/0/0 encapsulation flexible-ethernet-servicesTwo silent killers at Layer 1/2: the wrong optic (a 10GBASE-LR where a 1000BASE-LX belongs, or multimode instead of single-mode) leaves the link dark, and auto-negotiation left on above 1 Gbps gives you light but no line protocol. Check show interfaces ... transceiver for the right optic and a receive level in spec. (dBm ranges are practitioner figures — verify with your colo.)
Validation: interface line protocol up, the correct optic reported, receive light in spec. Rollback: shut the interface — nothing downstream exists yet.
Phase 5 — Stand up each VIF: VLAN, peer IP, ASN, MD5
Goal: an established eBGP session per virtual interface. A VIF is one VLAN carrying one eBGP session. You create it in the console (or the partner does, for hosted) and AWS hands back the parameters; your job is to mirror them exactly on a dot1q subinterface. Three VIF types, and which you build depends on what you're reaching:
| VIF type | Reaches | AWS-side attach point |
|---|---|---|
| Private | A VPC over private IPs | Virtual private gateway, or a Direct Connect gateway → many VPCs/Regions |
| Transit | One or more Transit Gateways (or Cloud WAN) | Direct Connect gateway → Transit Gateway |
| Public | All AWS public service prefixes (S3, public EC2, API endpoints) | AWS public network; AWS-side ASN is 7224 |
The per-VIF parameters you configure on-prem:
| Parameter | Value / rule |
|---|---|
| VLAN ID (802.1Q) | 1–4094, unique on the connection, immutable after create. Hosted: the partner supplies it. |
| Peer IPs | A /30 or /31 pair (31-bit supported, RFC 3021). Your RFC 1918 addresses, or an AWS-assigned /29 from 169.254.0.0/16. Point-to-point, for eBGP peering only. |
| Your ASN | 1–4294967294. Private: 64512–65534 or 4-byte 4200000000–4294967294. Must differ from the AWS-side ASN. |
| AWS-side ASN | Public VIF: always 7224. Private/transit: the VGW or DX-gateway ASN you set when you created the gateway. |
| BGP MD5 key | You provide it or AWS generates it; it's in the downloadable router-config file. MD5 is on by default and can't be turned off. Must match to the character. |
Here's a private VIF on both a Cisco and a Juniper edge — the heart of the on-prem config: a subinterface, the peer, the ASN, the key.
interface TenGigE0/0/0.100
description AWS-PRIVATE-VIF
encapsulation dot1Q 100
ip address 169.254.100.2 255.255.255.252 ! AWS side = .1
!
router bgp 65001
neighbor 169.254.100.1 remote-as 64512 ! AWS VGW/DXGW ASN
neighbor 169.254.100.1 password 7hisMustMatchExactly
address-family ipv4
neighbor 169.254.100.1 activate
network 10.20.0.0 mask 255.255.0.0 ! advertise your on-prem prefix
exit-address-familyset interfaces xe-0/0/0 unit 100 vlan-id 100
set interfaces xe-0/0/0 unit 100 family inet address 169.254.100.2/30
set protocols bgp group AWS-DX type external
set protocols bgp group AWS-DX peer-as 64512
set protocols bgp group AWS-DX neighbor 169.254.100.1 authentication-key "7hisMustMatchExactly"
set policy-options policy-statement ADV-ONPREM term 1 from route-filter 10.20.0.0/16 exact
set policy-options policy-statement ADV-ONPREM term 1 then accept
set protocols bgp group AWS-DX export ADV-ONPREMA public VIF differs in three ways: the AWS peer ASN is 7224, you peer over public IPs you own (not link-local/private), and you must advertise at least one public prefix you're registered for. Everything else — VLAN, MD5, dot1q — is the same shape.
The mismatch trio. If the session won't reach Established, the usual suspects are all on-prem: a VLAN mismatch (ARP won't even resolve), an ASN typo, or an MD5 key that's off by a single character. AWS's own troubleshooting confirms any one of those — or a filtered TCP/179 — is enough to hang the session. Rollback: remove the subinterface and the neighbor; the VIF sits idle on the AWS side with no charge beyond the port.
Phase 6 — Shape the routing: prefixes, limits, communities, MTU
Goal: your prefixes advertised, AWS's return path where you want it, and no self-inflicted session drops.
The prefix limit is the trap. A private or transit VIF accepts 100 routes each for IPv4 and IPv6 from you. Advertise more and the BGP session doesn't just ignore the extras — it goes to idle and the whole VIF stops passing traffic until you get back under the limit. A public VIF allows 1,000 routes (this one can't be raised). Summarize before you advertise; don't leak a full internal table. (AWS Direct Connect quotas — version-sensitive; re-check the current numbers.)
Return-path control uses BGP communities and prefix specificity. AWS won't honor arbitrary knobs, but it publishes a specific set. On private/transit VIFs, tag your advertised prefixes with a local-preference community — 7224:7100 (low), 7224:7200 (medium), or 7224:7300 (high) — to steer AWS→on-prem return traffic; these are evaluated before AS_PATH. On public VIFs, use a scope community — 7224:9100 (local Region), 7224:9200 (continent), or 7224:9300/untagged (global) — to control how far AWS propagates your prefixes. Longest-prefix and AS_PATH still work normally.
router bgp 65001
address-family ipv4
neighbor 169.254.100.1 send-community
neighbor 169.254.100.1 route-map SET-LP-HIGH out
exit-address-family
!
ip prefix-list ONPREM seq 5 permit 10.20.0.0/16
route-map SET-LP-HIGH permit 10
match ip address prefix-list ONPREM
set community 7224:7300 ! high local-pref: AWS prefers this VIF for return
! backup VIF: same shape, set community 7224:7100 (low)route-map PUBLIC-SCOPE permit 10
match ip address prefix-list MY-PUBLIC
set community 7224:9200 ! continent scope (7224:9100 = Region, 9300 = global)
!
router bgp 65001
address-family ipv4
neighbor send-community
neighbor route-map PUBLIC-SCOPE out
exit-address-family Private-ASN prepending on a public VIF does nothing outward. If you use a private ASN on a public VIF, AWS replaces it with 7224 when re-advertising — so any AS-path prepend is stripped and has no effect on external route selection. Use a public ASN if you need prepending to be visible. (AWS routing-and-bgp docs.)
MTU is part of routing hygiene. A private VIF supports 1500 or 9001; a transit VIF supports 1500 or 8500 (Transit Gateway caps jumbo at 8500). Both ends must agree — if two VIFs advertise the same route with different MTUs, AWS falls back to 1500. Set your subinterface MTU to match the VIF, and remember that flipping a VIF to jumbo can bounce the underlying physical link for up to ~30 seconds, affecting every VIF on it. (AWS User Guide — version-sensitive.) Validation: route counts under the limit (show bgp summary), your prefixes visible from AWS, and a jumbo-frame ping with the DF bit set succeeding end-to-end if you enabled it.
Phase 7 — Make it resilient, and encrypt it
Goal: survive a device, fiber, or location failure — and protect the traffic on the wire. AWS's Resiliency Toolkit is a console wizard, but what it's really choosing is how many connections you build and where. The models map to SLAs:
| Model | What you build | Protects against | SLA |
|---|---|---|---|
| Maximum resiliency | Separate connections on separate devices in more than one location | Device, link, and full-location failure | 99.99% |
| High resiliency | Two single connections in two separate locations | Fiber cut or device failure; helps with location loss | 99.9% |
| Development & test | Separate connections on separate devices in one location | Device failure only | — |
The wizard enforces the useful part — it won't let you terminate both connections on the same AWS DX device, which is the failure mode people accidentally build. To bundle multiple ports at one location into one logical link, use a LAG (Link Aggregation Group): same speed on every member, up to 4 members below 100 Gbps and 2 at 100 Gbps. A LAG gives you more bandwidth and member-level redundancy, but it's still one location — not a substitute for a second site.
① A second device in a second location is what buys the 99.99% SLA. ② A LAG bundles ports at one location — more bandwidth, not a second site. ③ BFD on your router is the fast-failover trigger. ④ MACsec encrypts the cross-connect; IPsec over a public VIF encrypts end-to-end.
BFD: the piece you have to enable yourself
Redundant links are useless if failover is slow. Asynchronous BFD is automatically enabled on the AWS side for every VIF — but it does nothing until you configure it on your router. AWS uses a minimum interval of 300 ms and a multiplier of 3, so a dead link is detected in roughly 900 ms instead of waiting out BGP's default hold timer. (AWS re:Post, enable BFD for Direct Connect — timers version-sensitive.)
interface TenGigE0/0/0.100
bfd interval 300 min_rx 300 multiplier 3
!
router bgp 65001
neighbor 169.254.100.1 fall-over bfdset protocols bgp group AWS-DX bfd-liveness-detection minimum-interval 300
set protocols bgp group AWS-DX bfd-liveness-detection multiplier 3Then actually test it. The Toolkit has a failover test that brings the BGP peering down on AWS's side so you can watch traffic move to the standby VIF. Run it before you depend on the redundancy — an untested failover path is a guess.
Encryption: MACsec on the port, or IPsec over a public VIF
Direct Connect is private, but it is not encrypted by default. Two options, both needing on-prem work:
- MACsec — IEEE 802.1AE Layer-2 encryption over the cross-connect, between your router and the AWS DX device. Available on dedicated 10/100/400 Gbps connections at selected locations (not hosted), and your edge port must support it. You generate a CKN/CAK pair (hex, 64 characters, AES-256), associate it with the connection, and provision the same pair on your router. SCI must be on; 100/400 Gbps require Extended Packet Numbering (GCM-AES-XPN-256). Default mode is
should_encrypt(falls back to clear if negotiation fails);must_encryptis stricter but drops all traffic if MACsec can't establish. (AWS MACsec docs — availability/cipher details version-sensitive.) - IPsec VPN over a public VIF — the portable option, and the only one for hosted or sub-1G. You bring up a public VIF, then run an AWS Site-to-Site VPN (or a self-managed tunnel) to an AWS VPN endpoint's public IP over that VIF. It's true end-to-end encryption terminating on your customer gateway, at the cost of tunnel MTU/throughput overhead. MACsec, by contrast, only protects the point-to-point cross-connect, not multiple segments end-to-end.
Phase 8 — Validate the whole chain, and test failover
Work Layer 1 up, because a failure at a lower layer masks everything above it. Interface and optic first, then the tag, then BGP, then reachability, then the failover you can't assume works until you've watched it.
show interfaces TenGigE0/0/0 transceiver detail ! optic present, Rx light in spec
show interfaces TenGigE0/0/0.100 ! subinterface up/up, dot1q 100
show bgp ipv4 unicast summary ! neighbor state = Established
show bgp ipv4 unicast neighbors 169.254.100.1 advertised-routes
show bgp ipv4 unicast neighbors 169.254.100.1 routes ! received count under 100
show bfd neighborsshow interfaces diagnostics optics xe-0/0/0 ! Rx power in spec
show bgp neighbor 169.254.100.1 ! state Established, prefix counts
show route receive-protocol bgp 169.254.100.1
show route advertising-protocol bgp 169.254.100.1
show bfd session- L1: interface up, correct optic, receive light in spec (optical report from the colo).
- L2: 802.1Q tag correct, ARP resolves to the AWS peer's MAC on the right VLAN.
- L3/BGP: session
Established, expected routes in and out, received count under the limit. - Reachability:
tracerouteshows the Direct Connect hop; a test EC2 instance in the attached VPC answers a ping (security group allowing ICMP). - Resiliency: run the Toolkit failover test and confirm traffic moves to the standby VIF and back.
Where bring-up dies — the on-prem gotchas
Every one of these lives on your side of the cross-connect. They're roughly in bring-up order, which is also the order they'll bite you.
| Symptom | Cause | Fix |
|---|---|---|
| Port deleted before you cut over | LOA-CFA pulled too early; 90-day clock ran out | Only pull the LOA once the cross-connect is scheduled |
| Console shows the connection but no light | Cross-connect never completed in the MMR | Verify against the LOA-CFA; chase the colo |
| No light / dark link | Tx-Rx strands swapped, or wrong optic (multimode, wrong tier) | Get an optical report; confirm single-mode + the tier's optic |
| Light present, interface never up | Auto-negotiation left on above 1 Gbps | Disable auto-neg; hard-set speed and full-duplex |
| ARP to the AWS peer never resolves | VLAN mismatch, or 802.1Q stripped by an intermediate device | Match the tag; trunk it on every device in the path |
| BGP hangs short of Established | ASN or MD5 mismatch, wrong peer IP, or TCP/179 filtered | One stray MD5 character is enough — check all four, open TCP/179 |
| Whole VIF goes dark | Prefix limit exceeded (>100 on private/transit) → session idle | Summarize; get back under 100 routes |
| Small packets pass, large ones black-hole | MTU mismatch (9001/8500 vs 1500) | Match the subinterface MTU to the VIF on both ends |
| Return flow dropped by a stateful firewall | Asymmetric routing across two connections | Use local-pref communities to make the return path deterministic |
| Failover doesn't fail over | BFD not enabled on your router; path never exercised | Enable BFD; run the Toolkit failover test |
References
- AWS Direct Connect User Guide — What is Direct Connect? (network requirements, VIF types): https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html
- AWS Direct Connect User Guide — Dedicated and hosted connections: https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithConnections.html
- AWS Direct Connect User Guide — Dedicated connections (LOA-CFA, 90-day rule, port speeds): https://docs.aws.amazon.com/directconnect/latest/UserGuide/dedicated_connection.html
- AWS Direct Connect User Guide — Hosted connections (speeds, policing): https://docs.aws.amazon.com/directconnect/latest/UserGuide/hosted_connection.html
- AWS Direct Connect User Guide — Virtual interfaces (VLAN, peer IP, ASN, MD5, MTU): https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html
- AWS Direct Connect User Guide — Routing policies and BGP communities (7224:xxxx, local pref, scope): https://docs.aws.amazon.com/directconnect/latest/UserGuide/routing-and-bgp.html
- AWS Direct Connect User Guide — Quotas (prefix limits, LAG members, VIF counts): https://docs.aws.amazon.com/directconnect/latest/UserGuide/limits.html
- AWS Direct Connect User Guide — Resiliency Toolkit (Max/High/Dev-test, SLAs): https://docs.aws.amazon.com/directconnect/latest/UserGuide/resilency_toolkit.html
- AWS Direct Connect User Guide — High resiliency walkthrough (VIF params, RFC 1918/3927): https://docs.aws.amazon.com/directconnect/latest/UserGuide/high_resiliency.html
- AWS Direct Connect User Guide — MACsec (CKN/CAK, AES-256, XPN, SCI, modes): https://docs.aws.amazon.com/directconnect/latest/UserGuide/MACsec.html
- AWS Networking Blog — Direct Connect Layer 1 explained (MMR, cross-connect, optics): https://aws.amazon.com/blogs/networking-and-content-delivery/aws-direct-connect-layer-1-explained-from-data-centers-to-cloud-connectivity/
- AWS re:Post — Enable BFD for a Direct Connect connection (300 ms × 3, Cisco/Juniper): https://repost.aws/knowledge-center/enable-bfd-direct-connect
- AWS re:Post — Troubleshoot BGP issues over Direct Connect: https://repost.aws/knowledge-center/troubleshoot-bgp-dx
- AWS Well-Architected Hybrid Networking Lens — Direct Connect and IPsec VPN: https://docs.aws.amazon.com/wellarchitected/latest/hybrid-networking-lens/aws-direct-connect-and-ipsec-vpn.html
- awsforengineers.com — Troubleshooting AWS Direct Connect step-by-step (light levels, bring-up failures): https://awsforengineers.com/blog/troubleshooting-aws-direct-connect-step-by-step/
- Orixcom — Direct Connect Dedicated vs Hosted comparison: https://blog.orixcom.com/aws-direct-connect-dedicated-vs-hosted-detailed-comparison