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

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.

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