Тема 3.

Видове мрежи - комутация на канали, пакети и съобщения.

Може би статията е написана неясно. Дайте мнение по въпроса.

Топологията на мрежа е един свързан натоварен граф. Върховете са компютри, ребрата са кабели. Във възлите са маршрутизаторите. Хубаво е графът да е пълен, но очевидно това става много скъпо. Една такава мрежа с маршрутизация може да работи по няколко възможни технологии.

Комутация на канали (Circuit-switched networks)

Първата и най-стара технология е с комутация на канали – аналогично е на телефонната мрежа. Комутира се един канал между двата абоната. След това този канал се използва монополно само за връзка point-to-point и си обменят данни със скорост, колкото допуска каналът (скоростта на електрическия ток е около 1/3 от скоростта на светлината). След края на работата, клиентие освобождават канала. Това има два недостатъка: комутацията на канала е изисквала много време, а разпадането на канала е бавно, когато се минава през много комутатори. Напоследък са се появили бързи комутатори и разни военни мрежи в САЩ са минали на такъв fast switching.

Комутация на съобщения (Message-switched networks)

Друг начин е чрез комутация на съобщения. Мрежата позволява на абонатите да си обменят съобщения - фундаменталната единица при тази система (файлът също е съобщение). При това е много важно, че няма лимит за размера на съобщението. Съобщението, влизайки от абоната в първия възел, натоварва плътно само първия канал. След това, влизайки в следващия възел, предишният канал се освобождава, т.е. не се натоварват всичките канали. Това е доста ефективно в сравнение с комутация на канали. Отново обаче се появява проблем - възможно е да се окаже, че един възел получава повече заявки, отколкото може да обработи. Затова всеки възел трябва да може да оперира върху външна памет – диск, който е с неограничен капацитет (така де, с достатъчно голям капацитет). Но това междинно буфериране силно забавя скоростта на придвижване на съобщението в инфраструктурата (графа), поради което не е практически използваемо като основа на една мрежа. На такъв принцип са работили някои e-mail и телекс системи. Сега такива мрежи са голяма рядкост, или поне сред гражданските потребители.

Комутация на пакети (Packet switching)

Най-късно разработена от трите и най-разпространена в момента. Едно съобщение се разбива на последователност от пакети с фиксирана големина. След това всеки рутер по пътя държи пакетите в оперативната памет - това е възможно, тъй като пакетите имат определен максимален размер. Рутърът има определен брой буфери за пакети - примерно пази до 1000 пакета за всеки потребител. Това нещо ускорява придвижването на данните, защото по пътя те не се буферират на външна памет. Ако съобщението е много дълго, то постепенно ще бъде изпратено като серия от пакети.

router-queues.PNG

Комутиращият възел е основна опорна точка на пакетно-базирана мрежа. В началото на ARPANET, първите възли са били така наречените IMP. Впоследствие, по различно време се появяват други устройства с подобна или същата роля - мостове, концентратори (хъбове), маршрутизатори (рутъри) и комутатори (суичове). Внимание: комутатор е побългареното име на switch, което се брои за български превод на термина и се среща в по-стара литература, но не е едно и също с комутиращ възел, за който се говори тук и който по-долу също е наречен комутатор. По-долу се разглежда обща представа за комутиращ възел.
Комутиращият възел има няколко - поне 2 - интерфейса (извода, линии). За всеки от тях има логически1 опашкови буфери за вход и изход, които изцяло се помещават в оперативната памет на възела, без нужда от (бавна) външна памет, което се позволява от фиксирания максимален размер на пакетите. Всеки буфер може да съхрани определен брой пакети.

В един маршрутизатор (router - комутиращ възел със специално значение) влизат пакети от различни податели, които той трябва да препрати към крайните получатели. Ако устройството има една-единствена изходна линия (интерфейс), няма нужда от маршрутизиране. При повече изходни линии обаче, маршрутизаторът има за задача да определя маршрута, който пакетите трябва да поемат.
За да се управлява прехвърлянето на потока от пакети, има два подхода.

Отделни пакети информация (Datagrams)

При този подход съобщението се разбива на пакети информация (datagrams, също наричани packets). Всеки от тях в челото си (header) съдържа служебна част, в която пък се съдържа пълния адрес на получателя. Това позволява те да пътуват независимо един от друг. По пътя на движението на пакета през рутърите, всеки рутър индивидуално определя маршрута му, като гледа да го прекара през тази връзка, която ще позволи най-бързо преминаване. По този начин едно съобщение, след като влезе в мрежата, се разпръсва в множество дейтаграми, които самостоятелно се движат из мрежата и попадат в случен порядък при един и същи краен получател.

