BGP概述
背景
- 在EGP协议中,引入了AS的概念。AS是指由同一个技术管理机构管理,使用统一选路策略的路由器的集合。
- 在AS内部,是运用IGP来计算和发现路由的,在同一个AS内部中所有的路由器是可以相互信任的,因此IGP的路由计算和信息洪泛处于开放状态,人工干预很少。
- 在AS 之间的传输就引入了外部网关协议,BGP协议作为一种外部网关协议,用于AS之间进行路由控制和优选。
BGP的基本作用
- 在一个AS内部,是使用IGP 进行路由的计算和发现传递,如OSPF,ISIS,RIP等
- 在AS之间则是利用BGP协议来控制路由的传递与优选。
EGP与BGP的比较
- EGP协议只是将不同AS之间的路由信息进行简单的传递,没有考虑路由之间的优选问题,也没有任何的防环措施,所以最终被BGP所取代。
- 相比于EGP,BGP更具有路由协议的特征:
邻居的发现,邻居关系的建立
路由的获取,优选和通告
有更多的防环机制
在不同AS之间,对不完全信任的AS,有更好的控制路由的能力。
BGP协议的特点
在不同AS之间传递信息,为确保数据传递的可靠性,BGP采用TCP作为其承载协议建立连接,所以与IGP逐条建邻不同,BGP可以跨跳数建立邻居关系。
不同AS内的路由器是不能完全信任的,所以为了确保路由的优选,采取了诸多属性。
BGP邻居关系的建立
邻居的发现
- 不同AS直接是由广域网连接的,由于数据包会在广域网链路上出现许多不可测原因,导致通信的失败,为确保通信传输的可靠性,将TCP协议作为其承载协议
- BGP使用TCP封装建立邻居,端口号179,TCP协议通过单播建立连接,因此BGP不能像OSPF或RIP那样使用组播发现邻居,只能通过单播建立邻居关系。BGP协议单播建立邻居关系说明只能手动指定邻居。
BGP邻居类型
EBGP
运行在不同AS之间的BGP路由器的邻居关系,称为EBGP。EBGP只能用于不同AS之间传递路由。
IBGP
运行在同一AS内的BGP路由器建立的邻居关系。
邻居关系的配置
EPGP关系的建立一般指的为路由器的直连接口
IBGP关系的建立一般可以使用环回接口,因为环回接口打开后会一直处于UP状态,保证路由的可达,从而使邻居关系稳定。
邻居关系建立
建立邻居关系过程中共有Open,Keepalive,Update,Router-refresh和Notification五种报文类型。
Open报文:是建立TCP连接后发送的第一个报文,用于建立BGP邻居的连接关系。当Open报文协商成功后,将发送Keepalive报文来确认并保持连接关系的有效性。确认后,将发送Update,Notification,Keepalive和Router-refresh报文。
Update报文:用来传递路由交换信息的。它可以发布多条属性相同的可达路由的信息,也可以撤销路由不可达的信息。
Notification报文:当BGP连接有错误被检测出来时,会发送Notification报文,BGP连接会立即中断。
Router-refresh报文:当改变路由策略后,请求对体重新发布路由信息。
Keepalive报文:BGP邻居关系建立后会周期性的发送该报文,用于保持连接的有效性。
交互过程