BGP 下一跳的理解和实验

摘要:
也就是说,0.0.0.0是一个公认的强制属性,它描述了到已发布目标的路径上的下一跳路由器的IP地址。通过BGPNEXT_ HOP属性描述的IP地址并不总是邻居路由器的IP地址。应遵循以下规则:如果正在通告路由的路由器和接收路由器位于不同的自治系统中,NEXT_HOP是正在通告的路由器接口的IP地址,如下图所示。当从IGP学习到的路由被引入路由器上的BGP时,将在路由器上查看BGP的转发表,下一跳是IGP路由的下一跳。

下一跳
路由器将BGP路由更新给ibgp邻居,下一跳默认是不变的,可以通过next-hop-self修改
路由器将bgp路由更新给ebgp邻居,下一跳自动更新为本路由器的更新源地址
第三方下一跳(重定向)

BGP 下一跳的理解和实验第1张

r1#traceroute 4.4.4.4                        
                                             
Type escape sequence to abort.               
Tracing the route to 4.4.4.4                 
                                             
  1 12.1.1.2 40 msec 40 msec 28 msec         
  2 100.1.1.4 [AS 100] 84 msec *  84 msec          (R2对路径进行重定向)

r2#show ip bgp                                                                 
BGP table version is 10, local router ID is 2.2.2.2                            
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale                                           
Origin codes: i - IGP, e - EGP, ? - incomplete                                 

   Network          Next Hop            Metric LocPrf Weight Path
r> 1.1.1.1/32       1.1.1.1                  0             0 1 i 
*> 2.2.2.2/32       0.0.0.0                  0         32768 i   
r>i3.3.3.3/32       3.3.3.3                  0    100      0 i   
r>i4.4.4.4/32       3.3.3.3                  0    100      0 4 i (但是BGP表中仍然是显示为3.3.3.3邻居地址)
*> 12.1.1.0/24      0.0.0.0                  0         32768 i   
* i100.1.1.0/24     3.3.3.3                  0    100      0 i   
*>                  0.0.0.0                  0         32768 i   
路由器利用重定向,自动将到R4的下一跳定义为R2的红色接口

Next-Hop
这个属性定义了某条前缀的下一跳IP地址
所以下一跳必须是路由表中的某条前缀(包括默认路由0.0.0.0/0)!下一跳属性通常在 3 个地方被设置
前缀一开始注入BGP时,下一跳依赖于注入方式
aggregate-address——-0.0.0.0(本路由器)
network/redistribute——原路由的下一跳地址,如果原路由的下一跳地址不存在(指向null)本路由器将成为该BGP路由的下一跳!即0.0.0.0

该为公认必选属性,描述了到公布目的地的路径下一跳路由器的IP地址。由BGP NEXT_HOP属性所描述的IP地址不经常是邻居路由器的IP地址,要遵循下面的规则:
如果正在进行路由宣告的路由器和接收的路由器在不同的自治系统中,NEXT_HOP是正在宣告路由器接口的IP地址,如下图所示。

BGP 下一跳的理解和实验第2张

如果正在进行路由宣告的路由器和接收的路由器在同一个AS内,并且更新消息的NLRI指明的目的地也在同一个AS内,那么NExT_HOP就是宣告路由的邻居的IP地址。如下图所示。

BGP 下一跳的理解和实验第3张

如果正在宣告的路由器和接收的路由器是内部对等体,并且更新消息的NLRI指明目的地在不同的AS,则NEXT_HOP就是学习到路由的外部对等实体的IP地址。如下图所示。

BGP 下一跳的理解和实验第4张

从上面图可以知道,在去往192.168.5.0的网段中会出现路径不可达的情况,解决这个问题的方法是保证内部路由器知道与两处自治系统相连的外部网络,可以使用静态路由的办法,但实际的做法是在外部端口上以被动模式运行IGP。但在某种情况下,该方法并不理想。
第二种方法是采用配置选项来做,这个配置选项被称做next-hop-self。
下面具体详述了下一跳的不可达的解决方法:
解决下一跳不可达的方法:
1,静态路由
2,在IBGP邻居所处的IGP中宣告
3,将与EBGP直连的网络重分布进IGP
4,neighbor x.x.x.x next-hop-self(将指向EBGP邻居更新源的地址变为自己的更新源地址)(RR有的版本会将下一跳改变)
一般情况下,在本路由器上将直连的网络引入BGP,下一跳为0.0.0.0,本路由器聚合的路由的下一跳也为0.0.0.0。
在本路由器上将从IGP学来的路由引入BGP时,在本路由器上看BGP的转发表,下一跳为IGP路由的下一跳。在多访问网络环境中,用直连接口建立邻居关系,会产生第三方下一跳。
实例说明:如下图所示,

BGP 下一跳的理解和实验第5张

R2与R1是IBGP邻居,R1与R3是EBGP邻居,当用直连接口建邻居时,R2引入BGP的前缀172.16.2.0/24,在R3的bgp转发表里,将显示为R2的多访问网络接口地址(如:10.1.1.2)。产生第三方下一跳的现象。
-如果R1、R2、R3全部用直连接口建邻居时会产生第三方下一跳。
-如果R1、 R2用环回口而R1、R3用直连建立邻居时,会产生第三方下一跳。
-如果R1、R2用直连而R1、R3用回环口时,不会产生第三方下一跳,如下所示配置。
-如果R1、R2、R3都用环回口建立邻居,则不会产生第三方下一跳,如下配置所示。
R3#show ip bgp
BGP table version is 4, local router ID is 172.16.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.1.0/24 10.1.1.1 0 0 100 i
*> 172.16.2.0/24 10.1.1.2 0 100 i
*> 172.16.3.0/24 0.0.0.0 0 32768 i

R1
router bgp 100
no synchronization
bgp log-neighbor-changes
network 172.16.1.0 mask 255.255.255.0
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 ebgp-multihop 2
neighbor 3.3.3.3 update-source Loopback1
neighbor 10.1.1.2 remote-as 100
no auto-summary
R3
router bgp 200
no synchronization
bgp log-neighbor-changes
network 172.16.3.0 mask 255.255.255.0
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 ebgp-multihop 2
neighbor 1.1.1.1 update-source Loopback1
no auto-summary
R3#sh ip bgp
BGP table version is 8, local router ID is 172.16.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.1.0/24 1.1.1.1 0 0 100 i
*> 172.16.2.0/24 1.1.1.1 0 100 i
*> 172.16.3.0/24 0.0.0.0 0 32768 i

R1
router bgp 100
no synchronization
bgp log-neighbor-changes
network 172.16.1.0 mask 255.255.255.0
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback1
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 ebgp-multihop 2
neighbor 3.3.3.3 update-source Loopback1
no auto-summary
R2
router bgp 100
no synchronization
bgp log-neighbor-changes
network 172.16.2.0 mask 255.255.255.0
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback1
no auto-summary
R3
router bgp 200
no synchronization
bgp log-neighbor-changes
network 172.16.3.0 mask 255.255.255.0
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 ebgp-multihop 2
neighbor 1.1.1.1 update-source Loopback1
no auto-summary
R3#sh ip bgp
BGP table version is 10, local router ID is 172.16.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 172.16.1.0/24 1.1.1.1 0 0 100 i
*> 172.16.2.0/24 1.1.1.1 0 100 i
*> 172.16.3.0/24 0.0.0.0 0 32768 i
第三方下一跳:收到路由更新的源地址与将要发出去的接口地址在同一网段的时候,路由的下一跳不改变,为原来路由更新的源地址。
有时虽然路由的下一跳可达,但会出现访问网络出现环路的现象。
实例说明:

BGP 下一跳的理解和实验第6张

R5-R3,R1-R2为EBGP邻居关系,R1-R3为IBGP邻居关系。那么R5通过BGP传给R3的路由(如10.1.1.0/24),R3通过IBGP传给R1,R1通过EBGP传给R2,这时R2访问10.1.1.0/24这个网络的下一跳就在R1上。这时R2去访问R5的时候,就会产生环路。
则R2(走下一跳)——R1(走物理链路)——R2,这样环路产生了。
解决方法:
neighbor x.x.x.x next-hop-unchanged?(此命令只能用在EBGP多跳的环境下,将路由的下一跳,从自己的更新源地址改变为从IBGP学来的下一跳地址)(这时路由的下一跳在路由表里将改变。)
neighbor x.x.x.x route-map XX {in|out}然后在route-map里面set ip next-hop来改变前缀的下一跳。(在路由表里下一跳会改变。)
策略路由PBR,强制命令R2到10.1.1.0/24的时候走R3。(路由表里下一跳不会改变)

免责声明:文章转载自《BGP 下一跳的理解和实验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu jdk1.8 安装小米8的MIUI11通过抓取日志查看屏幕型号下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CU3ER非常Cool的3D效果的Flash Slider

用户界面 3D效果 Quick Start 使用CU3ER的简单十步: 1、下载CU3ER,解压缩文件到独立的文件夹。 2、(可选)创建你的图片并将它们放到cu3er的images目录下,如果你不使用提供的图片的话。 3、备份config.xml(可以重命名它为config_bkp.xml类似的名字)并在同样的位置创建新的config.xml。 4、...

dva 路由跳转

1.从props取出并传递history 取 const { history } = this.props 用 <button onClick={ () => history.push('/') }>go back home</button> 2.withRouter, Link withRouter: import {...

6.1 路由router

路由将信息由源地址传递到目的地的一种角色. 一、路由简单应用举个例子: let express=require('express'); let app=express(); app.use(express.static('public')); // GET /home 显示 网站首页 app.get('/home',function(req,res...

CCF/CSP-201403-4

问题描述   目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要距离不超过 r 就能互相建立网络连接。  除此以外,另有 m 个可以摆放无线路由器的位置。你可以在这些位置中选择至多 k 个增设新的路由器。  你的目标是使得第 1 个路由器和第 2 个路由器之间的网络连接经过尽量少的中转路由器。请问在最优方...

vue-cli3 创建项目路由缺失问题

1、在项目中新建一个router.js router.js import Vue from 'vue' import Router from 'vue-router' import Home from './components/home.vue' Vue.use(Router) export default new Router({...

DDWRT "中继桥接"模式 配置方法

一直喜欢耍路由,TOMATO玩双通、3G路由,后来是DD-WRT蹭网,不过一直都没有摆脱一个问题,那就是都是“玩家”,废话少说 ,进入主题中继蹭网: 准备: 我的DD-WRT固件版本(R2):DD-WRT v24-sp2 (07/16/10) mega(至少要 V24 RC5以上) 准备蹭网的主路由(R1):ssid、连接密码 注:如果破解密码请goog...