06 eBGP Peering & TTL

eBGP has a built-in expectation that peers are directly connected, enforced through the TTL of its packets. Two special behaviors, and their two override commands, all trace back to this single design choice.

The TTL 1 rule

By default, eBGP sets TTL = 1 on the packets it sends toward an external neighbor. A TTL of 1 means the packet can cross exactly one hop before being discarded, which forces the eBGP peer to be directly connected (one hop away).

Because of this, eBGP peers are normally configured using the IP addresses of their directly connected interfaces, and those addresses must belong to a shared, directly connected logical network.

Connected-check

Separate from the TTL rule, eBGP also performs a connected-check: it verifies that the neighbor’s IP is on a directly connected subnet. This matters when peering eBGP between loopback interfaces, which are not directly connected to each other. In that case the connected-check fails and must be disabled.

This is done with disable-connected-check. It only turns off the directly-connected subnet verification; it does not change the TTL.

eBGP Multihop

When eBGP peers are not directly connected (more than one hop apart), the default TTL of 1 makes the session impossible, because packets die at the first intermediate hop. eBGP Multihop raises the TTL to allow the session across multiple hops.

The command is ebgp-multihop <value>, where the value sets the maximum TTL, meaning the number of hops the session may cross. For peers two hops apart, at least ebgp-multihop 2 is required; three hops needs 3, and so on. If the value is omitted on IOS, the default is 255.

Multihop must be configured on both ends

TTL applies to each router’s outgoing packets. If only one side raises its TTL, its packets arrive, but the other side (still at TTL 1) has its packets discarded at the first intermediate hop, and the session never establishes in both directions.

Two similar commands that are not the same

These two are often confused. They solve different problems:

CommandProblem it solvesEffect on TTL
disable-connected-checkPeers are one hop apart but peering loopback-to-loopbackNone
ebgp-multihop <n>Peers are more than one hop apartRaises TTL to n

Using the wrong one is a classic mistake: a loopback peering between directly connected routers needs disable-connected-check, not ebgp-multihop.

Load balancing with loopbacks

A common use of loopback-based eBGP is load balancing between two directly connected routers joined by multiple physical links. Because a loopback is reachable over several physical paths, peering to the loopback lets traffic spread across those links. This requires static routes (or an IGP) toward the peer’s loopback over each link, plus update-source loopback so the session originates from the loopback, and disable-connected-check because the loopbacks are not on a directly connected subnet.

Self-check

Q1 — What is the default TTL of eBGP packets, and what does it enforce?

A) 255 — multi-hop peering by default
B) 1 — the peer must be directly connected
C) 64 — up to 64 hops
D) 0 — packets never leave the router

Q2 — Which command is needed to peer eBGP loopback-to-loopback between two directly connected routers?

A) ebgp-multihop 2
B) disable-connected-check
C) next-hop-self
D) synchronization

Q3 — For eBGP peers three hops apart, what is required?

A) disable-connected-check
B) ebgp-multihop 3 (at least) on both ends
C) ebgp-multihop 3 on one end only
D) Nothing; eBGP is multi-hop by default

Q4 — What does disable-connected-check change?

A) It raises the TTL to 255
B) It turns off the directly-connected subnet verification, without changing TTL
C) It rewrites the next-hop to the local loopback
D) It disables loop prevention