Какие таблицы SNMP связывают маршрут VPNv4 с его меткой?
Выберите нужную метку, затем свяжите запись маршрута VRF с кросс-соединением и его сегментами. Перед обходом убедитесь, что агент реализует эти объекты.
С одним маршрутом VPNv4 путешествуют три разные метки, а обход SNMP показывает только те, которые реализует агент. Полученный атрибут BGP, локально назначенная входящая сервисная метка и исходящая метка пересылки находятся в разных таблицах под разными индексами. Просить у устройства метку, не выбрав предварительно, какая из трёх имеется в виду, — это то, из-за чего проект сбора данных застревает уже на первом шасси.
Выберите ту, которая нужна вашей задаче, затем пройдите по цепочке индексов, ведущей к ней. Если цепочка обрывается на объекте, который агент не реализует, это находка для записи, а не пробел, который нужно заполнить выдуманным OID.
Выберите, какая из трёх меток нужна задаче
Метка, полученная от соседа, приходит как атрибут пути BGP и описывает, что этот сосед ожидает получить от вас в свою сторону. Входящую сервисную метку назначает это устройство для префикса VRF и помечает трафик, входящий в LSP. Исходящая верхняя метка — это то, что плоскость пересылки фактически проталкивает к следующему хопу, и она меняется всякий раз, когда меняется следующий хоп.
Только вторая и третья относятся к состоянию пересылки на опрашиваемом шасси. Первая — утверждение об ожидании соседа, а не об этом шасси.
Стандартный MIB L3VPN моделирует маршрут VRF и его связь с кросс-соединением, чего достаточно, чтобы добраться до локальных сервисной и исходящей меток. Он не обещает выгрузку каждого атрибута, полученного сессией BGP. Читайте таблицу ради того, что в ней есть, а не ради того, на что намекает вопрос. Сборщик, построенный на неверном допущении, сообщает нули и сохраняет их как отсутствующие данные.
| What you want | Where it lives | What a walk can return |
|---|---|---|
| Label advertised by a peer | BGP session state for that VRF | Usually outside the standard L3VPN MIB |
| Incoming service label for a prefix | VRF route entry joined to an incoming segment | Available when both tables are implemented |
| Label pushed toward the next hop | Outgoing segment with a push condition | Available, but only meaningful while a top label is pushed |
Свяжите запись маршрута VRF с его кросс-соединением
RFC 4382 определяет mplsL3VpnVrfRteTable. Читайте его индекс как шесть частей: имя VRF, тип адреса назначения, сам префикс, значение политики, тип следующего хопа и адрес следующего хопа. Записи IGP и BGP используют одну таблицу, поэтому записывайте протокол маршрутизации рядом с префиксом. Две строки могут нести один и тот же префикс и различаться только следующим хопом, а выбор неверной строки направляет связь к другому кросс-соединению.
Столбец mplsL3VpnVrfRteXCPointer несёт индекс кросс-соединения, а не полный OID строки, хотя имя предполагает обратное. Нулевое значение в один октет означает отсутствие связанного стека меток, что видно до установления привязок или для маршрута, которому он никогда не требовался.
Переведите столбец перед обходом, чтобы числовое поддерево в выводе было однозначным. Обе команды ниже адресуют один и тот же узел в разных нотациях.
snmptranslate -m +MPLS-L3VPN-STD-MIB -On mplsL3VpnVrfRteXCPointer snmpwalk -v2c -c monitor 192.0.2.10 mplsL3VpnVrfRteXCPointer
Возьмите возвращённый индекс в таблицу кросс-соединений, ключ записи которой — тройка: индекс кросс-соединения, индекс входящего сегмента и индекс исходящего сегмента. Эта тройка и есть связь, превращающая маршрут в метку. Обходите поддерево кросс-соединений для конкретного индекса, а не всю таблицу, потому что индексированное чтение сохраняет связь, а массовый обход — нет.
Читайте индекс, а не номер метки
Индекс сегмента идентифицирует строку, а метка — значение внутри этой строки, поэтому подмена одного другим даёт правдоподобно выглядящий ответ, указывающий на неверный LSP. На входящей стороне проверьте интерфейс и контекст метки вместе с mplsInSegmentLabel, помня, что объект может вместо этого нести указатель в таблицу меток, когда строка ссылается на запись в другом месте.
На исходящей стороне проверьте исходящий интерфейс и то, сказано ли в строке, что верхняя метка проталкивается, прежде чем читать mplsOutSegmentTopLabel. Заполненный столбец верхней метки в строке, которая ничего не проталкивает, — устаревшее значение или остаток от прежнего пути, а не текущее состояние пересылки. Более глубокие стеки требуют указанной таблицы стека меток, и этот дополнительный шаг нормален, а не дефект.
Особые соглашения о нуле применяются к путям, которые начинаются или заканчиваются локально на маршрутизаторе. Рассматривайте нулевой индекс как документированное поведение, а не пустой результат, и подтвердите его по локальному состоянию пересылки.
Подтвердите, что реализует агент, прежде чем масштабировать
Проверьте реализованные объекты для точной платформы и выпуска, используемых семейств адресов и любых эксплуатационных ограничений на поддеревьях. Опрашивайте с правами только на чтение, ограниченными этими поддеревьями, и примите, что отсутствующий объект может означать нереализованную функцию, а не неверный MIB.
Прежде чем направить сборщик на всю таблицу, сопоставьте один известный маршрут VRF с собственным эксплуатационным выводом устройства. Сохраняйте каждый компонент индекса и время сбора с каждым образцом, поскольку маршруты и привязки перемещаются между обходами. Снимок, сшитый из двух обходов с разницей в минуты, может смешать старый индекс кросс-соединения с новым маршрутом и выглядеть совершенно согласованным.
Там, где представление полученного BGP или объект метки, специфичный для поставщика, действительно отсутствует, перейдите к интерфейсу телеметрии или эксплуатационному интерфейсу, который документирует платформа. Стандартная связь охватывает локальные метки пересылки и немногое другое, поэтому рассматривайте её как первый шаг проектирования сбора, а не как готовую вещь.