Quagga kasutamine Debianiga

Allikas: Kuutõrvaja

Sissejuhatus

Quagga http://www.quagga.net/ on mitmetel levinud operatsioonisüsteemidel töötav modulaarne ruutingutarkvara, mis toetab selliste ruutinguprotokollide kasutamist

  • OSPF
  • BGP
  • RIP
  • IS-IS

Abstraktsel tasemel võib Quagga arhitektuuri kujutada selliselt

  	+----+  +----+  +-----+  +-----+
       |bgpd|  |ripd|  |ospfd|  |zebra|
       +----+  +----+  +-----+  +-----+
                                   |
       +---------------------------|--+
       |                           v  |
       |  UNIX Kernel  routing table  |
       |                              |
       +------------------------------+
  • alati töötab protsess zebra, mille ülesandeks on teistelt deemonitelt saadud andmete põhjal muuta kerneli ruutingutabelit
  • vastavalt sellele, kuidas on konkreetne ruuter seadistatud töötab seal üks või enam ruutingudeemonit (bgpd, ripd, ospfd)

OSPF protokoll

Internet on jagatud haldusaladeks, iga haldusala haldab tavaliselt ISP või muu organisatsioon ning ühte sellist ala nimetatakse Autonomous System (AS)

           AS5050                   AS5051
 
 
                        AS5052

Tavaliselt arvutatakse ruutinguid IGP (Interior Gateway Protocol) protokollide perekonda kuuluva protokolli abil (nt OSPF) ASi sees ning ASide vahel EGP (Exterior Gateway Protocol) perekonna protokollidega (reeglina BGP4 protokolliga). Reeglina kasutab AS ühte või enamat nö mõistliku suurusega aadressruumi osa. Näiteks aadressil http://www.radb.net/ asub Routing Assets Database, mille abil saab küsida, millisele organisatsioonile usaldatud aadressruumi kuulub mingi konkreetne ip aadress.

OSPF (Open Shortest Path First) protokoll on IGP protokollide perekonda kuuluv ruutinguprotokoll. Käesolevas tekstis esitatud kasutusjuhtum on suhteliselt erandlik, kuid igati väärikas ja praktiline juhtum, mis sobib ruutinguprotokolliga tutvuse tegemiseks, kusjuures piisab kui on kasutada nö tavaline PC arvuti.

Eesmärk

Olgu eesmärgiks kahe lokatsiooni vahel moodustada kahe füüsilise lingi abil redundantne ühendus

  • igal ajahetkel käib andmevahetus üle ühe või teise lingi
  • kui üks link rikneb, arvutavad ruuterid automaatselt ruutingutabelid ümber ja andmevahetus jätkub üle teise lingi

Kusjuures antud juhtumi katsetus on viidud läbi Xen platvormil töötavate virtuaalsete arvutitega.

                                                                        internet
                                                                           |
                                                                           | 
          ___      |                                                       |   |      ___
         |   |------      192.168.15.253                  192.168.15.254   |   ------|   |
         |___|     |        ____   eth1                     eth1  ____     |   |     |___|
                   |       |    |------      1 Gbit/s       -----|    |----'   |
     192.168.17.17 --------|    |                                |    |--------- 192.168.14.14
          ___      |  eth0 |    |                                |    | eth0   |      ___
         |   |------       |____|------     10 Mbit/s       -----|____|        ------|   |
         |___|     |               eth2                     eth2               |     |___|
                   |      192.168.16.253                  192.168.16.254       |
                   |                                                           |
                      Harukontor                            Peakontor

Sarnast tulemuse saab üldiselt saavutada kahel moel

  • redundantsus moodustatakse etherneti kihis - võrguseadmete nn bonding; tavaliselt on sellisel juhtumil füüsiline otspunktide kaugus piiratud nö kaabli pikkusega, kuni mõned sajad meetrid
  • redundantsus moodustatakse ip kihis - kasutatakse ruutinguprotokolle, nagu nt antud juhtumil ospf; iseenesest ei ole otspunktide vahekaugus praktiliselt piiratud

Tarkvara paigaldamine

Quagga tarkvara paigaldamiseks tuleb öelda

 # apt-get install quagga

Seadistusfailid asuvad kataloogis /etc/quagga.

FreeBSD's asub quagga paigaldusfailid ports/net/quagga

Ruuterite seadistamine

Enne Quagga tarkvara seadistamist tuleb ruuterite võrguseadmed seadistada. Seejärel moodustada kummaski arvutis sellise sisuga /etc/quagga/ospfd.conf seadistusfailid.

