VyÜlo v t²denφku: CHIPweek
╚φslo:8/97
Datum:18. ·nora 1997
Strana:23
Rubrika/kategorie: Principy poΦφtaΦov²ch sφtφ
Modul: Internetworking
Dφl:3

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek| nßsledujφcφ Φlßnek

Ji°φ Peterka

Propojovßnφ na ·rovni linkovΘ vrstvy, mosty a switche

DalÜφ zámo₧nostφ vzßjemnΘho vzßjemnΘho propojovßnφ poΦφtaΦov²ch sφtφ je realizovat pot°ebnΘ propojenφ na ·rovni linkovΘ vrstvy, prost°ednictvφm za°φzenφ oznaΦovan²ch jako mosty (anglicky: bridges), Φφ p°epφnaΦe (anglicky: switches). VáΦem se ale propojenφ na ·rovni linkovΘ vrstvy liÜφ od propojenφ na ·rovni vrstvy fyzickΘ, a váΦem jsou jeho v²hody?

Jak jsme si ji₧ uvedli v minulΘm dφlu, p°i vzßjemnΘm propojenφ dvou sφtφ (Φi spφÜe sφ¥ov²ch segment∙) na ·rovni fyzickΘ vrstvy je pou₧it opakovaΦ jako za°φzenφ, fungujφcφ na ·rovni fyzickΘ vrstvy - tedy za°φzenφ, kterΘ si vÜφmß pouze jednotliv²ch bit∙, ale nezajφmß jej v²znam t∞chto bit∙. TakovΘto za°φzenφ si nedokß₧e domyslet, ₧e urΦitΘ bity pat°φ "k sob∞", a tudφ₧ ani to, ₧e tvo°φ ucelen² blok (p°esn∞ji p°enosov² rßmec), kter² váurΦitΘ svΘ Φßsti obsahuje adresu svΘho p°φjemce a adresßta. Kátomu, aby propojovacφ za°φzenφ mohlo vyu₧φt tyto ·daje (zejmΘna adresu odesilatele a p°φjemce), muselo by "rozum∞t" formßt formßtu p°enßÜen²ch blok∙ dat - a to je mo₧nΘ pouze tehdy, pokud propojovacφ za°φzenφ pracuje alespo≥ na ·rovni linkovΘ vrstvy (na kterΘ se p°enßÜen²m blok∙m °φkß rßmce).

Mφsto toho opakovaΦ, jako propojovacφ za°φzenφ fungujφcφ na ·rovni fyzickΘ vrstvy, nemß kádispozici ₧ßdnΘ ·daje o p∙vodu a mφstu urΦenφ p°enßÜen²ch dat, a nem∙₧e tomu ani p°izp∙sobit svΘ chovßnφ - musφ tedy propouÜt∞t skrz sebe a "rozesφlat" na vÜechny strany ·pln∞ vÜechno, vΦetn∞ tzv. kolizφ. A tomu je vámnoha situacφch vhodnΘ a pot°ebnΘ zabrßnit, zejmΘna proto aby provoz vájednΘ Φßsti sφt∞ zbyteΦn∞ neovliv≥oval provoz vájinΘ Φßsti sφt∞ (zejmΘna nespot°ebovßval dostupnou p°enosovou kapacitu).

Mosty a p°epφnaΦe rozumφ rßmc∙m

Obrßzek 1.
Obr. 1: P°edstava fungovßnφ mostu, resp, switche
Jakmile bude propojovacφ za°φzenφ fungovat alespo≥ na ·rovni linkovΘ vrstvy, bude mφt Üanci poznat, kterß data "pat°φ kásob∞", tj. tvo°φ jeden p°enosov² rßmec, a bude takΘ rozum∞t formßtu tohoto rßmce, ze kterΘho si bude moci odvodit od koho rßmec pochßzφ a komu je urΦen. Otßzkou ovÜem je, jak tyto znalosti prakticky vyu₧φt.

Jednφm aspektem je aspekt Φasov², kter² jsme ji₧ diskutovali vá6. dφlu p°edchozφho modulu: mß si propojovacφ za°φzenφ poΦkat, a₧ naΦte cel² rßmec, pak se váklidu rozhodnout a svΘ rozhodnutφ realizovat, nebo se mß sna₧it zareagovat co nejrychleji to bude mo₧nΘ, tedy ji₧ po naΦtenφ takovΘ Φßsti rßmce, kterß postaΦuje kázßkladnφmu rozhodnutφ? Prvnφ variantu jsme si popisovali jako princip "store & forward", a °φkali jsme si, ₧e takto pracujφ zejmΘna mosty - jako historicky starÜφ varianta propojovacφch za°φzenφ fungujφcφch na ·rovni linkovΘ vrstvy. DruhΘ variant∞ pak odpovφdß princip "cut through" (viz 7. Modul, 6. dφl), se kter²m se lze setkat u n∞kter²ch p°epφnaΦ∙ (switch∙), zatφmco jinΘ pracujφ na principu "store&forward".

