Реализации IPv4 традиционно спроектированы для использования либо хостами, либо маршрутизаторами, а не обоими сразу. То есть система была либо конечной точкой для пакетов (в качестве источника или места назначения), либо маршрутизатором (который пересылает пакеты между хостами в различных сетях, но протоколы вышележащих уровней использует лишь для функций сопровождения).
Традиционные системы хостов не содержат в себе функции пересылки IP пакетов; вместо этого, если они получают IP пакеты, адресованные не им, они просто уничтожают IP пакеты. 4.2BSD была первой распространенной реализацией, которая попыталась предоставить службы как хоста, так и маршрутизатора в обычной работе. У этого подхода есть преимущества и недостатки.
Это означало, что хосты 4.2BSD, соединенные с несколькими сетями, могли служить в качестве маршрутизаторов также, как и в качестве хостов, снижая требования к аппаратному обеспечению выделенных маршрутизаторов. Первые маршрутизаторы были дорогими и не особенно мощными. Альтернативно существование поддержки функции маршрутизатора в обычных хостах увеличивало вероятность того, что ошибки неправильного конфигурирования приводили к проблемам в подключенных сетях. Наиболее серьезная проблема должна была иметь дело с пересылкой широковещательных пакетов из-за неправильного понимания места назначения пакета либо отправителем, либо получателем. В FreeBSD функции маршрутизатора по пересылке IP пакетов по умолчанию отключены. Их можно включить во время работы с помощью системного вызова sysctl. Хосты, не сконфигурированные в качестве маршрутизаторов, никогда не пытаются пересылать пакеты или возвращать сообщения об ошибках в ответ на неправильно направленные IP пакеты.
В результате значительно меньшее число проблем неправильного конфигурирования способны вызывать синхронные и повторные широковещательные рассылки в локальной сети, называемые широковещательными штормами.
Процедура пересылки IP-пакетов, полученных маршрутизатором, но предназначенных для другого хоста, следующая.
- Проверка того, что пересылка разрешена. Если нет, пакет уничтожается.
- Проверка того, что адрес назначения разрешает пересылку. Пакеты, предназначенные для сети 0, сети 127 (официальная сеть возвратной петли) или с недопустимыми сетевыми адресами, не могут пересылаться.
- Сохранение максимум 64 октетов полученного сообщения на случай, если придется создавать в ответ сообщение об ошибке.
- Определение маршрута, который должен использоваться для пересылки пакета.
- Если исходящий маршрут использует тот же самый интерфейс, через который пакет был получен, и если хост-отправитель находится в той же самой сети, производится отправка хосту-отправителю сообщения перенаправления ICMP.
- Обработка любых обновлений IPSec, которые должны быть сделаны с заголовком IP пакета.
- Вызов ipoutput() для отправки пакета на место его назначения или на шлюз следующего транзитного участка.
- Если обнаружена ошибка, отправка сообщения ICMP об ошибке на исходный хост.
Многоадресные передачи обрабатываются отдельно от остальных пакетов. Системы могут быть сконфигурированы в качестве групповых маршрутизаторов независимо от других функций маршрутизации. Групповые маршрутизаторы получают все входящие групповые IP пакеты и пересылают эти пакеты локальным получателям и членам групп в других сетях в соответствии с групповым членством и оставшимся числом транзитных участков во входящих пакетах.