ZebriFarma Skudlik's mini-howto, jak chovat stado zeber.

OSPF protokol

charakteristika protokolu

  • OSPF = open shortest path fist - algoritmus nalezení nejkratší cesty v grafu.
  • jedná se o IGP (Interior Gateway Protocol) - distribuuje routy mezi routery uvnitř Autonomního systému (AS). (dalším igp protokolem je třeba rip)
  • EGP protokoly (exterior...) slouží pro výměnu rout mezi AS (např. BGP protokol)
  • každý router zná topologii celého systému. Informace o stavu linek se předávají pomocí "floodingu"
  • možnost mít různé routy podle TOS (type of service - informace v hlavičce paketu)
  • možnost slučovat routery do oblastí (areas)
  • autentifikace při komunikaci (zabránění narušení systému)

komunikace

  • P2P linka - přímý propoj mezi 2ma routery
  • broadcast network - podporuje více routerů na jedné síti (ethernet), lze vysílat broadcasty
    • Hello protokol - dynamické hledání sousedů, použití multicastu.
  • non-broadcast network - bez broadcastu.
    • opět přes Hello protokol - nutné specifikovat parametry (přímo sousedy nebo rozsah).

oblasti (areas)

  • rozčlenění do oblastí - vnitřní topologie není vidět zvenčí (=na routeru který nepřísluší k dané oblasti).
  • redukuje výpočetní nároky a množství paketů použitých pro ospf routování
  • router zná pouze topologii oblasti do které je zapojen.

1 area vs. hierarchický model

  • v současné chvíli je celý síť braná jakožto 1 area - jednoduché - není potřeba nijak důkladně plánovat.
  • podle cisca - maximum routerů na 1 area cca 50 (pro cisco routery) - na této hranici již jsme.
  • nutné rozdělit síť na nezávislé oblasti.

backbone

  • speciální oblast spojující ostatní (teď obsahuje celé klfree)
  • slouží k předávání rout mezi oblastmi.
  • pokudmožno souvislá oblast - možnost vytvoření virtuálních linků
  • nelze jednoduše předávat routy přímo mezi obyčejnými (=ne backbone) oblastmi.
  • lze aplikovat virtuální spoj, kdy je skrz obyčejnou oblast připojen virtuální backbone router

klasifikace routerů

  • interní router - uvnitř oblasti - přísluší pouze k jedné oblasti
  • area border router (ABR) - na rozhraní oblastí = přísluší k více oblastem zároveň
    • měl by vždy příslušet k backbone!!!! (pokud není přímo propojen - virtual link)
    • distribuuje routy mezi oblastmi a backbone.
    • sumarizace - celá oblast je charakterizována adresním rozsahem (nebo více rozsahy)
      • do sousední oblasti jsou předány pouze sumarizované (inter-area) routy.
      • vnitřní (intra-area) routy dané oblasti nejsou předávány.
  • backbone router - přísluší do backbone
  • AS boundar router (ASBR) - na rozhraní AS - obsahuje routy mimo ospf = routované jiným protokolem (staticky, rip, bgp)

