众元教育H3CSE20200603班---BGP基本原理之一

引入
学习过路由协议的我们都知道,路由协议按管理能力范围来分类的话分为内部网关路由协议----IGP以及外部网关路由协议----EGP。IGP里面的OSPF、RIP、ISIS等协议想必我们都很熟悉或者了解了,今天来分享一下属于外部网关路由协议的BGP协议(“路径矢量”路由协议)

一、起源背景

在早期网络规模优先,路由数量比较少的时候,所有路由器之间运行如RIP、OSPF等路由协议就可以满足要求。但随着网络规模的不断扩大,路由数目的不断增多,之前运行的路由协议不堪负重,因此产生了自治系统(Autonomous System,AS)的概念,也称路由域。通过在域内运行内部路由协议学习和维护路由,在域间运行另外一种路由协议进行域间路由交换与管理的需求,推动产生了外部网关路由协议(Exterior Gateway Protocol,EGP)。但EGP设计非常简单,不能满足网络管理的需求,以至于被边界网关协议(Border Gateway Protocol,BGP)所取代。

二、BGP协议特性

1.BGP是一种外部网关协议,与OSPF、RIP等内部网关协议不同,BGP关心的重点不在于发现和计算路由,而在于AS之间传递路由信息以及控制优化路由信息。

2.BGP是一种“路径矢量”路由协议,其路由信息中携带了所经过的全部AS路径列表。如果收到该路由信息的BGP路由器发现该路由信息的起源AS与自身的AS相同,则丢弃此条路由信息,这样从根本上避免了AS之间产生环路的可能性。

3.BGP被TCP协议封装,端口号为179。BGP也通过TCP的可靠传输、重传、排序等机制保证了BGP协议消息交互的可靠性。

4.BGP支持无类别域间路由(Classless Inter-Domain Routing,CIDR)和路由聚合,可以在一定程度上控制路由表的快速增长,并降低了路由查找的复杂度。

5.BGP与RIP协议有相同之处,同样会将自己的全部路由信息通告给自己的邻居,但和RIP不同的地方在于,BGP只在邻居关系建立之后发送全部路由信息,此后就算路由表有变化,也只是发送增量部分给邻居,而不是再次发送全部路由表给邻居。这样大大减少了带宽的消耗,也降低了路由器CPU和内存资源的消耗。

6.BGP最重要的特性是丰富的路由属性以及强大的路由过滤和路由策略。通过使用路由策略等方法来改变路由属性,或根据路由更新信息中的属性来实现路由过滤和路由策略,使BGP能够灵活地对路由进行选路和控制。

三、基本术语

众元教育H3CSE20200603班---BGP基本原理之一_第1张图片

  • BGP发言者(BGP Speaker):运行BGP协议的路由器就是BGP发言者,它者接收或产生新的路由信息,并发布给其他的BGP发言者。如上图,RTA、RTB、RTD、RTE都运行BGP协议,都发布BGP消息,所以都是BGP发言者。
  • Router ID(RID):是一个32b的无符号整数,用来唯一标识一台路由器。路由器如果运行BGP协议就必须存在Router ID,用以建立邻居。Router ID可以由管理员手动指定或由协议自动选举,一般都是由管理员手动指定。
  • BGP对等体(BGP Peer):相互之间存在TCP连接、相互交换路由信息的BGP发言者之间互称为对等体,也叫做BGP邻居。如上图,RTA和RTB互为对等体,RTB和RTD互为对等体。

众元教育H3CSE20200603班---BGP基本原理之一_第2张图片

  • EBGP对等体(External BGP Peer):BGP对等体处于不同自治系统时,称为EBGP对等体,也称作EBGP邻居。如上图RTA是RTB的对等体,RTE是RTD的对等体。 从EBGP获得的路由,会向所有的BGP对等体(包括EBGP和IBGP对等体)转发,但不向原发布者转发。

