HCIP数据通信——BGP协议

引言

我之前写过一篇介绍ISIS的文章,我打算把BGP知识总结以后再做实验。那么现在就讲述一下BGP的一些特点和概念。

BGP特点 

BGP属于EGP(EGP也是BGP前身,指的是具体协议,被淘汰了成为了BGP),无类协议。

它的封装方式:Layer 2|IPV4|TCP|BGP|FCS|79

BGP基于TCP,为点到点协议,因此它仅支持单播,需手工指定目的地址。BGP提供了稳定的传输(基于TCP封装)因此只能以单播发送。BGP需要指定发送的单播报文的目的地址。

BGP仅支持MD5认证neighbor{ip-address/peer-group-name}password String 这个认证结构)

BGP使用场景

BGP的使用场景是:

(1)当你允许你的AS成为传输AS时候,可运行BGP,如果不希望,不运行BGP

解释下所谓的传输AS:比如AS1在访问AS3时,流量可能经过AS2中转,这时AS2为传输AS,我可以接受并非我始发或者以我为目的地址的流量穿越其中

如果一个组织由其一个团队管理OSPF更好,但假如电信和联通进行通信,电信与联通不是一个组织,OSPF管理不同,这会影响通信传输效率。路由协议中OSPF,VPN,组播MDT还是什么IGP协议都无法管理好通信传输效率的问题,除了IS-IS可以谈谈,但BGP可以做到以上不能做到的,因为BGP可以根据自身多种属性进行路径操控。

我们可以跨国访问就是运用了BGP。

(2)多宿主:有两个线路连入一个或两个运营商

BGP的定位是让边界路由器通过跟运营商的边界运行BGP,可以接收到其它AS的明细路由。(但如果连入外网仅有一根,使用默认或者明细路由都无所谓,只是默认会更好)

但如果连入外网有多条,如双宿主(有两个线路连入一个或两个运营商)这时明细路由更好。如果路由CPU强大,可以指定用BGP获得外网明细路由并配置哪些流量可以流出,也能操控外网流量从外向内的流入。如果该流量不是特别大,我可以接收部分明细路由,再通过静态默认一起完成流量转发,因此做到冗余备份和负载均衡。(我们后面的实验会展示到)

(3)当你有复杂的策略和选路需求的时候,用BGP

注:BGP需要占用大量的CPU!!!

IBGP和EBGP

运行BGP的路由器,当两台路由器属于同一个AS时,我们称之为IBGP,如果不在一个AS内就是EBGP

在同一个AS内传递IBGP方便信息交流。EBGP最好直连建立邻居。比如:

IBGP是为了辅助EBGP使用的,可以不用直连。IBGP建议用环回口建立(不让他绑定在物理接口上)如:

AS(自治区域)号

BGP要申请AS号,报头需要AS号标识,运行BGP也要AS号,AS号会影响一些参数,而且AS号是全球唯一的

AS号范围在0-65535,可用1-64511作为公有AS号64512-65535作为私有AS号。(后来的IPV6技术让AS号扩展了,32位有近42亿个)由于AS号是私有的,因此运营商要对AS-Path进行转换,才能在Internet中传递,这类似于NAT\PAT。BGP将一个AS当作一个路由器,因此在AS之间传递路由。在AS之间传递路由的时候,AS的变化也只有跨越AS的时候才会改变。例:

R1——R2——R3——X(假设R1和R2属于一个AS区域,那么从R1到R2的AS不会改变;如果R3和R1及R2不属于一个区域,那么AS到达R3时就会改变)

注:BGP在穿越AS时才会改变自己的参数属性和下一跳

BGP的Next_hop_self

举一个例子:B——D——C——A这个拓扑中,我们使用BGP协议,设BDC为一个AS自治区域,A为另一个不同于BDC的AS自治区域。那么当C把路由传递给了A,C也把路由传递给了B,对于B而言,它的下一跳仍然是A,而不是C,但是B没有去往A的路由,就会发生下一跳不可达。因此要改变C与B的地址,将C中A到C的更新源改为C到B的,这个问题就解决了。

