Virtuální spojovací pole verze 2

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 23:01, 26. 11. 2007
Dol72 (Diskuse | příspěvky)
(Uploader konfigurací tunelovacích serverů a ASSSK a tunelovací servery při deaktivaci vituální topologie)
← Předchozí porovnání
Verze z 23:02, 26. 11. 2007
Dol72 (Diskuse | příspěvky)
(Uploader konfigurací tunelovacích serverů a ASSSK a tunelovací servery při de/aktivaci vituální topologie)
Následující porovnání →
Řádka 157: Řádka 157:
conf-uploader.sh -d '6@ostrava' conf-uploader.sh -d '6@ostrava'
Skript projde adresář /opt/virtlab/data/vlanstore/''RESID'', podle '''/etc/virtlab/conf-servers.conf''' převede jména lokalit na IP adresy konfiguračních serverů a na ty odešle podle protokolu Konfiguračního serveru jména zařízení a obsahy souborů. Po každém přenosu provede half-close a očekává odpověď serveru (prozatím s nekonečným timeoutem). Pokud odpověď neobsahuje řetězec 200, skript zaloguje kritickou chybu, nijak mu to však nebrání pokračovat v dalších uploadech. Skript projde adresář /opt/virtlab/data/vlanstore/''RESID'', podle '''/etc/virtlab/conf-servers.conf''' převede jména lokalit na IP adresy konfiguračních serverů a na ty odešle podle protokolu Konfiguračního serveru jména zařízení a obsahy souborů. Po každém přenosu provede half-close a očekává odpověď serveru (prozatím s nekonečným timeoutem). Pokud odpověď neobsahuje řetězec 200, skript zaloguje kritickou chybu, nijak mu to však nebrání pokračovat v dalších uploadech.
- +Popsané operace se provedou na všech souborech, které byly nalezeny!
- +
=== PortSetter === === PortSetter ===

Verze z 23:02, 26. 11. 2007

Obsah

Základní princip

Propojování Ethernet linek (access i trunk)

Jednotlivá rozhraní laboratorních prvků (reálných i simulovaných) jsou přivedena na různé fixní VLAN (buďto nastavením fyzického portu C3560 do VLAN nebo trunkem od XEN, Dynamips nebo jiných virtualizačních serverů). Na portech C3560 připojujících reálná zařízení je konfigurován QinQ. Bylo prověřeno, že QinQ tunelem procházejí i netagované rámce, což umožnilo použít shodnou technologii pro propojování trunk i access linek laboratorních prvků. VLANy jsou ukončeny na tunelovacím serveru, který podle konfigurace bridguje veškerý provoz mezí Ethernet rozhraními síťových prvků lokality, resp. jej posílá do cizích lokalit v UDP přes Internet. Tunelovací server neřeší, zda jsou rámce tagovány 2x (případ přemosťování provozu z trunků).

K tunnel serveru přicházejí z C3560 data z laboratorních zařízení trunkem, který nese

  • single-tagged rámce, je-li laboratorní zařízení připojeno access linkou
  • double-tagged rámce, je-li laboratorní zařízení připojeno trunkem

V každém případě (vnější) tag nalepuje port, kterým do C3560 rámec od uživatelského zařízení vstoupil. Tunelovací server nerozlišuje, zda přemosťuje single-tagged nebo double-tagged rámce, orientuje se podle vnějšího tagu a případný vnitřní ho nezajímá. Jen je třeba nastavit větší MTU (1508 B).

Podle požadované topologie se automaticky konfigurují jen tunelovací servery; konfigurace C3560 (příp. C1900) jsou pevné - jedná se o přiřazení jednotlivých portů do QinQ VLAN, nastavení transparentního průchodu L2 protokolů a vytvoření všech VLAN v lokalitě (kvůli bridgeování v řetězu C3560 vytváříme všude všechny VLAN použité v lokalitě).

Propojování sériových linek

Propojování sériových linek se obsluhuje "klasicky", tj. generováním konfigurace pro jednotlivé ASSSK. Je předpokládáno, že se v topologii požadují pouze spoje mezi sériovými rozhraními laboratorních prvků připojených do téhož ASSSK, tj. že mapovací algoritmus správně pracuje s connectivity groups.

Paralelní zpracování rezervací

Generování a aktivace konfigurací se musí vypořádat s tím, že aktivátor konfigurací (atd) může chtít generátor konfigurací spustit paralelně vícekrát, pokud se sejde více rezervací vyžádaných danou lokalitou na stejný čas. Generátor konfigurací je proto reentrantní a generuje pro jednotlivá spuštění nezávislé sady souborů (vždy přípona RESID za každým, ta se pak jako parametr také předává uploaderu konfigurací do konfiguračního serveru). Také se může stát, že konfiguraci lokality bude chtít (přes Konfigurační server) modifikovat více lokalit naráz (ať už při aktivci nebo daktivaci) a nahrávané konfigurace (do Tunserveru nebo ASSSK) se nesmí během uploadu pomíchat (=musí se serializovat). Serializaci vyřešíme zatím tak, že konfigurační server bude současně přijímat jen 1 TCP spojení.