Podle Φeho se rozhodovat?

DalÜφm d∙le₧it²m aspektem je samotn² proces rozhodovßnφ: záΦeho mß vychßzet propojovacφ za°φzenφ váokam₧iku, kdy se mß rozhodnout zda urΦit² konkrΘtnφ rßmec mß jednoduÜe zahodit, nebo zda jej mß odeslat dßl, a do kterΘho segmentu, ev. segment∙? Zde je nutnΘ si uv∞domit, ₧e sprßvnΘ a efektivnφ rozhodnutφ nevy₧aduje pouze znalost adresy p°φjemce a odesilatele, ale takΘ znalost topologie sφt∞. Jak jinak by se m∞l most Φi switch rozhodnout, kdyby nev∞d∞l ve kterΘm segmentu se nachßzφ ten kter² konkrΘtnφ p°φjemce a ten kter² odesilatel?

Jednφm mo₧n²m p°φstupem by bylo p°edem informovat most Φi switch o tom, jakß je topologie sφt∞ ve kterΘ se nachßzφ - nap°φklad vhodn²m nakonfigurovßnφm jeho internφch tabulek, kterΘ by poslΘze ke svΘ rutinnφ Φinnosti vyu₧φval. RozÜφ°enφm tΘto mo₧nosti by bylo dßt mu komunikovat sáostatnφmi mosty Φi switchi a vzßjemnΘ souΦinnosti si pr∙b∞₧n∞ aktualizovat informace o skuteΦnΘ topologii sφt∞. Prßv∞ takovΘto °eÜenφ se typicky pou₧φvß "o patro v²Üe", tedy na ·rovni sm∞rovaΦ∙ a propojovßnφ na ·rovni sφ¥ovΘ vrstvy - ale na ·rovni most∙, switch∙ a propojovßnφ na linkovΘ vrstv∞ se nepou₧φvß. D∙vody je t°eba hledat p°edevÜφm vározsahu toho, co je t°eba znßt o skuteΦnΘ topologii sφt∞: jak uvidφme p°φÜt∞, sm∞rovaΦ musφ znßt topologii skuteΦn∞ celΘ sφt∞, nejen svΘho nejbli₧Üφho okolφ. Naproti tomu mostu Φi switchi staΦφ znßt jen topologii sφt∞ ve svΘm bezprost°ednφm okolφ (konkrΘtn∞ kánejbli₧Üφm sm∞rovaΦ∙m), zatφmco topologie ostatnφch Φßstφ sφt∞ nenφ pro prßci mostu a switche relevantnφ.

SamouΦφcφ se mosty

P°i ·vahßch o fungovßnφ most∙ a switch∙ je vhodnΘ vzφt do ·vahy jeÜt∞ jeden v²znamn² aspekt - co by se stalo, kdyby most Φi switch nem∞l kádispozici ₧ßdnou informaci o topologii sφt∞? Mohl by stßle jeÜt∞ fungovat korektn∞ vátom smyslu, ₧e by data doruΦil tam kam skuteΦn∞ pat°φ - tφm, ₧e by p°φsluÜnΘ rßmce rozesφlal do vÜech stran, na principu zßplavy. Nebylo by to sice zrovna moc efektivnφ, ale na druhΘ stran∞ to otevφrß zajφmavΘ mo₧nosti pro tzv. samouΦφcφ se mosty (self-learning bridges).

Jak ji₧ jeho nßzev napovφdß, samouΦφcφ most se sßm nauΦφ to, co pot°ebuje znßt - tedy konkrΘtnφ topologii sφt∞ ve svΘm okolφ. UΦφ se jφ zátoho, jak mu zár∙zn²ch stran p°ichßzφ jednotlivΘ rßmce: záadresy jejich odesilatele a záfaktu, ₧e dan² rßmec mu p°iÜel záurΦitΘho segmentu, si domyslφ kde se p°φsluÜn² odesφlajφcφ uzel nachßzφ. Pokud o p°φjemci jeÜt∞ nic nevφ (tj. nevφ ve kterΘm segmentu se tento nachßzφ), samouΦφcφ most se zachovß "panicky" a rßmec rozeÜle na vÜechny existujφcφ strany. Záp°φpadnΘ odpov∞di si pak ale odvodφ skuteΦnΘ umφst∞nφ p°φsluÜnΘho uzlu, a tak nßsledn² provoz ji₧ m∙₧e p°edßvat cφlen∞ jen do p°φsluÜnΘho segmentu.

