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