RFC: 3549
Оригинал: Linux Netlink as an IP Services Protocol
Категория: Информационный
Дата публикации:
Авторы: , , ,
Перевод: Николай Малых

RFC 3549, Страница 13 из 21

3. Определенные в данный момент IP-службы Netlink

Хотя, как было отмечено выше, существует множество других служб IP, использующих Netlink, в данном документе рассматривается лишь небольшая часть этих служб, интегрированных в ядро версии 2.4.6. К таким службам относятся NETLINK_ROUTE, NETLINK_FIREWALL и NETLINK_ARPD.

3.1. Служба NETLINK_ROUTE

Эта служба позволяет CPC изменять таблицу маршрутизации IPv4 в машине пересылки FE. Кроме того, данный сервис может применяться CPC для получения данных об обновлении маршрутов и сбора статистики.

3.1.1. Модуль службы маршрутизации

Эта служба обеспечивает возможность создания и удаления маршрутов, а также получения информации о сетевых маршрутах. Формат шаблона сообщения показан на рисунке:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Family    |  Src length   |  Dest length  |     TOS       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Table ID   |   Protocol    |     Scope     |     Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Flags                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Family — 8 битов
  • Идентификатор семейства адресов: AF_INET для IPv4 и AF_INET6 для IPv6.
  • Src length — 8 битов
  • Размер префикса IP-адреса отправителя.
  • Dest length — 8 битов
  • Размер префикса IP-адреса получателя.
  • TOS — 8 битов
  • Восьмибитовое поле TOS (следует отказаться от него для освобождения места под DSCP).
  • Table ID — 8 битов
  • Идентификатор таблицы. Поддерживается до 255 таблиц маршрутизации.

    RT_TABLE_UNSPEC Неуказанная таблица.
    RT_TABLE_MAIN Основная таблица.
    RT_TABLE_DEFAULT Используемая по умолчанию таблица.
    RT_TABLE_LOCAL Локальная таблица.

    Пользователь может выделять дополнительные значения в диапазоне от RT_TABLE_UNSPEC (0) до RT_TABLE_DEFAULT (253).

  • Protocol — 8 битов
  • Указывает кто добавил маршрут в таблицу.

    Протокол Источник маршрута
    RTPROT_UNSPEC Неизвестен.
    RTPROT_BOOT При загрузке системы.
    RTPROT_REDIRECT Из сообщения ICMP redirect.
    RTPROT_STATIC Администратор.
    RTPROT_KERNEL Ядро.

    Значения, превышающие RTPROT_STATIC (4), не интерпретируются ядром и включены только с информационными целями. Эти значения могут использоваться, чтобы помечать источник маршрутной информации или различать разные демоны маршрутизации. Идентификаторы уже присвоенные демонам маршрутизации вы можете найти в файле <linux/rtnetlink.h>.

  • Scope — 8 битов
  • Область видимости маршрута (корректная дистанция до получателя).

    RT_SCOPE_UNIVERSE Глобальный маршрут.
    RT_SCOPE_SITE Внутренний маршрут локальной автономной системы.
    RT_SCOPE_LINK Маршрут на данном канале (соединении).
    RT_SCOPE_HOST Маршрут на локальном хосте.
    RT_SCOPE_NOWHERE Получателя не существует.

    Значения в диапазоне от RT_SCOPE_UNIVERSE (0) до RT_SCOPE_SITE (200), не включая граничные, могут использоваться для пользовательских идентификаторов.

  • Type — 8 битов
  • Тип маршрута.
    Тип Получатель
    RTN_UNSPEC Неизвестный маршрут
    RTN_UNICAST Шлюз или прямой маршрут.
    RTN_LOCAL Маршрут к локальному интерфейсу.
    RTN_BROADCAST Локальный широковещательный маршрут (передается как broadcast).
    RTN_ANYCAST Локальный anycast-маршрут (передается как unicast)
    RTN_MULTICAST Локальный групповой (multicast) маршрут.
    RTN_BLACKHOLE Маршрут для отбрасывания пакетов без уведомления (черная дыра).
    RTN_UNREACHABLE Недостижимый получатель. Пакеты отбрасываются с передачей отправителю сообщения ICMP о недоступности адресата.
    RTN_PROHIBIT Запрещенный маршрут. Пакеты отбрасываются с передачей отправителю сообщения ICMP о запрете доступа к адресату.
    RTN_THROW При использовании маршрутизации на базе правил указывает на продолжение просмотра маршрутов в другой таблице. При обычной маршрутизации пакеты отбрасываются с передачей отправителю сообщения ICMP о недоступности адресата.
    RTN_NAT Правило трансляции сетевых адресов.
    RTN_XRESOLVE Указывает на внешний преобразователь (resolver). В настоящее время еще не реализовано.
  • Flags — 32 бита
  • Дополнительная информация о маршруте.

    RTM_F_NOTIFY При изменении маршрута пользователю передается уведомление.
    RTM_F_CLONED Маршрут клонирован из другого маршрута.
    RTM_F_EQUALIZE Маршрут допускает случайный выбор следующего интервала (next hop) в случае наличия нескольких путей (в настоящее время не реализовано).

    Имеющие отношение к данному сервису атрибуты перечислены в таблице.

    Атрибут Описание
    RTA_UNSPEC Игнорируется.
    RTA_DST Протокольный адрес источника маршрута.
    RTA_SRC Протокольный адрес конечной точки маршрута.
    RTA_IIF Индекс входного интерфейса.
    RTA_OIF Индекс выходного интерфейса.
    RTA_GATEWAY Протокольный адрес шлюза для маршрута.
    RTA_PRIORITY Приоритет маршрута.
    RTA_PREFSRC Предпочтительный адрес отправителя при наличии нескольких адресов.
    RTA_METRICS Присвоенная маршруту метрика (например, RTT, начальный размер окна TCP и т.п.).
    RTA_MULTIPATH Атрибуты следующего интервала для маршрута с множеством путей (Multipath route).
    RTA_PROTOINFO Атрибут маршрутизации, основанный на политике межсетевого экрана.
    RTA_FLOW Область маршрута (Route realm).
    RTA_CACHEINFO Кэшированная информация о маршруте.

    Для этого типа сервиса поддерживаются дополнительные сообщения Netlink RTM_NEWROUTE, RTM_DELROUTE и RTM_GETROUTE.

Страница 13 из 21

2007 - 2022 © Русские переводы RFC, IETF, ISOC.