BGP之基础概述
前提概要:
- 动态路由协议可以按照工作范围区分为IGP(内部网关路由协议)以及EGP(外部网关路由协议)。IGP工作在同一个AS内部,主要用来发现以及计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP是EGP里的一种,由于使用频率问题,现在基本上以BGP指代EGP。
- IGP:IGP就是内部网关路由协议,包含之前所学习的rip/ospf/is-is,都是属于IGP的,IGP最多的应用场景可以说是园区网;EGP代表的是外部网关路由协议,BGP就是EGP其中的代表,因此实际上EGP是老的协议,因为现在都不用了,因此现在基本上都以BGP直接称呼。
- BGP(Border Gateway Protocol):BGP是一种增强的距离矢量路由协议,这个可以追溯到之前的OSPF和RIP之中,RIP称为距离矢量路由协议,也就是采用D-V算法的路由协议,是一种传闻、传说的路由协议。而OSPF是链路状态路由协议,采用SPF算法,是传信机制。BGP在传递大量的路由信息的时候,还有一个突出的特点就是能够控制路由的选路,在这个能力上,任何IGP都达不到BGP这种程度。
- AS:在BGP中提到的自治系统,实际上要和OSPF当初提到的有所出入,BGP中的AS代表的含义为:一个自治系统就是处于一个管理机构控制之下,使用统一选路策略的路由器集合。(原因是一个机构可能不止用一个路由协议)
BGP概述:
- 因为BGP的功能就不着重于发现网络拓扑,只是进行路由信息传输就行了,因此只需要用距离矢量即可。
- BGP使用TCP作为传输层协议,BGP使用的单播形式进行发送,那么TCP的目的端口号为179。而IGP中的这些路由协议都是需要使用组播地址去进行报文的传输的。
- 至于第三条的作用,实际上就是描述,在项目中可能部署BGP时需要穿过防火墙,因此我们需要设置目的端口为179。
BGP的特点:
①支持CIDR
②支持增量更新:BGP只会发送更新的路由信息,减少BGP传播路由所占用的带宽。适用于Internet上传播大量的路由信息。[路由在更新的时候,BGP只发送更新的路由。例子:如果路由器已经有10W条路由信息了,那么现在有10条路由信息更新,请问是发送1W10条还是10条来的迅猛?肯定是10条。在这里需要去描述BGP的一个特性,就是路由承载数,远远超过IGP。
如果不是增量更新,如果学习的话刚开始可能慢慢学,冲击不大,但是如果一个路由直接周期性或者更新了10条以后,直接将100W+10条的路由信息直接传给别的路由器,那么会导致的情况就是可能将被传输的路由器被怼死,一条一条可能可以受得了,一次性传过来就会宕机。因此不能像OSPF或者ISIS周期性去做更新。]
③增强型的路径矢量路由协议:BGP通过携带AS路径信息来标记途径的AS。(对于BGP来说,实际上也是按照跳数去传递的,跳数的定义为一个AS对应一跳。)
④路由策略丰富:BGP的路由策略丰富,这个和OSPF以及RIP来修改端口带宽来修改路由选路不同,更加灵活,可以采用丰富的路由策略来对路由实现过滤和选择。
⑤可防止路由震荡:BGP提供了路由衰减的机制,因此提高了网络的稳定性
⑥易于扩展:由于BGP采用了TLV的报文格式,因此扩展起来更加高效。
体验:(查看全球IP路由信息)
可以使用CRT进入主机名为route-server.ip.att.net的服务器,账号名密码都是rviews。这是模拟的思科命令集,有点延迟所以需要耐心操作,最后可以使用show bgp summary进行查看汇总数据。
BGP-AS自治系统
- AS(autonomous System):一个自治系统就是处于一个管理机构控制之下,使用统一选路策略的路由器集合。
- 每个自治系统都有唯一的自治系统编号,编号是由IANA进行分配的。
- 自治系统的作用:例如现在存在电信和移动两大运营商,两个AS(自治系统),如何去分辨在公网中哪些设备是属于移动的,哪些是电信的,实际上要用到的就是自治系统编号,例如,R1,R2,R3都是属于AS100的,例如在进行BGP配置的时候直接将它们配置在100中,就是100了,R4是属于AS200的,将自治系统进行编号之后,就是200的了,这样我们就能分辨了。
- 自治系统号由IANA分配的。自治系统的编号范围是1-65535就是2个字节,1-64511是注册的因特网编号,实际上就是公有的,64512-65535就是私有网络编号。因为因特网中1-64511可能会用完,因此我们后期将AS编号进行扩展,变成4个字节,可分配的数量就增长了,华为的VRP系统支持2个字节,也支持4个字节。
BGP协议特点
-
如图所示,BGP可以跨越多跳路由器建立邻居关系。
-
为实现路由按需求进行控制和优选,BGP设计了诸多属性携带在路由中。
-
因为是在AS之间传递路由,为保证数据的可靠性, BGP使用TCP作为其承载协议建立连接。因此与IGP逐跳路由器建立邻居不同,BGP可以跨越多跳路由器建立邻居关系。
-
AS之间的路由器是不完全相互信任的,为实现路由按需求进行控制和优选,BGP设计了诸多属性。
-
BGP的特征(Border Gateway Protocol): BGP是外部网关路由协议,用来在AS之间传递增强的距离矢量路由协议。【因为BGP的功能就不着重于发现网络拓扑,只是进行路由信息传输就行了,因此只需要用距离矢量即可。并且在RIP中,是根据路由信息的跳数来判断路由的优劣,但是对于BGP来说,只要是经过AS,就会携带AS的号码,我们能否将AS看成是大的路由器?答案是可以的,因此可以认为一个AS就是大的路由器,每个AS串在一起就是我们看到的那种拓扑图类似的样子。】
-
BGP特点
①有可靠的路由更新机制
可以举例OSPF以及RIP的机制。BGP的可靠建立在TCP之上,端口号为179。无需周期性更新(和增量更新路由有关),在路由更新的时候只会发送增量路由,并且是周期性的发送keepAlive报文检测TCP的连通性,TCP需要先建立三次握手,但是在TCP中我们一般说传输完成之后就会进行四次挥手,但是对于BGP来说,如果BGP路由传输完毕之后,我们直接释放掉TCP连接,可能会导致后期路由失效,那么因此为了保证连接的有效性,我们传输完成之后不能断开TCP连接,TCP本身的机制没有维护连接的,因此BGP对TCP做了扩展,会周期性的发送keepAlive报文来保证TCP的连接。那么TCP这种情况下就不会进行拆除。
②丰富的Metric度量方法
度量方式非常多,例如MED等等
③从设计上避免了环路的发生
每个协议都有避免环路的机制,RIP和OSPF都有,例如RIP的防环机制,以及OSPF域内使用一类二类LSA去解决环路,域间采用必须让非骨干区和骨干区相连才能进行通信的方式放环等等。在BGP里面我们会将IBGP使用水平分割,使用AS-PATH防止环路等等
④路由附带属性信息
⑤支持CIDR:网络里面基本上没有以自然网段去规划,因此都需要支持CIDR以及VLSM
⑥丰富的路由过滤和路由策略BGP着重于路由选择和路由控制,因此如果没有丰富的路由过滤和路由策略的优点是不能达到的。
⑦增量更新计算:
路由在更新的时候,BGP只发送更新的路由。例子:如果路由器已经有10W条路由信息了,那么现在有10条路由信息更新,请问是发送1W10条还是10条来更优?肯定是10条。在这里需要去描述BGP的一个特性,就是路由承载数,是远超过IGP的。
如果不是增量更新,如果学习的话刚开始可能慢慢学,冲击不大,但是如果一个路由直接周期性或者更新了10条以后,直接将100W+10条的路由信息直接传给别的路由器,那么会导致的情况就是可能将被传输的路由器被怼死,一条一条可能可以受得了,一次性传过来就会宕机。因此不能像OSPF或者ISIS周期性去做更新。
体验:(查看全球IP路由信息)
可以使用CRT进入主机名为route-server.ip.att.net的服务器,账号名密码都是rviews。这是模拟的思科命令集,有点延迟所以需要耐心操作,最后可以使用show bgp summary进行查看汇总数据。
BGP路由传递
- 因为BGP是可靠的传输,因此我们如果想要通过BGP传递路由的话,我们必须使用TCP去建立连接,这种情况下我们想要通过TCP连接,TCP连接通过广播以及组播没法建立,TCP建立的时候都是主动建立的,没有自动连接。因此我们在BGP之前,需要手动去建立TCP连接,然后再传递路由信息。
- BGP所连的两台设备想要运行BGP,那么首先需要保证这两台设备可达,才能去传递BGP路由。
BGP报文类型
-
BGP的Open报文头部
-
BGP的keepAlive报文头
KeepAlive报文没有实际意义,只是用来维护这个连接的,因此只有头部 -
BGP的Update报文 (目的是承载路由信息)
-对于Network Layer字段来说,如果有两台路由器,分别是A和B,它们建立了BGP连接,且A路由器将5条路由信息,就会通过Update报文里的Network Layer字段进行发送给路由器B,里面的内容就是5条可达的路由信息
-如果后期路由器A的某一条路由信息出现问题,那么就会通过Update报文中的Withdrawn Routers字段,写上不可达的那条路由信息交给路由器B,进行更新。 -
Notification报文
-
Route-refresh报文
-在BGP上尽量不要做刷新路由或者清空路由表的操作。
针对以上报文的应用过程:
①设备通过TCP建立BGP连接时,需要发送Open消息
②连接建立之后,如果有路由信息要发送或者路由变化时,要发送Update消息公告对端设备,当然不同情况Update也不同。
③稳定后要发送Keepalive消息保证BGP连接的有效性(因为TCP连接断开会导致BGP路由出现问题)
④当本地BGP在运行中发现错误时,要使用Notification报文通告给BGP对等体,然后进行连接中断
⑤Router-refresh消息用来通知对等体,本设备支持路由刷新。