Рис. 3.1. Алгоритм CSMA/CD
Коли прийом кадру завершений, про це повідомляється вищому (мережному) рівню мережі, а канальний рівень повертається до стану прослуховування. Можливо, що колізія відбудеться під час прийому кадру. У цьому випадку прийом кадру переривається і канальний рівень переходить до стану прослуховування. Кадр можна передати в середовище тільки за запитом мережного рівня. Коли робиться такий запит і вузол не знаходиться в стані прийому, канальний рівень переходить до стану чекання. У цьому стані вузол чекає, коли середовище звільниться. Після звільнення середовища починається передача кадру. Якщо передача завершується успішно (без колізії), стан знову змінюється на стан прослуховування. Якщо під час передачі кадру трапляється колізія, передача переривається і її треба повторити знову. При цьому стан змінюється на стан затримки. У цьому стані вузол знаходиться деякий час і потім знову переходить до стану чекання.
Час затримки при кожній колізії обчислюється щоразу наново. Існує багато способів обчислення часу затримки. Основна мета полягає в недопущенні таких блокувань, із яких пара вузлів, що викликали колізію, не може вийти. Наприклад, такі блокування могли б зустрітися, якби час затримки був однаковим для всіх вузлів мережі. Після колізії обидва вузли затримали б свої операції на той самий час, а потім одночасно виявили, що середовище вільне, і знову одночасно почали передачу. У результаті виявилася б ще одна колізія, і цей процес ніколи не скінчився. Одним із способів запобігання взаємних блокувань є вибір часу затримки, пропорційний значенню адреси вузла (ID). Це ефективний спосіб, однак він забезпечує певні переваги вузлам із меншими значеннями адрес. Після колізії час затримки для вузла з найнижчим значенням адреси закінчується швидше інших, і він захоплює середовище. Інші вузли, зв’язані з колізією, при виході зі стану затримки знаходять середовище зайнятим. В іншому способі час затримки вибирається випадково. Цей спосіб не припускає ніяких пріоритетів, але він не застрахований від наступних колізій. У цьому випадку не можна гарантувати можливості передачі кадру протягом якогось фіксованого відрізка часу тому, що можуть зустрічатися повторні колізії, кількість яких невизначена.
Ethernet – це найпоширеніший стандарт локальних мереж. У мережах Ethernet використовується метод доступу до середовища передачі даних CSMA/CD.
Цей метод застосовується винятково в мережах із логічною загальною шиною. Одночасно всі комп’ютери мережі мають можливість негайно (із врахуванням затримки поширення сигналу по фізичному середовищу) одержати дані, які будь-який з комп’ютерів почав передавати на загальну шину (рис. 3.2). Простота схеми підключення – це один з факторів, що визначили успіх стандарту Ethernet. Кажуть, що кабель, до якого підключені всі станції, працює в режимі колективного доступу (Multiply Access – MA).
Рис. 3.2. Метод випадкового доступу CSMA/CD
Всі дані, передані по мережі, розміщуються в кадри визначеної структури і супроводжуються унікальною адресою станції-отримувача.
Щоб одержати можливість передавати кадр, станція повинна переконатися, що поділюване середовище вільне. Це досягається прослуховуванням основної гармоніки сигналу, що також називається несучою частотою (Carrier Sense – CS). Ознакою незайнятості середовища є відсутність в ньому несучої частоти, яка при манчестерському способі кодування дорівнює 5 ÷ 10 МГц, у залежності від послідовності одиниць і нулів, переданих на даний момент.
Якщо середовище вільне, то вузол має право почати передачу кадру. Цей кадр зображений на рис. 3.2 першим. Вузол 1 виявив, що середовище вільне, і почав передавати свій кадр. У класичній мережі Ethernet на коаксіальному кабелі сигнали передавача вузла 1 поширюються в обидва боки так, що їх одержують всі вузли мережі. Кадр даних завжди супроводжується преамбулою (preamble), що складається з 7 байтів, які складаються із значень 10101010, і 8-го байта, рівного 10101011. Преамбула потрібна для входження приймача в побітовий і побайтовий синхронізм із передавачем.
Всі станції, підключені до кабелю, можуть розпізнати факт передачі кадру, і та станція, яка розпізнає власну адресу в заголовках кадру, записує його вміст у свій внутрішній буфер, оброблює отримані дані, передає їх нагору по своєму стеку, а потім посилає по кабелю кадр-відповідь. Адреса станції-відправника міститься у вихідному кадрі, тому станція-отримувач знає, кому потрібно надіслати відповідь. Вузол 2 під час передачі кадру вузлом 1 також намагався почати передачу свого кадру, однак виявив, що середовище зайняте – в ньому присутня несуча частота – тому вузол 2 змушений чекати, поки вузол 1 не припинить передачу кадру.
Після закінчення передачі кадру всі вузли мережі зобов’язані витримати технологічну паузу (Inter Packet Gap) у 9,6 мкс. Ця пауза – так званий міжкадровий інтервал – потрібна для приведення мережних адаптерів до вихідного стану, а також для запобігання монопольного захоплення середовища однією станцією. Після закінчення технологічної паузи вузли мають право почати передачу свого кадру тому, що середовище вільне. Через затримку поширення сигналу по кабелю не всі вузли чітко одночасно фіксують факт закінчення передачі кадру вузлом 1. У наведеному прикладі вузол 2 дочекався закінчення передачі кадру вузлом 1, зробив паузу в 9,6 мкс і почав передачу свого кадру.
3.2 Методи подолання колізій
При описаному підході можлива ситуація, коли дві станції одночасно намагаються передати кадр даних по загальному середовищу. Механізм прослуховування середовища і паузи між кадрами не гарантують від виникнення такої ситуації, коли дві або більше станцій одночасно вирішують, що середовище вільне, і починають передавати свої кадри. Вважають, що при цьому відбувається колізія (collision) тому, що вміст обох кадрів зіштовхується на загальному кабелі і відбувається перекручування інформації – методи кодування, використовувані в Ethernet, не дозволяють виділяти сигнали кожної станції з загального сигналу.
Колізія – це нормальна ситуація в роботі мереж Ethernet. У прикладі, зображеному на рис. 3.3, колізію породила одночасна передача даних вузлами 3 і 1. Для виникнення колізії необов’язково, щоб декілька станцій почали передачу абсолютно одночасно, така ситуація малоймовірна. Набагато ймовірніше, що колізія виникає через те, що один вузол починає передачу раніше другого, але до другого вузла сигнали першого просто не встигають дійти на той час, коли другий вузол вирішує почати передачу свого кадру. Тобто колізії – це наслідок розподіленого характеру мережі.
Щоб коректно обробити колізію, всі станції одночасно спостерігають за виникаючими у кабелі сигналами. Якщо передані сигнали і сигнали, що спостерігаються, відрізняються, то фіксується виявлення колізії (collision detection, CD). Для збільшення імовірності швидкого виявлення колізії всіма станціями мережі станція, що виявила колізію, перериває передачу свого кадру (у довільному місці, можливо, і не на межі байта) і підсилює ситуацію колізії посиланням в мережу спеціальної послідовності з 32-х бітів – так званої jam-послідовності.
Після цього передаюча станція, яка виявила колізію, зобов’язана припинити передачу і зробити паузу протягом короткого випадкового інтервалу часу. Потім вона може знову почати спробу захоплення середовища і передачі кадру. Тривалість випадкової паузи вибирається за виразом
Пауза = T ´ L,
де T – інтервал чекання, який дорівнює 512 бітовим інтервалам (у технології Ethernet прийнято всі інтервали вимірювати в бітових інтервалах; бітовий інтервал позначається як bt і відповідає часу між появою двох послідовних бітів даних на кабелі; для швидкості 10 Мбіт/с розмір бітового інтервалу дорівнює 0,1 мкс або 100 нс);
L – ціле число, обране з рівною імовірністю з діапазону [0, 2N], де N – номер повторної спроби передачі даного кадру: 1, 2,..., 10.
Після 10-ї спроби інтервал, із якого вибирається пауза, не збільшується. Таким чином, випадкова пауза може приймати значення від 0 до 52,4 мс.
Якщо 16 послідовних спроб передачі кадру викликають колізію, то передавач повинен припинити спроби і видалити цей кадр.
Із описання методу доступу CSMA/CD видно, що він носить ймовірнісний характер, і ймовірність успішного одержання у своє розпорядження загального середовища залежить від завантаженості мережі, тобто від інтенсивності виникнення у станцій потреби в передачі кадрів. При розробці цього методу наприкінці 70-х років передбачалося, що швидкість передачі даних у 10 Мбіт/с дуже висока в порівнянні з потребами комп’ютерів у взаємному обміні даними, тому завантаження мережі буде завжди невеликим. Це припущення залишається іноді справедливим і донині, однак уже з’явилися прикладення, які працюють у реальному масштабі часу з мультимедійною інформацією, що дуже завантажують сегменти Ethernet. При цьому колізії виникають набагато частіше. При значній інтенсивності колізій корисна пропускна спроможність мережі Ethernet різко падає тому, що мережа майже постійно зайнята повторними спробами передачі кадрів. Для зменшення інтенсивності виникнення колізій потрібно або зменшити трафік, скоротивши, наприклад, кількість вузлів у сегменті, чи замінивши прикладення, або підвищити швидкість протоколу, наприклад перейти на Fast Ethernet.
Слід зазначити, що метод доступу CSMA/CD взагалі не гарантує станції, що вона коли-небудь зможе одержати доступ до середовища. Звичайно, при невеликому завантаженні мережі імовірність такої події невелика, але при коефіцієнті використання мережі, що наближається до 1, така подія стає дуже ймовірною. Цей недолік методу випадкового доступу – плата за його надзвичайну простоту, що зробила технологію Ethernet найдешевшою. Інші методи доступу – маркерний доступ мереж Token Ring і FDDI, метод Demand Priority мереж 100VG-AnyLAN – не мають цього недоліку.