Skip to content
Direct ConnectTransit Gateway9 min

Direct Connect: Virtual Interfaces, Gateways, and Prefixes

What terminates on what, and which direction each prefix control acts in. The allowed-prefixes field means opposite things depending on which gateway you set it on.

Reviewed Aug 19, 2026

Direct Connect has more objects than it looks like it has, and several of its limits are counted at a different level from the one you configure them on. This sheet is the map.

Virtual interface types

A VIF is one 802.1Q VLAN carrying its own BGP session, and you can run one session per address family on it. The type decides which gateway it may terminate on, which in turn decides what it can reach.

TypeTerminates onReachesSiteLink
privateA virtual private gateway directly, or a Direct Connect gatewayPrivate addresses in attached VPCsOnly when on a DX gateway
transitA Direct Connect gateway, which associates to Transit GatewaysEverything behind those Transit GatewaysSupported
publicNothing — no gateway is involvedAWS public service endpoints, over BGPNot supported

A transit VIF works on a dedicated or hosted connection of any speed, and can terminate on a Cloud WAN core network as well as a Transit Gateway.

Where each object sits

The scopes do not line up, and that is the source of most confusion here. A Direct Connect gateway is a global object. An association from it is to one regional gateway. Two different prefix limits are enforced at two different levels.

Objects, their scope, and what is counted at each level
Direct Connect connectionOne locationThe physical port. Dedicated or hosted.

counted here: 50 private/public VIFs on dedicated, plus 4 transit. Exactly 1 VIF on hosted.

Virtual interfaceOne VLANOne BGP session per address family.

counted here: inbound prefixes from on-prem: 100 per family by default, raisable to 1,000

Direct Connect gatewayGlobalNot in any Region. VIFs in different locations can terminate on the same one.

counted here: a 10,000 prefix pool shared across every attached VIF, and 30 VIF attachments

Association to a virtual private gatewayOne Region

counted here: allowed prefixes, acting as a filter

Association to a Transit GatewayOne Region

counted here: allowed prefixes, acting as static origination — 200 prefixes, IPv4 and IPv6 combined

Inbound limits are counted per VIF. Allowed prefixes are counted per association. Checking headroom on one tells you nothing about the other.

Allowed prefixes mean opposite things

Same field name, same console screen, opposite semantics depending on the gateway type at the far end of the association. This is the single most useful thing on this sheet.

Virtual private gatewayTransit Gateway
Behaves asA filter on what AWS would otherwise advertiseStatic origination of routes that did not exist
You receiveThe actual VPC CIDR, if permittedThe allowed prefix itself
Entry must beThe same as, or wider than, the VPC CIDRAnything at all
Advertised fromThe VPCThe DX gateway's ASN

Worked from the same starting point in both columns — a VPC with CIDR 10.0.0.0/16:

Allowed prefixes set toOver a VGW association you receiveOver a TGW association you receive
22.0.0.0/24Nothing. Not the same as or wider than the VPC CIDR22.0.0.0/24
10.0.0.0/24Nothing. Narrower than the VPC CIDR10.0.0.0/24
10.0.0.0/1510.0.0.0/16 — the VPC CIDR, not the /1510.0.0.0/15
10.0.0.0/810.0.0.0/1610.0.0.0/8

On a Transit Gateway association you can advertise a prefix with no relationship to anything attached — 8.8.8.8/32 is accepted — because AWS provisions exactly what the list says rather than filtering what exists. Two consequences worth holding onto: overlaps are rejected when multiple Transit Gateways associate to one DX gateway, so you cannot set 0.0.0.0/0 on a second association while a first holds 10.1.0.0/16; and editing the list does not drop the BGP session. The association moves from associated to updating, and only traffic using the prefix you touched is affected.

IPv6 fails closed where IPv4 fails open

Omitting the list is not a neutral act, and the two families disagree about what it means. On IPv4 no filter is equivalent to 0.0.0.0/0 — everything is advertised. On IPv6, per the IPv6 on AWS whitepaper, specifying no value blocks all advertisements. An IPv6 allowed prefix must also be /64 or less specific, and ::/0 is not accepted.

