BGP-sessie komt niet op (Active, Connect of Idle)
Een BGP-sessie die niet opkomt, vertelt je in welke state hij hangt precies hoe ver hij komt. Met die state erbij is de lijst mogelijke oorzaken ineens kort.
Loop je hier nu tegenaan?
Bel en leg het voor. Vaak is in tien minuten duidelijk waar het aan ligt. Bellen mag direct. Mail beantwoord ik meestal dezelfde werkdag.
Herken je dit?
- De sessie blijft in Active of Connect staan en flapt tussen die twee.
- De sessie staat op Idle en probeert het niet eens.
- De sessie komt op en valt na een paar seconden weer weg.
- De sessie is Established maar er komen geen prefixes binnen.
- Het werkte tot er iets wijzigde aan de firewall, het IP of de config.
Waar het meestal aan ligt
In verreweg de meeste gevallen is het één van deze. Loop ze in deze volgorde na.
Active of Connect: TCP poort 179 komt niet tot stand
De sessie probeert te verbinden en krijgt niets terug. Meestal een firewall of ACL die poort 179 blokkeert, een verkeerd neighbor-IP, of de andere kant is nog niet geconfigureerd.
Idle: lokaal iets niet in orde
Vaak een administratieve shutdown, een ontbrekende route naar de peer, of de update-source die niet klopt. Idle (Admin) betekent letterlijk dat hij niet mag.
Verkeerd AS-nummer of een OPEN die wordt geweigerd
Een mismatch in het remote AS geeft een Bad Peer AS in de notificatie. Ook een verschil in capabilities (bijvoorbeeld 4-byte AS of multiprotocol) kan de OPEN doen mislukken.
Multihop en TTL
Bij een peer die niet direct aangesloten zit, moet multihop aan staan. Zonder dat wordt het pakket met TTL 1 verstuurd en komt het nooit aan.
Wachtwoord of MD5-mismatch
Eén kant met authenticatie en de andere zonder geeft een TCP-sessie die niet tot stand komt zonder duidelijke BGP-melding. In de systeemlogs zie je dan wel MD5-fouten.
Established maar geen prefixes
De sessie werkt; de filters niet. Een import- of export-filter, een ontbrekende as-path-match, een max-prefix-limiet die is bereikt, of een prefixlijst die de nieuwe ranges niet kent.
Wat ik als eerste check
Doe deze stappen zelf, of bel en dan lopen we ze samen door.
- 1
Lees de state en de laatste foutmelding
Met
show bgp summary(ofbirdc show protocols all) zie je de state én de laatste notificatie. Die melding is je diagnose; zonder die melding zoek je in het donker. - 2
Test of TCP 179 open is
Vanaf de router:
nc -vz <peer-ip> 179. Komt er geen verbinding, dan is het een firewall- of routeringsprobleem en heeft de BGP-config voorlopig geen aandacht nodig. - 3
Controleer of je de peer überhaupt kunt bereiken
Ping het neighbor-IP vanaf het juiste bronadres (
ping -Iofupdate-source). Bij een loopback-peering moet het pad naar die loopback aan beide kanten bekend zijn. - 4
Vergelijk de AS-nummers en IP's letter voor letter
Het klinkt simpel, maar een omgedraaide cijferreeks of het IP van de vorige peer is een veelvoorkomende oorzaak. Leg jouw configuratie naast wat de andere partij denkt te hebben afgesproken.
- 5
Controleer authenticatie en multihop
Aan beide kanten dezelfde keuze: wel of geen wachtwoord, wel of geen multihop. Een halve afspraak geeft een sessie die zwijgend blijft hangen.
- 6
Established, maar leeg? Kijk naar de filters
Met
show bgp neighbor <ip> received-routeszie je of je iets binnenkrijgt vóór filtering. Komt er wel wat binnen maar staat het niet in de tabel, dan is je import-filter de dader.
De state doet het denkwerk
Bij BGP hoef je niet te gokken. De toestandsmachine is klein en elke state sluit een hoop oorzaken uit. Blijf je in Active of Connect hangen, dan is het bijna zeker een netwerklaag-probleem: poort 179, een ACL, een verkeerd adres. Kom je tot Established zonder routes, dan is het beleid: filters, limieten, RPKI. Idle wijst naar iets lokaals.
Wat het lastig maakt, is dat de nuttige informatie in de notificatie zit — en die zie je alleen als je hem opzoekt voordat de sessie het opnieuw probeert.
Even iemand die meekijkt?
Stuur me de output van je show bgp summary en de laatste notificatie, dan zeg ik je waar het spaak loopt. Als het aan de andere kant ligt, krijg je de onderbouwing waarmee je dat bij je upstream of IX kunt aankaarten.
Veelgestelde vragen
- Wat is het verschil tussen Active en Connect?
- Connect betekent dat er een TCP-verbinding wordt opgezet; Active dat de vorige poging mislukte en hij het opnieuw probeert. Flappen tussen die twee betekent dus vrijwel altijd: TCP komt niet tot stand. Kijk dan naar firewalls, ACL's en het neighbor-IP, niet naar BGP-attributen.
- Mijn sessie is Established maar ik ontvang geen routes. Hoe kan dat?
- Dan doet BGP zijn werk en ligt het aan beleid: een filter dat alles afkeurt, een max-prefix-limiet, RPKI-invalid prefixes die je dropt, of de andere kant kondigt simpelweg niets aan. Kijk eerst wat je vóór filtering ontvangt — dat scheidt jouw probleem van dat van je peer.
- Kan RPKI de oorzaak zijn?
- Ja. Als jouw ROA's niet kloppen of ontbreken, markeert je peer je prefixes als invalid en accepteert ze niet. Dat is een veelgemaakte fout na het opsplitsen of verhuizen van adresruimte. Controleer je ROA's en IRR-objecten.
- Kun je hier op korte termijn naar kijken?
- Ja, dit is typisch werk van een uur of twee. Met read-only toegang en de laatste notificatie erbij is een sessie die niet opkomt vrijwel altijd snel te herleiden.
Verwante problemen
BGP-specialist voor peering, ASN en RPKI
BGP van aanvraag tot productie: eigen AS-nummer, IP-ruimte, peering bij AMS-IX en NL-ix, filters, RPKI en ROA's. Van een operator met een eigen netwerk.
[MikroTik]MikroTik specialist inhuren
Hulp met MikroTik en RouterOS: firewall, BGP, VPN's, VLANs en de eigenaardigheden van fasttrack, CRS-switching en upgrades naar RouterOS 7.
Zelf geen tijd of geen zin om te blijven zoeken?
Ik kijk mee, zeg eerlijk wat er aan de hand is en los het op. Bellen mag direct. Mail beantwoord ik meestal dezelfde werkdag.
Terug naar BGP- en netwerkspecialist inhuren