HCIP第八天

  • 同OSPF和RIP相同使用network命令宣告路由,但BGP和OSPF和RIP不同的是BGP可以宣告自己路由表上任意一条路由,需要注意的是:BGP宣告的条目必须同本地路由表中的记录完全一致。

  • 本地BGP表里存放着本设备所宣告的和所有从其他对等体出收到的路由信息,路由信息主要包括目标网段和掩码,还有各种属性,下面只展示了一部分属性

Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.0/24 0.0.0.0 0 0 i

Network:目标网段和掩码 nexthop:下一跳IP地址,在EBGP关系间发送路由信息时,谁发给我,nexthop就是谁,由于1.1.1.0/24的路由信息是本地宣告,所以为0.0.0.0 MED:本地宣告到BGP中的路由会携带原协议的开销值,通过MED属性携带。 LocPrf、PreVal:这里先不用了解 Path:即AS-PATH属性,用于EBGP水平分割,记录该路由信息所经过的AS编号。AS号的添加,在EBGP邻居间发送路由时进行的,这里由于本地宣告,并没有显示AS号。 Ogn:起源属性:以什么方式进入BGP的,1.BGP宣告本地路由表中路由:i,2.本地路由表中IGP路由重发布到BGP协议:?,3.将本地路由表中EGP路由重发布到BGP协议:e,这里1.1.1.0/24是本地宣告,所以标:i *>:该路由的状态码: *:代表可用, BGP设备每收到一条路由信息,都会通过路由表查询检查其下一跳属性的可达性,如果下一跳的地址是可达的,则代表该路由可用,不可达则不可用,不可用的路由无法加表。 ’>’: 代表优选,当收到多条到达相同网段的路由信息时,BGP将会在其中根据路由属性选择最好的最为优选路由,只有优选的路由才会被加载到路由表中,并且传递给其他BGP对等体。不优选的则不传递,不加表。

R2收到路由信息也会发给它其他所有的对等体,由于BGP的AS-BY-AS特性路由信息在IBGP间传递时,属性并不会发生改变,查看R3的BGP表发现1.1.10/24路由的状态码只有一个:i,说明它不可用,这是为什么?因为该路由信息的下一跳对于R3来说不可达,12.1.1.1属于R2的直连网段,R2并没有将它宣告在IGP中,所以该路由的状态为不可用,下一跳不可达则不可用。 状态码i ,代表该路由信息是从IBGP对等体处学来的路由。

虽然路径属性默认在AS内部传递时,不会自动修改,但可以手工修改

[r2]bgp 2 [r2-bgp]peer 3.3.3.3 next-hop-local --- 配置该命令后,本地会将发往 3.3.3.3对等体的路由的下一跳修改为本地

  • 查看R4的BGP表时发现R4没有收到1.1.1.0/24这条路由,这是因为IBGP水平分割,从IBGP对等体处学到的路由不能传递给其他IBGP对等体,所以R3不能将从R2学到的路由信息发送给R1,这里我们让R2和R4间也建立IBGP关系,使R2直接将路由信息发送给R4。

[r2]bgp 2 [r2-bgp]peer 4.4.4.4 as-number 2 [r2-bgp]peer 4.4.4.4 connect-interface l [r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0 [r2-bgp]peer 4.4.4.4 next-hop-local

[r4]bgp 2 [r4-bgp]peer 2.2.2.2 as-number 2 [r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0 [r4-bgp]peer 2.2.2.2 next-hop-local --- 由于R4也存在EBGP对等体,所以R4需要将从EBGP对等体处学到的路由信息的下一跳修改为本地后再发送给R2。

BGP的路由悖论
  • 将R5的环回宣告到BGP中,查看R4的BGP表

  • 发现R4有R5的环回的路由信息,但该路由不可用,这是为什么?下一跳可达就应该是可用的,这是因为这里产生产生了一个逻辑悖论,R4是通过5.5.5.0/24的静态路由和R5建立对等体关系的,而此时R5又发送了一条5.5.5.0/24网段的路由信息给R4,这就是我和你建邻是为了学到可以和你建邻的路由。

  • 由于逻辑悖论,该路由不可用也就不能传递,但虽然R4上有去往5.5.5.0/24网段的静态,但R4的其他邻居没有呀,所以需要将该路由变为可用且优,产生逻辑悖论的原因是本地用来建邻的静态路由和R5传来的路由网段是相同的,所以我们可用修改本地静态路由,将之修改为去往5.5.5.5/32的静态主机路由。

  • 路由悖论产生的原因是因为建邻时采用环回接口建邻,写了一条静态路由指向对方,静态路由的优先级高于BGP学到的路由所以,BGP学到的路由不是最优解产生悖论

[r4]undo ip route-static 5.5.5.0 24 45.1.1.2[r4]ip route-static 5.5.5.5 32 45.1.1.2

重发布 – 批量宣告
  • 当通告的路由数量较大时,使用network逐条发布效率较低,则可以通过重发布的方法来批量发布路由

[r2]bgp 2 [r2-bgp]import-route ospf 1

BGP的MED
  • 在BGP协议中进行宣告时,是宣告本地路由表中任意路由,不关注这些条目的产生方式;默认将携带本地到这些路由的cost值到BGP的路由条目中去;若本地将本地宣告的BGP路由传递给本地的EBGP邻居,将携带这些cost,便于本地的EBGP邻居所在AS内部设备选路,当然这些路由在进入其他AS时不会修改度量;

  • 若本地通过IBGP邻居学习到了BGP路由,优且存在cost值,在本地将这些路由传递给本地的EBGP邻居时,将cost值归0,因为这些度量不是本地产生的。

BGP的路由聚合
自动聚合

自动聚合只能对重发布在BGP中的路由生效

  • 华为设备中默认关闭了自动汇总,需要我们手动开启

[r1-bgp]summary automatic

  • 查看R1的BGP表,发现本地BGP表依然存放着明细路由,但状态码前有一个s,s代表抑制,一旦路由前面的状态码中添加S标记,则代表该路由被抑制,将不再加标和传递。自动聚合完成后会自动生成一条指向汇总的空接口路由进行防环。

手动聚合
  • 由于自动聚合的问题: 1,只能聚合到主类,不可控导致产生路由黑洞;2,只能对重发布的路由生效。所以我们更多的是采用手动聚合。在R1上关闭自动汇总,使用手动聚合。

[r1-bgp]aggregate 172.16.0.0 23

  • 查看R2的BGP表,发现R2不仅收到了聚合后的路由信息,同时也受到了明细路由信息。这是由于手工聚合没有抑制明细路由,导致传递的路由条目没有减少,反而增加

    [r4-bgp]aggregate 172.16.0.0 22 detail-suppressed # 在聚合路由的同时抑制所有明细路由

抑制策略

手工聚合不能自动抑制明细路由,需要我们手工配置,但是,因为BGP协议的特殊性,导致在一些环境下,往往不能将所有明细路由全部抑制,所以,我们在做BGP的聚合时,往往仅抑制一部分路由信息,而实现这个效果,需要用到suppress - Policy。

1,先抓取需要抑制的流量

[r4]ip ip-prefix bb permit 172.16.0.0 24

2,使用路由策略匹配流量

[r4]route-policy bb permit node 10

Info: New Sequence of this List.

[r4-route-policy]if-match ip-prefix bb

3.使用抑制策略进行调用

[r4-bgp]aggregate 172.16.0.0 22 suppress-policy bb

防止聚合后属性丢失
  • 聚合后的路由器会将其他EBGP中学到的路由的path属性消除改为自己的path因为聚合后的路由存在属性丢失的情况,所以,这样的汇总路由需要格外关注。

我们可以用通过激活AS_SET关键字使汇总路由携带明细路由的AS_PATH属性。激活后可用看到汇总路由的path为{1 4},这代表着明细路由是来自AS:1和AS:2的,这样明细路由的所有原AS就不会接收这条聚合路由信息

Atomic-Aggregate及Aggrator

ATOMIC_AGGREGATE ---- 纯粹的预警属性,聚合路由将会携带(只有将所有明细路由全部抑制的汇总路由才会携带),意图是提醒该路由为聚合路由,可能存在属性丢失问题。 AGGRGATOR ---- 将会记录执行汇总路由器所在的AS号及RID。

BGP的反射器与联邦
  • 由于IBGP水平分割,导致本地需要和所有本AS内部的BGP设备建立IBGP邻居关系;IBGP邻居关系的数量成指数上升,所以下面介绍另外两种打破水平分割的方式:反射器和联邦。

反射器
  • 我们可以将一台IBGP设备配置成为路由反射器(RR),被配置为路由反射器的设备在一定条件下将从IBGP邻居处学到的BGP路由传给其他BGP邻居。

  • 在我们指定一台设备成为路由反射器RR的同时,必须指定一个或者多个邻居成为他的客户,RR和客户之间构成的系统我们称为反射簇,每一个簇设定一个簇ID,簇ID为反射簇中RR的RID,其他没定义为客户的邻居被称为非客户

[r3]bgp 2345

[r3]peer 2.2.2.2 reflect-client # 指定R3为RR,且R2为R3的客户,其他未指定的IBGP邻居为非客户

reflect反射

反射规则
  • 如果路由反射器从自己客户处学来一条IBGP路由,则他将反射给自己所有的客户和非客户。

  • 如果路由反射器从自己非客户处学来一条IBGP路由,则他将反射给自己所有的客户,但是不反射给非客户。非非不传

  • 当路由器在进行路由反射时,只反射自己BGP路由中最优的路由。

反射器中的防环属性

由于IBGP水平分割是用来防止AS内部路由环路,而路由反射器打破了IBGP水平分割,则将有可能出现路由环路,所以为了避免环路的出现,路由反射器在设计的时候,专门引入了两个属性,来避免环路从产生: Originator_ID(起源者ID)、Cluster_list(簇列表)

Originator_ID – 起源者ID

如果RR从IBGP邻居处学到的路由没有携带该属性,则将再该路由信息上添加该属性,谁发送给RR的路由信息,Originator_ID就是谁的RID,如果RR从IBGP邻居处学到的路由携带该属性,则不修改该属性。当一台设备收到的IBGP路由信息后,发现里面的Originator_ID是自己的RID,则不接受这条路由信息。

  • 但只是使用起源者ID不能完全解决环路的问题,如下图中,虽然起源者不会接收回传的路由,但其他已拥有该路由的设备呢?所以还需要另一个属性帮助防环—Cluster_list(簇列表)。

Cluster_list – 簇列表

一个AS内部存在多次反射的话,那么,一定存在多个反射簇,则每个RR在放射路由信息的时候,会在路由信息中的簇列表属性中加入本地的RID。

  • 如果收到的IBGP路由信息的Cluster_list中包括自己的RID则不接收该路由

注意: 这两个属性,只是用来在IBGP内部进行防环的,所以,当这些路由被传递到EBGP对等体时,将不携带这两属性。RR在进行路由反射时,除了会在路由信息中添加以上两个属性外,其他属性不变。

联邦

将一个AS划分为多个小AS,小AS间就可以使用EBGP路由传递规则,所以联邦就相当于大AS里的小AS,不过联邦EBGP关系之间仅继承EBGP之间路由传递的规则,但是不能像EBGP对等体一样修改路由属性,还需要遵守AS-BY-AS规则,是一种特殊的存在

[r3]bgp 64512 # 联邦内运行BGP的设备在运行BGP时需先指定联邦(小AS)号,以免后面忘记有联邦的存在 [r3-bgp]router-id 3.3.3.3 # 指定RID [r3-bgp]confederation id 2 # 声明自己的大AS号(真实所在的AS号) [r3-bgp]peer 1.1.1.1 as-number 64512 # 联邦成员建立IBGP邻居关系时使用小号 [r3-bgp]confederation peer-as 64513 # 需要建立联邦的EBGP对等体关系时,需要先声明对方的小号 [r3-bgp]peer 4.4.4.4 as-number 64513 [r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0 [r3-bgp]peer 4.4.4.4 ebgp-max-hop 2 # 联邦间使用EBGP路由传递规则,所以,默认的TTL值1,使用环回建立时需修改

confederation联盟

联邦的防环

同反射器一样,打破了IBGP水平分割,有可能会造成环路,所以联邦也需要解决环路问题。联邦EBGP之间防环可以直接采用EBGP水平分割的机制来进行防环,直接在AS_PATH属性中增加联邦AS号来进行防环,只不过,联邦的AS号会使用括号括起来,来进行区分。

<r3>display bgp routing-table

BGP Local router ID is 172.16.1.1 Status codes: * - valid, > - best, d - damped, h - history, i - internal, s - suppressed, S - Stale Origin : i - IGP, e - EGP, ? - incomplete

Total Number of Routes: 6 Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 10.0.0.0/24 172.16.0.1 0 100 0 1i *>i 11.0.0.0/24 172.16.130.1 0 100 0 (64513) 3i *>i 12.1.1.0/24 172.16.0.1 0 100 0 i *>i 78.1.1.0/24 172.16.130.1 0 100 0 (64513)i *>i 172.16.0.0 172.16.0.1 100 0 ?

  • i 172.16.130.1 100 0 (64513)?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值