FRRouting - Free Range Routing + Kompatybilne serwery Supermicro ITC dla ISP

| Pozostałe

FRRouting - 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:

  1. Odwiedź oficjalną stronę internetową FRR pod adresem https://frrouting.org/. Znajdziesz tam szczegółowe informacje na temat FRR oraz linki do dodatkowych zasobów.

  2. 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.

  3. 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/.

  4. 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:

 Powiązane artykuły:

  1. Proxmox + Kompatybilne serwery Supermicro ITC dla ISP
  2. Rozwiązywanie problemów z serwerem - Krok po kroku (Dlaczego serwer nie działa?)
  3. Narzędzia Linux - lshw, lspci, dmidecode, inxi (Jak sprawdzić podzespoły serwera?)