klasifikace rout

  • intra-area - vnitřní routy - routy příslušející k dané oblasti
    • všechny routery příslušející k této oblasti je vzájemně znají.
    • aplikuje se na ně algoritmus vyhledání nejkratší cesty.
  • inter-area - routy mezi oblastmi
    • charakterizují oblast jako celek.
    • jsou předávaný prostřednictvím ABR.
  • external - routy směřující mimo ospf (statické, rip, bgp, ...)
    • šíří se přes všechny oblasti, nelze je nijak sumarizovat :((

stub oblast

  • speciální typ - je připojena jediným bodem někam dál
  • nesmí obsahovat ASBR.
  • v této oblasti se šíří pouze interní (intra-area) routy, inter (mezi-oblastní) a default routa.
  • nešíří se do ní a z ní external routy.
  • lze zakázat i šíření inter-area rout.
  • výhodné pro koncové oblasti routované pomocí ospf, kde ale nejsou potřeba external-routy (např. servery v serverovně by mohly být routované v takovéto oblasti)

metrika

  • pro vnitřní routy se nastavuje cena pro odchozí traffic skrz fyzický interfejs.
    • mezi jednotlivými routery v oblasti s vypočítá cesta s nejmenší cenou
  • inter-area routy dostanou cenu podle nejlevnější routy, která je v dané oblasti
  • external routy - 2 typy
    • type 1 - přičítá se k definované ceně také cena za vnitřní routy v cestě k cíli
    • type 2 (default) - je konstantní v celé oblasti - nic se nepřičítá.

konvergence

  • zebra defaultně každých 10s kontaktí své sousedy pomocí hello protokolu.
  • v případě, ze soused nereaguje po dobu dead intervalu (default 40s) je link zrušen a zebra avizuje celé síti výpadek spoje.
  • po každé změně dochází k rekalkulaci rout v celé oblasti
  • pri velké oblasti (současný stav) toto může trvat i v řádu minut. Během tohoto intervalu je routováni nestabilní -> konverguje postupně ke správné variantě
  • při výpočtu se používá matice ve které jsou všechny routery a networky - za současného stavu se může jednat cca o matici odhadem 200x200. -> docela problém.

příklad

             ...........................
             .   +                     .
             .   | 3+---+              .      N12      N14
             . N1|--|RT1|\ 1           .        \ N13 /
             .   |  +---+ \            .        8\ |8/8
             .   +         \ ____      .          \|/
             .              /    \   1+---+8    8+---+6
             .             *  N3  *---|RT4|------|RT5|--------+
             .              \____/    +---+      +---+        |
             .    +         /      \   .           |7         |
             .    | 3+---+ /        \  .           |          |
             .  N2|--|RT2|/1        1\ .           |6         |
             .    |  +---+            +---+8    6+---+        |
             .    +                   |RT3|------|RT6|        |
             .                        +---+      +---+        |
             .                      2/ .         Ia|7         |
             .                      /  .           |          |
             .             +---------+ .           |          |
             .Area 1           N4      .           |          |
             ...........................           |          |
          ..........................               |          |
          .            N11         .               |          |
          .        +---------+     .               |          |
          .             |          .               |          |    N12
          .             |3         .             Ib|5         |6 2/
          .           +---+        .             +----+     +---+/
          .           |RT9|        .    .........|RT10|.....|RT7|---N15.
          .           +---+        .    .        +----+     +---+ 9    .
          .             |1         .    .    +  /3    1\      |1       .
          .            _|__        .    .    | /        \   __|_       .
          .           /    \      1+----+2   |/          \ /    \      .
          .          *  N9  *------|RT11|----|            *  N6  *     .
          .           \____/       +----+    |             \____/      .
          .             |          .    .    |                |        .
          .             |1         .    .    +                |1       .
          .  +--+   10+----+       .    .   N8              +---+      .
          .  |H1|-----|RT12|       .    .                   |RT8|      .
          .  +--+SLIP +----+       .    .                   +---+      .
          .             |2         .    .                     |4       .
          .             |          .    .                     |        .
          .        +---------+     .    .                 +--------+   .
          .            N10         .    .                     N7       .
          .                        .    .Area 2                        .
          .Area 3                  .    ................................
          ..........................

  

zebra

charakteristika

  • modulární univerzální systém pro routování na linuxu
  • implementace ospf, bgp, rip protokolu (i ipv6 verze).
  • centrální modul - zebra - stará se zavádění rout do systému.
  • ospfd - modul pro ospf
  • každý z modulů má vlastní konfigurák (v /etc/quagga/)

konfiguráky

Viz také NastaveniZebry

  • řádek začínající vykřičníkem - poznámka

ospfd.conf

hostname stockhlm
password XXXX
enable password XXXX
hostname je víceméně jen pro info odkud konfigurák je. password a enable password jsou 2 (různé či stejné) hesla pro konfigurační terminál. enable slouží pro spřístupnění konfiguračních možností.

interface eth0
 description alcoma_vkd_kryton
 ip ospf cost 10
 ip ospf priority 1
 ip ospf dead-interval 60
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 XXXX
!

blok pro konfiguraci jednotlivých interface

  • cost X - cena (metrika) daného interfejsu - pro odchozí traffic
  • priority X - priorita při volbe designated routeru
  • authentification - nastavení typu autorizace komunikace
  • message-digest-key - klíč pro autentifikaci
  • dead-interval X - doba za jakou bude spoj prohlasen za mrtveho
    • Defaultne je 40, ale u wifin je dobre ho zvysit na 60. Jinak neni treba nastavovat.
  • hello-interval X - možnost měnit interval mezi hello (se většinou nemění)
  • !!!jak hello, tak dead musi byt STEJNE pro sousedy! jinak se nedomluvej!!!

router ospf
 ospf router-id 10.102.0.36
 redistribute connected route-map just-10
 redistribute static metric 200
 redistribute kernel metric-type 1 metric 100
 passive-interface dummy0
 network 10.102.0.36/32 area 0---+ literatura

 network 10.102.32.40/29 area 0
 area 0 range 10.102.32.0/19

sekce pro nastavení parametrů routeru

  • ospf router-id X.X.X.X - unikatni identifikator pro router (např. dummy) - jinak libovolné 32bit číslo.
  • redistribute connected [route-map _mapa_] redistribuj přímo připojené rozsahy
  • redistribute static [route-map mapa metric-type 1/2 metric X] - redistrubuje staticky routy uvedeny v zebra.conf - distribuovány jako external routy
  • redistribute kernel - redistrubne kernelovy routy (přídané například přes route add nebo ip r add) - distribuovány jako external routy - Mějte raději vždy povolené ikdyž tam žádná statická není.
  • network X.X.X.X area Y - přířadí tento rozsah do oblasti ospf
    • rozsah musí odpovídat (nebo být podmnožinou) rozsahu na přimo připojeném interfejsu.
    • rozsah bude distribuován jako intra-area routa po oblasti.
    • na tomto rozsahu bude zebra hledat sousedy
  • area Y range X.X.X.X/Z
    • specifikace rozsahu celé oblasti
    • mělo by být na všech routerech této oblasti stejně nastavené.

další možnosti viz web zebry.

route-map just-10 permit 10
 match ip address net-10

route-map

  • umoznuje zvolit, co propagovat a co ne.
  • *match ip address <access-list_name> - provede filtraci podle access-listu
  • předchozí příkladek říká, že se route-mapa just-10 bude řídit podle access-listu se jménem net-10

access-list net-10 deny 192.168.123.0/24
access-list net-10 permit 192.168.0.0/16
access-list net-10 permit 10.102.0.0/16

access-list

  • access-list permit 10.102.0.0/16 - povoli všecko z tohodle subnetu
  • access-list deny 192.168.123.0/24 - zakáže

zebra.conf

Nemusíte vůbec používat. Viz ZebraConf

konfigurační/monitorovací rozhraní

  • moduly zebry lze ovládat přes telnet
  • zebra: telnet localhost 2601
  • ospfd: telnet localhost 2604

rady k tomuto rozhraní

  • přes tabulátor nabízí postupně možnosti pro daný příkaz/doplňuje rozepsané příkazy
  • vypsání sousedů: show ip ospf neighbor
  • lze přes něj i nastavovat online parametry - nutné zadat heslo pro enable

zásady plánování sítě (by cisco)

volba backbone

  • backbone by měla být stabilní a redundantní.
  • musí být souvislá. (lze řešit pomocí virtuálních linků, ale toto je pouze nouzové řešení. ideální je virtuální linky nepoužívat.
  • neměla by obsahovat žádné pracovní stanice, servery .. proste jen routery.
  • návrh pro klfree: backbone by obsahovala pouze routery na silveru.

volba oblastí

  • oblast by měla mít konzistentní adresní prostor.
  • dobré mít víc jak 1 ABR

přidělovaní adres

  • adresy přidělovat s ohledem na fyzické umístění
    • počítat s tím, přes co daná oblast pojede a podle toho dát rozsah
    • snažit se udržovat kompaktní bloky adres pohromadě.
    • počítat s dostatečnou rezervou pro další rozvoj.

outdoor

  • routovat staticky - v případě možné redundance použít zcela nezávislý lokální ospf systém, jako celek ale staticky.
  • protože není moc jasné jak se co do budoucna propojí bude plánování docela obtížné
  • možná si nechávat rezervy v adresách = nepřidělovat postupně

ECMP (equal cost multipath) routování

Pokud má některý router více peerů, kterými se lze dostat na nějakou cílovou IP (nebo subnet), Zebra vypočítá ceny jednotlivých cest a do routovací tabulky uloží tu cestu, která je v danou chvíli funkční s nejmenší váhou. Pokud se stane, že je k dispozici více cest se stejnou nejnižší cenou, Zebra uloží do routovací tabulky pravidlo, podle kterého router +- rovnoměrně rozloží provoz mezi tyto cesty. Pro efektivní rozkládání provozu v síti KlFree? má největší význam cesta na bránu do Internetu, která je totožná s default routou.

[root@housle ~]# ip route
...
default  proto zebra  metric 115 equalize 
        nexthop via 10.102.208.9  dev vlan3 weight 1
        nexthop via 10.102.208.1  dev ath0 weight 1

Důležité je si uvědomit dvě věci:

  • cena cesty se určuje jako součet VŚECH spojů mezi koncovými stroji, kde běží OSPF
  • cena cesty se určuje pro každý směr zvlášť

Jak zjistit ceny jednotlivých spojů ?

Pomocí příkazu ip route zjistíte, který spoj je v danou chvíli používaný pro provoz do Internetu a jakou má cenu (metric):

[root@housle ~]# ip route
....
default via 10.102.208.9 dev vlan3  proto zebra  metric 110 equalize 

To je spoj, který má nejnižší cenu. Ten na chvíli shodíme a opakujeme ip route - dozvíme se cenu toho druhého spoje:

[root@housle ~]# ip route
....
default via 10.102.208.9 dev ath0  proto zebra  metric 120 equalize 

Poznamka: Pomoci terminalu vestaveneho v ospfd se muzete vyhnout shazovani default smerovani, a muzete si precist ceny vsech smerovani v ospf databazi.

Potom je dobré zvolit rozumný kompromis - na cestě s nižší cenou trochu přidat a na cestě s vyšší cenou trochu ubrat (v ospfd.conf), tak aby byla cena obou směrů stejná. Nejvhodnější je doladit rozdíl na posledním hopu. Uvědomte si, že nastavení ovlivní cenu všech cest, které přes daný spoj vedou. Vždy se snažte nastavit cenu stejnou na obou koncích spoje (pokud k nerovnováze nejsou závažnější důvody).

Jestliže jsou cesty stejně drahé oběma směry, stačí provést vyladění jenom z jedné strany. Pokud tomu tak není, je potřeba totéž provést i z Gate.

Jak poznám, že to funguje?

Pomocí jnettop, iptraf apod. při normálním provozu musí být upload i download rozložený víceméně rovnoměrně mezi oba směry (předpokládám, že většina provozu teče do a z Internetu).

literatura

Otazky po Zebra Session

  • smi se rozpadnout backbone ? Budou na sebe videt jednotlive casti, kdyz je sit stale jeste pres nejake ABR souvisla, ale backbone area neni souvisla ?
  • co presne propaguji ABR do backbone ? Vsechna smerovani nebo sumarizace ? Co propaguji ostatnim ABR ?
  • co PRESNE je virtualni link ?
  • co se stane s virtualnimi linky (z backbone do arey X) kdyz se backbone rozpadne (spadne paterni spoj) ?
Topic revision: r20 - 2017-05-04 - 10:54:55 - JanSechovec
Navody.ZebriFarma moved from SpravaSite.ZebriFarma on 2010-11-30 - 20:07 by JanSechovec - put it back
 

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback