一文看懂BGP协议基础知识

2019-11-20 17:00:32 云杰通信 107


一文看懂BGP协议基础知识

1.有两种路由协议,一种是IGP,另一种是BGP。

2.IGP路由协议有RIP、EIGRP、OSPF、IS-IS。

3.BGP目标端口为TCP的179端口,源端口号是随机的。

4.BGP建立邻居后,会每60秒发送一次keepalive包,如果hold timer为180秒后,认为邻居丢包,则断开与邻居的连接。

5.BGP能够传递的协议有IPv4、IPv6、VPNv4、CLNS、L2VPN。

6.两个路由器同属相同的AS,则邻居关系为iBGP,如果属于不同AS,则邻居关系为eBGP。BGP要求eBGP邻居必须直连,而iBGP邻居可以任意距离。

7.两台BGP路由器正常的建立邻居,必须有一台收到目标IP地址是自己的BGP源地址,任意一个邻居满足条件即可。即A的目标IP地址是B的源IP地址。

8.每台BGP路由器都拥有多条链路的BGP邻居保持连接,路由器的loopback口是BGP路由器系统的接口,不会像某个物理接口断连了,整个BGP邻居失去正常工作状态,因为还有通畅的链路让BGP邻居仍然可以保持连接;实现了连接的冗余性和稳定性。

9.iBGP发出的数据包的TTL值最大为255,而eBGP邻居时发出的数据包的TTL值限制为1,就限制了eBGP邻居必须直连;对于建立eBGP数据包的TTL值可以随意修改,甚至改为最大值255都行。

10.BGP将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路;而在iBGP之间传递路由时,强制将BGP路由在AS内部只传一跳来防止环路的机制。

11.在IGP协议当中,路由协议分成两大类:距离矢量路由协议和路径矢量路由协议,路径矢量算法结合了距离矢量特性与AS-path防环特性。

12.BGP路由的从eBGP学习到的默认AD(管理距离)值为20,iBGP学习到的路由默认AD值为200。顺便提一下其它路由协议的默认AD值:直连接口为0、静态路由为1、EIGRP汇总路由为5、EIGRP为90、IGRP为100、OSPF为110、IS-IS为115、RIP(V1&V2)为120、EGP为140、ODR为160、ExEIGRP(外部EIGRP)为170,未知为255。

13.BGP路由器有两张路由表,一张普通路由表:show ip route,一张BGP路由表:show ip bgp。

14.当iBGP路由需要跨越N个没有BGP路由,只有IGP路由时,需要在iBGP路由起用BGP Synchronization,否则认为此路由无效而不能发给其它邻居。

15.IGP路由协议和BGP路由协议在有多条路径可以到达同一目的地时,IGP则根据最小metric值来选择最优路径,而BGP则比较路由条目中的Path Attributes,即路径属性。

16.BGP路径属性可划分以下四类:公认强制、公认自选、可选可传递、可选不可传递

17.任何一台运行BGP的路由器,必须支持公认强制属性。BGP路由携带的公认强制属性有三个:Origin、Next_Hop、AS-path。

18.一些常用BGP属性:Origin(公认强制属性)、AS_Path(公认强制属性)、Next_Hop(公认强制属性)、Local_Pref(公认自选属性)、MULTI——EXIT——DISC(MED,可选不可传递属性)

19.AS是一个16位的数字,范围为1-65535。1-65411是公有AS;65412-65535共1024个是保留私有AS。

20.重分布进BGP的路由的Origin属性为Incomplete。

21.BGP路由表中到达同一目的地存在多条路径时,会通过比较路由的Origin属性来选择最优路径,它们的优先级顺序为IGP>EGP>Incomplete。

22.当BGP路由表中达到同一目的地存在多条路径时,会优选AS-Path最短的路径。

23.BGP路由器将路由传递给eBGP邻居时,会将Next-hop属性改为自己的地址,而在将路由传递给iBGP邻居时,不会改变Next-hop属性。本地发起路由的Next-hop属性为0.0.0.0。

