Hlavní navigace

Malý český ISP způsobil světový kolaps

19. 2. 2009
Doba čtení: 5 minut

Sdílet

 Autor: 29
Pondělní odpoledne jako každé jiné, to bylo úterý 16. února 2009. Farmář obdělával svá pole, mlékař dělal rozvážku a jeden malý tuzemský ISP konfiguroval svůj směrovač. Nikdo netušil, že za pár okamžiků nastane situace, která se zapíše do dějin světového Internetu.
K čemu došlo (lidskými slovy): jeden regionální český poskytovatel internetu špatně nakonfiguroval routing, což se stalo špatným napsáním jednoho čísla. To znamenalo, že jako optimální se do internetu propagovala nesmyslně dlouhá trasa a to počtem až 100 000 požadavků za vteřinu. To pro řadu starších routerů znamenalo něco jako přetečení bufferu, zařízení nebyla schopna odbavovat normální provoz a chyba se šířila dále. Chyba se projevila v řadě regionů, prakticky ale ne v Česku. ISP chybu rychle odstranil a během hodiny oživly všechny postižené sítě. Jedno memento ale zůstalo: jak může malá chybička u regionálního poskytovatele internetu zkolabovat provoz na polovině internetu? Inu, může…

Malý ISP z jihovýchodní Moravy konfiguroval propoj ke svému druhému (záložnímu) poskytovateli tranzitní konektivity. Každá síť je v Internetu reprezentována svým číslem autonomního systému, což bývala jen dvoubajtová, dnes už to však může být i čtyřbajtová hodnota unikátní pro každou síť, kterou dále používá směrovací protokol BGP a to v zásadě jen ke dvěma věcem – k nalezení nejvýhodnější cesty a k zamezení vzniku směrovacích smyček. Celý princip funguje tak, že pro každý prefix (samostatně směrovaný blok IP adres) existuje ve směrovacích tabulkách samostatná položka, obsahující řetězec se seznamem autonomních systémů, přes které k danému prefixu vede cesta (AS-path). Nyní uvedu příklad, jak takové cesty mohou vypadat, vybírá se obvykle podle nejkratší AS-path (to nemusí být vždy pravidlem, lze router jistým množstvím aplikovaného násilí přesvědčit, že může použít i jinou cestu, ale to není pro další text tohoto článku podstatné):

 Number of BGP Routes matching display condition : 5
 Status codes: s suppressed, d damped, h history, * valid, > best, i internal
 Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop        Metric LocPrf Weight Path
 *>  169.232.0.0/16     137.164.130.61  1      100    0      11164 2152 52 i
 *i  169.232.0.0/16     137.164.130.57  20     100    0      11164 2152 52 i
 *i  169.232.0.0/16     137.164.130.53  20     100    0      11164 2152 52 i
 *   169.232.0.0/16     213.248.98.93   48     70     0      1299 3356 2152 2152 52 i
 *   169.232.0.0/16     64.214.121.169  49     70     0      3549 209 2152 2152 52 i
      Last update to IP routing table: 5d13h42m4s, 1 path(s) installed:

V druhém sloupci zleva vidíme prefix, zcela vpravo pak AS-path, nejlepší vybraná cesta je označena znakem > zcela vlevo hned za hvězdičkou. V posledních dvou řádcích pak vidíme, že se nám číslo AS 2152 opakuje. Co to znamená? Jde o tzv. prepend, tedy umělou penalizaci (znevýhodnění) dané cesty. A právě o prepend jde v tomto příběhu především.

Onen ISP chtěl svůj druhý upstream právě takto znevýhodnit. To je celkem běžná záležitost, kterou vidíte i v předchozím příkladu. Problém však byl v tom, že jako u všeho, existuje nějaký limit pro délku AS-path a za ten se všeobecně považuje 255 položek. To není žádný zásadní limit, protože jen velmi málo cest v současném Internetu obsahuje více čísel autonomních systémů než 6, a AS-path s více než 15 položkami je naprostou raritou (a ne, v tomto případě se neočekává, že by se na tento limit do budoucna naráželo jako na překážku dalšího rozvoje, protože obecný trend je, že se průměrná délka AS-path v celosvětové směrovací tabulce postupem času mírně zkracuje).

Co se tedy stalo? Ano, správně, dotyčný ISP svou cestu skutečně znevýhodnil, a to poměrně zásadním způsobem. Není zcela jasné, jakým konkrétním způsobem toho dosáhl, avšak provedl jsem vlastní šetření a na jeho základě zjistil, že použitou platformou, na které k uvedenému problému došlo, je pravděpodobně MikroTik RouterBoard, tedy zařízení primárně určené pro poněkud jiné nasazení než je ASBR (Autonomous System Border Router) a o implementaci BGP na této platformě se vyprávějí legendy (ano, základní věci tam fungují poměrně spolehlivě, vím). Jistý nejmenovaný konkurenční výrobce, jehož boxy jsou pro podobné nasazení přece jen o něco málo vhodnější, podporuje syntaxi typu „set as-path prepend last-as N“, kde N je počet, kolikrát se poslední AS v cestě zopakuje a může nabývat hodnoty 1 – 10. Naprosto stačí, aby výrobce nějaké minoritní směrovací platformy kontrolu této hodnoty do svého zařízení nezadal, zmatená obsluha tam namísto počtu, kolikrát se má číslo AS zopakovat, omylem napíše číslo svého autonomního systému a problém je, pokud AS dotyčného ISP zrovna nemá nějaké prominentní nízké číslo, na světě.

Paradoxně problém nepostihl každého – v ČR nebyl tento problém téměř ani zaznamenán, v ČR dochází u operátorů k celkem pravidelným upgradům hardware i software a zapomenuté infrastruktury není mnoho. Podobná situace platí u velkých operátorů i jinde ve světě, avšak na regionálních a místních sítích v mnoha zemích světa, zejména tam, kde se používají poměrně staré řady operačních systémů pro směrovače, problém nastal. Kupříkladu starší verze Cisco IOS reagovaly tak, že po přijetí takové cesty rozpojily BGP relaci, po které taková cesta přišla. To není zásadní problém, relace se po chvíli znovu spojí, avšak pokud se hned zase rozpojí kvůli přijetí vadné AS-path, už to zásadní problém je. Jevu, kdy se nám relace stále dokola spojuje a rozpojuje, říkáme flap – ano, existují nástroje, jak se s ním vyrovnat, avšak pokud dotyčné síti neflapuje jeden upstream, ale všechny (což byla právě tato situace), nejsou nám tyto nástroje nic platné a nastává problém – dotyčný operátor je bez tranzitní konektivity.

UX DAy - tip 2

Podrobnější analýzu, jako obvykle, udělal Renesys, disponující nástroji pro hloubkovou analýzu stavu směrovacích tabulek. Uvedli také mapy nejhůře postižených zemí, významně postižena byla téměř celá západní Evropa (kde nejhůře dopadla Belgie a Španělsko), z nových členů EU pak chyba dopadla velmi tvrdě na Lotyšsko (paradoxně domovská země zařízení MikroTik RouterBoard) a do Pákistánu dorazila tvrdá odplata za únos Youtube, každopádně postiženo bylo i mnoho sítí v takových zemích, jako jsou USA, Čína nebo Egypt; mezi země, které byly naopak postiženy málo nebo téměř vůbec, patří kromě ČR ještě Maďarsko, Chorvatsko, Srbsko, Litva, Turecko, Indie, JAR, Chile nebo Argentina. Celý problém pak trval zhruba hodinu, než dotyčného ISP jeho poskytovatel záložní tranzitní konektivity dočasně odpojil.

Není to však první případ, kdy se něco podobného stalo, je však první, který měl až takhle tvrdé následky. Předchozí podobné případy způsobily ISP z různých zemí (BiH, Bulharsko, Indonesie, Polsko, USA), avšak délka jejich AS-path se hodnotě 255 vždy pouze blížila, nikdy jej však nepřekročila… To se podařilo až tento týden operátorovi z malého městečka nedaleko hranic se Slovenskem.

Udělali jste někdy omyl, který měl mezinárodní dopad?

Byl pro vás článek přínosný?

Autor článku

Autor působí ve společnosti Quantcom. Povinnosti ukládané státní správou telekomunikačním společnostem považuje za zbytečné, škodlivé a poškozující především zákazníky.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).