这个就是Next_hop_self,它可预防以上问题导致的接受IBGP邻居不可达。BGP路由重分发到其它协议默认只有EBGP路由可以重分发。如果IBGP也想重分发。必须要这个参数(redistribute)但这会导致BGP能接收到附近协议邻居的近10万条路由!!!重分发时要注意!!!

因为BGP只能把其他协议的表信息加入到BGP中,从而再转换为路由表。直连路由和下一跳的静态路由引入BGP,它们默认为全0.0.0.0;

如果是IBGP或者EBGP包含下一跳的静态路由学到的路由,那么它们会继承(原本路由多少,加入后还是多少);

但如果本地的BGP表中路由下一跳为全0.0.0.0时,发送给任何邻居的下一跳都会变为自身针对邻居的更新源地址。(这无论是不是发给IBGP或EBGP)而且,本地BGP表中的路由表包含下一跳,路由发送给IBGP邻居时下一跳改变,发送给EBGP时变更为自身针对邻居的更新源地址。

说白了就是BGP会继承其他协议学到的路由的下一跳。

BGP特殊下一跳

!!!!当一台路由器通过上游邻居收到一条路由时,并把路由放给下游邻居,如果去往上游的邻居的下一跳地址和它去往下游的邻居的下一跳地址在同一个IP子网段内,这时再发往下游邻居前会直接把路由下一跳改写为它去往上游邻居的下一跳地址,这个称为BGP特殊下一跳!

BGP的水平分割

当收到一条EBGP路由时候,查看AS-path中是否包含AS号,没有则可以接受,包含则不会接收。

但当我通过邻居收到一条路由呢?IBGP只能把路由通告给EBGP的邻居而不能通告给其它任何IBGP邻居(IBGP水平分割)并且改变下一跳。EBGP可以通告给任何邻居,通告给IBGP时下一跳不变,通告给EBGP时下一跳改变。

BGP的报文

OPEN:通过OPEN报文建立邻居关系且仅发送一次;

Keepalive:交互Keepalive报文(60s或180s一次)来维持联系;

Update:用Update报文来更新信息;

Notification:Notification代表BGP连接中断或故障;

Router Refresh:Router Refresh来进行路由器的刷新,(如果我想更改某些路由器的策略,可以通告R1向R2发送修改以重新获得路由策略)。BGP默认不会产生任何路由,也不会通告,它只能通过其它方式将其他协议的路由进行处理,通过Network(宣告)和Redistribute(再分配)将其它协议记录的路由转到BGP中去,然后运行通告。

BGP的三个表项

BGP的DataBase:

BGP有三个表:邻居表(BGP邻居) BGP表(备用渠道获得的表) IP路由表

BGP没有度量值,但是MED(多出口鉴别器)可以硬说成BGP的“度量值”;BGP也不支持ECMP(等价负载均衡)不过可以手动开启这个功能。

BGP的重置方式

BGP有两种重置方式:

硬重置:Clear BGP ipv4 unicast*,强行断掉BGP,让其重新进入并使其策略可通(但是不推荐)

软重置:Clear BGP ipv4 unicast*soft(out/in)选择是否出入软重置,让其邻居或者自身重新发布下路由的更新

如果软重置没有执行,会默认执行硬重置!!!

华为有自动的刷新Route refresh功能,当部署出入策略后,会自动发送refresh重新让邻居发送路由信息。

{neighbor [ip-address]soft-reconfiguration inbound/outbound}

上述命令意思为BGP其实除了邻居/BGP/路由三个表外,还有出入流向表,出入的路由信息会加入此表后验证策略,转发该信息给BGP表;而出向表是我把路由加给出向策略表后,随后接上对方的入向策略表后再加入BGP表,命令可以查看我的出入表是否有问题。

