Колізія в мережі



Що таке колізія в мережі (collision)? Сьогодні ми розглянемо саме поняття колізій в локальній мережі, можливі причини їх виникнення і як боротися з подібним явищем? Також дізнаємося, що таке домен колізій?

Наша стаття, буде складатися з двох частин: у першій (теоретичної) ми розглянемо основні поняття і терміни, які нам знадобляться в подальшому, а в другій частині я покажу Вам (на прикладі), які можуть бути проблеми в реальній мережі і до чого треба бути готовим?

Отже, розберемо саме поняття колізія. Буквально воно означає зіткнення. Що може стикатися в комп'ютерній мережі? Правильно, - передаються по ній дані, точніше - пакети (кадри) даних. Пам'ятайте про принцип комутації пакетів, про який ми говорили в одній з наших статей?

Проілюструємо виникнення колізії в комп'ютерній мережі на простенькій схемою:


Возникновение коллизии в сети

Як бачите хост (комп'ютер) під номером «1» починає передачу своїх пакетів даних у мережу. Точно в цей же час інший хост починає передачу даних. В результаті, дані "стикаються", що призводить до їх повної або часткової втрати. Як ми розуміємо це - неприпустиме явище, так як недоставлені дані потрібно передавати знову, а це - тимчасові затримки, які не кожен користувач буде готовий терпіти. Та й Вам самим постійне ниття "підопічних" скоро набридне:)

Отже, на основі сказаного вище, давайте дамо коротке визначення колізії в мережі: колізія це - зіткнення двох або більше кадрів в мережі, що призводить до їх втрати або спотворення.

Самі зіткнення відбуваються де? Правильно, - в кабелі! Звідси випливає ще одне визначення: мережевий кабель це - спільна середовище передачі даних для всіх комп'ютерів мережі. Колективна саме тому, що її пропускна здатність (смуга пропускання) ділиться між усіма комп'ютерами, утворюють мережу.

Враховуючи швидкості руху даних в мережі, навряд чи виникнення колізії можливе у разі з'єднання двох комп'ютерів? АЛЕ! Якщо комп'ютерів стає більше?


Домен коллизий

Або - дуже багато (кілька сотень) і всім потрібно передавати і приймати) мережевий трафік? Ось саме тоді і зростає ризик виникнення колізій.

Тут виникає необхідність у механізмі синхронізації доступу мережевих інтерфейсів окремих комп'ютерів до загальної поділюваної середовищі. Застосовно до технології Ethernet (не залежно від швидкості передачі) цей принцип доступу називається CSMA/CD (Carrier Sense Multiple Access with Collision Detection, що перекладається так: множинний доступ з контролем несучої і виявленням колізій). Фактично, це - випадковий метод доступу до середовища. Іноді метод CSMA/CD називають протоколом, який працює на канальному рівні мережевої моделі OSI.

Примітка: мережева модель OSI (open systems interconnection basic reference model - базова модель взаємодії відкритих систем). Це - модель спільної роботи мережевих протоколів різних рівнів (всього сім), яка, в повній мірі, дозволяє реалізувати ефективний обмін даними в мережі.

Випадковий характер алгоритму доступу до середовища передачі даних, прийнятий в технології Ethernet, не можна назвати ідеальним. При великій кількості запитів на доступ до середовища передачі, що генеруються вузлами у випадкові моменти часу, імовірність виникнення колізій також зростає, що призводить до неефективного використання всього каналу. Час виявлення колізії і час її обробки становлять додаткові тимчасові витрати, а інтервал, протягом якого канал надається в розпорядження кожного вузла, стає все менше.

Щоб даремно не впасти в стан паніки скажемо, що для стандартної мережевої технології Ethernet, наявність колізій в мережі - нормальне явище! Інша справа, що іноді виникають ситуації, коли колізійних зіткнень стає настільки багато, що вся смуга пропускання здатність мережі буквально "з'їдається" сміттєвим трафіком і передавати корисні дані стає просто неможливо!

Подібний випадок ми розглядали в статті, про можливість утворення петлі в локальній мережі організації.

