Kto używa Quaggi do obsługi BGP, tego nie trzeba informować o dzisiejszych poważnych problemach związanych z pewnym afrykańskim operatorem, który rozgłaszając zbyt długą ścieżkę z 32-bitowymi numerami ASN położył nie tylko nas, ale i sporą część światowego Internetu...
Problem zaczął być widoczny w Polsce około godziny 14 - właśnie wtedy poobiednia drzemka w święto 3 maja została przerwana przez telefon, który oznajmił, że nic nie działa... Szybka diagnoza potwierdziła, że źródłem problemu jest niedziałający proces BGP, a konkretniej niedziałające procesy usług routingu Quagga, które są fundamentalnym składnikiem używanego przez nas linuksowego routera Vyatta. Bez większego zastanowienia router poszedł do restartu tylko po to, by prace mogła przejąć druga czekająca w klastrze identyczna maszyna.
Niestety okazało się, że po kilku sekundach od ustanowienia sesji BGP przez drugi router sytuacja się powtórzyła - jak wyczytałem później w logach, bgpd rzucił wyjątkiem w stylu "zbyt długa ścieżka ASN" i zakończył pracę. Pomyślałem, że to chyba "Czechy Bis" i eskalowałem problem - próbując się czegoś dowiedzieć zadzwoniłem do Network Operations Center firmy ATMAN, która od jakiegoś czasu świadczy nam usługi internetowe. Jak to jednak zwykle bywa w takich przypadkach, szybkie i precyzyjne ustalenie przyczyny jest trudne. Ostatecznie po kilkunastu minutach udało się wznowić wszystkie nasze sesje BGP oprócz tej odpowiedzialnej za prefiksy z zagranicy. Połączenie BGP z routerem usługi Transit.Global nadal skutkowało niemal natychmiastową (kilka sekund) awarią całej Quaggi.
Nie byłem zaskoczony, gdy na forum Vyatty zobaczyłem mnóstwo ludzi z podobnym problemem. Okazało się, że to bug w demonach Quaggi - BGP wysypuje się po przyjęciu ścieżki z więcej niż czterema 32-bitowymi numerami ASN. 32-bitowe numery ASN nie są jeszcze popularne, RIPE na przykład rozpoczął ich wydawanie dopiero w tym roku. Kiedyś to jednak musiało nastąpić - ktoś prependował sobie 32-bitowy ASN więcej niż cztery razy i wyszło, jak wyszło.
Remedium? Poprawka do Quaggi, którą trzeba jednak samemu skompilować. W międzyczasie Vyatta wydała własną poprawkę, ale niestety tylko dla użytkowników płatnej subskrypcji pomocy technicznej. Trzeba było wymyślić coś na szybko - pierwsza myśl, czyli odfiltrowanie po naszej stronie problematycznych prefiksów niestety nie pomogła, bo router i tak się wieszał, prawodpodobnie jeszcze zanim zdążył sprawdzić reguły. Druga myśl - odfiltrowanie problematycznego numeru ASN przez peera BGP. Użytkownicy na forum Vyatty ustalili, że odpowiedzialny za awarię jest AS37095 należący do... AFNOG, forum zrzeszającego afrykańskich operatorów internetowych. 10 maja rozpoczyna się ich tegoroczna konferencja - wygląda na to, że będą mieli dodatkowe case-study do omówienia...
Poprosiliśmy ATMAN o założenie odpowiedniego filtra i... problem zniknął, a przynajmniej jego objawy. Jeśli ktoś jeszcze walczy z wieszającą się Quaggą, to jest to dobry sposób na tymczasowe uporanie się z problemem - w każdym razie chyba szybszy od samodzielnego dłubania i pracy z kompilatorem... ;)