24.Local_Pref属性只能在同一AS内部传递,出了AS后会被还原成默认值。Local_Pref默认值为100。当BGP路由表到达同一目的地存在多条路径时,会比较Local_Pref值的大小,本地优先级越高,路由优先级越高。

25.MED是BGP路由中的metric,是被设计用来影响多个下一跳为eBGP邻居时,如何选择最优路径,拥有最小MED值的路径会被优先使用。MED默认值为0。

26.默认情况下,只有当去往目的地的多个下一跳eBGP邻居都为相同AS时,才会比较MED值,如果多个eBGP邻居为不同AS时,是不会比较MED的,若是要强制在多个不同的eBGP邻居之间比较MED值,需要在BGP进程下输入命令:bgp always-compare-med。

27.Weight属性为Cisco私有属性,Weight值的范围为0〜65535,默认为0;BGP本地路由,则Weight值为32768。手工修改路由的Weight值,只能对本地起作用,不会传递给邻居。当BGP路由表中到达同一目的地下存在多条路径时,会优选Weight值最的的路径。

28.如果某BGP路由的状态为RIB-Failure,则不能被使用,原因有:1.该路由在IGP中拥有比BGP更高优先级的AD值。2.内容错误。3.超出VRF中路由限制数。

29.BGP建立邻居的条件有1.双方需要建立邻居的IP地址在网络上是互通的,可以建立TCP会话。2.双方指定的AS号码必须匹配。3.双方BGP数据包必须可达(eBGP默认TTL为1,需要注意)。4.对方BGP数据包的目的IP和自己的源IP必须相同(单向满足即可)

30.BGP最优路径选择如下:

1)最高Weight值。默认Weight值为0,本地发起路由为32768。

2)最高LOCAL_PREF值,如果Weight值相同,则选择拥有最高LOCAL_PREF值的路由,默认为100。)

3)本地发起路由,用network命令导入,或将其它路由协议重分布进BGP路由表,最后是汇总路由表。

4)最短AS_PATH。如果本地发起路由无法比出最优路径,则选择拥有最短AS_PATH路由,但可忽略对AS_PATH的比较,而直接比较下一属性,输入命令:bgp bestpath as-path ignore。

5)最低Origin类型。如果AS_PATH无法比出最优路径,则选择拥有最低Origin类型的路由,从IGP导入,从EGP学习,以及重分布,它们的优先级为IGP优先EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。

6)最小MED值。如果Origin类型无法比出最优路径,则选择拥有最小MED值的路由,并且只有当多个下一跳邻居在同一AS时才比较MED值。如果要在多个不同AS的下一跳中比较MED,可在BGP进程中输入命令bgp always-compare-med,注意须保证此命令在整个AS的路由器上输入,否则可能产生路由环路。默认的MED值为0,如果收到一条没有MED的路由,也认为是0。

7)eBGP优于iBGP

8)最小IGP metric到达下一跳的路由。如果多条路径的下一跳邻居同为eBGP或iBGP,则选择拥有最小IGP metric到达下一跳的路由。)

9)负载均衡。如果开启的话。maximum-paths n--多条路径的下一跳邻居都为eBGP时,输入此命令。maximum-paths ibgp n--多条路径的下一跳邻居都为ibgp时,输入此命令。n为执行负载均衡的路径数量,最大值为6,默认为1。

10)如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)。如果要忽略比较路由学习到的时间长短,可在BGP进程下输入命令bgp best path compare-routerid。

11)最低Router-ID下一跳。BGP的Router-ID选举如同OSPF,在此步,拥有最低Router-ID的下一跳路由将被选为最优路径。

12)最短cluster list。cluster list只在BGP reflector(RR)的环境下才有,功能如同AS_PATH。

13)最小下一跳的邻居地址。如果比较之前的所有属性都无法选出最优路径,最终选择下一跳的邻居地址最小的路由,这个地址就是在建立邻居时所指的地址。