BGP邻居关系组在配置BGP时命令太多,创建对等体组{Neighbor internal peer-group}从而大量建立配制相近的邻居(IBGP用的多)

BGP的邻居关系

BGP邻居关系状态机的刷新

BGP邻居关系状态分为IDLE,Connect,OpenSent,OpenConfirm,Established

IDEL:当我在BGP进程中写入一条Neighbor命令,指向邻居的某处地址,这时根据邻居位置查路由表路径的过程就是Idel。找不到则会一直处于Idle状态证明路由有问题(一般是AS号,Neighbor等配置有问题了)。

Connect:找到邻居,进入了3次握手,它会在限制时间内完成握手。如果收不到握手的信息会加速(也就是还处在Active状态)进行报文发送以来完成Connect加快建立邻居。

OpenSent:我和邻居完成握手,发送Open等待回应,我要接收你的回馈信息。

OpenConfirm:路由接收信息回复Keepalive证明成功,回复Notification证明不行。

OpenSent和OpenConfirm也就是Open报文包含参数,双方进行互发。

Established:你回复了Keepalive,意味着路由BGP协议运行完成

BGP路由汇总

BGP路由汇总分为自动和手动。

自动汇总:也叫做主类汇总,它会精确匹配主类地址段的network(子网)和mask(掩码)只要你有属于主类条目的任意明细路由存在,子网就会以主要形式汇总,且不会继承路由下一跳和度量值(hop=0.0.0.0.MED=0)

(注:这个前提是你做了network且表中没有这条主类路由,仅有属于该主类的子网路由存在,这时才会进行自动汇总将子网通告出来并用主类来表示)

不建议开启以上方法,因为重分发BGP也会导致以此方式进行。

手动汇总:经常用手动汇总;手动汇总需要aggregate命令用于在BGP表中创建一条聚合路由,该命令可以对BGP本地路由表中的路由进行聚合。(记得在掩码后加入summary-only,它可以抑制明细路由,这样就只能发送汇总路由了)在ACL前缀permit(指的是被抑制的路由)的策略也可以

在BGP默认路由下放机制中

*可加表传递peer
R不加表可传递Peer
S不加表不传递Peer

BGP的属性

当BGP和OSPF学到路由后,他们谁加入了路由表呢?BGP与其它协议则是以优先级的方式进行好坏比较。而BGP与BGP之间则以属性比较路径好坏,因为在华为中,EBGP和IBGP属于一个优先级(255)所以结果是它们都无法优先加表。

BGP选路原则

BGP属性分为公有属性和可选(私有)属性。公有属性是官方支持的,它分为公认必遵(必须携带)和公认自由(可不携带)两种属性;可选属性为私有的属性,它是各个厂商设置的。私有属性分为可选传递(完整和不完整传递)和可选非传递。

注:可选传递指的是当厂商发现该属性时,我可以传递该属性给下一个设备;但是可选非传递自然就是我不会将我不识别的属性进行传递。

公认必遵的属性为:Origin,Next-hop,As-Path(这三种属性,它们可以为空值,但不能没有。)

公认自由的属性为:Local Perference,Atomic,aggregate(你是否携带这些字段都可以)

可选传递的属性为:aggregator,Community(不同的厂商发现该属性时,我可以将属性传递给下一个路由设备)(可选传递中还有完整和不完整。不完整指我不识别这个字段并标记后告诉后续字段我不理解它;完整是指我会携带所有这些字段)

可选非传递的属性为:weight,MED等等。。。。(不可传递自然是我不打算把我不识别的属性继续向后传递)

BGP在选路时一定选择最优的路径,基于13步选路原则且要有资格参加选举,其参选资格条件为EBGP本身满足即可,而IBGP要满足同步和下一跳可达(这不是选路,而是参选资格,如果IBGP之间没有同步或者下一跳根本不可达,不会进行参选)。

