记录每日所学
一、边界网关协议(BGP)
- 是运行于 TCP 上的一种自治系统的路由协议。
- BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。
1、BGP的特征
- 传输协议:tcp 端口号179
- BGP是外部路由协议,用来在AS之间传递数据
- 是一种增强的路径矢量路由协议
- 拥有可靠的路由更新机制
- 无路由环路设计
- 为路由条目覆带属性思想
- 支持CIDR(无类别域间路由)
- 丰富的路由过度和路由策略
- 无需周期性更新
- 路由更新时发送增量路由
- 周期性发送KeepAlive报文以保持TCP直通性
2、BGP报文
- Open报文:用来与相邻路由器建立关系
- Update报文:用来发送路由的信息,以及列出要撤销的多条路由
- Notification报文:用来发送检测到的差错,并中断连接
- Route-Fresh报文:用来要求对等体重新发送指定地址族的路由信息
- Keep Alive报文:用来确认open报文,和周期性的证实邻站关系
3、BGP状态机
- ldle (空闲)状态
BGP总以ldle状态为起点,该状态拒绝所有入站的连接。只有在BGP起动之后,BGP进程将初始化所有BGP资源,初始化去往邻居的TCP连接,监听来自邻居的TCP初始化消息,并更改为连接状态。启动事件一般是配置BGP进程。 - Connect(连接)状态
进入Connect状态后,BGP进程将一直等待TCP连接的完成(三次握手),当TCP连接建立成功,BGP将会向邻居发送Open消息,并进入OpenSent(打开发送)状态。如果TCP会话没有建立,BGP将继续监听邻居初始化的连接,开启连接重试定时器,迁移到Active(激活)状态。Connect→→OpenSent(TCP连接建立);Connect→→Active(TCP连接暂未建立)。 - Active(激活)状态
该状态下,BGP进程继续尝试和邻居建立TCP连接,如果TCP连接建立成功,BGP进程清除连接重试定时器,完成初始化过程,并向邻居发送Open报文,迁移到OpenSent(打开发送)状态。
如果连接重试定时器到期BGP进程依然处在激活状态,进程将返回连接状态,监听邻居发起的TCP会话,这个过程将反复循环,直到监听到由邻居发起的TCP会话。 - OpenSent(打开发送)状态
进入了该状态,已经发送了Open消息,BGP将一直等待来自邻居的Open消息。一旦接收到Open消息后,将检查该消息的每一个字段,如果有差错,将会发送Notification消息迁入Idle状态。
如果接收到的Open消息没错,就会发送Keepalive消息并商讨Keepalive定时器和Keepalive发送的时间。 并迁移到OpenConfirm(打开确认)状态。 - OpenConfirm(打开确认)状态
进入了这个状态下,BGP进程将等待邻居确认的Keepalive或Notification消息。如果接收到的是Keepalive消息则迁移到Established(建立)状态,如果是Notification消息那么就将迁移到Idle状态。 - Established(建立)状态
进入了这个状态就说明了BGP的对等连接正式建立了,对等体之间交互Update,Keepalive和Notification消息,如果接受到的是Update或Keepalive消息,则重启保持定时器,如果接受到一个Notification消息,则会迁移到Idle状
4、对等体交互原则
- 从IBGP对等体获得的BGP路由,BGP设备只传递给他的EBGP对等体
- 从EBGP对等体获得的BGP路由,BGP设备传递给它所有的EBGP和IBGP对等体(对等体是IBGP只能传1跳,对等体是EBGP则不受限制)
- 当存在多条到达同一地址的有效路由时,BGP设备只将最优路由发布给对等体
- 路由更新时,BGP设备只发送更新的BGP路由
- 所有对等体发送的路由,BGP设备都会接收
- 所有EBGP对等体在传递过程中下一跳改变
- 所有IBGP对等体在传递过程中下一跳不变
- 默认EBGP传递时,TTL值为1
- 默认IBGP传递时,TTL值为255
5、建立邻居注意点
- 直连建立邻居需要注意的点
- 建立IBGP邻居时要让下一跳可达,处于边界的IBGP邻居需要将下一跳指向自己,这样才能建立IBGP邻居
-用环回口建立邻居需要注意的点