Маршрутизация с учётом источника

Маршрутизация с учётом источника (англ. Source-specific routing), также называемая маршрутизацией, зависящей от адреса источника (англ. source-address dependent routing, SADR), — это техника маршрутизации, при которой решение о маршрутизации принимается с учётом адреса источника пакета наряду с его адресом назначения[1]. Основное применение маршрутизации с учётом источника — предоставление недорогой формы мультихоминга без необходимости в адресах, не зависящих от провайдера, или какого-либо взаимодействия со стороны вышестоящих интернет-провайдеров[2].

Проблема

undefined

В традиционной маршрутизации по следующему узлу пакет маршрутизируется только по адресу назначения к ближайшему маршрутизатору, объявляющему маршрут, подходящий для этого назначения. Рассмотрим сеть конечного пользователя с мультихомингом, подключённую к двум интернет-провайдерам: BT&T и PacketCast. В такой сети обычно имеется два пограничных маршрутизатора, каждый из которых подключён к одному из провайдеров.

Оба пограничных маршрутизатора объявляют маршрут по умолчанию, то есть готовы принимать пакеты, направленные в интернет. Если пакет с исходным адресом из сети BT&T будет отправлен через пограничный маршрутизатор PacketCast, PacketCast сочтёт такой пакет поддельным, и отбросит его в соответствии с BCP 38[3].

Мультихоминг с маршрутизацией с учётом источника

При использовании маршрутизации с учётом источника каждый пограничный маршрутизатор объявляет маршрут по умолчанию с учётом источника — маршрут, применяемый к пакетам, направленным в интернет, только если их исходный адрес входит в определённый префикс. В результате каждый пограничный маршрутизатор принимает только те пакеты, чей исходный адрес соответствует его префиксу провайдера.

Необходимые изменения на стороне хоста

При маршрутизации с учётом источника каждый сетевой интерфейс хоста имеет несколько адресов — по одному на каждый префикс, выделенный провайдером. Для исходящего трафика программное обеспечение хоста должно выбирать правильный исходный адрес. Для этого существуют различные подходы на сетевом уровне[4], выше сетевого уровня (см. Shim6), либо с помощью мультипутевых техник на верхних уровнях (см. Multipath TCP и Multipath Mosh[5]).

Поддержка в протоколах маршрутизации

В сети с одним пограничным маршрутизатором реализовать маршрутизацию с учётом источника можно вручную, редактируя таблицы маршрутизации[6]. При наличии нескольких маршрутизаторов необходима явная поддержка маршрутизации с учётом источника на уровне протокола маршрутизации.

По состоянию на начало 2016 года существовало два протокола маршрутизации с поддержкой маршрутизации с учётом источника:

  • Протокол маршрутизации Babel поддерживает маршрутизацию с учётом источника как для IPv4, так и для IPv6[7]; эта возможность реализована для IPv6 в babeld и в BIRD (более ранние версии babeld поддерживали маршрутизацию с учётом источника для IPv4[8]);
  • Существует реализация IS-IS с поддержкой маршрутизации с учётом источника только для IPv6[9].

Стек протоколов IETF Homenet требует поддержки маршрутизации с учётом источника в своих протоколах маршрутизации[10].

Примечания

  1. Matthieu Boutier; Juliusz Chroboczek (2015). Source-specific routing. Proc. IFIP Networking 2015. arXiv:1403.0445. Дата обращения 2024-07-01. |access-date= требует |url= (справка)
  2. Trøan, Ole; Colitti, Lorenzo Draft-troan-homenet-sadr-01 (англ.) (4 сентября 2013). Дата обращения: 1 июля 2024.
  3. RFC 2827: Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing (англ.). IETF (май 2000). Дата обращения: 1 июля 2024. Архивировано 12 ноября 2020 года.
  4. RFC 6724: Default Address Selection for Internet Protocol Version 6 (IPv6) (англ.). IETF (сентябрь 2012). Дата обращения: 1 июля 2024. Архивировано 12 ноября 2020 года.
  5. Matthieu Boutier; Juliusz Chroboczek (2015). “User-space multipath UDP in Mosh”. arXiv [англ.]. arXiv:1502.02402 [cs.NI]. Дата обращения 2024-07-01. Используется устаревший параметр |class= (справка); |access-date= требует |url= (справка)
  6. Linux Advanced Routing & Traffic Control HOWTO, раздел 4.2 (англ.). lartc.org. Дата обращения: 1 июля 2024. Архивировано 16 апреля 2023 года.
  7. RFC 9079: Source-Specific Routing in the Babel Protocol (англ.). IETF (апрель 2021). Дата обращения: 1 июля 2024. Архивировано 24 мая 2021 года.
  8. [Babel-users] ANNOUNCE: Babeld-1.10 (англ.) (25 апреля 2021). Дата обращения: 1 июля 2024.
  9. Baker, Fred; Lamparter, David Draft-baker-ipv6-isis-DST-SRC-routing-07 (англ.) (18 июля 2017). Дата обращения: 1 июля 2024.
  10. RFC 7368: IPv6 Home Networking Architecture Principles (англ.). IETF (октябрь 2014). Дата обращения: 1 июля 2024. Архивировано 12 ноября 2020 года.

Категории