思科BGP选路原则:

先比较权重(weight)高的优先,如果一样;

本地优先级(perference)高的优先,如果一样;

是否为本地产生(Local)优选始发者路由;

比较AS Path长短,短的优先,经过AS少的优先;

起源路由(origin)IGP>EGP>incomplete;

MED小的优先,如果一样;

EBGP优先好于IBGP,如果都是IBGP;

我离这些通告IBGP的邻居哪个更接近的优先(IBGP决定);

到了分水岭!如果以上都无法判断,如果你开启了BGP负载均衡,那么全部加入表中,否则的话;

多跳路径始发路由器ID相同,选择CLUSTER_List短的优先;

RID大小,小的优先;

谁接收路由的时间长,时间不长的优先;

华为BGP选路原则

若下一跳不可达,忽略该路由;

preference_value高的优先;

Local-preference最高的优先;

聚合路由优先于非聚合路由;

本地手动聚合路由优先级高于本地自动聚合路由;

本地通过network命令引入的路由优先级高于本地通过的import-route命令引入路由;

AS路径最短的优先;

比较Origin属性,IGP优先于EGP,EGP优先于incomplete;

选择MED小的;

EBGP优于IBGP;

BGP优先选择到BGP下一跳的IGP度量最低的路径;

此时进入分水岭,以上全部相同的话,为等价路由,可以负载均衡的话则以下三条无效并全部加表,否则;

比较Cluster-List长度,短的优先;

比较Origin_ID(或者用RID也行)数值小的优先;

比较对等体IP,IP小的优先。

注:BGP的聚合路由不参加选择过程(有原子属性的)和其他协议引入路由也不参加选择过程

BGP路由反射器和联邦

IBGP full mesh是针对IBGP水平分割导致的防环,但是代价太大。它会导致一个AS内,如果IBGP太多则需大量的命令配置来解决路由传递。

注:IBGP full mesh是路由反射器,它由Cluster组成,其里面包含了IBGP邻接关系

这里要提到一个概念:Server(服务器)端和Client(客户)端

所有Client与Server建立IBGP运行关系。Client发送一条IBGP给Server,Server收到后发射给其它Client和非Client的连接的设备。Server通过Non-Client收到IBGP,反射给所有Client。它通过Cluster list(集群列表)Originator ID(起源ID)来防环,它们在设置S-C时出现

Server收到路由后,查看Cluster List是否包含自身的Cluster ID以判断是否向你发送,告诉路由器我通过你获得的信息,Client收到反射后判断自身RID是否等同于Originator ID

如果你不想用S-C的路由反射器,可以用confederation也就是联邦BGP

在一个大的AS域内,划分成多个小的联邦,每个联邦间的关系可以看成EBGP,通过合理划分联邦,将原来IBGP对等体关系转变成EBGP对等体关系,使得不传送的BGP路由可以传递。但它是AS内配置,对于所有AS外的路由器来说,在并不知道AS内的情况,一个AS域内BGP通过联邦号建立。对AS外而言,所有的路由器又有相同的AS号,外部通过AS号认定BGP邻居(联邦BGP因此基本用不上)

BGP团体属性(community)

团体standard Tag(tag标准属性为100)或者写成xx:yy(100:100);团体属性不好,就算你路由没了,既不会生效,默认也不会携带,你需要开启携带可通过许可,这样才可携带。

团体Extended会使用RT参数让路由知道如何添加入哪张表,一共有四个值可选(可携带的属性)

Internet(全体通告)

No-advertise(告诉邻居可接受但不要再发送给任何人)

No-export(邻居收到后只能给IBGP,不给EBGP)

Local-AS(只能给EBGP不给IBGP)

注:如果你配置了联邦BGP,那么No-export只给IBGP与联邦内邻居EBGP,Local-As则为不转发给联盟内EBGP邻居,只转发给IBGP邻居Internet,转发给任何邻居

