目录
BGP的概念
BGP是一种运行在AS与AS之间的动态路由协议,主要作用是在AS之间自动交换无环路由信息,以此来构建AS的拓扑图,从而消除路由环路并实施用户配置的路由策略。
BGP的特性
1. 传输协议:TCP ,端口号179
2. BGP是外部路由协议,用来在AS之间传递路由信息
3. 是一种增强的路径矢量路由协议
4. 拥有可靠的路由更新机制
5. 具备丰富的Metric度量方法
6. 无环路协议设计
7. 为路由条目附带多种属性信息
8. 支持CIDR(无类别域间选路)
9. 丰富的路由过滤和路由策略
10. 无须周期性更新
11. 路由更新时只发送增量路由
12.周期性发送keepAlive 报文,以保持TCP连通性
BGP邻居关系
运行BGP的路由器通常被称为BGPSPeaker(发言者),互相之间传递报文的Speaker之间互相称为对等体peer。BGP邻居关系的建立、更新和删除是通过对等体之间交互5种报文、6种状态机和5个表等信息来完成的,最终形成BGP邻居。
BGP报文:
1.OPEN:该报文负责和对等体建立领居关系,主要包括BGP版本,AS号等信息;试图建立BGP邻居关系的两个路由器在建立了TCP链接之后开始交互OPEN信息以确认能否形成领居关系。
2.keepAlive:该报文在对等体之间周期性地发送,用于判断对等体之间的可达性,实现BGP领居关系的维护
3.update:该报文用于在 BGP对等体之间用于交互路由信息;其中包括撤销路由信息和可达路由信息及各种路由属性,是BGP五个报文中最重要的报文
4.Notification:BGP的差错检测机制;一旦检测到任何形式的差错,BGPSpeaker会发送一个Notification报文,随后与之相关的邻居关系将被关闭
5.Route-refresh:用来通知BGP对等体自己支持路由刷新能力
BGP状态机:
1.idle状态
idle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(connect-Retryl)发起一条TCP连接,同时转入Connect(连接)状态。
2.connect状态
在connect状态,BGP发起一个TCP连接,如果连接重试计时器(connect-retry)超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入Opensent状态,如果TCP连接失败,就转入Active状态。
3.active状态:
在Active状态,BGP总是在试图建立TCP连接,如果连接重试计时器超时,就退回到connect状态,如果TCP连接成功就转入Opensent状态,如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。
4.Opensent状态
在Opensent状态下,TCP连接已经建立BGP也已经 建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知信息并退回到idle状态,如果没有错误就继续发送keeplive并服务keeplive 计时器,开始计时,同时转入Openconfirm状态。
5.Openconfirm状态
在该状态下,BGP会发送一个Keepalive 报文,同时复位保持计时器,如果收到了一个keepalive,就转入Establish状态,BGP邻居关系已经建立,这时BGP将和它的邻居们交换UPdate报文,同时复位保持计时器。
BGP数据库
1.