AS(自治系统)是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。
私有自治系统,类似于私网那个IP地址,归属个人,不会连接到公网
国际管理自治系统
AS的内部:使用IGP(内部网关协议)来计算和发现路由,如OSPF,ISIS,RIP等,同一个AS内部的路由器之间是相互信任的,因此IGP的路由计算和信息泛洪完全处于开放状态,人工干预很少
AS之间:使用BGP(外部网关协议)来传递和控制路由
EGP:BGP的前身,只能在AS之间简单地传递路由信息,不会对路由进行任何优选,也没有考虑如何在AS之间避免路由环路等问题,因而EBP最终被BGP取代
BGP:外部网关协议,用于在AS之间进行路由控制和优选
AS编号:每个自治系统都有唯一的一个编号,由IANA分配,2009年1月之前,只能使用最多2字节长度的AS号码,即1-65535。
其中1-64511为公有AS,64512-65534为私有AS。
2009年1月之后,IANA决定使用4字节长度AS,范围是65536-4294967295
BGP的基本作用:
1.邻居的发现与邻居关系的建立;
2.路由的获取,优选和通告;
3.提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息;
4.在不完全信任的AS之间提供丰富的路由控制能力。
在OSPF/ISIS通过直连链路建立邻居关系,不是直连建立不了邻居关系
BGP邻居关系建立的参数:AS 号、router-id、hold time 向小兼容
BGP优先级:255
BGP协议特点:1.可以跨越多跳路由器建立邻居关系:因为是在AS之间传递路由,为保证数据的可靠性, BGP使用TCP作为其承载协议建立连接。因此与IGP逐跳路由器建立邻居不同,BGP可以跨越多跳路由器建立邻居关系
2.BGP基于TCP协议,端口号为179
3. 设计了诸多属性携带在路由中:AS之间的路由器是不完全相互信任的,为实现路由按需求进行控制和优选,BGP设计了诸多属性
先启动BGP的一端先发起TCP连接,RTB先启动BGP协议,RTB使用随机端口号向RTA的179端口发起TCP连接
*TCP采用单播建立连接,因此BGP协议并不像RIP和OSPF一样使用组播发现邻居。单播建立连接也使BGP只能手动指定邻居
EBGP:运行在不同AS之间的BGP路由器建立的邻居关系为EBGP(External BGP)邻居关系
IBGP:运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Internal BGP)邻居关系
peer关键字后面是对端邻居的接口地址
AS-number后是邻居路由器所在的AS
BGP邻居关系配置
配置步骤:
1.配置Router ID(标识路由器)(手动);
没有配置Router ID:
路由器在它的所有LoopBack接口上选择数值最高的IP地址;
如果没有LoopBack接口,路由器会在它的所有物理接口上选择数值最高的IP地址。
配置命令:router id X.X.X.X
2.配置EBGP邻居关系(AS之间传递路由);
(1)通过直连(物理)接口建立邻居关系(建立使用)
bgp as号
peer 对端直连接口IP地址 AS-number对端AS号
对端一样指定邻居
(2)通过loop back口建立邻居–保证IP地址路由可达
首先通过静态路由/OSPF实现EBGP邻居之间loop back口的互通
bgp as号
peer 对端loop back口IP地址 AS-number对端AS号
peer 对端loop back口 connect-interface 本地的loop back 口编号(默认情况下是物理接口建立邻居关系)
peer 对端loop back口 EBGP-max-hop 2(只针对EBGP建立邻,默认为1,如果用直连链路建立的话不会有影响,因为一跳就已经到达了对端设备,但是如果使用loop back 口的话,原来是一跳,出了接口就是0跳,那么对端设备就会丢弃,没有意义,所有修改2跳就有意义)
对端设备同样配置
查看BGP邻居关系命令:dis bgp peer
3.配置IBGP邻居关系(AS内部传递路由)
建立IBGP邻居关系时,一般使用loop back口的IP地址,因为loop back口开启后一直处于UP状态,只要保证路由可达,邻居关系一直处于稳定状态,而建立EBGP邻居关系一般使用直连接口的IP地址,因为EBGP是跨AS建立邻居关系,邻居关系建立之前非直连接口之间的路由不可达
(1)通过直连(物理)接口建立邻居关系(建立使用)
bgp as号
peer 对端直连接口IP地址 AS-number对端AS号
对端一样指定邻居
(2)通过loop back口建立邻居—保证IP地址路由可达
bgp as号
peer 对端loop back口IP地址 AS-number对端AS号
peer 对端loop back口 connect-interface 本地的loop back 口编号(默认情况下是物理接口建立邻居关系)
peer 对端loop back口 EBGP-max-hop 2(在IBGP中不需要,因为IBGP中默认为255跳)
建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用Loopback接口的IP地址
BGP通过报文的交互完成邻居建立、路由更新等操作:
建立邻居的过程:
建立邻居时,router-id大的首先发起TCP连接并转至Connect状态
在Connect状态下,BGP路由器启动连接重传定时器,等待TCP完成连接
TCP连接成功,那么BGP路由器向邻居发送Open报文,并转至OpenSent状态
TCP连接失败,那么BGP路由器转至Active状态。
连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态
在Active状态下,BGP路由器总是在试图建立TCP连接
TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态
TCP连接失败,那么BGP路由器停留在Active状态
连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态
在OpenSent状态下,BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查
收到的Open报文正确,那么BGP路由器发送Keepalive报文,并转至OpenConfirm状态
发现收到的Open报文有错误,那么BGP路由器发送Notification报文给邻居,并转至Idle状态
在OpenConfirm状态下,BGP路由器等待Keepalive或Notification报文
收到Keepalive报文,则转至Established状态
收到Notification报文,则转至Idle状态。
在Established状态下,BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文
一:BGP的报文:
Open报文(打开报文):是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系,交互建立邻居所需要协商的参数。
BGP邻居在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换
Open报文和Keepalive报文类似于OSPF的hello报文
Update报文(更新报文):用于在BGP邻居之间交换路由信息,传递或撤销路由。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息
1. 可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)
2.可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由
3. 可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了
Notification报文(通告报文):通告差错,当BGP路由器检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断
Keepalive报文(保活报文):用于维护BGP邻居关系,保持连接的有效性
BGP路由器会周期性60s的向邻居发出Keepalive报文,如果在hold time(180s)没有收到邻居的Keepalive报文,则邻居关系中断
Route-refresh报文(路由刷新报文):用于邻居设备重新发送路由以便策略的应用(BGP支持大量的策略,有些策略在实施之后并不会立即出现效果,需要通过Route-refresh报文让邻居设备重新再发送一遍路由,然后让该策略生效)
BGP邻居关系建立过程:分为两块:1.TCP建立
2.BGP邻居关系建立
二:BGP状态:
Idle(空闲状态):BGP路由器不接受任何的TCP连接请求。(相当于初始状态,标识BGP没有运行)
只有在收到本设备的Start事件后,BGP路由器才开始尝试与其邻居进行TCP连接,并转至Connect状态
Connect(连接状态):BGP路由器启动连接重传定时器(Connect Retry),发起TCP连接并接受TCP连接
如果TCP连接成功:BGP路由器向邻居发送Open报文,并转至OpenSent状态
如果TCP连接失败:BGP路由器转至Active状态
如果TCP连接建立超时:连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器继续尝试与其邻居进行TCP连接,停留在Connect状态
Active:BGP路由器总是在试图建立TCP连接
如果TCP连接成功,那么BGP路由器向邻居发送Open报文,关闭连接重传定时器,并转至OpenSent状态
如果TCP连接失败,那么BGP路由器停留在Active状态。
如果连接重传定时器超时,BGP路由器仍没有收到邻居的响应,那么BGP路由器转至Connect状态
OpenSent:BGP路由器等待邻居的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查
收到的Open报文正确:收到并接受来自邻居的open报文,BGP路由器发送Keepalive报文,并转至OpenConfirm状态
收到的Open报文有错误:收到邻居发送的open报文但不接收报文中所携带的参数,那么BGP路由器发送Notification报文给邻居,并转至Idle状态
OpenConfirm:该状态下BGP路由器发送Keepalive报文,等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态
Established:BGP路由器可以和邻居交换Update、Keepalive、Route-refresh报文和Notification报文
该状态标志BGP邻居状态建立完成
BGP路由的生成方式 :是指BGP路由是从哪来,也就是说如何将IGP变为BGP
1.Network命令:是逐条将IP路由表中已经存在的路由引入到BGP路由表中,将路由表的IGP路由引入到BGP路由表中,并不能全部的转,一条network就只能转一条BGP路由,适合路由量小的环境
2.Import命令:是根据运行的路由协议(RIP,OSPF,ISIS等)将路由引入到BGP路由表中,同时import命令还可以引入直连和静态路由
是批量的将路由表中的IGP路由引入到BGP路由表中,import一次只能针对一种路由协议
为了防止其他路由被引入到BGP中,需要配置ip-prefix进行精确匹配,调用route-policy在BGP引入路由时进行控制
查询:display bgp routing-table
Aggregate detail-suppressed:仅通告聚合路由给其他BGP邻居
BGP路由表中的参数:
状态码::代表可用
>:代表最优(出现>必定出现,最优的前提是可用,出现*不一定代表是最优的)
i:表示这条路由是从IBGP里面学习的路由,不带i表示从EBGP里学习到的路由,出现在network的前面
origin:起源属性,就是路由条目后面的一个字段Ong
i:表示IGP
e:表示EGP
?:表示引入
状态:
Network:显示BGP路由表中的网络地址
NextHop:报文发送的下一跳地址
MED:路由度量值,0,出现多条路由的目的地址一样
LocPrf:本地优先级
PrefVal:协议首选值
Path/Ogn:显示AS路径号及Origin属性
Community:团体属性信息
BGP通告原则与路由处理:
BGP的Update报文
BGP通过Network和Import两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居。BGP在邻居关系建立后才开始通告路由信息。
Update消息主要用来公布可用路由和撤销路由,Update中包含以下信息:
网络层可达信息(NLRI):用来公布IP前缀和前缀长度。
路径属性:为BGP提供环路检测,控制路由优选。
撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
为了避免路由通告过程中出现问题,BGP路由通告需要遵守一定的规则:
2.通过EBGP获得的最优路由发布给所有BGP邻居(包括EBGP邻居和IBGP邻居)
问题:BGP路由器从EBGP邻居获得的最优路由发布给IBGP邻居时不改变下一跳,因此导致IBGP收到的邻居路由下一跳不可达,导致BGP路由无效
解决:在BGP中配置:peer 对端邻居的IP地址 next-hop
3.通过IBGP获得的最优路由不会发布给其他的IBGP邻居:为了防止在AS内部形成路由环路
问题:由于BGP路由从IBGP邻居获得路由并不会发布给其他的IBGP,因此会导致AS内部路由获取不到路由
解决:在AS内部部署IBGP全互联,两两之间建立邻居关系
问题:在AS部署全互联会导致BGP路由器都需要维护大量的IBGP邻居关系,对设备带来压力
解决:路由反射器,称为RR,或者联盟(不在IP讲述范围)
4.BGP与IGP同步:BGP路由器从IBGP邻居获得的路由传递给EBGP时要保障所有的路由器都能学习到通告的路由:目的是为了解决中转AS的路由黑洞问题,通过将IGP引入到BGP中,和BGP同步
BGP的路由黑洞
因为考虑成本和实用性,正常在一个AS内部不是所有的设备都运行BGP协议,故将出现路由可达,但实际数据在传输时,经过中间未运行BGP协议的路由器后被丢弃。
路由黑洞:控制层面可达,数据层面不可达(此概念出于MPLS时代)
控制层面:传路由表的方向
数据层面:访问目标的方向
1、BGP协议是基于TCP单播沟通,可以穿越中间设备来传递路由
2、BGP的路由正常均需要递归多次到直连路由,运行BGP协议的路由基本都可以完成递归,认为可达,不关注下一跳设备是否由路由,只要本地能到下一跳即可
3、BGP生成的路由是唯一路径,但递归可以多条路径传输
解决BGP路由黑洞:
1)物理链路全连(IBGP中运行BGP协议的路由器太远不能实现)
2)邻居关系全连(所有设备均运行BGP)
3)将BGP重发布到IGP(LAB实验环境下应用,慎用)
4)MPLS,多协议标签交换(最佳)
1.当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,选出最优路由
2.将所有从BGP邻居接收的路由加入到本地BGP路由表(Local_RIB)中,然后将最优路由加入本地IP路由表(IP_RIB)
3.被选出的有效的最优路由将会被封装在Update报文中,发送给对端的BGP邻居
IP路由表(IP_RIB):全局路由信息库,包括所有的IP路由信息。
BGP路由表(Local_RIB):BGP路由信息库,包括本地BGP路由器选择的路由信息,邻居表,邻居清单列表。
BGP选路遇到的问题
1.最优路径:在AS之间交换路由可达信息时,设计BGP能够提供丰富的属性,实现对路由的灵活控制和优选
修改路由表,调整AS之间的链路Metric
不修改路由表, 使用策略修改路由下一跳。但是这些方法在某些情况下具有局限性,不能满足网络的丰富需求
2.环路:路由在AS之间传递时记录传播路径,防止环路的产生
BGP的路径属性(BGP路由的附加信息)
公认属性:所有BGP路由器都必须识别并支持的属性
公认必遵:BGP的Update消息中必须包含的属性。BGP路由器在传递路由时,(必遵)BGP路由器必须携带该类属性,否则BGP路由会出错
Origin:起源属性
AS_Path:自治系统路径属性
Next_hop:下一跳属性
公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性
Local_Preference:本地优先级属性
Atomic aggregate:原子聚合属性
可选属性:不要求所有的BGP路由器都能够识别的属性
可选过渡:BGP不能识别该属性,但可以接收该属性并在传递路由时将其发布给它的邻居的属性。
Aggregator:聚合者属性
Community:团体属性
可选非过渡:BGP可以不识别属性并且向它的邻居传递路由时不携带该类属性
MED:类似于cost
BGP属性 :
1.Origin(起源属性):隶属于公认必遵属性
作用:1.用于标识BGP路由的来源(标记一条路由是怎么成为BGP路由的)
2.用于路径选择(选择最优路由)
取值:
i:表明BGP路由通过network命令注入;
e:表明BGP路由是通过EGP路由转换而来(EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e)
?: 即Incomplete,表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
路径选择(优先级)为:i>e>Incomplete(?)
2.AS_Path(自治系统属性):隶属于公认必遵属性
作用:
1.记录了路由在AS间传递的路径(BGP路由在AS间传递时,每经过一个AS,就会在原有的AS-path的基础上的左边附加本地AS号,可以知晓BGP路由的始发AS和BGP路由所途径AS以及BGP路由是从哪个AS传递过来的)
2.防止AS间环路(BGP路由器收到BGP路由时,会检查BGP路由所携带的AS-path属性中是否携带本地AS号,若携带,则认为环路,并丢弃该路由)
3.用于路径选择(选择最优路径) ,BGP路由器收到多条去往同一目的地的BGP路由时,将会比较多条路由的AS-path属性,优选AS-path长度最短的BGP路由,可以通过路由策略修改AS-path的长度
AS_Path的4种类型:
AS_Sequence(后续讲解BGP路由聚合时会详细说明);
AS_Set(后续讲解BGP路由聚合时会详细说明);
AS_Confed_Sequence(应用于联盟,本课程不涉及);
AS_Confed_Set(应用于联盟,本课程不涉及)
3.Next_hop(下一跳属性):隶属于公认必遵
作用:
用于记录路由的下一跳(如果路由下一跳不可达,则路由无效,连参与路径选择的资格都没有)
路由在BGP邻居间传递时,下一跳改变规则:
1.从IBGP邻居获得的路由传递给EBGP邻居:BGP邻居从IBGP邻居获得的路由传递给EBGP邻居时,下一跳改变为自身的IP地址(建立EBGP邻居所使用的IP地址)
2.从EBGP邻居获得的路由传递给IBGP邻居:BGP邻居从EBGP邻居获得的路由传递给IBGP邻居时,下一跳不改变,因此会导致IBGP邻居收到的路由下一跳不可达,导致路由无效
可以通过peer IP地址 next-hop local :强制修改下一跳(在BGP路由器上配置,配置后需重启BGP/重发一遍路由:用户视图下reset bgp AS号/route-refresh)
3…从EBGP邻居获得的路由传递给EBGP邻居:BGP邻居从EBGP邻居获得的路由传递给EBGP邻居时,下一跳改变为自身的IP地址(建立EBGP邻居所使用的IP地址)
4.Local_Preference(本地优先级属性):隶属于公认任意属性
作用:用于路径选择(用于判断流量离开AS(出站流量,AS去往另一个AS)时的最佳路由,值越大越优,其默认值为100;
* 当BGP路由器通过不同的IBGP邻居获得目的地址相同但是下一跳不同的多条路由(就是出现多个离开本地AS),将优先选择属性值高的路由
仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级
适用环境:当一个AS的BGP路由离开一个AS内的网络时,如果BGP路由器所在AS存在多个出口时,并且需要控制出站流量从哪个出口离开AS,可以通过修改路由器的Local_Preference属性值来实现出站流量
5.MED:隶属于可选非过度,类似于cost
作用:用于路径选路规则
取值:默认为0,越小越优
适用环境:当一个AS存在多个入口路由器时,如果本端AS希望对端AS访问自己(本端AS)的某个网络时,优选其中一个入口路由器作为入站流量的入口可以适用MED值,可通过路由策略修改其属性值,MED属性相当于IGP中使用的度量值(Metric),用于判断流量进入AS时的最优路由,当一个运行BGP的路由器通过不同EBGP邻居获得目的地址相同,但是下一跳不同的多条路由时,在其他条件相同的情况下,优选MED值小的
仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS
6.Community(团体属性):隶属于可选过度
作用:1.限定路由的传播范围。
2.为路由附加标签,用于路由策略
分类:1.公共团体属性:限制BGP路由传播范围
Internet:默认属性,所有路由都属于Internet,只要不违背通告原则可以通告给所有BGP邻居,不受限制
No_Export:不传出,BGP路由器收到此属性的路由后,只传递给IBGP邻居,不将该路由发布到其他AS
No_Advertise:不通告,BGP路由器收到此属性的路由后,不将该路由通告给任何其他的BGP邻居
No_Export_Subconfed:在联盟中使用
2.自定义团体属性:为路由附加标签,用于路由策略
采用 aa:nn 形式
aa通常为AS编号,取值(0-65535)
nn是管理员定义的团体属性标识,取值(0-65535)
BGP路由优选原则
BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
• 该路由是到达目的地的唯一路由,直接优选。
• 对到达同一目的地的多条路由,优选优先级最高的。
• 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
一般来说,BGP计算路由优先级的规则如下:
1.丢弃下一跳不可达的路由。
2.优选Preference_Value值最高的路由(私有属性,仅本地有效)。
3.优选本地优先级(Local_Preference)最高的路由。
4.优选手动聚合>自动聚合>network>import>从对等体学到的。
5.优选AS_Path短的路由。
6.起源类型IGP>EGP>Incomplete。
7.对于来自同一AS的路由,优选MED值小的。
8.优选从EBGP学来的路由(EBGP>IBGP)(内部路由优先级EBGP>IBGP:EBGP-20;IBGP-200–越小越优)。
9.优选AS内部IGP的Metric最小的路由。
10.优选Cluster_List最短的路由。
11.优选Orginator_ID最小的路由。
12.优选Router_ID最小的路由器发布的路由。
13. 优选具有较小IP地址的邻居学来的路由。
Preference_Value对选路的影响
Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大越优先
聚合方式对选路的影响
聚合方式::
自动聚合:只能对引入的BGP路由进行聚合
手动聚合:可以对存在于BGP路由表中的路由进行聚合
聚合路由的优先级:手动聚合>自动聚合
1.EBGP邻居的路由优于IBGP邻居的路由
根据选路原则,RTA会优选从EBGP邻居学来的路由
2.AS内部IGP Metric对BGP选路的影响
优选值小的
3.Router-ID与IP地址对BGP选路的影响
优选小的,先看router-id
BGP路由聚合概述
BGP在AS之间传递路由信息,随着AS数量的增多,单个AS规模的扩大,BGP路由表将变得十分庞大,因此带来如下两类问题:
存储路由表将占用大量的内存资源,传输和处理路由信息需要消耗大量的带宽资源;
如果传输的路由条目出现频繁的更新和撤销,对网络的稳定性会造成影响
BGP路由聚合的必要性
存储路由条目的路由表将占用大量的内存资源,传输路由信息需要占用大量的带宽资源;
明细路由频繁震荡造成网络不稳定。
BGP路由聚合方法
静态:使用静态路由将明细路由聚合,下一跳指向NULL 0
network 10.1.8.0 255.255.252.0
ip route-static 10.1.8.0 255.255.252.0 NULL 0
自动聚合:只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居(不建议使用)
summary automatic
手动聚合:手动聚合对BGP本地路由表里存在的路由进行聚合,并且能指定聚合路由的掩码
aggregate 10.1.8.0 255.255.252.0
detail-suppressed
路由聚合解决了两类问题:
一是减轻了设备传输和计算路由所需资源的负担,
二是隐藏了具体的路由信息,减少了路由震荡的影响
但带来问题: 潜在环路
解决方法:detail-suppressed AS_Set:可以保留原来明细路由的AS_path属性
设置了两个AS_Path属性
1.Atomic-Aggregate:公认任意属性,用于警告下游路由器出现了信息丢失
2.Aggregator:可选过度属性,该属性包含发起聚合的路由器的AS号和Router-ID,表明发生聚合的位置
AS_Path属性有两种类型:
AS_Sequence:表示AS_Path内的AS号是一个有序的列表。
AS_Set:表示AS_Path内的AS号是一个无序的列表
AS_Path本身是一个有序的列表,因为AS_Path每经过一个AS都会将AS号添加到AS_Path中,并且按经过的顺序从左到右排列
BGP的工作过程
1、启动配置完成后,本地和对端先单播进行TCP的三次握手,建立TCP的会话。
2、会话建立后,使用open报文进行邻居关系的建立,正常收发一次open报文即可;建立关系后生成邻居表。
3、邻居关系建立后,用户进行路由宣告;宣告配置完成后,BGP使用update包进行路由条目的传递—目标网络号+属性
4、本地接收到的所有路由条目均存储在BGP表中;–装载本地发出和接收到的所有路由。
5、默认仅从BGP表中挑选一条最优路径到路由表内。
6、收敛完成,仅keeplive包继续周期保活TCP会话即可。
注:所有BGP协议的数据包均基于TCP的会话传递;TCP会保证这些数据包的可靠性-确认、重传、排序、流控(窗口机制)
若结构突变:
1、新增网段–BGP路由上出现了新的宣告路由,使用更新包更新即可
2、断开网段–BGP路由上出现断开路由,若本地给邻居发送的是汇总路由;那么只要所有明细没有全部断开,将不进行BGP更新;若明细全部消失,使用更新包告知即可;对端删除该信息即可;
3、无法沟通—hold time到时时,断开邻居关系,删除所有通过该邻居学习到的信息