Маршрутизация на отправителе по звеньям

Принципы

Ранее рассматривали маршрутизацию по адресу назначения (трад. IP).

Она хорошо годится для, например, интернета:

До 2006 года маршрутизация была либо программной на CPU (и упиралась в тактовую частоту), либо дорогой. Нельзя было маршрутизировать на высоких (1Gbps+) скоростях без спецоборудования стоимостью в дом. Инженерное сообщество успело изобрести MPLS: O(1) поиск в таблице FEC вместо обхода таблицы префиксов.

К 2010 году крупные операторы связи поняли, что им этого мало; с ростом к-ва абонентов, потоков, роутеров

Созрела архитектура звеньевой маршрутизации (Segment Routing)

/!\ Вообще говоря, не годится для построения интернета: не позволяйте кому попало из интернета программировать ваши узлы!

(!) SR не навязывает конкретную платформу доставки данных (data plane).

(!) SR не навязывает характер контроллера SR Policy или даже его наличие.

Паста из rfc8402:

A segment may be associated with a topological instruction. A topological local segment may instruct a node to forward the packet via a specific outgoing interface. A topological global segment may instruct an SR domain to forward the packet via a specific path to a destination. Different segments may exist for the same destination, each with different path objectives (e.g., which metric is minimized, what constraints are specified).

A segment may be associated with a service instruction (e.g., the packet should be processed by a container or Virtual Machine (VM) associated with the segment). A segment may be associated with a QoS treatment (e.g., shape the packets received with this segment at x Mbps).

Две data planes

IETF стандартизовала для SR две платформы доставки данных, на которые она может опираться:

SR-MPLS:

SR-IPv6:

Схема IPv6-SRH:

  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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Next Header   |  Hdr Ext Len  | Routing Type  | Segments Left |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Last Entry   |     Flags     |              Tag              |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |            Segment List[0] (128-bit IPv6 address)             |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                                                               |
                               ...
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |            Segment List[n] (128-bit IPv6 address)             |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //                                                             //
 //         Optional Type Length Value objects (variable)       //
 //                                                             //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Зачем?

А потом оказалось:

ДЦ / Серверные приложения

TODO раскрыть лучше, сравнить ещё с geneve.

Сисадмины-недоучки без понимания сетевых технологий для соединения виртуализованного ПО (от программистов без понимания сетевых технологий) придумали VXLAN: Eth + IP + UDP/4789 + VXLAN + Eth + IP + ... SRv6 даст более короткий заголовок, особенно с CSID.

Ссылки

LecturesCMC/LinuxNetwork2026/Six/SegmentRouting (последним исправлял пользователь ArsenyMaslennikov 2026-09-28 13:55:47)