注意:虽然BGP连接是基于TCP的,但通常情况下,BGP协议要求建立EBGP连接的路由器之间具有直连的物理链路(即EBGP默认TTL=1)。当然,若要建立RBGP连接的路由器之间不是物理直达的,也可以通过将TTL值改大(即允许它们之间经过物理多跳)来建立EBGP连接。

  • IBGP对等体(Internal BGP Peer):BGP对等体处于同一自治系统内,称为IBGP对等体,也称为IBGP邻居。如上图,RTB是RTD的IBGP对等体。从IBGP获得的路由,不向它的对等体转发。

注意:IBGP对等体不要求物理直连,只要TCP可达,且在同一自治系统内,就可以建立IBGP对等体。

众元教育H3CSE20200603班---BGP基本原理之一_第3张图片
虽然BGP是基于TCP的,但TCP是以点到点的方式来传播报文的,所以BGP连接也只能是点到点的方式。而BGP也是距离矢量路由协议,为了防止环路的产生,协议规定BGP发言者从IBGP获得的路由信息不能向其他的IBGP转发。因而,要保证运行了BGP协议的AS内所有的路由器的路由信息相同,就需要进行IBGP全连接。如上图所示,若只是进行部分连接,RTA从RTB学到的路由信息不会发布给RTC,这样RTB和RTC就不能学到对方的路由,若进行了全连接,则可以互相学习路由。

三、BGP的消息及状态机

1)五种消息
BGP拥有五种消息类型,分别是Open、Keepalive、Update、Notification以及Route-refresh。各个消息的具体作用如下图所示:
众元教育H3CSE20200603班---BGP基本原理之一_第4张图片
2)状态机
众元教育H3CSE20200603班---BGP基本原理之一_第5张图片

  1. Idle状态(空闲状态):此状态为初始状态,不接受任何BGP连接,等待start事件的产生。如果有start事件产生则系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态变为Connect。
  2. Connect状态(连接状态):在Connect状态,系统会等待TCP连接建立完成。如果TCP状态为Established,则拆除ConnectRetry定时器,并发送Open消息,将状态变为Open-sent;如果TCP连接失败则重置ConnectRetry定时器并转为Active状态;如果ConnectRetry timer expired(重传定时器)超时,则重新连接,系统仍处于Connect状态。
  3. Active状态(活跃状态):如果已经有启动事件但TCP连接未完成则处于Active状态。在Active状态时,系统会响应ConnectRetry timer expired事件,重新进行TCP连接,同时重置ConnectRetry定时器,变为Connect状态;如果与对方的TCP连接建立成功,则发送Open消息,将状态变为Open-sent,并清除ConnectRetry定时器,重置HoldTime定时器。
  4. Open-sent状态(Open消息已发送):此状态表明系统已发送Open消息,在等待BGP邻居发给自己的Open消息。如果收到BGP邻居发来的Open消息且消息没有错误,则转向Open-Confirm状态,同时将HoldTime定时器的值置为协商值,发送KeepActive消息并置KeepActive定时器;如果消息有错误,则发送Notification消息并断开连接。
  5. Open-Confirm状态(Open消息确认):此状态表明系统已发出KeepActive消息,并等待BGP邻居的KeepActive消息。如果收到KeepActive消息,则转向Established状态并重置HoldTime定时器;如果KeepActive定时器超时,则重置并发送KeepActive消息;如果收到Notification消息,则断开连接。
  6. Established状态(连接建立):如果处于Established状态,则说明BGP连接建立完成,可以发送Update消息交换路由信息;如果KeepActive定时器超时,则重置KeepActive定时器并发送KeepActive消息;如果收到KeepActive消息,则重置HoldTime定时器;如果检测到错误或者收到Notification消息,则断开连接。

注意:在除了Idle状态外的其他五个状态任何时候出现错误时,BGP状态就都会退回到Idle状态。

今天的分享先到这里,内容虽少,但值得深敲,欢迎留言讨论。

你可能感兴趣的:(路由器,网络)