pisanie prac z informatyki
Zebra
Zebra jest programem do rutowania pakietów w oparciu o protokół TCP/IP, wspiera następujące protokoły routingu dynamicznego: RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, oraz BGP-4+ jak również specjalną odmianę BGP zachowując „Route Reflection” i „Route Server”.
Zebra działa w oparciu o protokół IPv4 jak również IPv6. Zebra umożliwia także rutowanie protokołu MIB[1] gdy działa wraz z nią SNMP demon[2], który korzysta z protokołu SMUX[3].
Zebra używa zaawansowanej architektury, aby dostarczyć wysoce wydajny wieloserwerowy system rutujący. Zebra posiada w pełni interaktywny interfejs użytkownika dla każdego z protokółów, który korzysta ze wspólnych komend.
Jak większość programów dostarczanych wraz z systemem UNIX lub pisanych specjalnie dla niego, zebra jest oficjalnym programem rozpowszechnianym na zasadach licencji GNU „General Public Licence”[4].
Czym jest Zebra?
W dzisiejszych czasach sieci TCP/IP pokrywają cały świat. Internet dotarł do wielu krajów, firm a także do domów. Podczas połączeń internetowych, pakiety przechodzą przez wiele routerów z obsługa protokołu TCP/IP. System operacyjny z zainstalowaną Zebrą zachowuje się jak dedykowany router, który wymienia informacje o trasach z innymi routerami. Zebra używa zebranych informacji do aktualizacji tablicy routingu w jądrze systemu, więc dane docierają tam gdzie powinny. Możliwa jest zmiana konfiguracji w sposób dynamiczny, możliwe jest również podejrzenie tablicy routingu z poziomu interfejsu samej Zebry.
Zebra wspierając protokół rutowania, może manipulować flagami danego interfejsu sieciowego, zmieniać adres IP, ruting statyczny i tak dalej.
Tradycyjnie, w ruterach w oparciu o system UNIX, konfiguracji dokonuje się w oparciu o polecenia takie jak: ifconfig i route. Tablice routingu można wyświetlić poleceniem netstat –r, jednak większość tych poleceń działa jedynie z poziomu użytkownika root. Zebra korzysta jednak z innej nieco metody administracji, są dwa rodzaje uprawnień: pierwszy to „normal mode”, drugi to „enable mode” – w trybie tym dozwolone są zmiany parametrów routera. Natomiast w trybie „normal mode” użytkownik może jedynie przeglądać konfigurację routera.
Obecnie, Zebra wspiera większość protokołów typu unicast routing protocol, natomiast multicast routing protocol takie jak: BGMP, PIM-SM, PIM-DM będą dostępne w Zebrze 2.0.
W niedalekiej przyszłości dodana zostanie obsługa QoS[5] oraz filtrowania pakietów, co spowoduje że Zebra będzie w pełni funkcjonalnym programem rutującym.
Architektura systemu
Każdy program rutujący w dedykowanych ruterach działa jako jeden w pełni funkcjonalny proces rutujący. Zebra przybrała jednak inne podejście, zrobiona jest jako kolekcja kilku demonów, które jednak pracują razem aby rutować pakiety.
Demon ripd odpowiada za protokół RIP, ospfd jest demonem wspierającym protokół OSPF w wersji 2, natomiast bgpd jest odpowiedzialny za BGP-4. Za zmiany w tablicy rutingu jądra systemu oraz za redystrybucję odpowiada demon zebra. Prostym zadaniem jest uruchomienie nowego procesu rutującego w systemie, gdzie pracuje zebra, wystarczy jedynie uruchomić odpowiedniego demona odpowiadającego za odpowiedni protokół.
Nie ma potrzeby aby wszystkie te demony były uruchomione na tej samej maszynie, ale można uruchomić kilka tych samych protokołów równocześnie.
Taka architektura daje nowe możliwości dla systemu rutującego.
bgpd |
ripd |
ospfd |
zebra |
|
Unix Kernel routing table |
Zebra System Architecture
Wieloprocesowa architektura daje nam wiele możliwości takich jak możliwość łatwej rozbudowy czy prostej naprawy błędów. Takie rozwiązanie udostępnia nam wiele plików konfiguracyjnych (każdy demon ma swój oddzielny plik konfiguracyjny) i terminali do konfigurowania każdego z protokołów.
Gdy chcemy skonfigurować ruting statyczny musimy owe zmiany wprowadzić w pliku konfiguracyjnym Zebry, natomiast BGP konfigurujemy w po przez edycję pliku konfiguracyjnego demona bgpd. Jest to bardzo denerwujące rozwiązanie, dlatego też, aby rozwiązać ten problem, Zebra wprowadziła zintegrowaną powłokę użytkownika nazwaną vsh. Vsh łączy się z każdym z demonów w systemie UNIX i działa jak proxy dla poleceń wydawanych przez użytkownika.
Zebra została zaplanowana aby używać wielowątkowego mechanizmu, jeżeli jądro systemu zostało odpowiednio skompilowane.
Jednak na dzień dzisiejszy, biblioteka, która odpowiada za ten mechanizm dostarczana wraz z GNU/Linux czy FreeBSD ma problemy podczas uruchamiania pewnych usług, takich jak oprogramowania rutującego, więc Zebra nie używa wątków, w zamian używa systemowej procedury select(2)[6] do multipleksowania zdarzeń.
Obsługiwane platformy sprzętowe.
GNU Zebra obecnie jest testowana na:
- GNU/Linux 2.0.37
- GNU/Linux 2.2.x
- GNU/Linux 2.3.x
- FreeBSD 2.2.8
- FreeBSD 3.x
- FreeBSD 4.x
- NetBSD 1.4
- OpenBSD 2.5
- Solaris 2.6
- Solaris 7
Pewne stosy protokołu IPv6 są aktualnie jeszcze w fazach rozwoju. Zebra obsługuje następujące stosy protokołu IPv6. Dla BSD, rekomenduje się używanie stosu IPv6 KAME. W systemie Solaris IPv6 nie jest jeszcze wspierane.
- Linux IPv6 stack for GNU/Linux 2.2.x and upper.
- Kame IPv6 stack for BSD
- INRIA IPv6 stack for BSD
Dokumenty RFC związane z Zebrą
- RFC1058
Routing Information Protocol. C.L. Hedrick. Jun-01-1998
- RFC1771
A Border Gateway Protocol 4 (BGP-4.) Y. Rekhter & T. Li. March 1995.
- RFC1997
BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.
- RFC2080
RIPng for IPv6. G. Malkin, R. Minnear. January 1997.
- RFC2283
Multiprotocol Extensions for BGP-4. T. Bates, R. Chandra, D. Katz, Y. Rekhter. February 1998.
- RFC2328
OSPF Version 2. J. Moy. April 1998.
- RFC2453
RIP Version 2. G. Malkin. November 1998.
- RFC2545
Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.
- RFC2740
OSPF for IPv6. R. Coltun, D. Perguson, J.Moy. December 1999.
- RFC2796
BGP Route Reflection An alternative to full mesh IBGP T. Bates R. Chandrasekeran. June 1996.
- When SNMP support is enabled, below RFC is also supported
- RFC1227
SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.
- RFC 1657
Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J.Burruss, J. Chu, Editor. July 1994.
- RFC1850
OSPF Version 2 Management Information Base. F. Baker, R. Coltun. November 1995.
Bibliografia:
technologie.pl
manticore.2y.net/doc/zebra/overview.html
[1] Management Information Base, jest baza zawierająca informacje o obiektach zarządzalnych przy użyciu protokołu SNMP Simple Network Management Protocol.
[2] W systemach UNIX tak nazywa się programy, które zajmują się obsługą sieci TCP/IP
[3] Jest to protokół zarządzający sesjami w systemach UNIX, więcej na stronie: http://www.w3.org/TR/WD-mux
[4] GNU Powszechna Licencja Publiczna dotycząca rozpowszechniania darmowego oprogramowania, polskie tłumaczenie jest dostępne pod adresem: http://gnu.org.pl/text/licencja-gnu.html
[5] QoS, skrót od Quality of Service oznaczający zapewnienie jakości usług
[6] Procedura systemowa w systemach UNIX służąca do multipleksowania synchronicznego I/O