Dφky prßv∞ naznaΦenΘmu zp∙sobu fungovßnφ je mo₧nΘ realizovat samouΦφcφ se mosty jako za°φzenφ bez jakΘhokoli konfigurovßnφ (na rozdφl od sm∞rovaΦ∙), kterΘ staΦφ zapojit do sφt∞ a ponechat jejich osudu. Po krßtkΘ fßzi poΦßteΦnφho uΦenφ ji₧ fungujφ sámaximßlnφ mo₧nou efektivitou. JedinΘ, p°ed Φφm je t°eba samouΦφcφ se mosty chrßnit, je existence smyΦek (cykl∙, redundantnφch cest): takov²to cyklus toti₧ m∙₧e zp∙sobit, ₧e jeden a tent²₧ paket by se kásamouΦφcφmu mostu mohl dostat ze dvou r∙zn²ch sm∞r∙ - a co by si pak m∞l chudßk most domyslet o umφst∞nφ odesilatele tohoto rßmce?

SamouΦφcφ se mosty jsou dnes typickΘ pro prost°edφ Ethernetu (kde se jinΘ druhy most∙ snad ani nevyskytujφ). Obdobn∞ je tomu i pro switche. Inteligentn∞jÜφ EthernetovΘ mosty a switche se p°itom dokß₧φ vyrovnat i sáexistencφ cykl∙, resp. smyΦek: dokß₧φ je rozpoznat a domluvit se sáostatnφmi mosty na tom, ₧e n∞kter² segment um∞le vy°adφ záprovozu a tφm cyklus odstranφ.

Source routing

Alternativou káprincipu "samouΦenφ", kter² se pou₧φvß hlavn∞ váprost°edφ Ethernetu, je princip oznaΦovan² jako "source routing" (se kter²m se lze setkat hlavn∞ váprost°edφ sφtφ Token Ring). Váprvnφm p°iblφ₧enφ lze tuto variantu charakterizovat tak, ₧e ka₧d² jednotliv² rßmec si vásob∞ nese ·plnou informaci o cest∞, kterou by m∞l projφt (cel² "itinerß°") - tuto informaci mu poskytuje ji₧ p°φmo jeho odesilatel (odsud" "source" routing), kter² ji vlo₧φ p°φmo do hlaviΦky p°φsluÜnΘho rßmce. Propojovacφ uzly (mosty), p°es kterΘ rßmec prochßzφ, pak majφ minimum prßce - pouze se podφvajφ na p°φsluÜnΘ mφsto do hlaviΦky rßmce, a zachovajφcφ se podle toho, co zde najdou.

VeÜkerou odpov∞dnost za sprßvnou volbu cesty vátΘto variant∞ p°ebφrß na sebe odesφlajφcφ uzel. Ten si p°itom pot°ebnΘ informace o skuteΦnΘ topologii sφt∞ zjistφ prost°ednictvφm pr∙zkumnΘho rßmce, kter² nejprve vypustφ "na vÜechny strany", a kter² se Üφ°φ na principu laviny (a po dosa₧enφ svΘho cφle se vracφ zp∞t a informuje svΘho odesilatele o nekratÜφ cest∞ kácφli).

Princip "source routingu" je jist∞ zajφmav² a ván∞kter²ch situacφch m∙₧e b²t i docela efektivnφ. Mo₧nß vßs ale napadlo, proΦ se o n∞m zmi≥ujeme vásouvislosti sáp°epojovßnφm na ·rovni linkovΘ vrstvy, kdy₧ svou podstatou mß mnohem blφ₧e ke sm∞rovßnφ, a sßm to mß dokonce ve svΘm nßzvu: "routing" neboli sm∞rovßnφ je obvyklΘ oznaΦenφ pro p°epojovßnφ na ·rovni sφ¥ovΘ vrstvy. Faktem je , ₧e "source routing" by skuteΦn∞ m∞l pat°it do sφ¥ovΘ vrstvy, a nikoli do vrstvy linkovΘ, do kterΘ byl "zasazen". Pro mnoho lidφ je dodnes zßhadou, proΦ se tak stalo .


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek| nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm