引言
我之前写过一篇介绍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 24R2:
[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 24R3:
[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 32R5:
[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.0R4:
[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.0R5:
[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 20R3:
[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 0R5:
[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-localR4:
[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来实现。