Това е и един от проблемите на метода - трябва да се съчини началното съобщение от тези пакети, получени в произволен ред, което означава, че или те трябва да съдържат някаква номерация, или за това да се грижи по някакъв начин техният приемник. В този ред на мисли, ако методът осъществява някакъв вид потвърждение на получените съобщения, това силно би се затруднило от разбърканите съобщения, и затова обикновено потвърждение не се предвижда на това ниво - говорим за несигурна комуникация. Други недостатъци са уголемяването на пакетите заради служебните хедъри, и че всеки пакет трябва да се изпраща поотделно. Въпреки това, оказва се, че за днешните мрежи, комуникацията се осъществява достатъчно бързо и надеждно. Ярък пример за такъв метод е IP протоколът.

Виртуален канал на мрежово ниво

Описание на подхода
При този метод съобщението отново се разделя на пакети, но преди изпращане на самото съобщение, първо се праща един служебен пакет. Той служи за установяване на виртуален канал - намира се маршрут между началния и крайния абонат на съобщението. Във всеки един рутър се фиксира номер на виртуалния канал и за него се записва по този номер откъде идват пакетите и къде се изпращат. Установяването на виртуален канал поставя строга дисциплина за маршрута. Като тръгнат пакетите, те вървят един след друг и само по фиксирания маршрут - няма как да се пренаредят, и в крайния получател пакетите пристигат в реда, в който са изпратени. Това позволява пакетите да не съдържат пълния краен адрес, тоест - да са по-кратки, тоест - единичният пакет се праща по-бързо. Виртуалният канал доста прилича на каналната комутация, но не трябва да се забравя, че е пакетно-ориентиран - пращат се пакети, които се буферират.

Недостатъкът, обаче, е, че ако нещо по пътя се задръсти, то това се отразява на цялата последователност от пакети. Тъй като рутърите са свързани помежду си с много парчета канал, а не само с един, то се увеличава броят на възможните проблемни места. Ако, например, даден мрежов участък се претовари, то съобщенията по каналите, минаващи през него, ще преминават по-бавно; а ако участъкът сдаде багажа, съответните комуникации просто ще замлъкнат. Това, както и по-голямото уплътняване на физическите връзки, което се постига чрез първия подход, отсъжда на виртуалните канали да бъдат ограничено разпространен в сегашните компютърни мрежи.
Примери за него са протоколите X.25, в по-малка степен - Frame Relay, ATM (не става дума за банкомат или http://dreal.net/wiki/index.php/ATM). В клетъчните комуникации, този подход се среща в някаква степен в GPRS.

Разяснения и терминология

Пояснения по горните точки по отношение на съвременните мрежи. Не е част от материала.
Идеята на виртуалния канал е пакетите информация да използват само и единствено вече установен канал, което да осигурява надеждност на връзката - по-малки загуби и получаване в реда на изпращането. Някои (повечето?) реализации, обаче, осъществяват само едно от две неща: или използват установени канали, без да потвърждават получаването на съобщенията в завършен вид, или потвърждават съобщенията, но оставят пакетите да бродят из мрежата така, както рутърите определят (и, следователно, всеки пакет си носи адреса).

Подходът с отделните пакети има характеристики на connectionless, а този с виртуалния канал - на connection-oriented.
В съвременните мрежи, нещата почти винаги стоят така: Самото доставяне на пакетите се извършва на мрежово ниво от IP, който е connectionless. Пакетите се движат по най-късия път и пристигат в произволен ред, и, на това ниво, не се потвърждават - best effort. На по-горно ниво, има главно две възможности - TCP и UDP. TCP е connection-oriented, пренарежда пакетите, потвърждава ги и изисква препращане на неполучени пакети - reliable. UDP е connectionless, не установява връзки, и ако се загубят пакети, никой не се грижи за тях - техният получател е наясно с тази възможност и е толерантен към загуби - unreliable (звучи тъпо, но всъщност върши добра работа за олекотяване на трафика).

Термините - тази част е доста размита, определенията ето тук. Накратко: пакет - блок информация с познатите ни свойства, datagram - пакет в несигурна връзка. Границата наистина е доста размита и доста хора я бъркат, което затруднява четенето от различни източници.
Освен това, ако говорим в термините на OSI модела, получаваме следното:

  • Ниво 2 - Ethernet протокол - frame
  • Ниво 3 - IP протокол - packet
  • Ниво 4
    • TCP протокол - segment
    • UDP протокол - datagram

Още информация

Демонстрация на пакетно комутиране
Още малко за трите типа превключване (комутация)

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License