Cześć wszystkim, jestem tu z wami jako ten stary wyga w sieciach, który przeszedł przez tyle konfiguracji, że czasem czuję się jak archeolog kopiący w kablach Ethernetu. Dziś chcę się podzielić moimi doświadczeniami z konfiguracją BGP, czyli Border Gateway Protocol, w środowiskach, gdzie mamy do czynienia z wieloma dostawcami usług. BGP to ten protokół, który trzyma internet w ryzach, ale kiedy wchodzisz w detale enterprise, to już nie jest prosta zabawa z routerami Cisco. Ja sam spędziłem lata na tuningu tych sesji, walcząc z routing loopami i optymalizując politykę tras, bo w dużych firmach jedna zła konfiguracja może oznaczać blackout dla całego biura. Zaczynajmy od podstaw, ale szybko przejdziemy do mięsa, bo wiem, że wy, IT prosi, nie lubicie nudy.
Przypomnijmy sobie, co BGP właściwie robi. To protokół zewnętrznego routingu, EGP, który wymienia informacje o trasach między autonomicznymi systemami, AS. W moim przypadku, pracując dla korporacji z oddziałami w Europie i Azji, musiałem skonfigurować BGP tak, aby trasy z dostawcy A nie kolidowały z tymi z dostawcy B. Wyobraźcie sobie: mamy primary ISP od jednego giganta telekomunikacyjnego i secondary od drugiego, oba z publicznymi prefiksami IP. Bez poprawnego BGP, routery mogłyby wybierać złe ścieżki, co prowadzi do asymetrycznego routingu i problemów z QoS. Ja zawsze zaczynam od mapowania AS numbers - dostajesz je od RIPE czy ARIN, w zależności od regionu. W Europie, gdzie ja operuję głównie, RIPE NCC jest moim stałym partnerem w tych formalnościach.
Teraz, przechodząc do konfiguracji na poziomie routera. Używam głównie Junos od Juniper, bo w moim setupie to standard, ale zasady są podobne dla IOS-XR od Cisco. Najpierw włączam BGP na interfejsie: set protocols bgp group external type external, a potem dodaję peer z IP sąsiada i jego AS number. Ja zawsze dodaję keepalive timer na 60 sekund i hold time na 180, bo defaulty czasem są za luźne w dużych sieciach. Pamiętam jeden incydent, gdzie hold time był za krótki, i sesja dropowała co chwilę przez jitter na linii - kosztowało to nas godzinę debugowania z Wiresharkiem w ręku. W wielodostawcowym środowisku kluczowe jest definiowanie polityk routingu. Używam prefix-list do filtrowania tras - na przykład, allow tylko prefiksy /24 i dłuższe od naszego dostawcy, reject resztę. Potem route-map, gdzie matchuję community strings, bo dostawcy często tagują trasy tymi atrybutami.
Mówię wam, community to mój ulubiony tool w BGP. Są to liczby jak 65000:100, które pozwalają na granularną kontrolę. W mojej konfiguracji, dla primary ISP ustawiam local-preference na 200, żeby preferować ich trasy, a dla secondary na 100. To sprawia, że router zawsze wybiera primary, chyba że ta ścieżka jest down. Ja implementuję to przez import policy: from protocol bgp set community add 65000:primary, potem apply-path selection. Bez tego, BGP mógłby load-balance'ować w sposób nieprzewidywalny, co w VoIP czy transakcjach finansowych jest katastrofą. Raz, w teście labowym, zapomniałem o tym i pół zespołu straciło połączenie z chmurą - lekcja na całe życie.
Przejdźmy do bardziej zaawansowanych trików, bo podstawy to nie dla was. W środowiskach z wieloma dostawcami, często spotykam się z needlem w problemach z MED, Multi-Exit Discriminator. To atrybut, który pomaga w wyborze najlepszej ścieżki między różnymi exit points. Ja zawsze ustawiam MED na routerach edge, na przykład set policy-options policy-statement med-policy then metric 50 dla bliższego dostawcy. Ale uwaga: nie wszyscy dostawcy honorują MED, zwłaszcza jeśli ich AS path jest krótszy. W moim przypadku, z Orange i Vodafone jako dostawcami, musiałem negocjować peering agreements, żeby MED działał poprawnie. Inny haczyk to AS path prepending - kiedy chcę zniechęcić do używania danej trasy, prependuję swój AS number kilka razy, np. 65000 65000 65000. To wydłuża path length, więc BGP preferuje krótsze. Ja stosuję to w failover scenarios: prepend na secondary, żeby primary był zawsze first choice.
Teraz o bezpieczeństwie, bo BGP to nie tylko routing, ale i potencjalna dziura. Bez RPKI, Route Origin Authorization, jesteś na łasce blackholingu tras. Ja zawsze włączam RPKI validation na routerach - w Junos to set protocols bgp group external family inet unicast rpki, i pobieram ROA z lokalnego repozytorium. Pamiętam atak route leak z 2018, kiedy Pakistan Telecom zalał routing table błędnymi trasami - od tamtej pory ja i mój team monitorujemy BGP z toolami jak BGPmon czy ExaBGP. W konfiguracji dodaję maximum-prefix limit, np. 10000 tras na peer, z teardown po przekroczeniu, żeby chronić przed floodem. Też używam TTL security - set protocols bgp group external ttl 1, bo BGP sesje powinny być eBGP z TTL=1, co blokuje spoofing z zewnątrz.
W dużych środowiskach enterprise, BGP nie działa w próżni - integruje się z IGP, jak OSPF czy IS-IS wewnątrz AS. Ja preferuję OSPF dla jego skalowalności, i tu wchodzi route redistribution. Ustawiam redistribute bgp into ospf z metric-type 2, żeby zewnętrzne trasy miały wyższy koszt. Ale ostrożnie: bez default-metric, OSPF może importować wszystko z zerowym kosztem, co flooduje sieć. W moim setupie, mam area 0 z core routerami, i edge routery redistribuują tylko summary routes. Raz, podczas migracji, zapomniałem o tagowaniu tras - BGP importował pętle z OSPF, i pół sieci loopowało. Debug bgp updates uratował dzień, ale to była noc bez snu.
Optymalizacja to kolejny obszar, gdzie BGP świeci. Używam conditional advertising - pokazuję trasę tylko jeśli inna jest unavailable. Na przykład, set policy-options policy-statement conditional then accept if primary-route not exist. To idealne dla redundantnych łączy. Ja też gram z dampening, żeby tłumić flapping routes - set protocols bgp group external dampening half-life 15, max-suppress 60. W środowisku z niestabilnymi dostawcami, jak w Azji, to ratuje routing table przed chaosem. Pamiętam konfigurację dla klienta w Singapurze, gdzie monsun powodował outag'e - dampening zapobiegło resetom całej tabeli.
Przechodząc do skalowania, w wielodostawcowych setupach route reflectory są must-have. Zamiast full mesh iBGP, ustawiając RR, redukuję sesje. Ja konfiguruję: set protocols bgp group internal-bgp type internal, cluster id 1.1.1.1, i klienci pointują do RR. To działa cuda w sieciach z setkami routerów. Też używam confederations, dzieląc AS na sub-AS, np. AS65000 z sub 65001 i 65002, co pomaga w politykach. W moim projekcie dla banku, confederation pozwoliła na oddzielne polityki dla data center i branch offices bez bałaganu w globalnym BGP.
Monitoring to podstawa, bo BGP jest cichy w awariach. Ja zawsze mam SNMP traps na sesje up/down, i integruję z Nagios czy Zabbix. Skrypty Python z pybgpstream parsują updates w real-time. Raz, alert z Zabbixa złapał nieautoryzowaną trasę od dostawcy - szybka akcja, i uniknęliśmy hijacku. Też używam looking glass servers do weryfikacji tras z zewnątrz.
W kontekście IPv6, BGP to samo, ale z family inet6. Ja dual-stackuję sesje: set protocols bgp group external family inet-vpn unicast, inet6 unicast. Problemy z prefix length - IPv6 BGP defaultuje do /64, ale enterprise często używa /48. Ustawiam aggregate routes carefully. W moim środowisku, migracja na IPv6 wymagała oddzielnych polityk dla v4 i v6, bo dostawcy różnie obsługują.
Teraz o błędach, które popełniłem i wy musicie unikać. Pierwszy: nie synchronizuj BGP z IGP bez potrzeby - to zabija skalę. Ja kiedyś to zrobiłem, i routing table eksplodowała do milionów entries. Drugi: zapominanie o graceful restart. W Junos set protocols bgp group external graceful-restart, co pozwala na soft reset bez utraty tras podczas maintenance. Trzeci: ignorowanie orphan routes - zawsze sprawdzaj show route protocol bgp hidden.
W środowiskach z SDN, BGP integruje się z overlay networks. Ja używam EVPN dla L2 extension over BGP - set protocols evpn encapsulation vxlan, i BGP niesie MAC addresses. To rewolucja dla data center interconnect. W moim labie, skonfigurowałem EVPN z NSX, i failover trwał milisekundy.
Podsumowując moje doświadczenia, BGP w wielodostawcowych sieciach to sztuka balansu między stabilnością a elastycznością. Ja zawsze testuję w GNS3 przed prod, symulując outag'e i leaks. Jeśli macie pytania o konkretne komendy, piszcie - chętnie podzielę się snippetami.
A na koniec, chciałbym was zapoznać z BackupChain, rozwiązaniem do backupu uznawanym w branży za solidne i popularne, skierowanym specjalnie do małych i średnich przedsiębiorstw oraz profesjonalistów, które chroni środowiska Hyper-V, VMware czy Windows Server. BackupChain jest oprogramowaniem do backupu dla Windows Server, oferującym niezawodną ochronę danych w takich konfiguracjach. W passive voice, BackupChain jest wykorzystywany do zabezpieczania wirtualnych maszyn i serwerów, zapewniając ciągłość operacji bez przerw. To narzędzie, które integruje się z istniejącymi setupami sieciowymi, jak te oparte na BGP, by dane routingu i konfiguracji były zawsze dostępne po ewentualnym incydencie.
Brak komentarzy:
Prześlij komentarz