So a dual-stack association with an empty allowed-prefixes list has working IPv4 and silently dead IPv6.

Inbound prefix budgets

The other direction, from on-premises into AWS. Covered properly in the hybrid connectivity guide — the short version is that exceeding your allocation takes the BGP session to idle rather than dropping the excess prefixes.

ScopeLimit
Per BGP session, private or transit VIF100 per address family, raisable to 1,000
Per BGP session, public VIF1,000
Per DX gateway10,000 across all attached VIFs, and 30 VIF attachments
Consumed by an AWS Interconnect connection2,000 of that 10,000

MTU

PathValues
DX link layer Ethernet frame1522 or 9023 bytes
Private VIF1500 or 9001
Transit VIF1500 or 8500
Transit Gateway jumbo support8500 only

Two behaviours that are easy to be caught by. If two private VIFs advertise the same route with different MTU values, or a Site-to-Site VPN advertises that route as well, 1500 is used — the lower value wins and your jumbo configuration is quietly inactive. And raising a VIF to jumbo can trigger an update to the underlying physical connection, which disrupts every VIF on that connection for up to 30 seconds. That is a change-window operation, not a safe tweak.

Jumbo frames apply only to propagated routes over Direct Connect and static routes via Transit Gateway. Every current EC2 instance type supports them except C1, CC1, T1, and M1.

Quotas that shape the design

QuotaValueAdjustable
VIFs per hosted connection1, of any typeNo
Private or public VIFs per dedicated connection50No
Transit VIFs per dedicated connection4No
Members per LAG4No
Transit Gateways per DX gateway6No
DX gateways per Transit Gateway20No
VIFs per DX gateway30No
Active connections per location, per Region, per account10Contact AWS

The hosted-connection row is the one that changes architectures. A hosted connection carries exactly one virtual interface, full stop, so "we will add a transit VIF alongside the private one later" is not available on it. That decision is made when the connection is ordered, not afterwards.

ASN collisions

The Amazon-side ASN depends on where the VIF terminates, which catches people who move a private VIF onto a DX gateway and keep their BGP config:

  • Private VIF straight onto a virtual private gateway → the Amazon side uses the VGW's ASN.
  • Private VIF onto a DX gateway → the Amazon side uses the DX gateway's ASN.

Two rules follow. You cannot use the same ASN on both ends of a VIF. And associating a Transit Gateway with a DX gateway requires the two to have different ASNs — since 64512 is the default for both, a pair of defaults fails the association outright.

Also worth knowing before you debug a missing route: a point-to-point /30 used for BGP peering, such as 192.168.0.0/30, does not propagate to a Transit Gateway. And a DX gateway already associated with a VGW or attached to a private VIF cannot then be attached to a Transit Gateway.

SiteLink connects two Direct Connect points of presence over the AWS backbone without the traffic transiting a Region. Private and transit VIFs only, never public, and never a private VIF attached directly to a virtual private gateway — it needs a DX gateway. Not available in GovCloud (US) or the China Regions, and separately billed.

The part that matters operationally is that enabling it changes how AWS picks an egress location:

  • SiteLink off. Traffic from a virtual or Transit Gateway prefers a DX location associated with that Region, even when a location associated with a different Region advertises a shorter AS path.
  • SiteLink on. Traffic prefers the lower AS path length regardless of which Region the location is associated with.

That first bullet is the mechanism behind the AS-path-prepending-does-nothing trap in the hybrid connectivity guide. Turning SiteLink on changes the answer.

One more: SiteLink does not work if your on-premises router advertises the same route to AWS on multiple virtual interfaces.

Remember

The VIF type tells you which gateway it can terminate on, the gateway tells you what is reachable behind it, and the gateway type tells you whether allowed prefixes filter or originate.

Quick rule

  • private VIF → VGW or DXGW
  • transit VIF → DXGW only
  • public VIF → no gateway
  • allowed on VGW → filter, same or wider
  • allowed on TGW → originate, anything

inbound limits per VIF · allowed prefixes per association