Проектируем домашнюю сеть
Часть первая. Кабельная система и Ethernet
В последнее время наблюдается устойчивый рост количества домашних сетей. Это не удивительно – ведь, домашняя сеть позволяет легко обмениваться файлами, играть в сетевые игры и существенно снизить стоимость доступа в Интернет. Но, вот, как правильно спроектировать и построить домашнюю сеть – вопрос не простой. Ему и посвящён этот цикл статей.
Кабельная система
С одной стороны, построить локальную сеть сейчас проще простого: купить коммутаторы, патч-корды и соединить в "звезду". Это, несомненно, будет работать, но вот "как" – большой вопрос. Более того, как оно будет работать в ближайшие лет пять? Ведь именно на такой срок часто расчитывается сеть.
Упрощая сеть до такого состояния, системный администратор сам создаёт себе проблемы – он сам обеспечивает себе беготню то с целью поиска "где отошёл очередной разъём", то "где передавили кабель". Парадоксально, но такие "повседневные" проблемы, люди создают себе сами. Виной тому – неумение (или нежелание) сделать сеть сразу и правильно. О том "как правильно" - этот раздел.
"Правильная сеть":
- использует соединительные кабели, предназначенные для такого использования;
- спроектирована с учётом расширения;
- спроектирована с учётом стандартов на длину и тип кабеля.
To crimp or not to cpimp?
Если у вас есть бухта "обычного" UTP-кабеля, вилочки, инструмент для обжимки, и вы свято верите в то, что этого достаточно для построения сети – эта часть для вас!
Упрощая, можно сказать, что витая пара бывает двух типов – одножильная и многожильная. Одножильная используется для магистральных каналов, т.е. между коммутаторами или между коммутатором и розеткой, на стене пользователя (что в домашних сетях практически не применяется). Почему только там? Потому, что она не рассчитана на частое изгибание, тем более, на подключение рабочих станций. Если вы обжали такой кабель и подключили им рабочую станцию к коммутатору, оно, скорее всего, будет работать, но вы сами создали себе проблему. Вероятность того, что обжимка получилась некачественной или со временем отойдет контакт, из-за постоянных воздействий пользователя, высока.
Решение этой "проблемы" простое – купите уже готовый патч-корд, который изготовлен с применением многожильного кабеля (т.е. не переломится от сгибаний), плюс - изготовлен на заводе и, скорее всего, протестирован на частотные характеристики. Может показаться, что это выйдет дороже, но это типичное заблуждение – патч-корд на 5 метров стоит сейчас около $2. Просчитайте стоимость комплектующих для самостоятельного изготовления: кабель, вилочки, колпачки, инструмент для обжимки, время, потраченное на его изготовление, и время, которое будет потрачено на решение проблем с таким кабелем. Однозначно, получите больше $2. Соответственно, покупать готовые патч-корды, выгоднее и проще.
Несколько "секретов"
- Длина кабеля не должна превышать 100 метров. Т.е. в итоге, от коммутатора до компьютера (или другого коммутатора), сумма длин кабелей не должна превышать 100 метров.
- Не прокладывать кабель UTP рядом с силовым кабелем. Расстояние между кабелем UTP и силовым должно составлять не менее 15 сантиметров (прокладка в разные отсеки короба - не исключение). Допускается также перпендикулярная к силовым линиям прокладка (пересечение).
- Не допускать, чтобы по кабелю "топтались". При деформации у него ощутимо снижаются частотные характеристики.
- Крепить кабель, как минимум, через каждые 1,5 м. Иначе, он может от провисания со временем просто растянуться, что ухудшит его частотные характеристики.
- При "расколке" или "обжимке" разведите пары по стандарту, это позволит вам не ломать голову над тем, "какие цвета на той стороне?". Существует два стандарта на разводку пар: T568A и T568B (поиск в Google даст массу результатов). Какой из них применять – разницы нет, главное чтобы на обоих концах кабеля применялся одинаковый стандарт. А лучше выбрать один стандарт для всей кабельной системы.
- Минимальный диаметр изгиба кабеля UTP Cat 5e - около 2,5см. Если согнуть кабель под меньшим диаметром, то ухудшатся его частотные характеристики.
- Даже самый простой кабельный тестер (который только и тестирует, что электрический контакт) сильно упрощает работу.
Ведите документацию по кабельной системе, отмечайте там все изменения и, периодически, проводите проверку и корректировку.
Модель OSI
Чтобы более ясно понять, как сеть подразделяется на уровни, в этой части мы их разберём, поскольку понимание этого вопроса важно для расширения кругозора в области сетей вообще, и локальных в частности. Дело в том, что модель OSI проецируется на любую сеть. Понимание этой модели даёт возможность не только более грамотно проектировать сети, но и намного быстрее находить неисправности и проблемы, не говоря уже о том, что позволяет не запутаться в сетевых вопросах.
Физический уровень: 1
О части реализации этого уровня мы уже рассказывали в предыдущем разделе, а именно о кабельной системе. В случае Ethernet первый уровень модели OSI представлен, как непосредственно, кабельной системой (медная витая пара), так и аппаратной частью активного оборудования (сетевой адаптер, коммутатор). Задача первого уровня – передавать битовую последовательность, т.е. электрическими сигналами пересылать какую-то информацию по среде передачи. Физический уровень просто передает данные – по медному проводу, оптоволокну, радиоэфиру, воздуху, электропроводке и т.п.
Канальный уровень: 2
На этом уровне сеть уже начинает проявлять некий интеллект, например, именно здесь появляются "кадры" – логически организованные последовательности битов. Именно кадр является базовой единицей передачи информации, поскольку передаётся непосредственно на первый (физический) уровень, где уже и транслируется по среде передачи. Второй уровень делится на два подуровня: MAC (Media Access Control – управление передачей по среде) и LLC (Logical Link Control – контроль логического соединения между станциями).
MAC-подуровень ответственен за контроль доступа к среде передачи, например, в Ethernet - это контроль коллизий и алгоритм доступа к среде (т.е. описание того, как станция может передавать данные в сеть).
LLC-подуровень занимается контролем синхронизации кадров, контролем потока и обнаружением ошибок передачи. Здесь уместно заметить, что перечисленные функции LLC-подуровня реализуются далеко не всегда, даже для того же самого протокола.
Кстати, известный многим MAC-адрес принадлежит именно ко второму уровню модели OSI – так адресуются рабочие станции в локальной сети на подуровне LLC, каждый MAC-адрес уникален в рамках локальной сети и зашит аппаратно в сетевой адаптер.
Здесь важно остановиться на примере того, как проецирование модели OSI используется для создания сетей с различными средами передачи. Возьмём, для простоты, Ethernet – кадр (подуровень LLC), который не зависит от физической среды передачи (физический уровень + подуровень MAC). И действительно, Ethernet работает по медной паре, оптоволокну, радиоэфиру, оптической связи, электропроводке и так далее, и так далее…
При этом сеть, начиная с подуровня LLC и выше, вообще "не знает", какая среда передачи используется. Соответственно, производителям оборудования и ПО, работающего на указанных уровнях, не нужно ломать голову над тем, как передавать данные по каждой новой среде – это за них делает первый уровень и подуровень MAC. ПО или оборудованию, достаточно только знать, как взаимодействовать с уровнем модели OSI, который располагается ниже, в данном случае, между подуровнями LLC и MAC.
По большому счёту, для организации локальной сети достаточно двух уровней, однако, такая сеть не будет масштабируемой и расширяемой, поскольку протоколы второго уровня не являются маршрутизируемыми, т.е. предназначены для использования только в локальной среде передачи. Именно поэтому появились протоколы третьего уровня, которые снимают это ограничение и способны объединять подсети.
Сетевой уровень: 3
Этот уровень - самый интересный, потому что именно на нём работает Интернет. На третьем уровне модели OSI начинается маршрутизация пакетов, т.е. передача не только по локальной среде передачи от станции к станции, но и транзит пакетов через локальные среды к третьему получателю. На третьем уровне происходит абстрагирование от локальной сети и использование маршрутизируемых протоколов. Основным признаком протоколов третьего уровня является деление адресного пространства на подсети и введение таблиц маршрутизации, которые указывают, куда для данной подсети отправлять пакеты. "Куда", в данном случае, означает "на какой шлюз". Именно на третьем уровне появляются шлюзы между сетями, которые пропускают через себя пакеты в другие сети. Как и подуровень LLC, третий уровень модели OSI независим от предыдущих уровней, что позволяет универсализировать ПО и оборудование.
Интересно, что сам по себе термин "internet" изначально означает "сеть, которая объединяет сети". Действительно, Интернет - есть просто соединение независимых сетей между собой по протоколу 3-го уровня (IP), просто их очень много, поэтому и получилось такое мега-образование, которое мы и называем Интернет, подразумевая под ним уже нечто целостное.
Транспортный уровень: 4
Сама же передача данных начинается на транспортном уровне. Именно этот уровень, накладываясь на сетевой, уже передаёт данные между программами. Здесь работают протоколы TCP и UDP, которые и передают данные в современных сетях. На транспортный уровень возложены функции контроля ошибок и потока данных уже между конечными точками (а не только в локальной сети, как это делает подуровень LLC). На этом уровне реализуется трансляция адресов для TCP и UDP, что позволяет организовывать доступ в Интернет с рабочих станций в локальной сети.
Сеансовый уровень: 5
Этот уровень – точка взаимодействия сети с программами. Начиная с этого уровня, как правило, обработка данных переходит от сетевого стека к программам, которые и реализуют уровни 5, 6 и 7. Мы не будем подробно на них останавливаться, поскольку в сетях TCP/IP - это уже вопрос не сетевого взаимодействия, а программирования с использованием API. Подробности об этом и других уровнях можно найти на ya.ru по ключевой фразе "модель OSI".
Вложенность уровней
Для передачи информации по сети она вкладывается в пакеты на каждом уровне, причём первое вложение происходит на уровне 7, затем пакет уровня 7 вкладывается в пакет уровня 6 и т.д., до уровня 1. Не трудно догадаться, что к уровню 1 пакет может существенно разрастись, поскольку каждый уровень добавляет к нему какую-то свою служебную информацию. Например, в протоколе IP, уровень 4 добавляет информацию о подпротоколе, порте получателя и отправителя (в случае TCP или UDP), уровень 3 добавляет информацию об IP-адресе отправителя и получателя, а уровень 2 - ещё и информацию о MAC-адресах отправителя и получателя. И только потом этой пакет, собранный как матрёшка, передаётся на уровень 1 для передачи по физической среде.
При получении пакета на станции-получателе, процесс работает в обратном направлении – из пакета уровня 1 извлекается пакет уровня 2, из него пакет уровня 3, и т.д., пока данные не будут доставлены непосредственно к программе, которая их должна получить.
Такая схема позволяет добавить гибкость в организацию сетевого взаимодействия, поскольку без проблем можно добавлять другие подуровни в существующие или даже заменять (например, среду передачи) – для всех остальных, более высоких уровней, это останется прозрачным. Например, известный протокол PPTP, используемый для создания VPN-соединений, сам передаётся уровнем 4 (транспортным), в то время, как он туннелирует (передаёт через себя) пакеты уровня 3 (сетевой). При этом, программы вообще "не знают", что пакет передан через уровень 4, поскольку они работают на уровне 5, а значит нижние уровни для них - прозрачны.
Зачем?
В заключение раздела, хочется сказать несколько слов о том, что конкретно даёт понимание модели OSI.
- знание уровней 1 и 2 позволяет строить надёжные локальные сети;
- знание уровня 3 помогает грамотно объединять сети между собой, например, локальные или локальную и провайдера;
- знание уровня 4 даёт возможность настраивать взаимодействие из локальной сети с Интернет через трансляцию адресов, а не только через прокси;
- а знание всех 7-ми уровней позволяет проводить комплексное проектирование сетей, от среды передачи до самого пользователя, и быстро диагностировать сетевые проблемы.
Другими словами, современная локальная сеть уже не ограничивается в работе только рамками локальной среды передачи, но и взаимодействует, как минимум, с Интернет. Это вносит массу новых вопросов в проектирование локальной сети, поэтому важно понимать азы построения сетей. Семиуровневая модель OSI используется для классификации всего сетевого оборудования и ПО, что позволяет чётко понимать его функции и место в сети.
Ethernet
Теория
Кадр классического Ethernet имеет максимальный размер 1518 байт и включает в себя данные и служебные заголовки, из которых нам интересны MAC-адрес отправителя и MAC-адрес получателя. В поле данных кадра содержится инкапсулированный пакет протокола 3-го уровня, о чём мы рассказывали в разделе о модели OSI.
Для передачи кадров Ethernet по локальной сети, в основном, применяются два типа сетеобразующих устройств – концентраторы ("хабы", "hubs") и коммутаторы ("свичи", "switches").
Работа концентратора заключается в том, чтобы все полученные кадры повторить (продублировать) на все свои порты. Концентраторы ещё называют "повторителями" ("репитерами", "repeaters"), поскольку основная их задача - именно повторить полученный кадр на все порты. Так как невозможно одновременно повторять более одного кадра на все порты, то все клиентские устройства, при использовании концентратора, могут работать только в режиме полудуплекса, т.е. в один момент времени клиентское устройство может, или принимать данные, или передавать их. По той же причине невозможна одновременная передача данных по сети более чем от одного клиентского устройства – кадры просто наложатся друг на друга, будут искажены и отброшены.
Наложение кадров часто происходит и в процессе нормальной работы сети, построенной на концентраторах, а называется "коллизией". Обычным оно считается потому, что протокол Ethernet не содержит в себе механизма контроля захвата среды передачи на момент передачи кадра, а вместо этого использует механизм обнаружения коллизий ("collision detection", "CD"). Суть данного механизма в том, что каждое клиентское устройство "слушает" среду передачи и начинает передачу только в том случае, если среда свободна. Но, возможна и ситуация, когда между тем, как устройство "прослушало" среду, решило, что она свободна, и начало передачу, проходит какое-то время, и именно в это время какое-то другое устройство начало передачу, в итоге - произошла коллизия и пакеты были отброшены. При обнаружении коллизии, оба устройства прекращают передачу и делают паузу на некоторое время, которое выбирается случайным образом. По истечении этого времени устройства вновь пытаются передать данные, и высок шанс, что в этот раз пакеты не наложатся. Таким образом, в Ethernet решается проблема разделения общей среды передачи между сетевыми устройствами.
Сегмент сети, который использует в качестве активного оборудования концентраторы, называют "коллизионный домен", поскольку, при обнаружении одной коллизии, на некоторое время приостанавливается передача данных по всему сегменту. Фактически, коллизионный домен это аналог общей среды передачи, который просто объединяет сетевые устройства так, что они могут вещать на все остальные устройства напрямую. Это очень похоже на сеть, построенную на коаксиальном кабеле, когда устройства просто подключались к кабелю параллельно, а активное оборудование вообще не требовалось. Фактически, концентраторы являются устройствами 1-го уровня модели OSI, т.е. устройствами для физической передачи данных.
Важным моментом является то, что коллизионный домен требует дополнительных расчётов, связанных со скоростью распространения сигнала через кабели и активное оборудование. Необходимость таких расчётов обуславливается тем, что требуется обеспечить такую скорость передачи кадра, при которой самые "дальние" сетевые устройства не успели бы закончить одновременную передачу двух кадров минимального размера. В противном случае, кадры наложатся уже после передачи, возникнет коллизия, но которая не будет обнаружена этими устройствами, поскольку, они-то считают кадр уже переданным! В итоге, алгоритм работы Ethernet существенно нарушается, что может вызвать снижение производительности, либо, вообще, неработоспособность сегмента. Для предотвращения таких проблем есть специальная методика расчёта сегментов на основе концентраторов. Если вам "посчастливилось" проектировать такую сеть, то следует обратиться к специальной литературе.
Итак, сегментам, построенным на основе концентраторов, присущи серьёзные недостатки:
- Невозможность одновременной передачи данных, более чем от одного устройства;
- Режим полудуплекса, который позволяет в один момент времени только, или передавать информацию, или принимать её;
- Наличие коллизий, вносящих паузы в передачу данных по всему сегменту;
- Необходимость повторять пакеты на все порты, что снижает безопасность;
- Относительно сложный алгоритм расчёта размера коллизионного домена.
Как видно, сегменты, построенные на концентраторах, имеют низкую производительность и безопасность. Причём производительность такого сегмента тем ниже, чем больше в ней клиентских устройств, так как с ростом их числа становится все больше кадров, а значит и коллизий, тем большее времени сеть "простаивает".
Безопасность снижается из-за того, что злоумышленник на любом компьютере в таком сегменте может установить программу-снифер и просмотреть все пароли и данные, которые передаются по сети в открытом виде, ведь он имеет возможность получать все кадры сети.
Все эти недостатки устраняет следующий тип сетеобразующих устройств – коммутатор. Коммутатор, в отличие от концентратора, не повторяет каждый кадр на все порты, а имеет более высокий "интеллект" - он просматривает заголовки и использует MAC-адреса для построения таблицы коммутации кадров, тем самым, работая на втором уровне модели OSI, точнее, на подуровне MAC второго уровня.
Рассмотрим схематическую модель коммутатора (Рис. 1). На ней обозначены порты, фабрика коммутации и таблица коммутации. "Интеллект" коммутатора второго уровня содержится, как раз, в "фабрике коммутации" (switch fabric), которая и оперирует с MAC-адресами кадров.
Суть работы коммутатора заключается в том, чтобы автоматически определять, устройства с какими MAC-адресами находятся на каждом порту, и отсылать на этот порт только пакеты, которые предназначены этим устройствам. Т.е. приняв кадр с любого порта, коммутатор определяет, на какой порт этот пакет нужно отправить (по MAC-адресу получателя в таблице коммутации) и отправляет его только на этот порт. Причём, производительность фабрики коммутации намного превышает скорость передачи кадров через один порт, тем самым, фабрика коммутации успевает передать кадры между многими портами в течение времени, за которое концентратор будет передавать только один кадр.
Нетрудно заметить, что производительность коммутатора возрастает в разы за счёт того, что он, практически, одновременно передаёт пакеты между многими своими портами. Учитывая тот факт, что, почти все современные коммутаторы содержат фабрики коммутации, которые способны одновременно передавать кадры между всем портами, то производительность коммутатора больше производительности концентратора в x раз, где x - количество портов коммутатора.
За счёт того, что коммутатор работает с каждым клиентским устройством "индивидуально", то устройству не требуется занимать всю среду передачи на время передачи кадра – оно передаёт кадр только на фабрику коммутации, откуда кадр будет передан непосредственно на нужный порт (тот, к которому подключен получатель). Соединение коммутатора с клиентским устройством может, одновременно, и передавать кадр, и принимать другой. При использовании витой пары наложение кадров отсутствует, поскольку для передачи и приёма используются разные пары, а значит, не может быть коллизий.
Кадры передаются только на порт для устройства и не могут попасть к злоумышленнику, соответственно, существенно повышается безопасность.
Также, значительно упрощается расчёт коллизионного домена, ведь сеть, построенная на коммутаторах, как правило, использует только полный дуплекс, что исключает коллизии. Соответственно, при проектировании сетей на основе коммутаторов, требуется соблюсти только те, которые касаются кабельной системы, а именно: протяжённость кабеля должна быть не более 100 метров.
Теперь немного об "интеллекте" коммутатора. Таблица коммутации составляется довольно просто – при приёме кадра с какого-то порта, коммутатор "смотрит" MAC-адрес отправителя и заносит запись о том, что "устройство с MAC-адресом таким-то находится на порту таком-то". Очищается таблица коммутации либо по таймеру, когда для определённой записи в таблице коммутации истекает срок действия, или при выключении устройства. Отдельным случаем является тот, когда в таблице коммутации есть запись, что "устройство с таким-то MAC-адресом находится на порту x" и, вдруг, приходит кадр с таким же MAC-адресом отправителя, но с порта y. В этом случае, таблица коммутации корректируется, и, после этого, отражает реальную картину, что теперь это устройство находится на порту y. Таким образом, коммутатор постоянно поддерживает актуальную таблицу коммутации, которая отражает, к какому порту, какое клиентское устройство подключено. Этот процесс называется "автообучение" (autolearning) фабрики коммутации.
Процесс коммутации кадра выглядит следующим образом: когда коммутатор получает кадр для какого-устройства, то он просматривает таблицу коммутации: если запись с соответствующим MAC-адресом получателя найдена, то кадр транслируется именно на этот порт. А если записи с таким адресом не обнаружено, то кадр передаётся на все порты коммутатора. За счёт последнего, коммутатор 2-го уровня прозрачен для широковещательных (broadcast) и групповых (multicast) кадров.
Пытливый ум заметит, что в случае передачи широковещательных и групповых кадров занимаются все порты коммутатора, и это приостанавливает передачу данных по сегменту. Совершенно верно – сегмент, построенный на коммутаторах, называется "широковещательным доменом", т.е. широковещательные пакеты передаются по всему сегменту и, на время передачи, блокируют другие данные. Причём, ситуация несколько похожа на ситуацию с коллизиями: чем больше устройств в широковещательном домене, тем большее время сеть занимается передачей широковещательных кадров, тем больше она "простаивает". Однако следует понимать, что коллизионный домен и широковещательный - это совершенно разные явления. Коллизионный является одновременно и широковещательным (по определению), но широковещательный не является коллизионным, поскольку в коммутируемом сегменте коллизий не бывает. Помимо этого, коллизионный домен требует специального расчёта при проектировании.
Недостаток со снижением производительности широковещательного домена присущ сегментам на базе устройств второго уровня и решается сегментированием сети с помощью устройств третьего уровня – маршрутизаторов или маршрутизирующих коммутаторов. Но о них речь пойдёт в следующей статье.
Топология
Из теории следует, что в классическом виде Ethernet нельзя соединять по топологии "кольцо", поскольку, в случае использования концентраторов, это закончится постоянными коллизиями – кадры, пришедшие по двум путям, будут постоянно накладываться. А в случае использования коммутаторов будет происходить т.н. "широковещательный шторм": когда первый же широковещательный кадр начинает бесконечно циркулировать по кольцу из двух соединений. Нетрудно догадаться, что в обоих случаях сеть будет практически выведена из строя. Поэтому для классического Ethernet’а можно применять только топологию типа "звезда", которая является древовидной с непересекающимися ветвями (Рис. 2). Правда, в современных коммутаторах начали встраивать защиту от широковещательных штормов, но это само по себе, конечно, не даёт возможности делать топологию типа "кольцо".
Кстати говоря, возможность широковещательного шторма - одна из серьёзных уязвимостей протокола Ethernet к атакам типа DOS: для выведения из рабочего состояния коммутатора бывает достаточно просто взять кросс-патчкорд и подключить его к двум портам одного и того же коммутатора.
Продолжая разговор о физической топологии, хотелось бы коснуться темы резервирования соединений, ведь, если два коммутатора соединены одним кабелем, то это не так надёжно – кабель могут повредить, его может залить водой, могут просто отойти контакты и т.п… А топология классического Ethernet не подразумевает параллельных соединений двух коммутаторов или "колец" между звеньями сети. На этот случай был разработан протокол Spanning Tree Protocol (STP). По своей сути, STP просто отслеживает логическую топологию всей "видимой" ему сети и отключает те порты, которые могут "замкнуть" ветви "дерева". Тем самым, можно искусственно организовать кольцо, или несколько колец, между коммутаторами, поддерживающими STP. При этом часть соединений будет постоянно отключена, но активирована только в случае обрыва основного соединения. Обычная практика, при этом, пускать основное и резервные соединения разными физическими путями – чтобы кабели не повредились одновременно. Правда, у STP есть один недостаток – время переключения на резервное соединение может занимать до минуты, а в современных сетях это довольно много. Поэтому был разработан протокол Rapid Spanning Tree Protocol (RSTP), который является более "быстрой" версией STP. В современных сетях, в основном, применяется RSTP или частные протоколы производителей, которые не стандартизованы и поддерживаются только оборудованием этих же производителей. Проблема в том, что протокол (R)STP поддерживают только дорогие коммутаторы, которые относятся к классу "smart".
Заключение
Не смотря на кажущуюся простоту построения современных локальных сетей, технологии, которые в них применяются, всё же, довольно сложны. Поэтому для построения надёжных и расширяемых сетей, следует знать основы этих технологий, а имея такие знания, можно, в случае необходимости, быстро найти подробную информацию, зная что искать и как искать. В следующей статье мы перейдём к третьему уровню модели OSI, а именно к протоколу IP, и рассмотрим вопросы маршрутизации и трансляции адресов, т.е. именно те, которые нужно знать, чтобы правильно настроить доступ в Интернет.
Автор: Алексей Гретчанинов
Источник: www.techlabs.by
|