BGP协议

 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(避免路由黑洞)

### BGP 协议概述 BGP(Border Gateway Protocol),即边界网关协议,是一种用于自治系统 (AS) 之间通信的动态路由协议[^2]。该协议的主要功能是在不同的自治系统间交换可达性信息,从而实现互联网上数据包的有效传输。 #### 版本演进 自首次发布以来,BGP 经历了多个版本的发展。最初的三个版本——BGP-1、BGP-2 和 BGP-3 主要专注于基本的功能需求,如跨 AS 的路由信息发布接收以及预防潜在的路由循环问题。当前广泛采用的是第四个版本,称为 BGP-4 或者简称 BGP,其显著特点是对 CIDR (Classless Inter-Domain Routing, 无类域间路由)的支持,这使得网络地址分配更加灵活高效。 ### 工作机制详解 当涉及到 EBGP 对等体间的路由传播时,任何由外部 BGP 邻居学到的路由会被转发给所有的内部和外部 BGP 同伴;然而对于 IBGP 来说,则存在一定的局限性—仅限于单跳范围内的传递[^1]。这意味着在一个特定的自治系统内,通过 IBGP 学到的信息不会被进一步扩散至其他非直连邻居节点之外的地方。 这种设计有效地减少了不必要的广播流量并增强了安全性控制能力,因为运营商可以精确指定哪些路由器能够相互通信及其共享的内容种类。 ```python # Python伪代码展示如何配置一个简单的BGP会话 from bgp import BGPSession bgp_session = BGPSession(local_as=65001, remote_ip='192.0.2.1', remote_as=65002) if is_ebgp_peer: bgp_session.advertise_to_all_peers() elif is_ibgp_peer: bgp_session.advertise_only_directly_connected() bgp_session.start() ``` ### 应用场景分析 作为最重要的互联网骨干层路由选择工具之一,BGP 不仅为 ISP 提供了一个强大的手段来管理它们各自的 IP 地址空间和服务质量参数,同时也允许企业级用户定义复杂的访问策略以优化自身的广域网连接性能。此外,在多宿主环境中,利用 BGP 可以为不同提供商提供冗余路径选项,提高整体系统的可靠性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值