BGP–边界网关路由协议
**
概述
**
EGP协议 管理as之间的路由协议 距离矢量型 --分布式计算
BGP 用tcp来传递路由信息 (端口179),保证可靠性丧失邻居自动发现。
BGP设计用来处理AS之间的路由,所以该协议重点处理AS之间路由,AS之内的路由不作为重点。
BGP使用AS号作为识别不同AS路由的标识,该AS号需要具有唯一性。 AS号范围 1-65535,可以用扩展32位 65536-4294967295(解决AS号不够用的情况)
BGP的最小使用单位是一个路由器,所以每个路由器只能使用一个bgp的进程。
由于bgp管理的路由信息非常庞大,不能够使用周期更新,只能使用触发更新。并且bgp会认为一条路由时间越久越稳定,在这种情况下bgp必然不会使用复杂的算法来处理bgp收到的路由信息,又由于每个AS情况不一致,管理范围也有限,它必然需要丰富的管理参数。(不能只依赖metric),综上所述,bgp必然需要多种参数来决定路由的选择,并且不能以来某种特定的全局算法,只能单独去计算某一条路由,不能全盘考虑,并且要依赖所属AS管理员手动设置。BGP路径优先协议,通过给每一个路由设置大量的属性参数来进行灵活的管理或选路,并且这些属性参数大量的都需要人为来操控。
• BGP特点
bgp是一种较为稳定的路由协议(收敛速度慢)
最小通告时间:EBGP 30s IBGP 5s
协议封装:基于tcp封装–端口号179–使用单播更新来发送所有的信息
更新方式:触发更新、增量更新 更新地址:单播更新
bgp具有丰富的属性,是一种基于策略的路由,支持路由认证
bgp聚合
BGP的聚合不会影响明细的发送,路由表中明细不会消失。
IGP的聚合路由表中的明细会消失。
bgp一般被用于巨大型网络,使用keepalive进行bgp邻居维持
###邻居建立
1、数据包
Open 报文:类似hello包,用于bgp邻居关系建立,仅仅发送一次。
BGP邻居关系的建立:1、AS号2、BGP router-id必须不一致3、认证
Keepalive:用于邻居关系的维持,默认60s发送一次
Update:路由更新,用于通告路由;用于撤销路由 路由通告,使用TCP中的ACK进行确认。
Notification—报告(错误报告),用于通告BGP错误
flush-rece 刷新报文(新版存在)
2、 状态机
- Down 关闭BGP状态
- idle state 查看路由表,判断是否存在到达对方管理地址的路由,然后建立 TCP 会话
- Connect state :TCP会话建立成功(握手成功)
- Active state: TCP会话建立成功为 connect,失败为 active 控制主动或者被动进行 TCP三次握手
- Opensent state :开始发送 open 消息,发送 open 就会进入 opensent
- Openconfirm state:接收到 open 报文(就会进入 openconfirm)
或者 open 对应的 keepalive,发 送 keepalive就会进入 established - Establish:BGP邻居建立
3、bgp建立邻居失败的场景
参数与配置:
• 1、neighbor 10.1.1.1 //代表向该地址发送tcp端口为179的数据,并且自己也需要在发出地址上打开tcp179的监听。该配置可以指定源地址也可以不指定,不指定就是出接口。(意味着得打开出接口关于tcp179的监听)------本端指的地址需要是对方的源地址,对方指的地址需要是本端的源地址。
• 2、neighbor 10.1.1.1 remote-as xx
对端建立邻居的as号必须与本端remote-as xx一致。
• 3、建邻双方保障tcp179能够发送,不丢失,不被拦截。
邻居之间路由传递规则
- bgp俩种邻居关系
Ibgp邻居关系 //相同AS路由器建立的邻居关系
ebgp邻居关系 //不同AS路由器建立的邻居关系
1、bgp不管什么邻居关系只传递最优路由(不优不传,优的标志是>,也就是不带>的路由不会被bgp传递)
2、ebgp邻居关系路由传递:只要不违背环路规则ebgp邻居传递无限制(前提是必须优),ebgp之间传递路由会更新next-hop为自己的更新源地址。
3、ibgp邻居关系路由器:ibgp邻居之间不会中转路由。ibgp自己产生的路由(自己宣告的,自己重发布进来的)和ebgp邻居传递的都可以传递自己的ibgp邻居,但不可以在ibgp之间中转。
ibgp之间传递路由不会更新next-hop(只有next-hop为0.0.0.0的情况或者建立邻居的时候输入neighbor x.x.x.x next-hop-self )
这个设定的好处:ibgp之间有了水平分割从而避免了ibgp环路的出现,ibgp也不必设置防环算法
这个设定的坏处:ibgp之间路由传递必须直接建立邻居,导致ibgp邻居关系是一种全互联状态。
解决方法:
1)邻居关系全连(物理全连)
2)使用联邦和反射器来解决