Firma Cloudflare,
W trakcie prac technicznych, chcąc usunąć część ruchu z jednego ze szkieletów, inżynierowie usunęli jedną linię w bloku ustawień, która określa listę tras akceptowanych przez szkielet, filtrowaną zgodnie z określoną listą prefiksów. Słuszne byłoby wyłączenie całego bloku, ale przez pomyłkę usunięto jedynie linię z listą prefiksów.
{master}[edytuj] atl01# pokaż | porównywać
[edytuj politykę-opcje oświadczenie-polityki 6-BBONE-OUT termin 6-SITE-LOCAL z] ! nieaktywne: lista prefiksów 6-SITE-LOCAL { … }
Zawartość bloku:
z {
lista-przedrostków 6-SITE-LOCAL;
}
Następnie {
preferencje lokalne 200;
społeczność dodaj SITE-LOCAL-ROUTE;
społeczność dodaje ATL01;
społeczność dodaj AMERYKA PÓŁNOCNA;
zaakceptować;
}
W związku z usunięciem powiązania z listą prefiksów pozostała część bloku zaczęła być dystrybuowana do wszystkich prefiksów, a router zaczął wysyłać wszystkie swoje trasy BGP do routerów innych szkieletów. Zbiegiem okoliczności nowe trasy miały wyższy priorytet (preferencja lokalna 200) w porównaniu z priorytetem (100) ustawionym dla innych tras przez system automatycznej optymalizacji ruchu. W rezultacie zamiast usuwać routing ze szkieletu, wyciekały trasy BGP o wyższym priorytecie, w wyniku czego ruch adresowany do innych szkieletów był wysyłany do Atlanty, co doprowadziło do przeciążenia routera i załamania się części sieci.
Aby zapobiec podobnym incydentom w przyszłości, na poniedziałek planuje się wprowadzenie kilku zmian w ustawieniach szkieletu Cloudflare. Dla sesji BGP zostanie dodany limit maksymalnej liczby prefiksów (maximum-prefix), który będzie blokował problematyczną sieć szkieletową w przypadku przechodzenia przez nią zbyt wiele prefiksów. Gdyby to ograniczenie zostało dodane wcześniej, omawiany problem doprowadziłby do wyłączenia szkieletu w Atlancie, ale nie wpłynąłby na działanie całej sieci, ponieważ sieć Cloudflare została zaprojektowana tak, aby umożliwiać awarie poszczególnych szkieletów. Wśród już przyjętych zmian odnotowano rewizję priorytetów (preferencji lokalnych) dla tras lokalnych, która nie pozwoli jednemu routerowi wpływać na ruch w innych częściach sieci.
Źródło: opennet.ru