Viacvrstvový prepínač

Autor:
Bc. Daniel Ščepka


Študijný program: PKSS
Predmet: Prepínanie a smerovanie v IP sieťach
Akademický rok: 2010/11

1. Analýza

Zariadenie, ktoré budeme analyzovať sa nazýva prepínač (anglicky switch). Slúži ako „centrum počítačovej siete“. Je to aktívny sieťový prvok, ktorý prepája jednotlivé časti siete. Používa sa vo hviezdicových topológiach počítačových sietí. Funguje ako ich centrálny prvok. Označuje sa aj ako viacportový most (anglicky bridge).

Prepínač je porovnávaný s ďalším aktívnym prvkom – rozbočovačom (anglicky hub). Ich funkcia je v podstate rovnaká. Obe prijímajú rámce, ktoré zosilnia a pošlú ďalej na port cieľového zariadenia. Najväčším rozdielom medzi prepínačom a rozbočovačom je v spôsobe preposielania týchto rámcov. Keďže rozbočovač je jednoduché zariadenie, ktoré dokáže rámec iba prijať a poslať ďalej, posiela tento rámec na všetky ostatné porty. Rámec sa síce dostane tam kam má, ale dostanú ho aj iné zariadenia, ktoré ho ignorujú. Týmto dochádza k zbytočnému zaťaženiu siete. Ďalším rozdielom je rozdelenie šírky pásma. Rozbočovač ju musí rozdeliť medzi všetky porty, to znamená, že čím viac zariadení k nemu pripojíme, tým dosiahneme menšiu šírku pásma ku koncovému zariadeniu.

Prehľad sieťových zariadení k príslušným vrstvám
Obrázok 1 Prehľad sieťových zariadení k príslušným vrstvám

Prepínač je v tomto ďaleko inteligentnejší. Jeho veľkou prednosťou je interná pamäť. Vďaka nej má toto zariadenie schopnosť učiť sa. Učenie spočíva v pamätaní si adries pripojených zariadení a portov, na ktoré sú tieto zariadenia pripojené. Tieto údaje si ukladá do pamäti adresovateľnej podľa obsahu (Content Addressable Memory). Prepínače pracujú na druhej vrstve (linkovej vrstve RM OSI), čiže rozhodnutia robia na základe MAC adresy. Prepínač prijme dátový rámec a na základe tabuľky, v ktorej má uložené MAC adresy a porty, rozhodne na ktorý port tento dátový rámec vyšle. Ak sa daná adresa v tabuľke nevyskytuje, vyšle rámec na všetky porty, okrem toho, odkiaľ prišiel. Týmto sa celý proces posielania rámcov zrýchľuje a zároveň prepínač využíva celú šírku pásma, ktorou je k nemu zariadenie pripojené. Ďalším rozdielom je počet kolíznych domén. Rozbočovač vytvára iba jednu veľkú kolíznu doménu, na rozdiel od prepínača, ktorý vytvára viac menších kolíznych domén. Tým vzniká mikrosegmentácia sietí.

2.1. Spôsoby preposielania rámcov

Na prenos rámcov sa využívajú viaceré metódy. Najpopulárnejšie sú metódy „ulož a presuň“ (anglicky Store-&-Forward) a „priebežné prepínanie“ (anglicky Cut through). Pre prehľadnosť a zrozumiteľnosť budem ďalej používať ich anglické názvy.

Metóda prenosu rámcov Cut through [1]
Obrázok 2 Metóda prenosu rámcov Cut through [1]

Metóda prenosu rámcov Cut-through sa vyznačuje svojou rýchlosťou. Presúvanie rámca cez prepínač sa začína ešte pred prijatím celého rámca. Prepínač načíta (minimálne) cieľovú MAC adresu a ihneď začína preposielať rámec na cieľový port zariadenia. Výhodou je už spomínaná vysoká rýchlosť preposielania, nevýhodou je absencia kontroly. Chybné rámce sa bez kontroly posielajú ďalej, nedochádza ku cyklickej kontrole CRC.

Dve metódy Cut-through prepínania sú „Rýchle prepínanie“ a „Fragment-Free“. Rýchle prepínanie (anglicky Fast forward) má nižšiu úroveň oneskorenia, rámec sa presúva po prečítaní cieľovej adresy.

Fragment-Free filtruje odchádzajúci kolízny fragment pred posielaním, odstraňuje kolízne fragmentov, zväčša menšie ako 64bitov. Väčšie než 64 bytov sú prenesené.

Metóda prenosu rámcov Store-&-Forward [2]
Obrázok 3 Metóda prenosu rámcov Store-&-Forward [2]

Metóda Store-&-Forward je založená na načítaní celého rámca. Rámec následne kontroluje pomocou kontroly cyklickým kódom, tzv. CRC kontrola. Až po tejto kontrole, pokiaľ je rámec v poriadku, sa rámec vyšle ďalej. Výhodou tejto metódy je, že chybné rámce neposiela zbytočne ďalej. Nevýhodou je väčšie oneskorenie spôsobené ukladaním rámca a jeho kontrolou.