BGP进程

BGP底层需要IGP或者静态作为基础,从而建立BGP邻居(IBGP/EBGP),默认情况下BGP不会主动产生路由传递,其路由传递方式有三种:

(1)NetWork 路由通告(路由表中已存在的其它协议的路由)

当你开启了自动汇总,NetWork后跟上一个主类网络号,若路由表中有任何一条属于该主类的明细路由,那它就会被NetWork方式通告

(2)Redistribute 路由重分发

我通过Origin起源属性得知路由以何种方式进入的(IGP|incomplete|EGP)

(3)Aggregate BGP汇总(聚合)前提是在BGP表域内已经通告的和被汇总的明细路由

原子聚合:通过他这个属性来告知所有接收者路由器你们收到的路由是非汇总路由还是汇总路由。只要是汇总路由的原子聚合属性置为1如果不是则为空

BGP实验配置

BGP的实验需要用到IS-IS和OSPF,可以查看下我之前写的文章:

​​​​​​​数据通信——OSPF高级特性_咕噜跳的博客-CSDN博客

 数据通信——网络层(IS-IS)_咕噜跳的博客-CSDN博客

首先,连接以下拓扑结构: 

解释:图中的网段和环回口均已给出,拓扑划分为了两个不同的区域,其中绿色为AS 10,AS:10内部运行IS-IS 1,两台路由器均为L2。另外一个为AS 20

需求如下:

(1)R1上的环回口需要宣告进IS-IS。但不通告与AS 20互联的网段。

(2)AS 20内部互联网络运行OSPF 1,R3,R4,R5上面均有环回口和网段都要宣告进OSPF,但是不通告给AS 10互联网段。

(3)R2和R3运行EBGP,R2和R4也运行EBGP来建立邻居关系

(4)R3和R4分别与R5建立IBGP邻居关系(通过环回口)

(5)R5的4个环回口均以network方式通告进BGP

(6)R5上面做路由聚合,对R5引入的BGP路由做精确的聚合,需要抑制明细路由发布,而且需要让聚合后的路由可以携带明细路由的AS-Path

(7)通告BGP属性控制,让R2访问聚合路由优先选择R4访问;使得R2访问R1的Loopback0口优先选择R4访问。不能通过BGP公认必遵属性来实现上述需求。

(8)使得R1环回口可以与R5的环回口通信 

基础配置

R1:

[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.12.1 24
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]ip add 192.168.1.1 24

R2:

