一、BGP起源
网络不断扩大,为了方便管理网络被分为了很多不同的AS(Autonomous System -自治系统)。为了方便不同AS之间可以动态的交互路由信息,经过不断发展产生了我们敬畏的BGP(Border Gateway Protocol,边界网关协议),BGP是一种另外的网关 协议,可以做到路由优选、避免路由环路、更高效率传递路由和维护大量的路由信息。
二、BGG基本概念与注意事项
基本概念
**AS:**指的是在同一个组织管理下,使用统一选路策略的设备集合。 **对等体 **就是邻居的意思。 矢量性协议(Path-Vector Routing Protocol): “道听途说”,只是知道有哪条路通往目的地,但是自己也是听别人(别的设备)说的,并没有真正的自己去过,与ospf、isis自己掌握整体拓扑信息并自己计算形成对比。**EBGP(External BGP):**不同自治系统的BGP路由器之间的BGP对等体关系。要求路由器所属AS号不一样,并且要求对等体可达并且能够正确建立TCP邻居关系。 **IBGP(Internal BGP):**位于相同自治系统的BGP路由器之间的BGP邻接关系。
注意事项
BGP使用TCP为传输层协议,TCP端口号179,路由器之间的BGP会话基于TCP连接而建立。 BGP路由器路由更新采用增量更新或者触发式更新,可减轻设备负担。 建立IBGP对等体建议用Loopback接口,因为BGP基于IGP,所以可以借助IGP的冗余提高可靠性 BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体。 建立EBGP对等体建议用直连接口的IP地址,但是要注意将EBGP默认只有一跳,只能跳出去,无法跳回来,所以要修改最大跳值【peer ipv4-address ebgp **-max-hop** [ hop-count ] 】(最大255,2~255看需求随意)。EBGP间有多条链路建议使用环回口地址。 BGP不能自己发现、计算路由条目,其路由条目由IGP协议路由表中的路由发布得到。不能自动生成路由,但是咱可以宣告咱们已经有的路由(源于IGP)。 在AS之间使用BGP路由协议进行路由的传递。 BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式,也可说是矢量路由协议的好处吧。
三、BGP原理概述
BGP基于TCP(华为三次握手比较安全),只要能够建立TCP连接即可建立BGP,而要想建立TCP连接就必须有对方的路由,所以我们要想建立BGP就要事先先把各设备通过IGP协议进行连接,也可以理解为BGP就是基于IGP的四层协议(其实是三层协议)。通过IGP把各设备邻居关系建立起来后我们就可以在此基础上配置BGP邻居关系,不同系统间用EBGP,同系统间用IEGP —(个人理解和一个个的BFD很像),然后在BFD模式下通过宣告、引入、聚合IGP路由条目的方式发布路由,而我们就需要在考虑路由通告原则的基础上随心所欲的让指定目标学习到这些路由,这也就达到了我们BGP传输路由(大量)的目的。
四、BGP路由条目的来源 - 宣告、引入、聚合
BGP自身不会产生路由(IGP可以),BGP主要功能是传输大量路由- ‘专精嘛’ ,那末这所谓的大量路由是从哪里来的呢???
**注入-宣告 - Network:**可以在bgp模式下将已有的igp路由进行宣告,然后对等体就可以通过报文更新进行学习到。 **注入-引入 - import-router:**精确注入,如果路由条目太多,也可以通过直接引入协议的方式进行进入,可支持协议为直连路由、静态路由、OSPF路由、ISIS路由等,例如:import-router ospf/static. **聚合路由:**与IGP相同,就是将相同前缀的路由条目进行聚合,有手工聚合(精确常用)和系统自动聚合两种方式,无论手工还是自动生成后都会和明细路由进行并列,如果不想让对等体接收到明细路由(默认明细和聚合一起传输),就可以使用明细抑制来保证只有聚合路由进行传递如下图。
五、通告原则 --重要!!!
通告原则也可以理解为需要遵守的规则和设备的做事风格
**只会发布最优并且有效路由:**只会发布最优并且有效(下一跳可达,自己可以和该路由条目的下一跳通信)的路由,如图,从两个设备学习到的都有效(因为基于IGP,所以可能有多条路由),但是R1只会将最优的路由传递给其他对等体。*是有效,< 是最优。 **EBGP对等体获取的路由,会发布给所有对等体:**好比一个人从外学习知识,它可以分享给所有的邻居(对等体),无论中国外国(I/EBGP)。 **IBGP水平分割:**从IBGP对等体获取的路由,不会发送给IBGP对等体,十分重要!! 主要是为了防环。可以通告全互联和修改下一跳来规避该原则。 **BGP同步规则:**当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步规则主要用于规避BGP路由黑洞问题,如果没有同步,传输bgp路由时中间IGP设备无法识别,只会丢弃,不会提醒(静态路由的感觉),所以产生黑洞,但是这也就意味着你要把BGP引入到IGP进行传递(有点憨憨),所以制造厂商默认禁用。
六、相关配置命令
1.启动BGP进程(bgp + AS号)
[ Huawei ] bgp { as- number- plain | as- number- dot }
[ Huawei - bgp] router- id ipv4- address
2.配置BGP对等体
[ Huawei - bgp] peer { ipv4- address | ipv6- address } as- number { as- number- plain | as- number- dot }
3.配置建立对等体使用的源地址、EBGP对等体最大跳数
[ Huawei - bgp] peer ipv4- address connect- interface interface - type interface - number [ ipv4- source- address ]
[ Huawei - bgp] peer ipv4- address ebgp- max- hop [ hop- count ]