BGP协议

devtools/2025/2/2 7:56:20/

 BGP作为一种外部网关动态路由协议,其基于TCP的179号端口,其联系不同自治系统间的通讯

关于BGP的版本,最早只有1,2,3这三个版本,后经过改进有了BGP4,目前普遍使用BGP4+版本,其可兼容IPv6

AS号:1-65535 ,互联网中标识不同自治系统的唯一编号,用于区分不同网络的管理域,其中64512-65535为私有范围,其中0保留,用于某些特殊场景(如某些设备默认配置),65535保留,不可用,AS号也经过扩展,现可拓展至4294967295,其中4200000000-4294967294为私有AS号

计时器

Keepalive

60s,用于维护邻居关系,相当于OSPF中的Hello计时器

Hold Timer

180s,等待邻居Keepalive或Update报文的最长时间,超时则认为邻居断开,如要修改确保时间为三倍的Keepalive,相当于OSPF中的Dead计时器

 ConnectRetry Timer

32s,当TCP连接建立失败时,重新尝试建立TCP连接间的间隔时间

Route-Refresh Interval

30s,用于路由刷新,动态请求邻居发送路由信息

报文

BGP消息报头

Marker:早期可用于认证,一般全为1,现在也全为1,后续版本将认证迁移至TCP连接前或者其他方式进行认证

Type:类型1为open,2为updata,3为notifacation,4为keepalive

Open

包含自己身份信息,当TCP建立成功时发送,协商相关参数

Vresion:8b,版本,一般是4

AS号:16b

Holdtime:16b,相当于deadtime,确认最长时间

BGP Id:32b,相当于RouterID,选举方法相同

可选参数长度

可选参数:采用TLV架构,8b表明type,8b表明length,8b表明value价值,即可实现的能力

Keepalive

用于确认对端参数是否,当对方参数可接收会发送此消息,如果将设备keepalive计时器调为0,设备将不会发送此报文

Updata

用于描述路由信息,撤销路由以及描述路径属性

Notification

警示或报错,通常会终止BGP连接

Router-refresh

路由策略的变化时,用于请求重发路由信息

角色与状态机

角色

Speak:每一个加入BGP协议的设备

Peer:设备间互称,有EBGP邻居和IBGP邻居,AS号相同的则为IBGP邻居,反之为EBGP邻居

EBGP默认TTL为1,IBGP仅要求TCP可达

状态机

Idle:初始状态,开始尝试TCP连接

Connect:进行TCP连接

Active:表明TCP建立成功

Opensent:发送open报文,发送对等体相关信息

Openconfirm:确认对端信息无误进入此状态,发keepalive报文

Established:接收到对方的keepalive时进入,表明邻居搭建成功,后续发送updata报文对路由信息进行更新

邻居搭建

TCP建立

Idle状态尝试TCP连接,转入Connect状态,连接成功进入OpenSent状态,连接失败进入Active状态,该状态下不断进行TCP连接尝试,同时启用ConnectRetryTimeout计时器,等待对端回复,在计时器未超时前得到回复完成TCP建立则进入OpenSent阶段,如果超时未收到对端回复将会回到Connect状态

BGP建立

进入OpenSent状态,开始发送Open报文进行身份验证和核对,如果出错发送Notification报文并回退至Idle状态,如果收到正确的Open报文转入OpenConfirm,此时发送keepalive报文,超时或出错返回Idle状态,如果收到正确keepalive报文则进入Estabileshed状态表明邻居建立完成

邻居排除

如果一直Active和Connect反复横跳,可以考虑是不是TTL的问题或者说内部网络不可达,检测路由策略等安全策略是否阻止相关通讯

如果状态可以到达OpenSent,大概率考虑peer配置和指认问题,如AS号是否正确,IP地址以及ASN号的配置

通告规则

1只传自己的路由

2从E学的会通告到全部

3从I学的不会向ta的I通告(水平分割,避免环路,全互联,RR反射器,联盟)

4根据IGP和BGP同步情况确定是否将从I学到的路由通告给E(避免路由黑洞)


http://www.ppmy.cn/devtools/155386.html

相关文章

用一个例子详细说明python单例模式

单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这在需要控制资源(如数据库连接、文件系统等)的访问时非常有用。 下面是一个使用Python实现单例模式的例子: class Singleton:…

4. 劲舞团python解法——2024年省赛蓝桥杯真题

问题描述:4.劲舞团 - 蓝桥云课 小蓝最近迷上了一款名为 “劲舞团” 的游戏,具体来说,只要按照游戏中给出的键位提示依次按出对应的键位,游戏人物便可以跟随节奏跳舞。对于连续的 K 次正确敲击,如果任意连续的两次敲击…

(笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识

学员闯关手册:https://aicarrier.feishu.cn/wiki/QtJnweAW1iFl8LkoMKGcsUS9nld 课程视频:https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业:htt…

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…

PHP中配置 variables_order详解

variables_order 是 PHP 配置文件 php.ini 中的一项配置指令,决定了 PHP 在处理请求时,哪些类型的变量将被注册到全局变量空间(如 $GLOBALS)中,以及这些变量的顺序。理解和正确配置 variables_order 对于开发和维护安全…

数据结构 树1

目录 前言 一,树的引论 二,二叉树 三,二叉树的详细理解 四,二叉搜索树 五,二分法与二叉搜索树的效率 六,二叉搜索树的实现 七,查找最大值和最小值 指针传递 vs 传引用 为什么指针按值传递不会修…

web前端第六次作业---制作网页页面

制作网页页面 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

ABB CC-Link IE FB协议与WTW Modbus TCP协议汽车涂装生产线的精准协作方案改造

捷米特 JM-CCLKIE-TCP网关在汽车涂装项目改造CC-Link IE FB 智能涂装机器人与Modbus TCP环境监测传感器而与之协同工作的。 捷米特 JM-CCLKIE-TCP产品实现Modbus TCP网络与CC-Link IE FB网络之间的数据通讯&#xff0c;即将Modbus TCP通讯协议设备转换为CC-Link IE FB协议网络…