[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.23.2 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.12.2 24
[Huawei-GigabitEthernet0/0/0]int g0/0/2
[Huawei-GigabitEthernet0/0/2]ip add 10.1.24.2 24

R3:

[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.23.3 24
[Huawei-GigabitEthernet0/0/1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.35.3 24
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]ip add 10.1.3.3 32
[Huawei-LoopBack0]

R4:

[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.24.4 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.45.4 24
[Huawei-GigabitEthernet0/0/1]int loopback 0
[Huawei-LoopBack0]ip add 10.1.4.4 32

R5:

[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.35.5 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.45.5 24
[Huawei-GigabitEthernet0/0/1]int loopback 0
[Huawei-LoopBack0]ip add 10.1.5.5 32

 IS-IS配置

AS10中需要ISIS完成网络互联,我们现在建立ISIS后宣告R1的环回口。

R1:

 [Huawei]isis 1
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]network-entity 49.0001.0000.0000.0001.00
Nov 23 2023 13:53:40-08:00 Huawei %%01ISIS/4/START_ENABLE_ISIS(l)[0]:ISIS 256 en
abled all ISIS modules. 
[Huawei-isis-1]int g0/0/0 
[Huawei-GigabitEthernet0/0/0]isis enable 1 
[Huawei-GigabitEthernet0/0/0]int loopback 0
[Huawei-LoopBack0]isis enable 1

R2:

 [Huawei]isis 1
[Huawei-isis-1]is-level level-2
[Huawei-isis-1]network-entity 49.0001.0000.0000.0002.00
Nov 23 2023 13:56:02-08:00 Huawei %%01ISIS/4/START_ENABLE_ISIS(l)[0]:ISIS 256 en
abled all ISIS modules. 
[Huawei-isis-1]int g0/0/0
[Huawei-GigabitEthernet0/0/0]isis enable 1
Nov 23 2023 13:56:13-08:00 Huawei %%01ISIS/4/ADJ_CHANGE_LEVEL(l)[1]:The neighbor
 of ISIS was changed. (IsisProcessId=256, Neighbor=0000.0000.0001, InterfaceName
=GE0/0/0, CurrentState=up, ChangeType=NEW_L2_ADJ, Level=Level-2) 
[Huawei-GigabitEthernet0/0/0]

我们来看下ISIS的邻居情况:

邻居的建立没有问题 

OSPF配置 

接下来,我们要在AS 20上面运行OSPF协议,现在开始配置:

R3: 

[Huawei]ospf 1 router-id 10.1.3.3
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.3.3 0.0.0.0 
[Huawei-ospf-1-area-0.0.0.0]network 10.1.35.3 0.0.0.0

R4:
[Huawei]ospf 1 router-id 10.1.4.4 
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.4.4 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.45.4 0.0.0.0

R5:

[Huawei]ospf 1 router-id 10.1.5.5
[Huawei-ospf-1]area 0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.5.5 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.35.5 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0]network 10.1.45.5 0.0.0.0

现在在R5上看一下OSPF的邻居:

邻居状态为FULL,OSPF配置建立完成 

EBGP的配置

我们接下来实现R2和R3以及R2和R4通过直连网络建立EBGP邻居关系。

R2:
[Huawei]bgp 10
[Huawei-bgp]router-id 10.1.2.2
[Huawei-bgp]peer 10.1.23.3 as-number 20
[Huawei-bgp]peer 10.1.24.4 as-number 20

R3:

[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.3.3
[Huawei-bgp]peer 10.1.23.2 as-number 10
[Huawei-bgp]peer 10.1.5.5 as-number 20
[Huawei-bgp]peer 10.1.5.5 connect-interface LoopBack 0   //向邻居发送BGP报文的源地址更改为LoopBack 0接口的地址

查看R2的BGP邻居情况:

IBGP配置 

配置完了EBGP,我们还要配置IBGP在AS 20中的邻居关系。

R4:

[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.4.4
[Huawei-bgp]peer 10.1.24.2 as-number 10
[Huawei-bgp]peer 10.1.5.5 as-number 20
[Huawei-bgp]peer 10.1.5.5 connect-interface loopback 0

R5: 

[Huawei]bgp 20
[Huawei-bgp]router-id 10.1.5.5
[Huawei-bgp]peer 10.1.3.3 as-number 20
[Huawei-bgp]peer 10.1.3.3 connect-interface loopback 0
[Huawei-bgp]peer 10.1.4.4 as-number 20
[Huawei-bgp]peer 10.1.4.4 connect-interface loopback 0

查看R5的BGP邻居情况:

BGP访问设置

通过设置,使得AS 20内的路由器只能访问AS 10的R1的Loopback0口。我们可以在R2上面仅宣告R1的环回口:

R2:
[Huawei]bgp 10
[Huawei-bgp]network 192.168.1.0 24

R5的所有环回口以Network方式宣告进BGP。

 R5:
[Huawei]int LoopBack 1
[Huawei-LoopBack1]ip add 172.16.0.1 24
[Huawei-LoopBack1]int loopback 2
[Huawei-LoopBack2]ip add 172.16.1.1 24
[Huawei-LoopBack2]int loopback 3
[Huawei-LoopBack3]ip add 172.16.2.1 24
[Huawei-LoopBack3]int loopback 4
[Huawei-LoopBack4]ip add 172.16.3.1 24
[Huawei-LoopBack4]q
[Huawei]bgp 20
[Huawei-bgp]network 172.16.0.0 24
[Huawei-bgp]network 172.16.1.0 24
[Huawei-bgp]network 172.16.2.0 24
[Huawei-bgp]network 172.16.3.0 24

BGP精准聚合

在R5上配置BGP的精准聚合后对R5引入的BGP路由做精确聚合,需要抑制明细路由的发布,而且需要让聚合后的路由可以携带明细路由的AS-Path。

R5:

[Huawei]bgp 20
[Huawei-bgp]aggregate 172.16.0.0 22 as-set detail-suppressed 
//对as-set携带的明细路由的as-Path,detail-suppressed抑制明细路由

现在在R3和R5上查看下BGP路由表:

R5:

R3:

 我们发现明细路由被抑制了,聚合后的路由携带了明细路由的AS-path

访问路径选择 

通过BGP路由属性控制,使得R2访问聚合路由优先选择R4访问;使得R5访问R1的Loopback0口优先选择R4访问。上述需求不能通过控制BGP公认必遵属性来实现:

MED修改

R2优先访问聚合路由优先选择R4的路径,我们通过对R3进行修改:

R3:

[Huawei]acl 2000

[Huawei-acl-basic-2000]rule permit source 172.16.0.0 0
[Huawei-acl-basic-2000]q
[Huawei]route-policy med permit node 10
Info: New Sequence of this List.
[Huawei-route-policy]if-match acl 2000
[Huawei-route-policy]apply cost 10
[Huawei-route-policy]bgp 20
[Huawei-bgp]peer 10.1.23.2 route-policy med export 

在R2上查看BGP路由表:

优先级修改

R5访问R1的环回口优先选择R4访问,我们可以修改本地的优先级,但是要保证下一跳可达!!!

R3: 

 [Huawei]bgp 20
[Huawei-bgp]peer 10.1.5.5 next-hop-local

R4:

[Huawei]bgp 20
[Huawei-bgp]peer 10.1.5.5 next-hop-local
[Huawei-bgp]q
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule permit source 192.168.1.0 0
[Huawei-acl-basic-2000]q
[Huawei]route-policy lp p    
[Huawei]route-policy lp permit node 10
Info: New Sequence of this List. 
[Huawei-route-policy]if-match acl 2000
[Huawei-route-policy]apply l    
[Huawei-route-policy]apply local-preference 120
[Huawei-route-policy]bgp 20
[Huawei-bgp]peer 10.1.5.5 ro    
[Huawei-bgp]peer 10.1.5.5 route-policy lp export 

观察R5的bgp路由表:

最后就是完成互相访问,R1和R5环回口们互通,我们在R2的ISIS中引入BGP路由:

R2:
[Huawei]isis
[Huawei-isis-1]im    
[Huawei-isis-1]import-route b    
[Huawei-isis-1]import-route bgp 

这是R1中运行ISIS的路由表 

Ping通

 最后,抓包,抓R4与R5的互联接口后开ping:

ping前,我们可以先看一看BGP的一个报文情况:

我们可以看到OSPF的HELLO报文的传输,以及TCP协议握手和携带的BGP报文

 Ping通!!!

后续 

BGP是不可或缺的一个协议,跨域访问离不开BGP,后续的VPN等配置仍然需要BGP来实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/212066.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王道p149 9.设树B是一棵采用链式结构存储的二叉树,编写一个把树 B中所有结点的左、右子树进行交换的函数。(c语言代码实现)

本题代码如下 void swap(tree* t) {if (*t){treenode* temp (*t)->lchild;(*t)->lchild (*t)->rchild;(*t)->rchild temp;swap(&(*t)->lchild);swap(&(*t)->rchild);} } 完整测试代码 #include<stdio.h> #include<stdlib.h> typed…

Java之《ATM自动取款机》(面向对象)

《JAVA编程基础》项目说明 一、项目名称&#xff1a; 基于JAVA控制台版本银行自动取款机 项目要求&#xff1a; 实现银行自动取款机的以下基本操作功能&#xff1a;读卡、取款、查询。&#xff08;自动取款机中转账、修改密码不作要求&#xff09; 具体要求&#xff1a; 读卡…

Java 算法篇-深入理解递归(递归实现:青蛙爬楼梯)

&#x1f525;博客主页&#xff1a; 小扳_-CSDN博客 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 递归的说明 2.0 用递归来实现相关问题 2.1 递归 - 阶乘 2.2 递归 - 反向打印字符串 2.3 递归 - 二分查找 2.4 递归 - 冒泡排序 2.5 递归 - 冒泡排序2.0 2.6 递归 - 插…

【腾讯云 HAI域探秘】StableDiffusionWebUI一小时搞定100张设计图

目录 前言一、选择 HAI部署的优势二、HAI 搭建AI绘图服务实现思路三、生成设计图操作流程1、新建HAI应用2、StableDiffusionWebUI&#xff08;1&#xff09;功能介绍&#xff08;2&#xff09;页面转中文&#xff08;3&#xff09;线稿生成图 四、部署StableDiffusionWebUI服务…

【附代码】判断线段是否相交算法(Python,C++)

【附代码】判断线段是否相交算法&#xff08;Python&#xff0c;C&#xff09; 文章目录 【附代码】判断线段是否相交算法&#xff08;Python&#xff0c;C&#xff09;相关文献测试电脑配置基础向量旋转向量缩放向量投影推导 点乘定义推导几何意义 叉乘定义推导几何意义 判断线…

怎样用AIDL Service 传递复杂数据

大家都知道在Android中通过AIDL可以跨进程调用Service中的数据&#xff0c;网上也有很多实例&#xff0c;但是大部分实例都是关于基本数据类型的远程调用&#xff0c;很少讲到复杂数据的调用&#xff0c;今天我用一个例子来演示一下怎样用AIDL Service 传递复杂数据。 我们分2…

【神印王座】龙皓晨美妆胜过月夜,魔神皇识破无视,撮合月夜阿宝

Hello,小伙伴们&#xff0c;我是拾荒君。 《神印王座》国漫第82集已更新&#xff0c;拾荒君和大多数人一样&#xff0c;更新就去看了。魔神皇枫秀&#xff0c;威严凛然&#xff0c;突然空降月魔宫&#xff0c;整个宫殿都在这股无与伦比的强大气息中颤栗。为了顺利躲避魔神皇的…

延时任务定时发布,基于 Redis 与 DB 实现

目录 1、什么是延时任务&#xff0c;分别可以使用哪些技术实现&#xff1f; 1.2 使用 Redis 和 DB 相结合的思路图以及分析 2、实现添加任务、删除任务、拉取任务 3、实现未来数据的定时更新 4、将数据库中的任务数据&#xff0c;同步到 Redis 中 1、什么是延时任务&#xff…

【工具栏】热部署不生效

目录 配置热部署&#xff1a; 解决热部署不生效&#xff1a; 首先检查&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 配置热部署&#xff1a; https://blog.csdn.net/m0_67930426/article/details/133690559 解决热部署不…

深入理解JVM 类加载机制

深入理解JVM 类加载机制 虚拟机如何加载Class文件&#xff1f; Class文件中的信息进入到虚拟机后会发生什么变化&#xff1f; 类加载机制就是Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机…

6.2.SDP协议

那今天呢&#xff1f;我们来介绍一下sdp协议&#xff0c;那实际上呢&#xff1f;sdp协议非常的简单。我们如果拿到一个stp的文档去看的话&#xff0c;那你要分阅里边的所有的内容会觉得很枯燥&#xff0c;但实际上呢&#xff0c;如果我们按照这张图所展示的结构去看stp的话。你…