BGP协议笔记

一、BGP协议(边界网关协议)

是一种用于自治系统间的动态路由协议,是一种外部网关(EGP)协议。负责在不同自治系统(AS)之间交换路由信息,目的是实现大规模网络的可扩展性、策略控制和稳定性。

自治系统AS:一组被进行统一管理,运行同一个IGP协议的路由器组成的网络范围。通常使用相同的路由策略。

查看AS编号:www.cidr.report

二、BGP特性

路径向量协议:记录路由的完整AS路径(AS-Path防环机制),而非跳数,避免环路;

TCP连接:使用TCP 179端口,建立可靠的单播连接(邻居(peer)无需直连);

增量更新:仅传播变化的路由,减少带宽消耗;

策略驱动:支持基于AS路径、前缀、团体属性等灵活控制路由;

策略优先:支持丰富的路由策略(如路由过滤、属性修改);

支持IPv4/IPv6:通过MP-BGP扩展支持多协议(如VPNv4、EVPN)。

三、BGP基本术语

BGP Speaker:运行BGP协议的路由器称为BGP发言者

BGP Peer:相互之间在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体

BGP邻居可以直连,也可以非直连

BGP邻居类型:

IBGP(内部BGP);建立在同一AS内,无需直连;用于企业内部分分支路由同步。

EBGP(外部BGP);建立在不同AS间,默认要求直连;用于运营商之间互联。

四、BGP规划问题(路由黑洞)

产生原因:由于IBGP邻居之间有没有运行BGP协议的路由器,无法获得BGP的路由,从而导致数据包进入路由器被丢弃。

解决方法:

(1)BGP引入IGP

(2)在黑洞路由器上配置目的网段的静态路由

(3)IBGP全连接 ----IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居

(4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)

(5)BGP联盟(可以减少邻居关系的数量,IBGP水平分割限制)

五、BGP环路问题(水平分割)

1、EBGP水平分割(AS_PATH)

通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路

2、IBGP水平分割

当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。

六、BGP消息种类(数据包可抓包看)

(1)BGP头部信息:

标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义

长度(length):指示BGP报文的长度(字节数)

类型(Type):该字段指示了BGP报文的类型,就是前面提到的BGP5种数据包类

(2)数据包种类

Open :用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id;

Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等 待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双 方可接收的保持时间。

可选参数长度:指示了BGP报文中可选参数的长度

可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些 能力特征。

Keepalive: 周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接 的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保 持时间的1/3为周期发送Keepalive消息。默认60s,超时180s。

Update :携带的是路由更新(删减、增加)信息

Notfication :当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP 连接会立即被关闭(邻居关系结束了)

Router-refresh: 用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由 表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。

七、BGP邻居建立条件

IBGP:

物理口建邻:

建议使用直连接口地址(物理地址)来指定IBGP邻居;

环回口建邻:

对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回口地址来指定IBGP邻居;

更新源地址必须和指定的邻居地址一致,需要修改更新源为环回;

R1-bgp\]peer 2.2.2.2 connect-interface LoopBack 0

IBGP邻居关系不需要直连;

EBGP:

物理口建邻:

建议使用直连接口地址(物理地址)来指定EBGP邻居;

环回口建邻:

对方接口要有IP地址,TCP可达,

可通过修改EBGP最大跳数来使EBGP非直连;

更新源地址必须和指定的邻居地址一致;

注:当一个路由器既有EBGP邻居,又有IBGP邻居的时候,需要对IBGP邻居修改下一跳本机,否则会造成BGP的路由信息传递失败。

BGP与IGP的对比

|------|--------------|-----------------|
| 区别: | BGP | OSPF/RIP |
| 协议类型 | 路径向量(AS级路由) | 链路状态/距离向量(域内路由) |
| 收敛速度 | 慢(策略复杂) | 快(触发更新) |
| 适用场景 | 跨AS路由(如IS互联) | 企业内部网络 |

八、BGP配置

基础配置:

1.基础eBGP对等体建立

复制代码
  # bgp 65001   #进入BGP视图,AS号为65001

  # router-id 1.1.1.1   #手动指定Router ID

  # peer 203.0.113.2 as-number 65002   #指定对端IP和AS号

  # peer 203.0.113.2 connect-interface 10   #指定与对等体建立会话时使用的本地 源接口

  # peer 203.0.113.2 ebgp-max-hop [hop-count]   #修改最大跳数(默认255)

  # ipv4-family unicast   #进入IPv4单播地址族

  # peer 203.0.113.2 enable   #激活对等体

2.路由引入与聚合

复制代码
  # import-route ospf 1   #引入OSPF路由

  # aggregate 172.16.0.0 255.255.0.0 detail-suppressed   #手动聚合路由(抑制明细)

3.策略控制(基于Community)

复制代码
##设置路由策略

  # route-policy BGP_OUT permit node 10

  # apply community no-export   #标记路由不导出到其他AS

  ##应用策略

  # peer 203.0.113.2 route-policy BGP_OUT export

高级特性配置:

1.路由反射器(RR)

复制代码
##解决iBGP全互联问题

  # peer 10.1.1.3 reflect-client   #配置路由反射器客户端

2.BGP Confederation(联盟)

复制代码
##将大AS划分为多个子AS,内部使用eBGP规则:

  # confederation id 65000   #对外显示的统一AS号

  # confederation peer-as 65001 65002   #声明子AS号

3.BGP路由衰减(Dampening)

复制代码
  ##抑制频繁震荡的路由

  # dampening   #启用衰减

查看BGP对等体状态:

display bgp peer

检查BGP路由表:

display bgp routing-table

display ip routing-table protocol bgp

验证路由属性:

display bgp routing-table 192.168.1.0

调试BGP报文:

debugging bgp packet

相关推荐
星期天要睡觉35 分钟前
机器学习——支持向量机(SVM)实战案例
笔记·算法·支持向量机
霜绛44 分钟前
Unity笔记(三)——父子关系、坐标转换、Input、屏幕
笔记·学习·unity·游戏引擎
所愿ღ3 小时前
Vue框架进阶
前端·vue.js·笔记·前端框架
Hello_Embed6 小时前
STM32HAL 快速入门(二):用 CubeMX 配置点灯程序 —— 从工程生成到 LED 闪烁
笔记·stm32·单片机·学习·嵌入式软件
勤奋的小笼包12 小时前
论文阅读笔记:《Dataset Distillation by Matching Training Trajectories》
论文阅读·人工智能·笔记
wdfk_prog14 小时前
[Linux]学习笔记系列 -- [arm][debug]
linux·运维·arm开发·笔记·学习
wdfk_prog15 小时前
实战教程:从“对象文件为空“到仓库重生——修复 Git 仓库损坏全记录
大数据·网络·笔记·git·学习·elasticsearch·全文检索
小杨爱搞嵌入式15 小时前
【STM32】GPIO的输入输出
c语言·笔记·stm32·单片机·学习
古月方源aaaaa16 小时前
ospf笔记
笔记·智能路由器