Moderné zariadenia majú schopnosť tieto metódy striedať. Ak je chybovosť preposielania nízka, aktivuje sa rýchlejšia metóda Cut-though. V prípade, že je veľká chybovosť, aktivuje sa metóda Store-&-Forward.

Diagram prenosu rámca
Obrázok 4 Diagram prenosu rámca

2. Návrh riešenia

Úlohou je zostrojiť softvérový dvojportový prepínač, ktorý by sa správal ako reálny prepínač. Základom je mať zariadenie s aspoň dvoma sieťovými kartami, ktoré pracujú v promiskuitnom režime, aby sme dokázali prijímať rámce a následne ich preposielať. Na obrázku č. 4 je zobrazený diagram, ktorý opisuje proces prenosu rámca cez mnou navrhovaný softvérový prepínač. Niektoré funkcie sú zovšeobecnené, kvôli zachovaniu prehľadnosti diagramu, alebo v čase návrhu nie sú známe prostriedky implementácie pre dané funkcie. Základná topológia je nakreslená na obrázku č. 5.

Základná topológia
Obrázok 5 Základná topológia

Program som sa rozhodol implementovať v jazyku Java, v ktorom som robil aj sieťový analyzátor na predmet Počítačové a komunikačné siete II. Keďže program bude pracovať pod operačným systémom Microsoft Windows, budem využívať Winpcap. Je to priemyselný štandardný nástroj pre linkovú vrstvu sieťového rozhrania. Umožňuje aplikáciám zachytávať a prenášať sieťové rámce. V jazyku Java budem využívať knižnicu Jpcap, ktorá je schopná interpretovať a využívať funkcie Winpcap-u v jazyku Java.

Výberom programovacieho jazyka Java sme si uľahčili proces vyberania správnej metódy preposielania rámcov. Keďže knižnica Jpcap podporuje iba metódu načítania celého rámca, naša voľba je využiť metódu Store-&-Forward.

Program je navrhnutý ako aplikácia v reálnom čase, tzv. Real-time aplikácia. Preto je nutné rozdeliť vykonávanie programu do určitých celkov a každý vykonávať vo vlastnom vlákne. Ak by sme to nespravili dochádzalo by k prílišnému oneskorovaniu, čo by viedlo k nekorektnému správaniu. Preto som sa rozhodol vytvoriť samostatný celok pre grafické rozhranie. Taktiež pre každý port treba vytvoriť zvlášť vlákno Ak by sme to neurobili, náš prepínač by obsluhoval iba jeden port a druhý by bol blokovaný. Tým pádom môže každý port počúvať, čiže prijímať rámce, analyzovať ich a preposielať. Vhodným prostriedkom by bolo rozdeliť toto vykonávanie ešte na dve časti. Zvlášť na zachytávanie a preposielanie a zvlášť na analyzovanie. Tým by sme sa vyhli zbytočnému oneskoreniu pri prenose rámcov spôsobené analyzovaním, zrýchlili by sme preposielanie rámcov, no môže sa stať, že vypisovanie analýzy rámcov bude pracovať s menším oneskorením.

V závere treba spomenúť, že môj navrhovaný program bude iba simulovať prácu klasického hardvérového prepínača. Môj prepínač nebude zďaleka tak efektívny ako hardvérový prepínač, avšak na účely školského zadania by mal postačovať.

3. Problémové situácie, ktoré môžu nastať a ich riešenia

Problém: Cieľová MAC adresa rámca je adresa šírenia (anglicky broadcast).

Riešenie:Prepínač rozpošle rámec na všetky porty okrem toho, odkiaľ prišiel.

Problém: Zdrojová MAC adresa rámca je adresa šírenia.

Riešenie:Prepínač rámec zahodí, pretože rámec so zdrojovou MAC je nekorektný.

Problém: MAC adresa rámca sa nachádza v pamäti adresovateľnej podľa obsahu, ale prislúcha k nej iný port.

Riešenie:Prepínač aktualizuje port pre danú MAC adresu v pamäti a proces pokračuje ďalej.

4. Literatúra

• KENNEDY Clark, HAMILTON Kevin. 1999. Cisco LAN Switching. Indiana: Cisco Press, 1999. 960 s. ISBN 1578700949

• http://cisco-academy.aspone.cz/koncepcia-prepinania.html

• http://www.zive.sk/hub-switch-router--ake-su-ich-funkcie/sc-3-a-262638/default.aspx

• http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps9670/white_paper_c11-465436.html ^[1], ^[2]

• http://network.xf.cz/slovnik/index.php

• http://csfacwiki.cslabs.ewu.edu/wiki/securitylab/index.php/Jpcap_Introduction