store and forward что это
Урок 14. Принцип работы сетевого коммутатора Ethernet
Сегодня мы поговорим о том, как все же работает коммутатор.
Как мы уже знаем коммутаторы являются L2 устройствами, так как работают на канальном уровне. Они обрабатывают заголовок Ethernet кадра, а точнее MAC адреса получателя и отправителя, а также контрольную сумму.
Каждый коммутатор составляет таблицу MAC адресов (CAM table) всех хостов, подключенных в его порты.
При включении питания коммутатора его таблица пуста.
Далее начинается процесс обучения, который представлен ниже
При поступлении каждого кадра на вход коммутатора, МАС адрес отправителя вносится в таблицу МАС адресов с указанием интерфейса, принявшего данный кадр.
Далее анализируется МАС адрес получателя. Если его нет в таблице, то коммутатор ретранслирует принятые кадры на все порты, кроме принявшего.
Если же МАС адрес получателя найден в таблице, то кадр направляется указанному в таблице интерфейсу.
Таблица адресов динамическая и сохраняется только в оперативной памяти, то есть при отключении питания таблица удаляется.
Все МАС адреса хранятся в таблице ограниченное время ( aging-time ), которое в некоторых коммутаторах можно изменить.
Почему нельзя сохранять адреса вечно?
Дело в том, что может понадобиться реконфигурация сети и некоторые хосты могут быть отключены от портов коммутатора, поэтому таблица адресов уже будет неактуальна, что приведет к неправильному функционированию сети.
Коммутаторы могут работать в одном из 3-х режимов:
В целом процесс коммутации происходит довольно быстро.
А с чем это связано?
Во-первых, сам процесс происходит на втором уровне (канальный уровень), что снижает время на обработку данных. Во-вторых, коммутация происходит не программно, а аппаратно. То есть для этого используются специализированные чипы ASIC.
Это специальные микросхемы, которые разрабатываются для решения узкопрофильных задач. Кроме того, они отличаются быстротой работы.
Широковещательный домен и домен коллизий
Как мы знаем, благодаря коммутации, каждому хосту выделяется канал связи. В то время, как в концентраторе эта возможность отсутствует. То есть имеется общий канал для всех хостов, благодаря чему и возникают коллизии. Поэтому такое подключение или сеть (с общим каналом) называют доменом коллизий.
Как видно из рисунка в сети с концентратором в определенный момент времени может вести передачу только один компьютер. В то время как остальные ждут, когда он закончит. Такой режим связи называется полудуплексным (half duplex).
Ситуация усугубляется, когда в сети растет количество компьютеров, так как времени на передачу для каждого компьютера выделяется все меньше и меньше.
То есть, чем больше компьютеров и концентраторов, тем хуже?
Верно. Пропускная способность такой сети (домена коллизий) значительно снижается.
А как называется подключение с коммутатором?
Так как в коммутаторе коллизии в принципе исключены, то каждый его порт считается доменом коллизий. То есть в принципе, к порту можно подключить несколько хостов посредством концентратора, но пропускная способность при этом изменится только в рамках конкретного порта, к которому подключен концентратор. В сети с коммутаторами все хосты могут принимать и передавать данные одновременно, не мешая друг другу. Такой режим связи называется дуплексным (full duplex).
Сама же сеть, в которой присутствуют только коммутаторы называется широковещательным доменом, так как коммутаторы обрабатывают и пропускают широковещательный (broadcast) трафик.
Что такое широковещательный (broadcast) трафик?
Это когда в качестве получателя указывается адрес, говорящий, что данный пакет/кадр предназначен всем хостам.
Как выглядит такой адрес?
В МАС адресе устанавливаются все единицы, то есть FF.FF.FF.FF.FF.
Как называется обычный трафик, когда в качестве получателя указывается конкретный получатель?
Такой трафик называется одноадресатный (unicast).
Маршрутизаторы широковещательный трафик не пропускают, поэтому каждый порт маршрутизатора образует широковещательный домен.
Уязвимость и безопасность вычислительных сетей
Технологии коммутации
1. Технологии коммутации
Мостовые соединения (bridging) являются фундаментальной частью стандартов для локальных сетей IEEE. Мост был разработан с целью уменьшения количества коллизий в локальных сетях, которые изначально использовали разделяемую среду передачи, увеличения диаметра сети, а также поддержки различных протоколов сетевого уровня. Мост делил локальную сеть на два (или более) сегмента и выполнял фильтрацию кадров на основе их МАС-адресов назначения. Прежде чем переслать кадры из одного сегмента в другой, он анализировал их и передавал только в том случае, если такая передача действительно была необходима, то есть МАС-адрес рабочей станции назначения принадлежал другому сегменту.
Стандарты IEEE определяют мостовые соединения для всех технологий локальных сетей. Например, в сетях Token Ring используется алгоритм мостовой передачи с маршрутизацией от источника (source route bridging), определенный в Секции 9 стандарта IEEE 802.2, в сетях Ethernet используется алгоритм прозрачного моста (transparent bridge), который определен стандартом IEEE 802.1D.
В настоящее время основным строительным блоком для создания локальных сетей являются коммутаторы (коммутаторы Ethernet, т.к. Ethernet является основной технологией локальных сетей). Коммутатор представляет собой многопортовый мост и также функционирует на канальном уровне модели OSI. Основное отличие коммутатора от моста заключается в том, что он производительнее, может устанавливать одновременно несколько соединений между разными парами портов и поддерживает множество дополнительных возможностей, отвечающих общепринятым стандартам. Наиболее распространенными и широко используемыми в настоящее время функциями коммутаторов являются:
Помимо перечисленных функций коммутаторы могут поддерживать протоколы маршрутизации и играть роль маршрутизаторов локальной сети. В этом случае их называют коммутаторами 3-го уровня.
Коммуникации в store-and-forward режиме, UUCP
Сейчас в мире Интернета преобладающее количество всех служб работают в режиме online: то есть постоянное соединение с Интернетом и серверами. Если HTTP, FTP или IRC сервер недоступен, то вам об этом сразу же явно сообщат. Не всегда есть возможность иметь такую роскошь как постоянный online. Иногда это дорого, иногда просто технически невозможно. Есть опасность что появится Великий Российский Firewall который будет разрешать только whitelist доступ к ресурсам и доступность «полноценного» Интернета, в лучшем случае, будет только от места к месту. Режим работы при котором данные для отправки сохраняются и ожидают пока появится связь называется store-and-forward. Именно этот режим удобно позволяет работать в условиях непостоянного online.
Из широкораспространённых сервисов только email (SMTP) имеет что-то похожее на это: вы отправляете сообщение и оно сохраняется на сервере до тех пор, пока он не сможет соединиться с принимающим сервером и получить успешный код ответа. И так по всей цепочки пока письмо не дойдёт до адресата. По почте можно передавать и файлы, но крайне неэффективно из-за Base64 кодирования. Заранее настроив почтовый сервер, можно отправлять на специальные адреса сообщения в которых будут команды для выполнения — то есть удалённое выполнение команд не требующих интерактивного вмешательства и гарантированных жёстких сроков выполнения.
Однако SMTP серверы всё же рассчитаны на более-менее постоянное присутствие в сети. При недоступности удалённых серверов он будет уменьшать частоту попыток пересылки. Если у вас появилось пять минут доступности сети, то не факт что в это время SMTP сервер попробует повторить попытку. Как правило, через несколько дней он напомнит о том что сообщение до сих пор не может быть доставлено и вскоре будет удалено.
Полностью в таком режиме работает сеть FidoNet. Человек, например, пару раз в день подключается к вышестоящей ноде и получает пачку писем, отправляет свою накопившуюся. Затем в offline режиме читает и отвечает на полученные сообщения. Стоит ли возрождать FTN (FidoNet Technology Network) технологии и снова их использовать? Лично я считаю что нет: FTN создавалась любителями для домашних компьютеров. Я бы сказал что FTN это UUCP (UNIX-to-UNIX CoPy) для «бедных», для тех у кого нет UNIX-like операционных систем. Кроме того, весь FTN софт стоит особняком от Интернет технологий. UUCP же хорошо интегрируется с существующими технологиями.
UUCP позволяет удобно разрешить проблему создания store-and-forward сервисов. Он был очень популярен в 70-х и 80-х годах и был де-факто стандартом связи между UNIX системами, задолго до широкого распространения Интернета.
Используя современные определения, UUCP является F2F (friend-to-friend) сетью. Вы явно руками самостоятельно прописываете и настраиваете все ваши взаимосвязи с «друзьями». Более того, вы явно управляете маршрутизацией сообщений. Да, это бОльшая ответственность и трудозатраты, но зато хорошая защита от возможных DoS атак, от централизованных серверов которые могут применять цензуру. F2F сети саморегулируются: злоумышленников и людей с плохим поведением из сети просто выкинут, как это происходило в FidoNet. Это работает достаточно хорошо и это на практике уже показало что сеть может иметь глобальные масштабы, а не только быть у кучки любителей.
Однако в UUCP есть и поддержка неизвестных (unknown), анонимных пользователей. То есть сделать публичный всем доступный сервер для раздачи файлов, или даже с возможностью их закачивания, возможно из коробки.
UUCP не предлагает ничего связанного с криптографией. В текущих реалиях, когда модемы уже мало у кого есть, как и телефонные линии, использовать криптографию хотя бы для аутентификации нод уже необходимо. Благо вы вольны делать это как вам удобнее. Если для физически изолированных air-gapped, Sneakernet/FloppyNet или соединённым по ЛВС систем на это ещё можно закрыть глаза, то для связи по публичным каналам связи можно быстро поднять stunnel, SSH, VPN или что-то подобное. Поднять UUCP в виде скрытого сервиса Tor или I2P становится тривиально.
Покажем насколько проста конфигурация UUCP на примере связи двух компьютер через Интернет. Один не делает никаких исходящих соединений (назовём его alpha), в отличии от второго (назовём его beta).
Это вся конфигурация. Мы задачи порт «tcp», логин/пароль для доступа, названия UUCP нод. Если мы хотим вызывать SSH вместо прямого TCP соединения, то достаточно описать новый «порт»:
Если мы хотим соединяться по COM-порту, но при его недоступности попытаться TCP, то создадим ещё один порт и укажем альтернативную конфигурацию для системы (альтернатив может быть много):
При этом, для последовательного соединения мы указали использовать протокол «g» (используется для ненадёжных каналов связи, самостоятельно проверяет целостность и перепосылает данные), а для TCP, который уже является надёжным каналом связи, протокол «t».
При такой конфигурации мы уже можем послать файл с beta на alpha:
По-умолчанию в UUCP «
/» это не домашняя директория пользователя, а публичная область для всех, аналог «pub» директории в FTP. В моей системе это директория /var/spool/uucppublic/. В sys файле вы можете для каждой системы указать в какие директории можно посылать файлы или из каких их запрашивать. Таким же образом и alpha может послать файл, но он будет передан только когда beta подсоединится. Есть удобная утилита uuto которая может отправить файл заданному пользователю на заданную систему:
А на удалённой remote системе пользователь может вызвать uupick которая ему покажет список всех отосланных ему файлов и позволит, например, их переместить в указанную директорию.
Если вам надо отправить файл на gamma систему, имеющую связь с beta, то вы явно должны указать маршрут следования файла:
UUCP позволяет посылать задание на выполнение команд на удалённой системе:
На принимающей системе отдельный uuxqt демон занимается запуском принимаемых таким образом команд. В sys файле вы можете управлять тем, какие команды разрешено запускать той или иной системе:
В данном случае можно выполнять только команду rmail и wget.sh. wget.sh это пример самописного простого скрипта который скачает Web-страницу и через UUCP отправит её в сжатом зашифрованном виде с минимальным приоритетом:
Тут видно для доменов cypherpunks.ru/cryptoparty.ru почту нужно слать через UUCP на «sgtp» ноду.
Чтобы отсылать почту с локальной машины через UUCP шлюз, то кроме раскомментирования uucp/uux строк в master.cf, достаточно добавить в main.cf:
Поддержка UUCP в Exim и sendmail аналогично просто настраивается.
Таким образом, мы легко можем получить во всех современных свободных операционных системах удобную работу в условиях непостоянной связанности компьютеров между собой. Можно эффективно (без накладных расходов на Base64 например) передавать файлы и обмениваться электронной почтой практически без лишних телодвижений. Кроме того, выполнять пачкой (batch) удалённые команды куда проще чем через создание сервисов управляемых через email.
Что такое сетевой коммутатор и для чего он нужен?
Сетевой коммутатор — это электронный прибор, объединяющий несколько компьютеров и/или других цифровых устройств в локальную сеть и позволяющий им обмениваться данными. Имеет ещё одно распространённое название — свитч, которое происходит от английского слова switch (коммутатор, переключатель).
Что такое свитч простыми словами
С каждым годом нас окружает всё больше и больше компьютеров, ноутбуков, мобильных и других цифровых устройств. Они используются дома, в офисах, административных и многих других помещениях. Становится всё более актуальной проблема их соединения для передачи данных — такого, которое избавило бы от необходимости переносить информацию, например, на USB-флешке. В недавнем прошлом её решали с помощью концентраторов, но к настоящему моменту их почти вытеснили более интеллектуальные устройства — сетевые коммутаторы, или свитчи. Говоря простыми словами, это — устройства, позволяющие объединить несколько компьютеров в сеть и играющие в ней роль её ядра. Это действительно удобно, причём в самых разных ситуациях:
на предприятии или в офисе, в котором установлено большое количество компьютеров, сетевых принтеров и другой цифровой техники;
в небольшой домашней локальной сети — к примеру, состоящей из нескольких компьютеров, ноутбука и современного телевизора;
в составе масштабной системы видеонаблюдения с большим количеством камер;
в промышленной сети с многочисленными датчиками, контролирующими техпроцессы и передающими данные на диспетчерский пункт;
вомногих других случаях.
Принцип работы коммутатора
За вопросом о том, что такое коммутатор, закономерно следует ещё один: по какому принципу он работает? Всё одновременно и просто, и сложно. Свитч получает данные от обращающихся к нему устройств и постепенно заполняет таблицу коммутации их MAC-адресами. При последующих обращениях коммутатор считывает адрес устройства-отправителя, анализирует таблицу коммутации и определяет по ней, на какое устройство нужно переслать данные. Прочие компьютеры при этом не «знают» о факте передачи информации, поскольку она не имеет к ним отношения. Благодаря этому обеспечивается работа сети в так называемом полнодуплексном (full duplex) режиме.
Новый коммутатор на этапе обучения, не обнаруживая в своей таблице MAC-адрес получателя, рассылает данные на все подключенные к нему устройства (разумеется, кроме отправителя). Правильный получатель отвечает коммутатору, и последний создаёт новую запись в таблице коммутации. В дальнейшем свитч, принимая данные с этим же MAC-адресом, «понимает», куда именно их нужно направить, и производит уже не массовую рассылку, но строго адресную отправку. Трафик, таким образом, локализуется, а сеть — разгружается.
Выше был описан принцип действия так называемого неуправляемого коммутатора, который работает на втором (канальном) уровне OSI. Помимо таких, существуют более продвинутые модели, работающие на третьем и четвёртом уровнях. Они значительно функциональнее, поскольку допускают ручное управление (в частности, через интерфейс командной строки), поддерживают QoS, VLAN, зеркалирование, обнаружение штормов трафика, ограничение скоростей передачи данных для разных портов и многие другие полезные функции. Такие устройства включают в состав сложных и разветвлённых сетей — в частности, тех, что развёрнуты на больших предприятиях.
Режимы коммутации
Есть три режима, в которых свитч передаёт данные узлам-адресатам. Ключевые особенности каждого режима — степень надёжности передачи и связанное с ней время ожидания.
Первый режим называется Cut-Through — сквозной. Свитч принимает данные, считывает из них только адрес узла-получателя и без каких-либо дополнительных проверок отправляет их по назначению. Время ожидания в этом случае минимально, но возникает вероятность передачи данных с ошибками.
Второй режим называется Store and Forward — с промежуточным хранением. Коммутатор не только считывает адрес получателя, но и анализирует всю поступившую информацию с целью поиска ошибок. Лишь после этого данные передаются по назначению. Время ожидания в сравнении с предыдущим режимом увеличивается — оно необходимо свитчу для проверки.
Третий режим называется Fragment-Free — бесфрагментный, или гибридный. Он представляет собой сочетание двух описанных выше режимов. Коммутатор принимает кадр данных, считывает адрес получателя, а затем проверяет информацию на предмет ошибок, но не всю, а лишь первые 64 байта. После проверки свитч отправляет данные получателю.
Условия передачи данных непостоянны — они меняются со временем. Полезно иметь коммутатор, в котором реализована адаптивная подстройка под эти условия. В начале работы такое устройство включает сквозной режим коммутации для всех портов. Затем те порты, на которых появляется слишком много ошибок, автоматически переводятся в гибридный (бесфрагментный) режим. Наконец, если и после этого ошибок остаётся слишком много, порты переводятся в режим с промежуточным хранением данных.
Отличие коммутатора (switch) от концентратора (hub)
В недавнем прошлом были широко распространены концентраторы (hub). Эти устройства работают на основе широковещательной модели. Выражаясь проще, концентратор, принимая сетевой трафик, просто рассылает его всем без исключения подключенным к нему устройствам. Функция определения адресата, которая есть в коммутаторе, в нём не реализована, и в этом — основное отличие hub от switch. Широковещательная передача данных таит как минимум два подводных камня: во-первых, она сильно загружает сеть и заметно замедляет передачу данных, во-вторых, она влечёт риск появления большого количества ошибок, особенно — при добавлении в сеть новых компьютеров. Использование сетевых коммутаторов избавляет от этих проблем — и именно поэтому эти устройства к настоящему времени почти вытеснили собой концентраторы.
Отличие коммутатора (switch) от маршрутизатора (router)
Коммутатор более функционален, чем концентратор, но ещё больше функций реализовано в маршрутизаторе (или, как его ещё называют, роутере). Это устройство работает на третьем уровне OSI и отвечает не только за распределение трафика по узлам-адресатам, но и за связь между разными сетями с отличающимися архитектурами. В его память записана таблица маршрутизации, на основе данных из которой router решает, куда следует переслать поступивший пакет данных. Пересылка выполняется в соответствии с правилами, заданными администратором при настройке маршрутизатора.
Роутер позволяет снизить загрузку сети, разделяя её на широковещательные домены и фильтруя пакеты. Он даёт возможность объединить Ethernet-сеть и соединения WAN — например, для организации выхода в Интернет. В этом случае маршрутизатор не только транслирует адреса, но и играет роль межсетевого экрана, обеспечивая тем самым информационную безопасность. По сути, любой маршрутизатор — это миниатюрный компьютер с большим количеством настраиваемых параметров. К слову, именно поэтому роль роутера может играть любой персональный компьютер — при условии, что на нём установлено и настроено специализированное программное обеспечение для маршрутизации.
Как выбрать коммутатор
В продаже представлено великое множество моделей коммутаторов, которые существенно отличаются друг от друга как по функциональности, так и по цене. IT-специалисту нужно знать основные характеристики свитчей (читай — критерии выбора).
Базовая скорость передачи
В большинстве случаев в характеристиках коммутаторов указано сразу несколько значений скорости (пример записи — 10/100 Мбит/сек). Нужно ориентироваться на высшее значение — это максимум для данного устройства. Если данные будут поступать на свитч со скоростью меньшей, чем этот максимум, он автоматически подстроится под неё. Модели верхнего ценового диапазона могут работать на скоростях 10/20/100/200/1000/2000Мбит/сек. Принимайте во внимание особенности вашей сети и характеристики входящих в неё устройств и делайте правильный выбор.
Количество портов
В продаже представлены модели с количеством портов от 5 до 48. Выбирайте свитч с учётом не только фактического количества устройств, которые будут к нему подключены немедленно, но и перспективы расширения сети в будущем. Опыт показывает, что для сетей, развёрнутых дома и в небольших офисах, оптимальны коммутаторы с количеством портов от 5 до 15. Для предприятия подойдёт устройство с количеством портов от 15 до 48.
Исполнение (способ установки)
настольные коммутаторы. Это — компактные модели для небольших сетей. Они не вызывают ни малейших сложностей при установке — их можно просто положить на стол;
настенные модели. Также сравнительно компактны, однако имеют специальные пазы, позволяющие зафиксировать их на стене. Как показывает опыт, многие настенные свитчи можно и не крепить на вертикальном основании, а просто положить на стол;
стоечные коммутаторы. В эту категорию входят наиболее продвинутые модели для предприятий, которые устанавливаются в стандартную 19-дюймовую стойку для телекоммуникационного оборудования.
Возможность управления
Одну категорию образуют неуправляемые коммутаторы. Они не позволяют выполнить тонкую настройку, что минус для крупного предприятия, но плюс для использования дома или в небольшом офисе. Неуправляемые модели, как правило, компактны и имеют невысокую стоимость.
Ко второй категории относятся управляемые модели. Они допускают гибкую настройку с помощью специализированного ПО или web-интерфейса. Администратор может менять многочисленные параметры управляемого коммутатора — приоритеты подключенных устройств, общие параметры сети и другие. Такие модели хорошо подходят для использования в сложных и разветвлённых сетях, однако для их настройки нужны специальные познания и определённый опыт.
Поддержка PoE
Выбирайте коммутатор с этой функцией, если вам нужна подача питания к устройствам непосредственно по сетевому кабелю (витой паре). Один из возможных примеров — IP-камеры, включенные в локальную сеть. PoE (Power over Ethernet) — очень удобная функция: она избавляет от необходимости использовать силовые кабели, нисколько не снижая качество передачи данных.
Наличие портов SFP
Свитч с такими портами понадобится, если нужно соединить его с другими коммутаторами или устройствами более высокого уровня. Обратите внимание: SFP — это лишь порт, в него нужно предварительно установить специальный модуль, который, в свою очередь, даст возможность нестандартного подключения (например, по оптоволокну).
Наличие функции энергосбережения
Коммутаторы с такой функцией становятся всё более востребованными — играет роль растущий интерес к защите экологии. Эти интеллектуальные модели следят за подключенными к ним устройствам, выявляют неактивные порты и временно переводят их в спящий режим. Производители утверждают, что функция энергосбережения, реализованная в свитчах, позволяет сэкономить до 80% (!) электроэнергии.
Поддержка VLAN
Выбирайте модель с такой функцией, если нуждаетесь в логическом разграничении отдельных участков локальной сети. Вы сможете создать свои сегменты для разных отделов, подразделений и филиалов компании, организовать сеть общего доступа.
Наличие функции сегментации трафика
Коммутаторы с такой функцией позволяют настраивать порты или их группы так, чтобы они были полностью отделены друг от друга, но при этом имели доступ к серверу.
Поддержка стекирования
Устройство с такой функцией понадобится, если вам нужно создать единый логический коммутатор с количеством портов большим, чем 48. Несложно понять, что поддержка стекирования требуется в масштабных, разветвлённых сетях, развёрнутых на крупных предприятиях.
Наличие защиты от широковещательного шторма
Одно из частных проявлений такого шторма — DDoS-атака на локальную сеть. Если в последнюю входит обычный коммутатор без защиты от широковещательного шторма, в результате атаки вся сеть может попросту «лечь». Модели, в которых такая защита реализована, выявляют флуд и своевременно отсекают его, благодаря чему сеть остаётся стабильной.