FRRouting - Free Range Routing + Kompatybilne serwery Supermicro ITC dla ISP
| PozostałeFRRouting - Free Range Routing
FRR to kompleksowy i wydajny pakiet oprogramowania do routingu IP, dostępny na zasadach wolnego oprogramowania.
FRR implementuje wszystkie standardowe protokoły routingu, takie jak BGP, RIP, OSPF, IS-IS i wiele innych, a także wiele ich rozszerzeń.
FRR to wydajny pakiet napisany głównie w języku C. Łatwo obsługuje pełne tablice routingu internetowego i nadaje się do użycia na sprzęcie od tanich komputerów jednopłytkowych (SBC) po profesjonalne routery klasy komercyjnej. Aktywnie jest wykorzystywany w produkcji przez setki firm, uniwersytetów, laboratoriów badawczych i rządy.
FRR jest dystrybuowany na licencji GPLv2, a jego rozwój wzorowany jest na jądrze Linuxa. Każdy może wnosić wkład w postaci nowych funkcji, poprawek błędów, narzędzi, aktualizacji dokumentacji lub czegokolwiek innego.
FRR jest forkiem projektu Quagga.
Jak zdobyć FRR?
Aby uzyskać FRR, możesz postępować zgodnie z poniższymi krokami:
-
Odwiedź oficjalną stronę internetową FRR pod adresem https://frrouting.org/. Znajdziesz tam szczegółowe informacje na temat FRR oraz linki do dodatkowych zasobów.
-
Jeśli używasz dystrybucji Linuxa, sprawdź repozytoria swojej dystrybucji, aby dowiedzieć się, czy jest dostępna odpowiednia wersja FRR jako paczka. Wiele dystrybucji udostępnia gotowe paczki do łatwej instalacji.
-
Jeśli korzystasz z dystrybucji opartych na Debianie, takich jak Ubuntu, możesz znaleźć aktualne paczki dla FRR pod adresem https://deb.frrouting.org/. Dla dystrybucji opartych na Red Hacie, takich jak CentOS czy Fedora, paczki są dostępne pod adresem https://rpm.frrouting.org/.
-
Jeśli wolisz zainstalować FRR ze źródeł, skorzystaj z dokumentacji dla programistów dostępnej na stronie internetowej FRR. Dokumentacja zawiera szczegółowe instrukcje dotyczące pobierania kodu źródłowego i budowania go na Twoim systemie.
Pamiętaj, aby postępować zgodnie z instrukcjami instalacji odpowiednimi dla Twojego systemu operacyjnego i wersji, aby zapewnić pomyślną instalację FRR.
O FRR!
FRR zapewnia usługi routingu IP. Jego rolą w stosie sieciowym jest wymiana informacji o trasowaniu z innymi routerami, podejmowanie decyzji dotyczących trasowania i polityki oraz informowanie innych warstw o tych decyzjach. W najczęstszym scenariuszu FRR instaluje decyzje dotyczące trasowania w jądrze systemu operacyjnego, umożliwiając stosowi sieciowemu jądra podejmowanie odpowiednich decyzji dotyczących przesyłania.
Oprócz dynamicznego routingu, FRR obsługuje pełen zakres konfiguracji warstwy 3, w tym statyczne trasy, adresy, ogłoszenia routera itp. Posiada również pewne funkcje warstwy 2, ale głównie są one zależne od platformy. Dzięki temu jest odpowiedni do wdrażania od małych sieci domowych z statycznymi trasami po giełdy internetowe obsługujące pełne tabele internetowe.
FRR działa na wszystkich nowoczesnych systemach operacyjnych *NIX, w tym Linuksie i systemach BSD. Obsługiwane funkcje różnią się w zależności od platformy.
Wymagania systemowe
Zasoby systemowe potrzebne do uruchomienia FRR są silnie zależne od obciążenia. Wydajność oprogramowania routingu jest szczególnie podatna na czynniki zewnętrzne, takie jak:
- Stos sieciowy jądra systemu
- Fizyczna karta sieciowa (NIC)
- Zachowanie innych urządzeń (peerów)
- Skala informacji routingu
Ze względu na te czynniki, zwłaszcza ostatni z nich, trudno określić dokładne wymagania dotyczące zasobów.
W skali porównawczej, FRR może być uruchomiony na systemach o bardzo niskich zasobach, takich jak jednopłytkowe komputery jednopłytkowe (SBC), o ile nie są one nadmiernie obciążone. Jeśli chcesz skonfigurować 4 Raspberry Pi do testowania protokołów BGP lub OSPF, powinno to działać poprawnie. Jeśli jednak poprosisz FRR o przetworzenie pełnej tabeli trasowania internetowego na Raspberry Pi, będziesz zawiedziony. Niemniej jednak, przy odpowiednich zasobach FRR powinien być w stanie działać jako centralny router sieci IX (Internet Exchange). W takim przypadku minimalne wymagania obejmują co najmniej 4 GB pamięci i współczesny procesor serwerowy z co najmniej czterema rdzeniami.
Jeśli dopiero zaczynasz przygodę z sieciami, ważne jest, aby pamiętać, że FRR to oprogramowanie warstwy kontrolnej. Samo w sobie nie przekazuje pakietów - wymienia informacje z innymi urządzeniami (peerami) dotyczące sposobu przekazywania pakietów. Wydajność płaszczyzny przekazywania zależy głównie od wyboru karty sieciowej (NIC) / układu ASIC.
Architektura systemu
Tradycyjne oprogramowanie routingu jest tworzone jako jednoprocesowy program, który zapewnia wszystkie funkcje protokołów routingu. FRR stosuje inne podejście. FRR to zestaw demonów, które współpracują ze sobą w celu budowy tablicy routingu. Każdy główny protokół jest implementowany w swoim własnym demonie, a te demony komunikują się z demonem pośredniczącym (zebra), który jest odpowiedzialny za koordynację decyzji dotyczących routingu i komunikację z warstwą przekazywania danych.
Ta architektura pozwala na wysoką odporność, ponieważ błąd, awaria lub atak na jeden demon protokołu zazwyczaj nie wpływa na działanie innych. Jest również elastyczna i rozszerzalna, ponieważ modularność ułatwia implementację nowych protokołów i ich integrację z zestawem. Ponadto, każdy demon implementuje system wtyczek, co umożliwia ładowanie nowych funkcji w czasie wykonywania.
Poniżej przedstawiono ilustrację architektury na dużą skalę.
+----+ +----+ +-----+ +----+ +----+ +----+ +-----+ |bgpd| |ripd| |ospfd| |ldpd| |pbrd| |pimd| |.....| +----+ +----+ +-----+ +----+ +----+ +----+ +-----+ | | | | | | | +----v-------v--------v-------v-------v-------v--------v | | | Zebra | | | +------------------------------------------------------+ | | | | | | +------v------+ +---------v--------+ +------v------+ | | | | | | | *NIX Kernel | | Remote dataplane | | ........... | | | | | | | +-------------+ +------------------+ +-------------+
Wszystkie demony FRR mogą być zarządzane za pomocą jednego zintegrowanego interfejsu użytkownika o nazwie vtysh. vtysh łączy się z każdym demonem za pośrednictwem gniazda domeny UNIX i działa jako proxy dla wprowadzanych przez użytkownika poleceń. Oprócz jednolitego interfejsu, vtysh umożliwia również konfigurację wszystkich demonów za pomocą jednego pliku konfiguracyjnego, korzystając z wbudowanego trybu konfiguracji. Dzięki temu unikamy konieczności utrzymywania oddzielnego pliku konfiguracyjnego dla każdego demona.
FRR obecnie wprowadza nowy wewnętrzny system konfiguracji oparty na modelach danych YANG. Po zakończeniu prac FRR stanie się w pełni programowalnym stosem routingu.
Obsługiwane platformy
Obecnie FRR obsługuje systemy GNU/Linux i BSD. Przeniesienie FRR na inne platformy nie jest zbyt trudne, ponieważ kod zależny od platformy powinien być głównie ograniczony do demona Zebra. Demony protokołów są w dużej mierze niezależne od platformy:
-
GNU/Linux
-
FreeBSD
-
NetBSD
-
OpenBSD
Starsze wersje tych platform, które mają ponad 2 lata od momentu ich pierwotnego wydania (w przypadku GNU/Linux, od wydania jądra na https://kernel.org/), mogą wymagać pewnej pracy. Podobnie, poniższe platformy mogą działać z pewnym wysiłkiem:
- MacOS
Najnowsze wersje następujących kompilatorów są dobrze przetestowane:
- GCC od GNU
- Clang od LLVM
- ICC od Intel
Macierz funkcjonalności
Poniższa tabela zawiera listę wszystkich protokołów wraz z odnośnikami do systemów operacyjnych, które przeszły przynajmniej testy budowania CI. Należy zauważyć, że dotyczącą funkcji uwzględniono tylko te, które mają zależności systemowe; jeśli nie widzisz interesującej cię funkcji, powinna ona być obsługiwana na twojej platformie.
Daemon / Feature |
Linux |
OpenBSD |
FreeBSD |
NetBSD |
---|---|---|---|---|
FRR Core |
||||
zebra |
Y |
Y |
Y |
Y |
VRF |
≥4.8 |
N |
N |
N |
MPLS |
≥4.5 |
Y |
N |
N |
pbrd (Policy Routing) |
Y |
N |
N |
N |
WAN / Carrier protocols |
||||
bgpd (BGP) |
Y |
Y |
Y |
Y |
VRF / L3VPN |
≥4.8 †4.3 |
CP |
CP |
CP |
EVPN |
≥4.18 †4.9 |
CP |
CP |
CP |
VNC (Virtual Network Control) |
CP |
CP |
CP |
CP |
Flowspec |
CP |
CP |
CP |
CP |
ldpd (LDP) |
≥4.5 |
Y |
N |
N |
VPWS / PW |
N |
≥5.8 |
N |
N |
VPLS |
N |
≥5.8 |
N |
N |
nhrpd (NHRP) |
Y |
N |
N |
N |
Link-State Routing |
||||
ospfd (OSPFv2) |
Y |
Y |
Y |
Y |
Segment Routing |
≥4.12 |
N |
N |
N |
ospf6d (OSPFv3) |
Y |
Y |
Y |
Y |
isisd (IS-IS) |
Y |
Y |
Y |
Y |
Distance-Vector Routing |
||||
ripd (RIPv2) |
Y |
Y |
Y |
Y |
ripngd (RIPng) |
Y |
Y |
Y |
Y |
babeld (BABEL) |
Y |
Y |
Y |
Y |
eigrpd (EIGRP) |
Y |
Y |
Y |
Y |
Multicast Routing |
||||
pimd (PIM) |
≥4.19 |
N |
Y |
Y |
SSM (Source Specific) |
Y |
N |
Y |
Y |
ASM (Any Source) |
Y |
N |
N |
N |
EVPN BUM Forwarding |
≥5.0 |
N |
N |
N |
vrrpd (VRRP) |
≥5.1 |
N |
N |
N |
Wskaźniki mają następującą semantykę:
-
Y - demon/funkcja w pełni funkcjonalna
-
≥X.X - w pełni funkcjonalna od wersji jądra X.X lub nowszej
-
†X.X - ograniczona funkcjonalność lub obniżona wydajność od wersji jądra X.X lub nowszej
-
CP - tylko warstwa kontrolna (np. serwer tras BGP / odbłyśnik tras)
-
N - demon/funkcja nieobsługiwana przez system operacyjny
Przykładowe Serwery Supermicro dla ISP, kompatybilne z FRR:
- ITC RE036R+ V3 - z zasilaniem redundantnym AC
- ITC RE036F+ V3 - z zasilaniem single AC z front I/O
- ITC RE036+ V3 - z zasilaniem single AC
- ITC RE136D+ V3 - z zasilaniem single DC 48V
- ITC RE136+ V3 - z zasilaniem single AC
- ITC RE336RD+ - z zasilaniem redundantnym DC
- ITC RE336D+ - z zasilaniem single DC
- ITC RE336R+ - z zasilaniem redundnatnym AC
- ITC RE336+ - z zasilaniem single AC
Powiązane artykuły:
- Proxmox + Kompatybilne serwery Supermicro ITC dla ISP
- Rozwiązywanie problemów z serwerem - Krok po kroku (Dlaczego serwer nie działa?)
- Narzędzia Linux - lshw, lspci, dmidecode, inxi (Jak sprawdzić podzespoły serwera?)