12. Apraide un multiraide

Pēdējais mainījis Administrator 2011-06-06 17:16

12. Apraide un multiraide

12.01 Ievads

Kā minējām 1.nodaļā - ir trīs veidu IP adreses: #term("vienraides", "unicast"), #term("apraides", "broadcast") un #term("multiraides", "multicast"). Šajā nodaļā detalizēti aplūkosim apraidi un multiraidi.

Apraide un multiraide ir lietojama vienīgi saistībā ar UDP, kur vienai lietotnei ir jēga sūtīt to pašu ziņojumu vairākiem saņēmējiem. TCP ir #term("savienojumveida protokols", "connection_oriented_protocol"), kas nozīmē savienojumu starp divām mītnēm, ko norāda IP adreses un vienu procesu uz katras mīntes (ko norāda portu numuri).

Aplūkosim mītņu kopumu #term("koplietošanas tīklā", "shared_network"), piemēram, Ethernet'ā. Katrs Ethernet'a kadrs satur avota un galapunkta Ethernet'a adreses (48-bitu vērtības). Parasti katrs Ethernet'a kadrs ir domāts vienai vienīgai mītnei. Galapunkta adrese norāda vienu interfeisu - šo gadījumu sauc par vienraidi (unicast). Šajā gadījumā saziņa starp jebkuriem divām mītnēm netraucē pārējās kabelim pievienotās mītnes, izņemot iespējamo #term("sacensību", "contention") par iespēju lietot kopīgo #term("vidi", "medium").

Ir tomēr gadījumi, kad mītne vēlas nosūtīt kadru ikvienai citai mītnei savā tīklā - šo gadījumu sauc par apraidi (broadcast). Mēs to redzējām gadījumā ar ARP un RARP. Multiraide (multicast) ir pa vidu starp vienraidi un apraidi: kadrs ir jāpiegādā mītņu grupai, kas pieder #term("multiraides grupai", "multicast_group").

Lai saprastu apraidi un multiraidi, jāsaprot filtrēšana, kas nostrādā uz katras mītnes, ikreiz, kad #term("tīkla vadā", "cable") parādās kārtējais kadrs. 12.1.attēls to uzskatāmi parāda. Pirmkārt, tīkla plate redz katru interfeisam pievienotā kabeļa datu kadru un izlemj, vai saņemt šo kadru un piegādāt to ierīces dzinim. Parasti interfeisa plate saņem tikai tos kadrus, kuru galapunkta adrese ir vai nu interfeisa aparatūras adrese, vai arī apraides adrese. Papildus tam vairums interfeisu var darbināt #term("neizvēlīgā režīmā", "promiscuous_mode"), kad tie saņem ikviena kadra kopiju. Šo režīmu izmanto, piemēram, tcpdump.

#pic("f_12_1.gif", "200")
12.1.attēls: Filtrēšana, kas notiek augšup pa protokolu steku, saņemot kadru

Mūsdienās vairumu interfeisu var konfigurēt tā, lai tie saņemtu kadrus, kuru galapunkta adrese ir multiraides adrese vai kāda multiraides adrešu apakškopa. Ethernet'ā multiraides adresei ir ieslēgts viszemākās pozīcijas bits visaugstākās pozīcijas baitā. Heksadecimālā pierakstā šis bits izskatās sekojoši: 01:00:00:00:00:00. Mēs varam aplūkot Ethernet'a apraides adresi ff:ff:ff:ff:ff:ff kā Ethernet'a multiraides adreses atsevišķu gadījumu.

Ja plate saņem kadru interfeisā, to padod ierīces dzinim. (Viens no iemesliem, kādēļ plate var #term("izmest", "discard") interfeisa kadru, ir nepareiza Ethernet'a kontrolsumma.) Papildu filtrēšana notiek ierīces dzinī. Pirmkārt, kadra tipam jānorāda protokols, kurš tiek atbalstīts (IP, ARP, utt.). Otrkārt, var notikt papildu multiraides filtrēšana, lai pārbaudītu, vai m;itne pieder konkrētajai multiraides grupai.

Ierīces dzinis tad padod kadru nākamajam slānim, piemēram, IP, ja kadrs nozīmē IP datagrammu. IP veic tālāku filtrēšanu, izmantojot avota un galapunkta IP adreses un padod datagrammu nākamajam slānim (piemēram, TCP vai UDP), ja viss notiek labi.

Katru reizi, kad UDP saņem datagrammu no IP, tiek veikta filtrēšanu atkarībā no galapunkta porta numura, un dažreiz arī no avota porta numura. Ja neviens process pašlaik neizmanto galapunkta porta numuru, datagrammu izmet un parasti ģenerē ICMP #term("nesasniedzamā porta ziņojumu", "port_unreachable_message"). (TCP veic līdzīgu filtrēšanu, kas balstīta uz pašlaik aktīvajiem TCP portu numuriem.) Ja UDP datagrammai ir kontrolsummas kļūda, UDP to izmet.

Problēma ar apraidi ir apstrādes slodze, ko tā rada visām mītnēm, kas nav ieinteresēti šajā apraidē. Aplūkosim lietotni, kas ir izveidota UDP apraides izmantošanai. Ja uz viena tīkla vada ir 50 mītnes, bet tikai 20 no tiem piedalās lietotnes sasiņā, ikreiz, kad viena no 20 mītnēm sūta UDP apraidi, pārējām 30 mītnēm šī apraide ir jāapstrādā - līdz pat UDP slānim, pirms noskaidrojas, ka šo UDP datagrammu var izmest. UDP datagrammu uz 30 mītnēm izmet, jo galapunkta porta numuru tur neklausās neviena UDP lietotne.

Multiraides nolūks ir samazināt slodzi uz mitnēm, kam neinteresē konkrēta lietotne. Ar multiraidi mītnes speciāli pievienojas vienai vai vairākām multiraides grupām. Ja ir iespējams, tad interfeisa kartei tiek darīts zināms, kurām grupām mītne pieder un saņemti un apstrādāti tiek tikai atbilstošās multiraides kadri.

Tagi:
Izveidojis Kalvis Apsītis 2008-03-22 08:36
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation