之前一直没搞明白BGP有啥用,加了跟没加没啥区别,专门查资料写了这篇《BGP协议解析》。
下面使用eNSP模拟器演示!
IBGP与EBGP的区别
BGP分为两种:IBGP与EBGP。
两个路由器的BGP号相同,建立邻居关系叫IBGP,BGP号不相同就是EGBP,BGP的号就是自制区域号(AS)。
IBGP
IBGP之间一般使用逻辑接口建立邻居关系(比如各个分总司之前的路由器运行BGP,因为他们属于一个大公司,或者说属于一个自治区域AS)。
IBGP之间一般使用逻辑接口建立邻居关系的好处:IBGP一般是在同一个公司内部使用,公司网络往往有可靠性的规划,可能会有多种路径可以走,如果其中一条线路断了,只要能ping通,当前的邻居状态就不受影响。
EBGP
EBGP之间一般使用物理接口建立邻居关系(比如两家不同公司之间的路由器运行BGP,因为他们不属于同一个公司,之间一般是用一条专用线路通信,或者说他们不属于一个自治区域AS)。
EBGP有报文跳数的限制,默认为1跳,报文跳数可以更改。
BGP的邻居
BGP的主要目的不是发现邻居或者自动发现路由,BGP的邻居是手动指定的,它的邻居是可以跨网段的(前提条件是:得有路由才能建立邻居),也可以是不直接相连的(比如:两条路由器之间隔了好多路由器的情况)。
BGP一般不是用来发现底层路由的作用,而是用他来作为传递路由的载体(所以一般部署BGP之前会先部署OSPF)。
BGP往往是不发现底层路由和底层邻居的一个角色,往往是传递路由用的,比如用于:在复杂的要跨越多个公司,跨越多个区域的场景。
BGP大多配置下底层都会有IGP(如OSPF)的配置,,在此之上进行配置BGP的邻居关系。
BGP邻居表与BGP路由表
BGP路由表,当network自己的网段之后,就可以通过BGP路由表来查看被广播出来的网段是哪个BGP路由器的,最前面的符号:* 表示可以通,< 表示最优路径,什么也没有表示不通。
不通的情况,例如:
AR5广播出自己的网段(10.1.1.0)后,AR7可以收到广播出的网段,但是显示时不通的,因为AR5到AR7之间是通过AR6来进行传播的(AR5与AR6运行的EBGP,不是同一个自治区域的),AR广播出自己的网段,R7收到后,自身的BGP路由表还是记录的10.0.1.1 : 10.1.1.0。然而,R7并不知道10.0.1.1是谁,怎么走(因为不在同一个自治区域内)。这时候需要AR6进行转发BGP路由信息的时候,把10.0.1.1 : 10.1.1.0中的10.0.1.1改成自己的id(10.0.2.2)。
BGP邻居表
state下显示的是Idel是没有建立成功,显示的是Established是已经建立成功了。
配置好之后,建立的过程需要一分钟左右。
其它
N个运行IBGP之间相互建立邻居关系,需要设置N(N-1)/2个邻居关系(一个路由器要与另外N-1个路由器建立关系)。
华为路由器BGP常用配置代码:
bgp 100 #自身编号
route-id 6.6.6.6 #id,一般为loopback 0的地址
peer 1.1.1.1 as-number 100 #邻居的地址和AS号
peer 1.1.1.1 connect-intface loopback 0 #邻居的loopback 0的地址
network 192.168.10.0 24 #把这个网段广播到BGP中
#运行IBGP与EBGP的路由器,向这个邻居转发BGP路由时下一条写自己的地址
peer 1.1.1.1 next-hop-local
dis bgp peer #查看bgp邻居表
dis bgp router-table #查看bgp路由表