bgp源代码分析

当bgp建立直连邻居时 , 不需要指定更新源 。指定更新源一般用在i bgp,建立邻居的目的是稳定它,在EBGP,更多的项目需要改变,因为bgp邻居建立是基于tcp连接的,所以必须有本地地址和对等地址,如果RTA邻居2.2.2.2远程AS 1 RTB邻居1.1.1远程AS 1没有指定更新源,就像发送icmp报文一样,bgp会默认使用出口地址作为源,即RTA的开放报文源是12.1.1.1,RTB的开放报文源是12.1.1.2 。

1、BGP协商的相关原理和参数协商码有五种类型1.Open(code1):用于建立连接,包括版本号(如BGP 3/BGP 4),HoldTime = 180s(是协商过程,以较小的HoldTime为准) , RouterID(OSPF和BGP可以手动配置),AS号(范围从1到65535,AS号) 。2.KeepAlives(code4):定期发送用于维护连接的检查路径(此包不可靠) 。

HoldTime0>NoKeepAlive 。Keepalive是一个19字节周期发送的BGP报文头 , 没有数据字段 。3.Update(code2):消息包含三个部分:网络层可达性消息(NLRI)、路径属性和撤销路由 。包括到目的网络的路径和属性,用于更新路由信息 。一次只有一条路径,但可以有多个网络 。更新可以删除(声明不可达)和添加(声明可达)路由 。它的内容是前缀的长度 。
【bgp源代码分析】
2、BGP的建立过程?知道的大大麻烦分步骤说清楚你是指建立BGP邻居的过程吗?一般细分有六个进程,有六种状态,详见showip bgpnei 。我用ABCDEF来表示序列A中的六个状态:IdleState状态1 。BGP通常以IDLESTATE开始(此时,所有传入的连接都被拒绝) 。当开始事件发生时,BGP进程初始化所有BGP资源以打开连接重试定时器,

从邻居接收TCP初始化消息,并将其状态更改为连接状态 。2.启动事件是由操作员配置BGP进程、重置现有进程或路由器软件重置BGP进程引起的 。3.错误的发生将使BGP进程的状态变为空闲 。路由器可能会尝试发起另一个启动事件 。为了防止由持续错误条件引起的摆动,在第一次返回空闲状态后 , 

3、BGP建立邻居为什么要做更新源呢?当bgp建立直连邻居时,不需要指定更新源 。指定更新源一般用在i bgp,建立邻居的目的是稳定它 。在EBGP,更多的项目需要改变 。因为bgp邻居建立是基于tcp连接的,所以必须有本地地址和对等地址 。指定更新源实际上就是指定打开包的源地址 , 也就是tcp连接的本地地址 。例如,RTA直接连接到RTB,网段是12.1.1.0/24 。
所有人都是1 。如果RTA邻居2.2.2.2远程AS 1 RTB邻居1.1.1远程AS 1没有指定更新源,就像发送icmp报文一样 , bgp会默认使用出口地址作为源,即RTA的开放报文源是12.1.1.1,RTB的开放报文源是12.1.1.2,这样:对于RTA,我想和2.2.2.2做邻居,但是收到了来自12.1.1.2的开放包裹,当然忽略了;对RTB来说也是如此,邻居不能建造它 。

    推荐阅读