Давайте з Вами розглянемо, які бувають різновиди колізій?

  • Колізія на дальньому кінці (в самому кабелі). Виникає за одночасної передачі по одній і тій же лінії даних двома станціями.
  • Колізія на ближньому кінці (мережеву карту). Відбувається, коли збоїть мережевий адаптер ПК або його драйвер і другий кадр починається записуватися в буфер карти ще до закінчення передачі першого.
  • Колізії в активному устаткуванні (світчі, хаби). Виникають із-за перевантаження обладнання передаються кадрами, приводячи до помилок в адресації і накладення декількох кадрів один на одного.

  • Щоб покінчити з обов'язковою термінологією, давайте розглянемо ще одне потрібне нам словосполучення: домен колізій (Collision Domain).

    Що це таке? Ну, грубо кажучи, це - комутатор (світч) з підключеними до нього комп'ютерами. Як на схемі вище. Якщо трохи більш академічно - "область мережі одночасна передача двох і більше станцій якої призводить до утворення колізії". Комутатор ізолює більшу частину трафіку одного сегмента мережі від трафіку іншого сегмента (домену колізій). У результаті пропускна здатність кожного окремого сегменту збільшується, а отже, підвищується і сумарна пропускна здатність мережі.

    В ідеалі, комутатор повинен перешкоджати поширенню колізії далі (не пропускати її), тому їм, власне, і обмежується цей самий домен колізій. Інша справа, що на практиці це не завжди так, і якщо виникнення колізії відбувається на ближньому кінці (причиною є несправна мережева карта комп'ютера), то події можуть розгортатися зовсім по іншому. Але про це - у другій (практичній) частині нашої статті :)

    Які ж є методи, що дозволяють запобігти ситуацію, коли колізія в мережі може стати масовим явищем, що (з часом) призведе до повної її непрацездатності?

    Тут для нас (як адміністраторів) є дві новини: одна - хороша, а друга - ще краще! :)

    Перша полягає в тому, що механізм арбітражу (реагування) на виникнення колізії вже вбудований в більшість стандартних мережевих технологій! Застосовно до найбільш поширеною з них технології Ethernet, це виглядає наступним чином: один з учасників колізії (при виявленні, що його передача призводить до зіткнення кадрів) автоматично генерує на всю мережу спеціальну jam-послідовність (jam-signal). Отримавши такий сигнал комп'ютери знають, що їм потрібно негайно припинити свою передачу даних, зробити випадковий тимчасової тайм-аут (backoff time або delay) від 29-ти до 210-ти бітових інтервалів, а потім - відновити роботу в штатному режимі. Метод доступу до середовища CSMA/CD - в дії!

    Примітка: бітовий інтервал це час, за який по мережі передається найменша одиниця інформації - один біт.

    На що схожа ситуація, яку ми описали вище? Особисто мені вона нагадує, коли двоє людей починають говорити одночасно. Що відбувається у такій ситуації при нормальних умовах? Обидва говорять замовкають, трохи вичікують і хто першим починає говорити знову, а другий - мовчить і слухає. Потім - відповідає або задає своє питання.

    Абсолютно ідентично і з комп'ютерами! Адже люди створили, ось і "ведуть" себе так само :)

    Друга з новин така: з колізією в мережі можна боротися засобами, які надає нам мережеве обладнання відповідного класу. Наприклад: ось - один з центральних комутаторів нашої мережі на роботі: D-Link DES-3550


    Управляемый коммутатор D-Link DES-3550

    Це - 50-ти портовий керований світч вартістю близько 600 доларів. Керований означає, що він має в мережі свій виділений IP адреса і можна підключитися до нього видалено (ввівши пароль доступу). Можна по мережі виробляти конфігурацію пристрою, включати або відключати окремі порти, змінювати режим їх роботи, моніторити навантаження на пристрій, управляти швидкістю кожного порту (подібним чином провайдери вигадують свої тарифні плани) і т. д.

    Це - керований комутатор другого рівня. Це означає, що він ефективно працює на другому рівні мережевої моделі OSI. Зараз все більш популярними стають пристрої третього рівня (можуть працювати вже на мережевому IP рівні). Спрощено це вже - дуже швидко передають пакети маршрутизатори, до того ж - прості у використанні.

    Давайте, про комутаторі ми ще поговоримо в другій частині цієї статті (я покажу Вам докладні скріншоти його адмін-зони, покажу що там до чого), тут я навів його фотографію для того, щоб показати за допомогою яких пристроїв можна боротися з колізіями в мережі. Комутатор D-Link DES-3550 дозволяє адміністратору бачити завантаження кожного з портів в режимі реального часу і якщо який-небудь з портів перевантажений або на ньому багато колізій - прийняти відповідні заходи.

    Давайте ще трохи поговоримо на тему розділяється середовища передачі даних. Це, фактично, - і є наш мережевий кабель, пам'ятаєте? При такому його кооперативному використанні, виникає завдання утилізації середовища передачі таким чином, щоб у кожен окремий момент часу по кабелю передавалися дані тільки одного передавача (комп'ютера).

    Пропускна здатність кабелю ділиться між всіма комп'ютерами мережі. Наприклад: якщо в нас 100 комп'ютерів і мережа працює на швидкості 100 мегабіт в секунду, то в середньому на кожен ПК доводиться 1мбіт/с пропускної здатності. А якщо комп'ютерів стає більше? Час для передачі даних, що виділяється кожному з них, скорочується і, як наслідок, - колізія в мережі гарантована! Додайте до цього все зростаюче час відгуку мережі, невдоволення користувачів і Ви зрозумієте, що виникнення колізії - неприємна річ, з якою треба боротися, а ще краще - зводити можливість її виникнення до мінімуму ще на етапі планування мережі.

    Також потрібно чітко розуміти, що деяку частину доступної пропускної здатності мережі забирає у користувальницьких даних широкомовний службовий трафік, який є невід'ємною частиною практично всіх стеків протоколів, що працюють в локальних мережах.

    Незважаючи на всі ці складності, принцип, що розділяється середовища використовується досить часто. Такий підхід, реалізований в широко поширених стандартних технологій локальних мереж, наприклад: Ethernet, Token Ring, FDDI. Чому? Напевно, з-за простоти і дешевизни його кінцевої реалізації (дешево і сердито) :)

    Продовження теми - у другій частині статті.