Internet Edge Design · Lesson 01 of 01
Designing a dual-provider edge
Two ISPs give you redundancy only if your policy decides, deliberately, which link carries what in each direction.
Written lesson
Two directions, two toolsets
A dual-homed edge has two independent problems. Outbound — which ISP do you use to reach the Internet? — is yours to decide with LOCAL_PREF (or WEIGHT on one router), because it is your own best-path. Inbound — which ISP do remote networks use to reach you? — you can only influence, with AS_PATH prepend, MED, or provider communities, and even then the remote network has the final say. Confusing the two is the classic edge-design error.
Written lesson
Primary/backup vs load-shared
For a clean primary/backup design: set LOCAL_PREF high on the primary for all inbound routes (outbound prefers primary), and prepend your prefixes on the backup (inbound prefers primary). For load sharing, split by destination or prefix rather than trying to balance packet-by-packet — advertise some of your address space more attractively out of each ISP, and accept a subset of the table (or just a default) from each to steer outbound by destination.
Configuration
Prefer primary outbound, deprefer backup inbound
route-map PRIMARY-IN permit 10
set local-preference 200
route-map BACKUP-OUT permit 10
set as-path prepend 65001 65001 65001
!
router bgp 65001
address-family ipv4 unicast
neighbor 203.0.113.1 route-map PRIMARY-IN in
neighbor 198.51.100.1 route-map BACKUP-OUT outTake a default, not the full table
Most edges do not need the full ~950k-prefix Internet table. Accepting a default route from each ISP (plus maybe their customer routes) is lighter and steers outbound by simple local-pref on the defaults. Take the full table only when you must make fine-grained per-destination exit decisions.