BGP协议
BGP:
外部网关协议:用于各AS之间的协议
使用TCP作为传输层协议:可靠
增量更新:不同于OSPF需要周期性通告,
支持CIDR
路径矢量路由协议
无环路
可扩展
报文类型:
Open:类似于OSPF的Hellow报文,建立邻居的作用
Keepalive:类似于OSPF的Hellow报文,保持邻居关系,(周期)
Update:包含交换路由的信息
Notification:用来发送差错通知
Route-Refresh:改变路由策略后重新发送路由信息
BGP邻居建立过程:
Idle状态:初始状态
Connect:连接状态,成功发送Open报文,失败转为 -----> Active:正在进行TCP连接,超时则返回Connect状态
OpenSent:等待对等体 Open报文,并进行检查,正确发送 Keepalive报文,错误发送 Notification报文
OpenConfirm:等待上边两个报文,选择转至连接成功状态或者 Idle 状态
Established:连接成功,如果收到 Notification报文 则转至 Idle 状态
交互原则:
从IBGP获得的BGP只发布给EBGP,防止IBGP的内部环路
从EBGP获得的BGP发布给所有的IBGP和EBGP
EBGP用于AS之间:推荐使用直连(可以静态路由连接),注意:EBGP之间 TTL=1
IBGP用于AS内:可用直连和非直连:地址可达建立BGP(TTL:255)
EBGP配置 :邻居需要互相指向,环回改更新源、多跳
IBGP配置 :peer [ip]要可达 as-n [对方as号]
配置注意事项:
推荐使用环回接口配置邻居,但是要注意open协商邻居时会使用出口地址作为源地址,!!!需要改更新源 !!!
:peer 邻居 connect-interface 源地址或者源接口或环回接口
IBGP之间 保证可达性:
1.接口:直接连接
2.环回:更新源
EBGP之间推荐使用直连
1.接口:出口指向邻居
2.环回:如果使用环回
1)更新源
2)ttl≥2
>:最优路由,只有最优路由会写入路由表
*:下一跳地址,只有下一跳可达,该条路由有效
path/Ogn:as-path记录经过的AS号,相同不接收。
(1) i 表示network(IGP->BGP)方式注入
(2) ? 表示import方式注入
从EBGP学到的路由下一跳为EBGP出口,IBGP中需要将下一条路由改为与EBGP直连路由
水平分割:IBGP避免防环,所以其他IBGP也需要配置邻居。peer 邻居 next-hop-loc
BGP路径选择问题:从BGP邻居传来的Update报文时,会将最优路由写入路由表,并且发送给其他邻居,得出最佳路径
大致过程:对等体更新信息 -> Adj-RIB in(输入策略) ----> 路由 ----> Adj-RIB out(输出策略) -> 对等体更新信息
BGP属性:
公认必遵:大家都支持,且必须遵守,必须携带(起源、path、下一跳)Next-hop属性从EBGP学到的路由下一条不变
公认任意:大家都支持,但可以携带或不携带,Local-Preference/(用于在AS内)优先选择值大的(出)
可选过渡:接收的路由器如果不识别这种属性,可以转发给邻居路由器,Community/团体属性()
可选非过度:不会传递给其他对等体,如MED:只传一跳(入)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构