Атрибут Next-Hop и iBGP

Когда мы попытаемся пропинговать маршрут, который мы получили по iBGP, то это не получится. Всё дело в том, что BGP не меняет атрибут Nex-Hop при передачи маршрута iBGP-соседу. Т.е. выходит так, что роутеру, который не является бордером AS передаётся маршрут с Next-Hop IP-адресом, о котором этот роутер никак не может узнать. Что с этим можно мделать? Для этого есть несколько путей, но, по факту, самые адекватные - это либо на eBGP пире прописать атрибут Next-Hop Self, который позволит при передаче маршрута iBGP-соседу менять атрибут Next-Hop, либо добавить маршрут до p2p eBGP-сети в IGP (например, через OSPF, указав линк как passive).
Указывается Next-Hop Self довольно просто:
root@RT.MSK.M34# edit policy-options policy-statement next-hop-self
[edit policy-options policy-statement next-hop-self]
root@RT.MSK.M34# set from protocol bgp route-type external
[edit policy-options policy-statement next-hop-self]
root@RT.MSK.M34# set then next-hop self
[edit policy-options policy-statement next-hop-self]
root@RT.MSK.M34# top
root@RT.MSK.M34# set protocols bgp group intra-Sub-AS export next-hop-self Тут видно, что мы экспортируем маршруты полученные только от external BGP к iBGP-пирам с параметром next-hop-self.
Посмотрим что происходило до коммита вышеуказанной конфигурации на M9:
Т.е. тут видно, что мы хоть и принимаем маршруты от RT.MSK.M34, но они скрываются и не используются. Почему? Потому что для IP-адреса, указанного в атрибуте Next-Hop происходит Recursive Lookup в таблице маршрутизации. Соответственно, для 8.0.0.2 в таблице IGP-маршрутов ничего не найдено, поэтому эти маршруты не используются и попадают в спрятанные. Более подробная информация тут.
После применения изменений выбирается маршрут с кратчайшим AS-Path, а атрибут next-hop меняется на LoopBack бордера:
Соответственно далее указываем и применяем эту политику для всех eBGP-пиров:
Last updated
Was this helpful?