Poznámka:

  • Předpokládáme, že CONNECT timeout na klientech je řádově 1 minuta, za kteroužto dobu se jistě předchozí jedno TCP spojení vyřídí (nejpomalejši je upload konfigurace do ASSSK, kde se mezi znaky čeká 100ms, ale zato jsou konfigy krátké).
  • Všechny hodnoty pro TCP spojení jsou v /proc/sys/net/netfilter/, prip. v /proc/sys/net/ipv4/*tcp* (tcp_syn_retries), lze i nastavit zápisem do příslušného souboru.
    • Viz http://www.mjmwired.net/kernel/Documentation/networking/ip-sysctl.txt
    • Modernější způsob přístupu ke konstantám: sysctl. Debian Etch má soubor /etc/sysctl.conf který je pro to určený a příkazem sysctl -p lze aktivovat změny. Jinak po startu zajistuje natazeni toho (/etc/sysctl.conf) souboru link v /etc/rcS.d/procps.sh (ukazujici na /etc/init.d/prospc.sh). Takze nejlepsi je nahodit prislusny radek do /etc/systl.conf a aktivovat nastaveni pres "sysctl -p". Po restartu se natahne automaticky.


Na straně klienta konfiguračního serveru je třeba později trochu vylepšit obsluhu timeoutu z connect() - může se stát, že by v určitou hodinu chtělo nalévat konfiguraci do téže lokality velmi mnoho klientů a v rámci defaultního connect() timeoutu by se to nestihlo.

Konfigurační soubory

tunservers.conf

Mapuje jména lokalit na IP adresy jejich tunelovacích serverů. Syntaxe jako ve staré verzi spojovače:

jmeno_lokality ip_adresa_tunelovaciho_serveru

Nová syntaxe spoje.conf

Ve všech lokalitách je tentýž soubor, obsahující definici připojení laboratorních prvků ve všech lokalitách. To je nutné proto, že konfigurace pro všechny umí generovat kterákoli z lokalit (vždy lokalita, která je "zdrojem" rezervace).

Je zavedena konvence, že jména lokalit, laboratorních prvků a jejich rozhraní píšeme v konfiguračních souborech malými písmeny.


Syntaxe spoje.conf:

device@site:interface VLAN vlan_number
device@site:interface ASSSK asssk-name@site port


Rozhraní laboratorních prvků, které nepodporují trunking, mohou být do řetězu přepínačů připojeny přes port C1900 (ten je k C3560 připojen přes ISL trunk)


Příklad:

r1@ostrava:ethernet0 VLAN 1000
r1@ostrava:ethernet1 VLAN 1001
uml1@ostrava:eth0 VLAN 2000
r1@ostrava:serial0 ASSSK asssk1@ostrava 1
r1@ostrava:serial1 ASSSK asssk1@ostrava 2

ra@karvina:fastethernet0/0 VLAN 300
ra@karvina:fastethernet0/1 VLAN 301
uml1@karvina:eth0 VLAN 400
ra@karvina:serial0 ASSSK asssk1@karvina 1
ra@karvina:serial0 ASSSK ASSSK1@karvina 2

Soubor s popisem topologie

Syntaxe podobná jako v první verzi spojovače, pouze s ohledem na implicitní použití QinQ se řádky neukončují znakem ";" nebo "&"

r1@site1:interface1,r2@site2:interface2

Programy

POZOR: Pro zjednodušení programy předpokládají správnou syntexi konfiguračních souborů a souboru s požadovanou topologií. V budoucnu bude implementován syntax checker (patrně externě).

make-conn-tun-conf.pl - Generátor konfigurací pro aktivaci/deaktivaci vituální topologie

Konfigurace: veškerá se provádí nastavením proměnných (a jedné konstanty) na začátku skriptu.

Spuštění: jediným parametrem je resid souboru s topologií, např.: /opt/virtlab/spojovac/make-conn-tun-conf.pl 30@ostrava Na jeho základě je vyhledán soubor resid v adresáři $residpath="/opt/virtlab/data/rsv-server".

Požadavek: v adresáři kontroverzního názvu /opt/virtlab/COMMON/src/ je umístěn soubor vl-debug.pl.

Na základě souborů $spojeconffile="/etc/virtlab/spoje.conf" a $tunserversfile="/etc/virtlab/tunservers.conf" :

V adresáři $destdir="/opt/virtlab/data/vlanstore" vytvoří následující strukturu: Soubory označené * nemusejí vzniknout!

$destdir
 |
 +--- <resid>
       |
       +--- activate
       |    +---tunscfg@<site>*      # příkazy pro tunelovací server
       |    +---<assskname>@<site>*  # příkazy pro jednotlivá ASSSK
       |    +---portsetter@<site>    # seznam portů VLMUXu, které mají jít při aktivaci nahoru
       |
       +--- deactivate
            +---tunscfg@<site>
            +---<assskname>@<site>
            +---portsetter@<site>    # seznam portů VLMUXu, které mají jít při aktivaci dolů


Pro jedno spojení vzniknou záznamy v jednom až dvou souborech (podle toho, jde-li o tutéž lokalitu nebo dvě různé). Podle toho, zda jde o propojení mezi rozhraními, která se podle spoje.conf dají připojit do VLANu nebo k ASSSK zařízení, se rozezná, jaké soubory to budou:

Ethernet rozhraní a simulovaná rozhraní přivedená přes VLAN

activate/tunscfg@src_site a activate/tunscfg@dst_site.

Ty obsahují po jednom řádku pro src_site ve tvaru:

redir zdrojový_VLAN cílový_VLAN IP_adresa_cílové_lokality

a pro dst_site naopak:

redir cílový_VLAN zdrojový_VLAN IP_adresa_zdrojové_lokality

Pokud src_site==dst_site, oba dva řádky jsou zapsány v příslušném jediném souboru.

deactivate/tunscfg@<site> se liší pouze tím, že místo redir vkládá na začátek řádku noredir.

Dále se vytvoří záznam do souborů activate/portsetter@src_site a activate/tunscfg@dst_site (resp. deactivate) ve tvaru dohodnutém na schůzi:

VLMUX_IP_address up|down nazev_interface_na_VLMUX
...

Příklad:

10.0.0.1 up fastethernet0/1

Sériová rozhraní (spojovaná v ASSSK)

Lze propojit pouze sériové porty v jedné lokalitě na jednom ASSSK zařízení. activate/ASSSKname@src_site:

connect port1 port2
clock port1 rate
clock port2 rate

Hodnota rate je nastavena na začátku skriptu use constant ASSSKCLOCK => 64000;


deactivate/ASSSKname@src_site:

no connect port1 port2
no clock port1
no clock port2

Uploader konfigurací tunelovacích serverů a ASSSK a tunelovací servery při de/aktivaci vituální topologie

DISTR/src/spojovac/conf-uploader.sh je skript, který provede zmíněný upload. Spouští se s přepínačem -a (aktivace) nebo -d (deaktivace) a RESID, např.

conf-uploader.sh -d '6@ostrava'

Skript projde adresář /opt/virtlab/data/vlanstore/RESID, podle /etc/virtlab/conf-servers.conf převede jména lokalit na IP adresy konfiguračních serverů a na ty odešle podle protokolu Konfiguračního serveru jména zařízení a obsahy souborů. Po každém přenosu provede half-close a očekává odpověď serveru (prozatím s nekonečným timeoutem). Pokud odpověď neobsahuje řetězec 200, skript zaloguje kritickou chybu, nijak mu to však nebrání pokračovat v dalších uploadech. Popsané operace se provedou na všech souborech, které byly nalezeny!

PortSetter

PortSetter je skript spouštěný pomocí démona Inetd, který pomocí SNMP povoluje nebo zakazuje jednotlivé porty na VLMUX přepínačích (podle toho, zda port v danou chvíli patří nebo nepatří do virtuální topologie). Port, který do topologie úlohy patří se na začátku timeslotu povolí, před jeho koncem zakáže.

Tento odstavec resi nahazovani/zhazovani portu na C3550/C3560 pomoci snmp verze 2c

potrebne nastaveni do switche
snmp-server community xxx RO
snmp-server community yyy RW
snmp-server ifindex persist
pouziti skriptu snmpport.sh
umisteni <<SVN>>/DISTR/src/spojovac/snmpport.sh
pozor! nejsou osetreny cisla portu, tedy je mozno si uriznout vetev pod vlastnim zadkem
#nahozeni portu 1 na switchi 10.0.0.10
snmpport.sh 10.0.0.10 up 1
#zhozeni portu 1 na switchi 10.0.0.10
snmpport.sh 10.0.0.10 down 1
#zobrazeni stavu portu 1
snmpport.sh 10.0.0.10 show 1
#zobrazeni stavu vsech portu
snmpport.sh 10.0.0.10 show all

Aktivace/deaktivace konfigurací (CRON)

Virtlab:Komponenty/CRON

TODO

  • Zjistit, co se přesně stane, když na jednom ze spojených rozhraní laboratorních prvků uživatel nastaví trunk a na druhém access. Pro případ spojení v rámci lokality i přes tunel.
Osobní nástroje