Hi MT,
Running 6.12, I have a PPPoE access server at a pop site. It’s an ABR between the backbone and the stub for the pop as well as being the PPPoE server. The router runs OSPF for connectivity only without any redistribution (i.e., no statics, connected, or other redistribution). This works fine and for the most part is stable. OSPF is not affected by any customer routes coming on or off the network.
On top of this, I have BGP to distribute internet routes around my network such as PPPoE pools, internet routes, etc. At my pops, I have BGP aggregations for the PPPoE pools. The aggregations are a new addition and also work well… Except… OSPF crashes whenever a PPPoE user disconnects whose IP address is inside one of the BGP aggregates. And then BGP will disconnect because it no longer has connectivity to the route reflector until OSPF re-establishes.
This is entirely repeatable and happens consistently every time.
For example. I have 10.128.0.0/24 as a BGP aggregate. OSPF doesn’t know about this range as it’s only configured on the physical interfaces of the routers (essentially 10.0.0.0/9). When a customer, with IP 10.128.0.50, connects to the network, the 10.128.0.0/24 is distributed via BGP to our route reflector and reflected onwards. When this user disconnects, OSPF (on this router) crashes and restarts every time. If I disable the BGP aggregate, it works fine with no crashing.
Here’s my config for the PPPoE router in my lab setup replicating this issue (x86):
/interface bridge
add name=lo0-mgmt
/interface ethernet
set [ find default-name=ether1 ] name=ether1-wan speed=1Gbps
set [ find default-name=ether3 ] name=ether2-cust speed=1Gbps
set [ find default-name=ether2 ] name=ether3-failover speed=1Gbps
/ppp profile
add local-address=10.128.0.2 name=internet-ppp-profile
/routing bgp instance
set default redistribute-connected=yes router-id=10.32.0.2
/routing ospf area
add area-id=10.32.0.0 default-cost=1 inject-summary-lsas=yes name=pop type=stub
/routing ospf instance
set [ find default=yes ] router-id=10.32.0.2
/interface pppoe-server server
add disabled=no interface=ether2-cust service-name=internet2
/ip address
add address=10.0.0.33/24 interface=ether1-wan network=10.0.0.0
add address=10.32.0.2/32 interface=lo0-mgmt network=10.32.0.2
add address=10.32.0.66/30 interface=ether3-failover network=10.32.0.64
/ppp secret
add name=ppp2 password=ppp2 profile=internet-ppp-profile remote-address=10.128.0.140
/routing bgp aggregate
add include-igp=yes instance=default prefix=10.128.0.0/24
/routing bgp peer
add name=rasgw1 out-filter=pop-bgp-out remote-address=10.1.0.5 remote-as=65530 update-source=lo0-mgmt
add name=rasgw2 out-filter=pop-bgp-out remote-address=10.1.0.6 remote-as=65530 update-source=lo0-mgmt
add name=pppoe1 remote-address=10.32.0.1 remote-as=65530 update-source=lo0-mgmt
/routing filter
add action=discard chain=pop-bgp-out prefix=10.0.0.0/9 prefix-length=9-32
/routing ospf area range
add area=pop range=10.32.0.0/24
add area=backbone range=10.0.0.0/9
/routing ospf interface
add authentication=md5 authentication-key=xxxxx dead-interval=15s hello-interval=3s interface=ether1-wan
add authentication=md5 authentication-key=xxxxx dead-interval=15s hello-interval=3s interface=ether3-failover
add passive=yes
/routing ospf network
add area=backbone network=10.0.0.0/24
add area=backbone network=10.32.0.0/26
add area=pop network=10.32.0.0/11
/system identity
set name=pppoe2