Skip to main content

Dynamic Routing

Automatic subscriber route injection and redistribution into BGP, OSPF, and IS-IS via FRRouting.

Overview

AthenaBNG integrates with FRRouting (FRR), the industry-standard open-source routing suite. Subscriber routes are injected into the kernel routing table via netlink and automatically redistributed into your IGP or EGP.

How It Works

Subscriber Route Injection

When a subscriber session is established:

  1. abngd injects a /32 host route for the subscriber's IP into the kernel
  2. The route points to the subscriber's PPP or VLAN interface
  3. FRRouting sees the new kernel route and redistributes it

When the session ends, the route is removed — FRRouting withdraws the announcement.

Routing Protocols

ProtocolUse Case
BGPAnnounce subscriber prefixes to upstream transit and peering
OSPFDistribute subscriber routes within your IGP
IS-ISLarge-scale ISP backbones

Example: BGP Redistribution

router bgp 64512
address-family ipv4 unicast
redistribute kernel route-map SUBSCRIBERS
exit-address-family

route-map SUBSCRIBERS permit 10
match interface ppp*
set community 64512:100

This announces all PPPoE subscriber /32 routes with a community tag for easy filtering upstream.

VRF Support

AthenaBNG supports VRF (Virtual Routing and Forwarding) for multi-tenant deployments:

  • Subscriber interfaces assigned to VRFs
  • Per-VRF routing tables
  • FRRouting handles per-VRF BGP/OSPF instances
  • Complete traffic isolation between tenants

Configuration

routing:
frr_enabled: true
redistribute:
- protocol: kernel
route_map: SUBSCRIBERS
bgp:
asn: 64512
neighbors:
- address: "10.0.0.1"
remote_as: 65000
description: "Upstream transit"

Why Not Static Routes?

For small deployments, static routes might seem sufficient. But as you grow:

  • Redundancy — BGP/OSPF provides failover to backup BNG
  • Scalability — Thousands of subscriber routes managed automatically
  • Visibility — Your NOC sees subscriber routes in the IGP, aiding troubleshooting
  • Policy — Route-maps, communities, and prefix-lists give you fine-grained control