A regional ISP's edge refresh: dual 100G uplinks, BNG, carrier-grade NAT and sub-second failover
A regional fiber and wireless internet provider in the Southeast, a leader in its segment.
- Scale
- About 40,000 subscribers, 2 × 100G transit, 100G to an internet exchange, 2 BNGs, a /23 CGN pool, IPv6 dual-stack
- Engagement
- Design, a staged cutover over several maintenance windows and handover
The challenge
The provider's edge was a single router pair with 10G uplinks that had been stretched for years. Peak traffic was reaching the links' limit, a failed uplink took minutes to recover, and subscribers were terminated on aging PPPoE concentrators. Public IPv4 addresses were running out and the old NAT lacked the logging a legal request demands. The company could not afford an outage during the refresh.
A regional internet provider with about 40,000 subscribers had outgrown its edge. One router pair with 10G uplinks carried the peak with little room, a failed uplink took minutes to recover, and subscribers ended on aging PPPoE concentrators. Public IPv4 addresses were running out, and the old NAT kept logs that were hard to search. The company could not afford an outage, so the refresh had to be built beside the old edge and cut over in stages.
The new edge has two routers, each with 100G QSFP28 uplinks, one toward each of two transit providers, plus a 100G port at an internet exchange. BGP runs on both routers (RFC 4271) with BFD for failure detection, so a dead link is noticed in well under a second instead of waiting out a hold timer measured in tens of seconds. Prefix lists and IRR data filter what neighbors may announce, RPKI origin validation (RFC 6811) drops announcements that claim someone else's prefix, and communities steer traffic between the transits.
Subscribers connect through two BNGs in active-active pairs. The new fiber footprint uses IPoE: a subscriber's device asks for an address with DHCP, and DHCP option 82 (RFC 3046) tells the BNG which port the request came from, with no PPPoE session to keep alive and no 8‑byte PPPoE overhead cutting the MTU to 1,492. PPPoE stays only on legacy wireless links that need it. IPv6 runs dual-stack with DHCPv6 prefix delegation, and because most large content networks speak IPv6, a large share of traffic never touches the NAT.
Carrier-grade NAT handles the subscribers that still need IPv4. The design follows RFC 6888, which requires a CGN to use endpoint-independent mapping and filtering behavior where possible, to limit ports per subscriber and to keep applications working, and uses the shared address space of RFC 6598 (100.64.0.0/10) between subscribers and the NAT. A /23 of public addresses serves the pool, and port-block allocation hands each subscriber a block of ports, such as 1,024, so a log line names a subscriber, an address and a port range rather than recording every flow. When a legal request arrives, the team can answer in minutes.
Protection and operations round it out. BGP FlowSpec and remotely triggered blackhole routing drop flood traffic at the edge, and a tested path to a scrubbing provider handles what the edge cannot. A peering map shows where traffic goes, so the next capacity decision follows the data. The cutover took several maintenance windows, each with a rollback, and the old routers stayed warm until the new ones had carried a full month. Subscriber counts, address sizes and failover times in this illustrative case are modeled for a refresh of this kind. Our articles on BGP with BIRD and on surviving a DDoS flood explain the techniques.
What our team delivered
- Two edge routers with 100G QSFP28 uplinks to two transit providers and a 100G port at an internet exchange, built so either router or either transit can fail without an outage
- BGP on both routers with BFD for fast failure detection, route filtering by prefix lists and IRR data, RPKI origin validation (RFC 6811) and communities for traffic engineering
- Two BNGs in active-active pairs terminating subscribers: IPoE with DHCP and DHCP option 82 line identification for the new fiber footprint, and PPPoE kept only for legacy wireless links
- Carrier-grade NAT sized for the subscribers that still need IPv4, following the behavior in RFC 6888 (endpoint-independent mapping, per-subscriber port limits) and RFC 6598 shared address space, with port-block allocation and searchable logs
- IPv6 dual-stack with DHCPv6 prefix delegation, which moved a large share of traffic off the NAT
- DDoS protection at the edge with BGP FlowSpec and remotely triggered blackhole routing, plus a tested path to a scrubbing provider
- A peering map and a traffic report, so the next capacity decision comes from data rather than complaints
Result
The edge carried the peak with room to spare, a transit or router failure caused a brief reroute that most subscribers did not notice, the new NAT could answer a log request in minutes, and the team had a runbook for each failure. Subscriber counts and failover times are modeled for a refresh of this kind, not measurements from a client.
A BGP edge that survives a lost carrier
Two edge routers run BIRD 2, peer with two transit carriers and an internet exchange, validate every route with RPKI and detect a dead link in under a second with BFD, so traffic moves to the other carrier before users notice.
The shortest path is the one you peer for
Without peering, traffic crosses paid transit through several networks. Once the enterprise joins an internet exchange and peers with the content network through the route server, the same traffic takes one AS hop, at lower latency and with no transit bill.
Detecting a dead neighbour
How long a BGP router waits before it declares a silent neighbour dead, on a log scale. Hold 180 s with keepalive 60 s is the Cisco IOS default and a common default on other vendors (RFC 4271 suggests 90 s and 30 s; some stacks use other values, so check the platform). Tuned timers of 9 s and 3 s are aggressive but valid. BFD (RFC 5880) at 3 missed packets of 50 ms detects loss in 150 ms and tells BGP to tear the session down. Detection time only: route withdrawal and FIB update come after.
Subscribers behind a BNG and carrier-grade NAT
Homes connect with IPoE or PPPoE to a broadband network gateway, which authenticates them and hands out shared 100.64.0.0/10 addresses. The CGNAT gives each home a block of ports on a shared public address, logs one record per block as RFC 6888 asks, and the BGP edge carries the result to the internet.
Facing something similar?
Tell us about your environment. We will tell you plainly what we would do and what it would take.