SubnetLayerProtocols

Inside One AS

iBGP, the rule that stops it looping, and the exception every network uses

Step 1 of 2 — understand the idea. Read this first and the packet trace will confirm what you already expect, instead of teaching you two things at once.

What you'll be able to do

Before this lesson — it builds directly on:
BGP prevents loops with the AS path: prepend your own AS number on the way out, and discard anything that arrives with your number already in it. It is elegant, it needs no timers and no global view, and it stops working completely inside a single AS — because a route passed between two routers in the same AS has not crossed an AS boundary, so nothing is prepended and nothing can be detected. BGP's answer is not a cleverer algorithm. It is a prohibition: do not pass an internally learned route to another internal peer. That is why iBGP needs a session between every pair of routers, and why route reflectors exist.

Watch these fields in the lab: bgp.type

  1. 1RA learns a prefix from a peer in another AS. The AS path grew by one on the way in.
  2. 2RA passes it to RB over iBGP. The AS path does not change — the route has not left the AS.
  3. 3RB installs it, marked ibgp rather than bgp, at a higher administrative distance.
  4. 4RB does NOT pass it to RC, because a route from an internal peer may not go to another internal peer.
  5. 5RC has a healthy session to a router that knows the answer, and no route.
  6. 6Fix one: a session from RC directly to RA — a full mesh.
  7. 7Fix two: declare RB a route reflector and RA and RC its clients, permitting exactly that re-advertisement.

✓ Concept check — before you open the packets

These test the idea, not the trace. You should be able to answer them from the explanation above.

Why is an iBGP-learned route installed at a higher administrative distance than an eBGP one?

Now that you understand the concept, observe how it appears in the packet exchange.

The lab runs a real simulated capture — pause, step, click any packet, and inspect every byte.