Маршрутизатор
Маршрутиза́тор, устройство в компьютерной сети, сетевой узел, который принимает пакеты данных от других узлов и для каждого пакета решает, куда его отправить дальше. Этот процесс называется маршрутизацией. Он основан на таблице маршрутизации (набор правил, по которому для каждого пакета выбирается дальнейший путь). Чаще всего используют правила, устанавливающие соответствие между адресом назначения пакета и адресом следующего маршрутизатора, которому будет передан пакет. Поскольку у каждого маршрутизатора своя собственная таблица маршрутов, маршрутизация выполняется децентрализованно каждым устройством независимо от других, что обеспечивает отказоустойчивость и масштабируемость компьютерных сетей. Для пересылки пакетов маршрутизаторы имеют несколько сетевых интерфейсов.
Различают два способа маршрутизации: статический и динамический. Статические записи таблицы маршрутизации вносятся вручную, например администратором сети. Это простой способ, но маршрутизатор не сможет реагировать на изменения в сети (например, недоступность какого-либо из маршрутов). Чтобы автоматизировать работу по обновлению таблиц маршрутизации, были созданы специальные протоколы динамической маршрутизации. Эти протоколы позволяют устройствам обмениваться информацией о тех сетях, к которым они подключены напрямую, и заполнять таблицы маршрутизации автоматически, добавляя информацию о новых устройствах и удаляя устаревшие маршруты.
Маршрутизатор – это сетевое устройство третьего, сетевого, уровня базовой эталонной модели взаимосвязи открытых систем. Это значит, что для своей работы маршрутизатор обрабатывает заголовки пакетов сетевого уровня и может соединять разные среды передачи данных и протоколы канального уровня.
Появление маршрутизаторов было предопределено идеями коммутации пакетов в компьютерных сетях, разрабатываемыми в 1960-х гг. американским учёным польского происхождения П. Бараном и британским учёным Д. Дэвисом. Экспериментально эти идеи реализовывались в лабораториях Rand Corporation, NPL (Национальная физическая лаборатория Великобритании) и ARPA. По предложению американского физика У. А. Кларка при планировании сети ARPANET в лаборатории ARPA была предложена концепция использования отдельных небольших компьютеров для транзитной передачи пакетов по сети. Такие компьютеры были названы процессорами сообщений интерфейса (англ. Interface Message Processor – IMP). Требования к ним были описаны в RFC 1 (Crocker. 1969), а первая сеть из четырёх узлов функционировала уже в декабре 1969 г. Эти устройства выбирали свободные линии для передачи пакетов по динамически обновляемой таблице и фактически являлись первыми маршрутизаторами с первым протоколом динамической маршрутизации. Процессоры сообщений интерфейса иногда ещё называют узлами коммутации пакетов, поскольку термина «маршрутизатор» во время их создания ещё не существовало, а таблица маршрутизации в них называлась просто «таблица». В 1970–1980-х гг. в качестве маршрутизаторов использовались преимущественно обычные компьютеры, имеющие платы расширения для подключения к телекоммуникационным сетям. Ныне такие устройства называют программными маршрутизаторами.
Со временем возрастали скорости передачи данных, размеры таблиц маршрутизации; совершенствовалась область микроэлектроники, что привело к внедрению специализированных устройств – аппаратных маршрутизаторов. Их отличительная черта в том, что маршрутизация пакета выполнялась не программой, работающей на процессоре общего назначения, а специализированным процессором для обработки сетевых пакетов. Такие процессоры являются частным случаем интегральных схем специального назначения (англ. ASIC). При этом часть сложных функций, таких как обработка протоколов динамической маршрутизации, удалённый доступ для администрирования, выполняются программно и вынесены в отдельный процессор общего назначения. Из-за этого в современных устройствах часто выделяют уровень данных (англ. data plane) – операции, выполняемые быстро с помощью ASIC, и уровень управления (англ. control plane) – операции, выполняемые программно на процессоре общего назначения. Это разделение важно для администрирования, поскольку быстро работающий ASIC имеет ограниченные возможности, и чрезмерно сложные настройки могут заставить маршрутизатор медленно обрабатывать пакеты на уровне управления. Также наличие уровня данных важно при выборе устройства, поскольку самые простые программные маршрутизаторы без уровня данных работают медленнее аппаратных устройств.
Для уровня управления современных маршрутизаторов часто используют операционные системы Linux и xBSD. Применяя штатные средства этих операционных систем, можно настроить программный маршрутизатор со статическими маршрутами, а при установке дополнительного программного обеспечения, такого как Quagga, FRRouting – полноценный маршрутизатор с динамическими маршрутами. Также существуют программные средства, эмулирующие или имитирующие работу маршрутизаторов: GNS3, Cisco Packet Tracer, EVE-NG, NS2.
Современные маршрутизаторы – сложные устройства, способные, в зависимости от модели, выполнять множество самых разных смежных функций: производить коммутацию пакетов, раздавать сетевые адреса, служить сервером синхронизации времени, осуществялть фильтрацию трафика и др.