BGP communities
BGP communities — это механизм маркировки маршрутов в протоколе BGP (Border Gateway Protocol), позволяющий присваивать префиксам (IP-сетям) числовые теги (сообщества) для управления их распространением и обработкой на маршрутизаторах. BGP communities являются частью атрибутов маршрута (path attributes) и используются для реализации политик маршрутизации, таких как фильтрация, изменение локальных предпочтений, добавление AS-path или управление анонсами. Механизм определён в RFC 1997 (BGP Communities Attribute) и расширен в RFC 4360 (BGP Extended Communities) и RFC 5668 (4-Octet AS Specific BGP Extended Communities).
История
Механизм BGP communities был впервые стандартизирован в 1996 году в RFC 1997, разработанном рабочей группой IETF (Internet Engineering Task Force). Основной целью было создание гибкого инструмента для операторов сетей, позволяющего централизованно управлять маршрутами, передаваемыми между автономными системами (AS). До появления communities операторы были вынуждены использовать сложные списки доступа (prefix-lists) и фильтры на основе AS-path, что было трудоёмко и не масштабировалось.
В 2006 году был принят RFC 4360, который ввёл расширенные сообщества (Extended Communities) — 8-байтовые теги, поддерживающие различные типы (например, Route Target, Site of Origin). Это расширение стало основой для технологий MPLS VPN (Multi-Protocol Label Switching Virtual Private Network). В 2010 году RFC 5668 дополнил механизм поддержкой 4-байтовых номеров AS.
Формат и типы
BGP community представляет собой 32-битное значение (4 байта), которое в стандартной записи (RFC 1997) разбивается на две 16-битные части: номер автономной системы (ASN) и локальное значение (local value). Запись имеет вид ASN:Value, где ASN — номер AS, назначившей community, а Value — произвольное число от 0 до 65535. Например, community 12345:100 означает, что AS 12345 присвоила маршруту значение 100.
Стандартные сообщества (Well-Known Communities)
RFC 1997 определяет несколько зарезервированных сообществ с фиксированным значением, которые не зависят от ASN:
- NO_EXPORT (0xFFFFFF01) — маршрут не должен анонсироваться за пределы AS (или конфедерации). На практике часто записывается как NO_EXPORT.
- NO_ADVERTISE (0xFFFFFF02) — маршрут не должен анонсироваться ни одному соседнему BGP-пиру.
- LOCAL_AS (0xFFFFFF03) — маршрут не должен анонсироваться за пределы локальной AS (используется в конфедерациях).
- NO_PEER (0xFFFFFF04) — маршрут не должен анонсироваться пирам в той же AS (применяется редко).
Расширенные сообщества (Extended Communities)
Расширенные сообщества (RFC 4360) имеют длину 8 байт и включают поле типа (2 байта), подтип (1 байт) и значение (5 байт). Наиболее распространённые типы:
- Route Target (RT) — используется в MPLS VPN для идентификации виртуальных маршрутизаторов (VRF). Запись: RT:ASN:Value или RT:IP:Value.
- Site of Origin (SoO) — указывает на источник маршрута, предотвращает петли в VPN-средах.
- 4-Octet AS Specific — поддерживает номера AS длиной 4 байта (RFC 5668).
Применение
BGP communities широко используются в глобальной сети Интернет, особенно в пиринговых и транзитных отношениях между операторами. Основные сценарии применения:
Управление анонсами
Операторы могут с помощью communities указывать, кому и как анонсировать префикс. Например, community 12345:100 может означать «анонсировать только пиринговым партнёрам», а 12345:200 — «анонсировать всем транзитным клиентам». Это позволяет провайдерам гибко настраивать политики без ручного вмешательства.
Изменение локальных предпочтений
Communities могут влиять на локальное предпочтение (local preference) маршрута. Например, community 12345:10 может устанавливать local preference равным 10, а 12345:20 — 20. Это позволяет оператору влиять на выбор маршрута внутри своей AS.
Фильтрация и безопасность
Communities используются для маркировки нежелательных маршрутов (например, от ботнетов или хостинг-провайдеров с плохой репутацией). Сообщество 12345:666 может означать «чёрный список» — маршруты с таким тегом отбрасываются на граничных маршрутизаторах.
Мультипротокольные расширения (MPLS VPN)
В MPLS VPN расширенные сообщества (Route Target) являются ключевым элементом для создания виртуальных сетей. Каждый VRF (Virtual Routing and Forwarding) связан с набором RT, которые определяют, какие маршруты импортируются и экспортируются. Это позволяет строить сложные топологии, такие как Hub-and-Spoke или Full Mesh.
Примеры использования
Пример 1: Управление анонсами у крупного провайдера
Крупный интернет-провайдер (AS 64500) может определить следующие communities для своих клиентов:
- 64500:10 — анонсировать маршрут только пиринговым партнёрам.
- 64500:20 — анонсировать маршрут всем транзитным клиентам.
- 64500:30 — не анонсировать маршрут за пределы региона (например, Европы).
- 64500:40 — установить local preference равным 50.
Клиент, желающий, чтобы его префикс анонсировался только в Европе, добавляет community 64500:30 к своему маршруту. Провайдер на своих маршрутизаторах настраивает фильтры, которые обрабатывают это сообщество и блокируют анонс в другие регионы.
Пример 2: Защита от DDoS-атак
При атаке на сеть оператор может использовать community NO_EXPORT для временного отключения анонса атакуемого префикса за пределы своей AS. Это позволяет изолировать трафик и снизить нагрузку, не отключая полностью маршрут.
Критика и ограничения
Несмотря на широкое распространение, механизм BGP communities имеет ряд недостатков:
- Отсутствие стандартизации значений — каждый оператор определяет свои собственные communities, что приводит к фрагментации и сложности взаимодействия. Например, community 100:10 у одного провайдера может означать «анонсировать всем», а у другого — «не анонсировать».
- Ограниченная длина — 32-битное значение (8 байт для расширенных) может быть недостаточно для сложных политик.
- Уязвимость к ошибкам — неправильная настройка communities может привести к утечке маршрутов или нарушению пиринговых соглашений.
- Отсутствие аутентификации — communities могут быть подделаны злоумышленником, что создаёт риски для безопасности.
Для решения этих проблем в 2020-х годах началось внедрение BGP Large Communities (RFC 8092), которые используют 12-байтовые значения (три 32-битных поля) и позволяют операторам создавать более гибкие и стандартизированные политики. Однако на практике Large Communities пока не получили массового распространения.
Интересные факты
- Сообщество NO_EXPORT часто используется для маршрутов, которые должны быть доступны только внутри страны или региона (например, для государственных сетей).
- Некоторые крупные провайдеры, такие как Level 3 (ныне часть Lumen) и Cogent, публикуют списки своих communities в открытом доступе, что упрощает настройку пиринга.
- В 2018 году из-за ошибки в настройке communities у одного из провайдеров произошла утечка маршрутов, затронувшая несколько тысяч сетей по всему миру.
Источники
- RFC 1997 — BGP Communities Attribute
- RFC 4360 — BGP Extended Communities Attribute
- RFC 5668 — 4-Octet AS Specific BGP Extended Communities
- RFC 8092 — BGP Large Communities
- Документация Cisco: «BGP Communities Configuration Guide»
- Документация Juniper: «BGP Communities Overview»
- Материалы RIPE (Réseaux IP Européens) — «BGP Communities in Practice»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →