BGP修改NEXT_HOP下一跳属性值的几种方法

本文详细解析了BGP路由中Next-Hop属性的作用及其在不同网络环境下的表现,包括通过next-hop-self和route-map修改Next-Hop属性的方法,以及BGP next-hop-unchanged特性的使用条件。
1.通过next-hop-self可以变更next-hop属性
 
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

上图R5更新给EBGP邻居R2 BGP路由5.5.5.0时,NEXT_HOP=192.168.25.5,该属性将一直跟随本条BGP路由在AS234中传递,这时对于R4、R3来说,并不知道如何前往192.168.25.5,因此5.5.5.0的路由无法正常装入路由表。解决方法之一是R2在IGP路由中注入25.0这条外部路由,另一个方法是R2对其IBGP邻居使用next-hop-self,修改这条前缀的NEXT_HOP属性。

NEXT_HOP on shared Media(在共享介质上的运作)
 
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

RouterB将路由100.100.100.0/24传递给A,NEXT_HOP为10.1.123.2;
RouterA将路由100.100.100.0/24传递给C,此时NEXT_HOP保持不变;
如果路由器收到某条BGP路由,该路由的NEXT_HOP地址值与该路由器的接口IP(更新源)同属一个网段,那么该条路由的NEXT_HOP地址将保持不变并传递给它的(这个相同网段上的)BGP邻居,这个其实是一种优化机制,但是这种机制在NBMA环境中是否有问题呢?

NEXT_HOP on NMBA network
仍然看上图,中间的网络如果不是广播多路访问网络,而是一个帧中继网络,那么就要注意,C收到的路由,NEXT_HOP为10.1.123.2,那么如果C路由器上没有到该IP的PVC,就会出问题,所以这点要考虑进去。

2.通过route-map修改BGP路由NEXT_HOP属性值
 
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法


BGP的邻居关系如图所示,R1-R2建立基于Loopback的iBGP邻居关系。R2-R3建立基于直连接口的eBGP邻居关系。那么在默认情况下,R1通告给R2的路由11.0/24下一跳属性值为1.1.1.1,也就是R1的更新源IP,而R2将路由更新给eBGP邻居R3时,路由的NH变成了10.1.23.2、
R2上增加配置
access-list 1 permit 11.11.11.0
route-map test permit 10
  match ip address 1
  set ip next-hop 10.1.23.99
router bgp 12
  neighbor 10.1.23.3 route-map test out
 
通过在R2上部署out方向的route-map,可以修改传递给R3的BGP路由的NEXT_HOP属性值,当然上面的范例设置的10.1.23.99没有任何意义,纯粹是一个测试而已。
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

3.关于BGP next-hop-unchanged特性
 
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

(承上一小节)另一个可以影响BGP NEXT_HOP属性值的特性是BGP next-hop-unchanged特性。
首先这条命令只能对多跳eBGP peer配置,所以上图中,R2及R3需建立基于Loopback的eBGP邻居关系,形成multihop eBGP peer。 
在R2收到iBGP peer传来的路由11.0/24,其NEXT_HOP属性值为1.1.1.1,如过R2上在BGP进程中使用neighbor 3.3.3.3 next-hop-unchanged配置,那么R2将BGP路由传递给eBGP邻居R3时,路由的NEXT_HOP属性值将不会发生变化。

再进一步做个测试,现在把拓扑环境变更一下:
 
【BGP】BGP修改NEXT_HOP下一跳属性值的几种方法

R1-R2之间变成了eBGP邻居了,基于直连接口建立eBGP邻居关系;
R2-R3之间仍然是基于Loopback建立的多跳eBGP邻居关系;
现在R1传来的路由,在R2上NEXT_HOP属性值为10.1.12.1,那么默认情况下R2将路由再传给R3时,路由的NEXT_HOP属性值修改为2.2.2.2也就是R2的更新源IP。
如果此刻在R2上配置neighbor 3.3.3.3 next-hop-unchanged,我们发现命令无效,R2通告给R3的路由NEXT_HOP属性值还是会变,不会保留10.1.12.1。

因此我得出的结论是,BGP 的neighbor next-hop-unchanged命令,首先只能对多跳eBGP邻居配置,其次,它只在将本地的iBGP路由传递给自己的eBGP多跳邻居时才会生效。
### BGP Next-hop 的功能与作用 BGP(Border Gateway Protocol)中的 `Next-hop` 是个公认必遵属性,它在路由传播和转发决策中起着至关重要的作用。以下是关于 BGP 中 `Next-hop` 的功能与作用的详细解析: #### 1. **定义与基本功能** `Next-hop` 属性指定了数据包从个 AS(自治系统)到另个 AS 的下地址。对于 EBGP 和 IBGP 邻居之间的路由传播,`Next-hop` 的值决定了数据包如何被正确地转发到目标网络[^2]。 - 在默认情况下,当 BGP 向 EBGP 邻居通告路由时,`Next-hop` 被设置为发送方路由器的接口地址。 -BGP 从 EBGP 邻居学到路由并将其通告给 IBGP 邻居时,`Next-hop` 默认不会改变,除非进行了显式配置。 #### 2. **优化路由可达性** `Next-hop` 的主要目的是确保路由的可达性,尤其是在复杂的网络环境中。例如,在非全网状 IBGP 环境中,原始的 `Next-hop` 地址可能不可达,因此需要通过特性如 `peer next-hop-local` 或 `next-hop-self` 来优化路由传播[^3]。 - **`peer next-hop-local`**:将下设置为本地路由器的 IP 地址,通常用于优化 IBGP 环境中的路由可达性。 - **`next-hop-self`**:将从 EBGP 学到的路由的下替换为本地 IP 地址,主要用于解决从 EBGP 到 IBGP 的路由可达性问题。 #### 3. **避免路由环路与错误转发** 通过正确配置 `Next-hop`,可以避免路由环路和错误转发。例如: - 如果 `Next-hop` 不可达或配置错误,可能导致数据包无法到达目标网络。 - 在多出口场景中,合理设置 `Next-hop` 可以确保流量选择最优路径。 #### 4. **支持策略控制** `Next-hop` 属性还可以用于实现更精细的路由策略控制。例如,通过使用路由策略(Route-policy),可以修改 `Next-hop` 的值以满足特定的网络需求[^2]。 ```python route-policy modify_next_hop permit node 10 apply ip-address next-hop 192.168.1.1 ``` 上述代码示例展示了如何通过路由策略修改 BGP 路由的 `Next-hop` 属性。 #### 5. **跨 AS 的通信桥梁** 在跨 AS 的通信中,`Next-hop` 起到了桥梁的作用。它确保了不同 AS 之间的数据包能够按照预期路径进行转发。例如: -个 AS 接收到 BGP 路由时,它会根据 `Next-hop` 的值来决定如何将数据包转发到下个 AS。 --- ### 总结 `Next-hop` 属性在 BGP 中的核心作用是确保路由的可达性和正确的数据包转发。它不仅是个基础属性,还能够通过灵活的配置支持复杂的网络环境和策略需求[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值