Роутер (маршрутизатор) – это сетевое устройство, которое принимает решения о пересылке пакетов сетевого уровня модели OSI между различными сегментами сети. Решение основывается на информации о топологии сети и определённых правил. Обычно маршрутизатор использует адрес получателя, указанный в пакетах данных и определяет по таблице маршрутизации путь, по которому следует передать данные. Если в таблице маршрутизации для адреса нет описанного маршрута, пакет отбрасывается.
Имеются и другие способы определения маршрута пересылки пакетов, когда, например, используется адрес отправителя, используемые протоколы верхних уровней и другая информация, содержащаяся в заголовках пакетов сетевого уровня. Нередко роутеры могут осуществлять трансляцию адресов отправителя и получателя, фильтрацию транзитного потока данных на основе определённых правил с целью ограничения доступа, шифрование/дешифрование передаваемых данных и т. д.
Таблица маршрутизации содержит информацию, на основе которой роутер принимает решение о дальнейшей пересылке пакетов. Таблица состоит из некоторого числа записей — маршрутов, в каждой из которых содержится адрес сети получателя, адрес следующего узла, которому следует передавать пакеты и некоторый вес записи — метрика. Метрики записей в таблице играют роль в вычислении кратчайших маршрутов к различным получателям. В зависимости от модели роутера и используемых протоколов маршрутизации, в таблице может содержаться дополнительная служебная информация.
Таблица маршрутизации может составляться двумя способами:
Зачастую для построения таблиц маршрутизации используют теорию графов.
Кроме того, роутер строит таблицу оптимальных путей к сетям назначения на основе различных критериев — количества промежуточных узлов, пропускной способности каналов, задержки передачи данных и т. п.
Критерии вычисления оптимальных маршрутов чаще всего зависят от протокола маршрутизации, а также задаются конфигурацией роутера. Такой способ построения таблицы позволяет автоматически держать таблицу маршрутизации в актуальном состоянии и вычислять оптимальные маршруты на основе текущей топологии сети.
Но, динамическая маршрутизация оказывает дополнительную нагрузку на устройства, а высокая нестабильность сети может приводить к ситуациям, когда роутеры не успевают синхронизировать свои таблицы, что приводит к противоречивым сведениям о топологии сети в различных её частях и потере передаваемых данных.
Роутеры помогают уменьшить загрузку сети, благодаря её разделению на домены коллизий и широковещательные домены, а также благодаря фильтрации пакетов.
В основном, их применяют для объединения сетей разных типов (зачастую несовместимых по архитектуре и протоколам, например для объединения локальных сетей Ethernet и WAN-соединений, использующих протоколы xDSL, PPP, ATM, Frame relay и т. д.).
Нередко, маршрутизаторы используются для обеспечения доступа из локальной сети в глобальную сеть Интернет, осуществляя функции трансляции адресов и межсетевого экрана.
В качестве роутера может выступать как специализированное (аппаратное) устройство, так и обычный компьютер, выполняющий функции маршрутизатора. Существует несколько пакетов программного обеспечения (в основном на основе ядра Linux) с помощью которого можно превратить ПК в высокопроизводительный и многофункциональный роутер, например GNU Zebra.