Peakontor

/etc/quagga/ospfd.conf sisu võiks olla nt selline

 hostname ospfd
 password zebra
 log stdout
 !
 interface eth1
 !
 interface eth2
 !
 router ospf
  ospf router-id 192.168.14.14
  redistribute connected
  network 192.168.15.0/24 area 0.0.0.0
  network 192.168.16.0/24 area 0.0.0.0
 !
 line vty

Harukontor

/etc/quagga/ospfd.conf sisu võiks olla nt selline

 hostname ospfd
 password zebra
 log stdout
 !
 interface eth1
 !  
 interface eth2
 !
 router ospf
  ospf router-id 192.168.17.17
  redistribute connected
  network 192.168.15.0/24 area 0.0.0.0
  network 192.168.16.0/24 area 0.0.0.0
 !
 line vty

Quagga käivitamine

Quagga käivitamiseks tuleb öelda

 # /etc/init.d/quagga start
 Loading capability module if not yet done.
 Starting Quagga daemons (prio:10): zebra ospfd2009/06/09 20:28:44 OSPF: ASBR[Status:1]: Update

Tulemusena tekivad kaks protsessi

 # ps aux | grep quagga
 quagga    3396  0.0  1.0  22840  1364 ?        Ss   23:28   0:00 /usr/lib/quagga/zebra --daemon -A 127.0.0.1
 quagga    3400  0.0  1.4  25520  1876 ?        Ss   23:28   0:00 /usr/lib/quagga/ospfd --daemon -A 127.0.0.1

Ruuteri haldusliidese kasutamine

Quagga ruuterist endast saab ruuterit hallata vtysh programmiga, liides on sarnane Cisco IOS'ile.

 # export VTYSH_PAGER=cat
 # vtysh
 Hello, this is Quagga (version 0.99.10).
 Copyright 1996-2005 Kunihiro Ishiguro, et al.
 
 quagga-router#

Antud OSPF kasutusjuhtumil pakub huvi kontrollida, milliseks on ruutingud kujunenud, kirjutades 'show ip ospf ?' saab näha võimalikke asjakohaseid käske

 quagga-router# show ip ospf ?
 <cr>            
 border-routers  for this area
 database        Database summary
 interface       Interface information
 neighbor        Neighbor list
 route           OSPF routing table

Nt küsides naabrite nimekirja

 quagga-router# show ip ospf nei
 
 Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
 10.0.14.1         1 Full/Backup       33.406s 192.168.15.254  eth1:192.168.15.1        0     0     0
 10.0.14.1         1 Full/Backup       33.406s 192.168.16.254  eth2:192.168.16.1        0     0     0

või küsides ruutinguid

 quagga-router# show ip ospf route
 ============ OSPF network routing table ============
 N    192.168.15.0/24       [10] area: 0.0.0.0
                            directly attached to eth1
 N    192.168.16.0/24       [10] area: 0.0.0.0
                            directly attached to eth2
 
 ============ OSPF router routing table =============
 R    10.0.14.1             [10] area: 0.0.0.0, ASBR
                            via 192.168.15.254, eth1
                            via 192.168.16.254, eth2
 
 ============ OSPF external routing table ===========
 N E2 192.168.10.0/24       [10/20] tag: 0
                            via 192.168.15.254, eth1
                            via 192.168.16.254, eth2
 N E2 192.168.14.0/24       [10/20] tag: 0
                            via 192.168.15.254, eth1
                            via 192.168.16.254, eth2

Operatsioonisüsteemi juurkasutajana ruutingutabelit küsides saab veenduda, et Quagga tõepoolest modifitseerib ruutingutabelit

 # route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 192.168.17.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
 192.168.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
 192.168.15.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
 192.168.14.0    192.168.15.254  255.255.255.0   UG    20     0        0 eth1
 192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
 0.0.0.0         192.168.10.254  0.0.0.0         UG    0      0        0 eth3

Tulemuse kontroll

Püstitatud eesmärgi täitmise kontrollimiseks sobib peab saama katkestada ühe kanali ja ühendus peab jääma tööle; ning peale katkestatud kanali tagasiühendamist (ning andes minutike aega ruutingute stabiliseerumiseks) katkestades teise kanali peab ühendus jällegi jääma otspunktide vahel käima. Ühe kanali katkestuse korral võiks paista selline naabrus

 quagga-router# show ip ospf nei
 
     Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
 10.0.14.1         1 Full/Backup       32.725s 192.168.16.254  eth2:192.168.16.1        0     0     0

Kasulikud lisamaterjalid