Aventura, Florida · serving clients across the United States (305) 404-9404Toll-free (800) 767-8566Emergency? Get a call within 1 hour
Telecommunications, regional internet service provider Illustrative engagement

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.

A BGP edge that survives a lost carrierTwo edge routers running BIRD 2 in AS 64500 connect over eBGP to two transit providers and to the route servers of an internet exchange, and to each other over iBGP. Each eBGP session is protected by RPKI route origin validation fed by a validator over RTR. The routers announce one anycast prefix from two service sites. On a loop, the link to transit A fails, BFD detects it, traffic shifts to transit B and the other router, then the link returns. UPSTREAMSTransit AAS64501IXProute serversTransit BAS64502EDGEedge1BIRD 2 · AS64500edge2BIRD 2 · AS64500ANYCAST SERVICESSite 1203.0.113.0/24Site 2203.0.113.0/24RPKI validatorROV · RFC 6811BFD: link downtraffic moved to transit BBFDBFDeBGPeBGPeBGPiBGPRTR65535:666 blackhole64500:100 local-pref64500:200 prepend

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.

The shortest path is the one you peer forA packet travels from an enterprise network, AS64500, to a content network, AS64510. First it follows the transit path through two upstream networks, AS64501 and AS64502. After the enterprise builds BGP sessions to an internet exchange route server, AS64511, the packet takes the exchange path across the peering LAN, 198.51.100.0/24, in one AS hop. PeeringDB-style labels show peering policy, network type, the exchange and RPKI status. EnterpriseAS64500ContentAS64510TransitAS64501UpstreamAS64502Route serverAS64511Example-IXpeering LAN 198.51.100.0/24via transit · 3 AS hops · ≈ 38 msvia IXP · 1 AS hop · ≈ 9 msBGP session upPEERINGDB-STYLE RECORDPolicy: OpenNet type: ContentIX: Example-IXRPKI ROA: valid

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.

Detecting a dead neighbourHorizontal bars on a log scale of failure detection time. BGP common default hold timer 180 seconds. RFC 4271 suggested 90 seconds. Tuned timers 9 seconds. BFD with 300 millisecond interval times 3 is 0.9 seconds. BFD with 50 millisecond interval times 3 is 0.15 seconds.Time to declare the neighbour down (seconds, log scale)0.1 s1 s10 s100 s1000 sBGP, common defaulthold 180 s, keepalive 60 s180 sBGP, RFC 4271 suggestionhold 90 s, keepalive 30 s90 sBGP, tuned timershold 9 s, keepalive 3 s9 sBFD, 300 ms × 3typical vendor default0.9 sBFD, 50 ms × 3fast failure detection0.15 s1,200 × fasterBFD 50 ms vs 180 s holdBars start at 0.1 s; each gridline is ten times the last. Defaults are common values, not universal.

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.

Subscribers behind a BNG and carrier-grade NATThree homes connect through the access network over QinQ VLANs to a broadband network gateway. Home A and Home C use IPoE with DHCP and Home B uses PPPoE. The BNG authenticates and addresses them from 100.64.0.0/10, the shared address space of RFC 6598. A carrier-grade NAT, following RFC 6888, translates the private addresses to the public pool 192.0.2.0/24 using port blocks: Home A gets ports 1024 to 2047 on 192.0.2.10, Home B gets 2048 to 3071 on the same address, and Home C gets 1024 to 2047 on 192.0.2.11. A BGP edge router in AS64500 sends traffic on to the internet. Home AIPoEHome BPPPoEHome CIPoEBNGIPoE · PPPoECGNATRFC 6888BGP edgeAS64500InternetQinQprivate 100.64.0.0/10public 192.0.2.0/24eBGPNAT44 PORT-BLOCK TABLESubscriberPrivate (RFC 6598)Public IPv4Port blockHome A100.64.0.10192.0.2.101024-2047Home B100.64.0.11192.0.2.102048-3071Home C100.64.0.12192.0.2.111024-2047100.64.0.10:40000 leaves as 192.0.2.10:1030, inside Home A's blockone log record per block, not per flowIPoE (DHCP) and PPPoERFC 6888 · RFC 6598

Frequently asked questions

Direct answers to the questions we hear most. Something else on your mind?

Send us a message
How was the edge refreshed without an outage?

The work was staged over several maintenance windows. Two new edge routers were built so either router or either transit could fail without an outage, then uplinks and subscribers moved in steps.

How does failover work in this design?

BGP runs on both routers with BFD for fast failure detection, so a transit or router failure causes a brief reroute that most subscribers do not notice.

How was IPv4 scarcity handled?

Carrier-grade NAT sized for subscribers that still need IPv4, following RFC 6888, with port-block allocation and searchable logs. IPv6 dual-stack moved a large share of traffic off the NAT.

How was the edge protected against attacks?

With BGP FlowSpec and remotely triggered blackhole routing, RPKI origin validation, and a tested path to a scrubbing provider.

Do you know if your company is safe?

Speak with a security engineer today. The first assessment call is free and confidential.

CallFree assessment