Dokument spracovali : Michal Palúch, Samuel Olach, Peter Zeman, Martin Jašica, Martin Šimurka, Juraj Homoľa
Vypracované ako smestrálna práca predmetu Širokopásmové siete v šk. roku 2005/06 pri realizácií Linux ATM smerovača pre CLIP.
ATM pod Linuxom
Podpora sietí ATM v Linuxe je rozdelená do dvoch častí. Prvá časť je obsiahnutá v jadre – kerneli operačného systému. Sem patria ovládače ATM sieťových rozhraní a samotná podpora protokolov CLIP, LANE a MPOA. Druhá časť pozostáva z pomocných programov, ktoré pracujú v užívateľskom prostredí a zabezpečujú špecializované funkcie – ATM signalizáciu, udržiavanie ARP tabuliek, prípadne plnia úlohu LECS, LES, BUS, ATMARP či MARS serverov.
Základná podpora ATM protokolov
V našom prípade sme používali distribúciu Debian Gnu/Linux, Kernel 2.6.8-2-K7, kde bola už podpora ATM k dispozícii hneď po nainštalovaní Linuxu. V našom prípade nebolo potrebné jadro skompilovať nanovo.
Po inštalácii sa ovládač skompiloval do 3 modulov: idt77252.o, suni.o a nicstar.o. Ovládač suni.o je suni PHY driver (155Mbps). Ovládač idt77252.o je podporou pre karty s čipom IDT 77252. Ovládač nicstar.o je podporou sieťových kariet NICSTAR. Všetky moduly nahráme do kernelu nasledovnými príkazmi.
modprobe nicstar modprobe idt77252
A aby bol celý proces spúšťania IP over ATM úplne automatický, je možné príslušný skript vložiť (jednoduchý spôsob) do tzv. linuxáckeho autoexecu, teda do súboru /etc/rc.local . Ale je možné, že v niektorých distribúciach sú to rozdielne súbory.
Signalizačný démon
Signalizačný démon atmsigd je súčasťou balíka ATM Tools, ktorý treba zvyčajne doinštalovať. Pre debian to robíme príkazom: apt-get install atm-tools. Implementuje ATM UNI signalizačný protokol. Požiadavky na vytvorenie, akceptovanie alebo ukončenie spojenia sú kernelom (pomocou relatívne jednoduchého protokolu) zasielané signalizačnému démonu, ktorý udržuje kontakt so sieťou.
Signalizačný démon nie je schopný vytvárať a rušiť spojenia, pokým nie je lokálnemu rozhraniu ATM pridelená ATM adresa démonom ilmid, alebo ručne nakonfigurovaná použitím nástroja atmaddr. Nasledovným príkazom spusítíme signalizačný démon, voľba -b znamená, že po inicializácií pobeží na pozadí.
atmsigd -b
ILMI démon
Ak nie je nastavené číslo rozhrania, ilmid použije rozhranie 0. Nástrojom atmaddr môžete odskúšať, či registrácia adresy cez ILMI prebehla úspešne.
Nasledovným príkazom spustíme ILMI démon, voľba -b znamená, že po inicializácií pobeží na pozadí.
ilmid -b
Classical IP over ATM – CLIP
Aby mohol bežať protokol IP cez protokol ATM je nutné zabezpečiť mapovanie IP adries na ATM adresy. Situácia je obdobná ako pri mapovaní MAC adresy sieťovej karty v sieti Ethernet na IP adresu. Mapovanie ATM adries na IP adresy zabezpečuje ATMARP. ATMARP je v Linuxe implementovaný ako user space démon, ktorý je použitý na generovanie a odpovedanie na ARP dopyty. Súčasná časť obsluhy v kerneli udržuje malú prekladovú tabuľku obsahujúcu čiastočné informácie potrebné na obsluhu ARP požiadaviek.
ATMARP protokol je podľa špecifikácie dokumentov RFC1577 a RFC1755 implementovaný ako user space démon v programe atmarpd. Pred spustením atmarpd musí už bežať signalizačný démon atmsigd a musí byť správne nakonfigurovaná ATM adresa, buď ručne nástrojom atmaddr, alebo automaticky, použitím démona ilmid, implementujúceho protokol ILMI.
ATMARP požiadavky sú kernelom (použitím relatívne jednoduchého protokolu) zasielané ATMARP démonu, ktorý udržuje kontakt so sieťou.
Atmarpd môže fungovať ako ATMARP klient alebo ako ATMARP server. Tiež podporuje možnosť pridelenia jednému ATM rozhraniu viacerých ATM adries.
Atmarpd nemá svoj konfiguračný súbor. Po spustení je konfigurovaný nástrojom atmarp, priloženom v balíku ATM Tools. Ak je zapnuté vypisovanie ladiacich správ (debugging messages), tak po každej zmene ATMARP tabuľky je tabuľka zapísaná do súboru /var/run/atmarpd.table (voľbou -D je možné zmeniť adresár do ktorého je tabuľka zapisovaná). Nasledovným príkazom spustime ATM ARP démon, voľba -b znamená, že po inicializácií pobeží na pozadí.
atmarpd -b
Program atmarp je nástroj na konfigurovanie ATMARP démona. Po tom, ako už bežia podporné programy atmsigd, ilmid a atmarpd pristúpime k vytvoreniu ATM rozhrania a konfigurácii rozhrania programom ifconfig. Nasledovným príkazom vytvoríme ATM rozhranie a príkazom ifconfig mu nastavíme IP adresu 192.168.0.10 .
atmarp -c atm0 ifconfig atm0 192.168.0.10
Ak počítač vystupuje ako ATMARP server, nepotrebuje žiadnu prídavnú konfiguráciu. Inak musí byť ATM adresa ATMARP servera zapísaná v ATMARP tabuľke. Toto dosiahneme príkazom atmarp, voľba -s slúži na zadanie podsiete, prípadne adresu stanice, pre ktorú sa bude arpserver poskytovať. Za túto adresu napíšeme ATM adresu nášho arpservera.
atmarp -s 192.168.0.10 47.0005.80FFE1000000F20F3877.0020485B5210.00 arpsrv
Táto adresa je iba ilustračná a slúži len na znázornenie formátu, v ktorom je potrebné adresu zadávať.
Po nakonfigurovaní CLIP (Classical IP over ATM) môžeme prevádzkovať na vybudovanej sieti aplikácie používajúce protokol IP bez nutnosti nového kompilovania alebo konfigurovania. Programy vlastne ani nevedia, že bežia cez ATM.
Nakoniec ešte malá poznámočka: všetky príkazy je potrebné zadávať ako superužívateľ.
Príklad konfigurácie
Ako bude vyzarať zapojenie:
- Majme 2 stanice s ATM kartami (ATM ForeRunner LE155) a aj ATM switch ForeRunner do ktorého sú stanice pripojené.
- Jedno PC bude slúžiť ATM ARP server
- Druhé PC bude slúžiťiba ako klient.
Nasledovné skripty obsahujú príkaz &&, ktorý slúži napr. na ladenie. Presne slúži na zastavenie skriptu v prípade chyby v aktuálnom príkaze.
#**********************SKRIPT PRE ARP SERVER********************** #!/bin/bash modprobe nicstar && modprobe idt77252 && modprobe suni # killnutie demonov, ak nahodou existuju for i in atmsigd ilmid atmarpd do killall $i done # loadnutie demonov atmsigd -b && ilmid -b && atmarpd -b && # nahodenie interfacu atmarp -c atm0 && ifconfig atm0 192.168.0.10 #********************************EOF******************************** #**********************SKRIPT PRE KLIENTA************************* #!/bin/bash modprobe nicstar && modprobe idt77252 && modprobe suni # killnutie demonov, ak nahodou existuju for i in atmsigd ilmid atmarpd do killall $i done # loadnutie demonov atmsigd -b && ilmid -b && atmarpd -b && # nahodenie interfacu atmarp -c atm0 && ifconfig atm0 192.168.0.8 # atmarp client mode: connect na IP a ATMMAC adresa servera atmarp -s 192.168.0.10 47.0005.80FFE1000000F20F3877.0020485B5210.00 arpsrv #*****************************EOF**********************************