BGP知识点

  • Post author:
  • Post category:其他


AS:自治系统:独立的技术/管理域

(范围1-65535)64512-65535私有AS号范围。

BGP:(v4)是EGP的一种。EGP:外部网关协议

运行在不同的AS之间,用于路由的控制/策略。

是对网管

应该使用BGP的情况:

1、ISP:

当允许AS1的数据包穿越AS2,但是不允许AS1的用户访问AS2的时候;

本AS是一个穿越区域。

2、multihome /多宿主:

对于一个用户的AS,如果他们同时连觉到多个AS/ISP;

3、当需要对BGP路由/数据,进行认为控制/操作的时候。

不应该使用BGP的情况:

1、只有一条isp连接。

2、如果网络硬件设备的档次不够

3、对BGP理解有限。

4、链路带宽不足

各种路由协议的更新方式:rip-触发,周期性更新

Eigrp-增量,触发更新

Ospf-周期,触发更新

Bgp-单播更新,触发,增量,bgp邻居建立在tcp179端口上,tcp永远为单播

Deny所有BGP包的列表写法:

Access-list 101 deny tcp any eq bgp any

Access-list 101 deny tcp any any eq bgp

Access-list 101 per ip any any

Deny所有RIP包的列表:

access-list 101 deny udp any eq rip any eq rip

Deny所有EIGRP包的列表:

accesss-list 101 deny eigrp any any

Deny所有OSPF包的列表:

accress-list 101 deny ospf any any

Bgp特性:

a. BGP是DV协议。

a. BGP用的是可靠传输,工作在TCP/IP协议的4层之上:运行在TCP的179端口上

b. 触发,增量更新

c. 周期性的keepalive的消息(主要用于维持邻居关系,默认60S发一次)

d. 丰富的度量值,来衡量路径的优劣。BGP属性/attribute

e. 可以组建可扩展的巨大网络

Igp的特性:

a. 它执行拓扑发现

b. 它尽力完成快速收敛

c.它需要周期性的更新来确保路由选择信息的准确性

d. 它受同一个管理机构的控制

e.它采取了共同的路由选择策略

f.它提供了有限的路由控制能力

BGP tcp6

RIP udp520 17

OSPF 89

EIGRP 88

ICMP 1

IGP控制路由的方法:distribute-list;PBR;distance;修改metric;等等。。

IGP不适合当域间路由选择协议的原因:

一种域间路由选择协议应该能够提供广泛的策略控制,当前缀的数量处于internet的水平时,IGP的路由的周期性刷新特征是不具有扩展能力的。


1、BGP的一些特性以及BGP的三张表

各种路由协议的表:

Rip:数据库,路由表

Eigrp:邻居表,拓扑数据库,路由表

Ospf:邻居表,lsa数据库,路由表

Bgp:邻居表,bgp转发表,路由表

BGP的扫描时间为60秒,这就是为什么BGP自己NETWORK还会等一段时间才出现。

下一跳在BGP中代表下一个AS

BGP的消息类型:

Open 协商:包含hold time 和路由ID 还有一些BGP的能力。

KEEPALIVE:

Update 每条路径的信息

包含每条路径的属性

Nouification:错误信息

2. EBGP和IBGP的比较,各有哪些需求,解决IBGP路由黑洞问题的几种方法。解决IBGP同步的几种方法。IBGP和EBGP防环的方法。

EBGP:邻居之间具有不同的AS号

IBGP:邻居之间具有相同的AS号

IBGP设计出来的目的是为了减少核心IGP路由条目的数量。

BGP的基本命令:

Router bgp 1

No auto-summary

No syn

Bgp router-id 2.2.2.2

EBGP

Nei 1.1.1.1 remote-as 1

Nei 1.1.1.1 update-source lo 0

Nei 1.1.1.1 ebgp-multihop

BGP的几个特殊命令:

(config-router)#Nei 1.1.1.1 disable-connected-check

关闭BGP直连检测,默认情况下,当建邻居的TTL值为1时会自动检测建立邻居的地址和我的入接口地址是不是同一网段,如果不是同一网段将不能建立tcp连接,如果是同一网段将可以建立连接。当TTL值大于1时将不会检测。

R1:router bgp 2

No au

No syn

Bgp router-id 1.1.1.1

Nei 2.2.2.2 remote-as 2

Nei 2.2.2.2 update-source lo 0

Nei 2.2.2.2 disable-connected-check

Ip route 2.2.2.2 255.255.255.255 s 0/0

R2: router bgp 2

No au

No syn

Bgp router-id 1.1.1.1

Nei 1.1.1.1 remote-as 2

Nei 1.1.1.1 update-source lo 0

Nei 1.1.1.1 disable-connected-check

Ip route 1.1.1.1 255.255.255.255 s 0/0

(config-router)#Nei 1.1.1.1 ttl-security hops 250

表示我发给邻居的包TTL为251,收到的包TTL为大于或等于250,满足这个条件就可以建立邻居。主要用于TTL的安全。

Show ip bgp rib-failure

查在路由表竞争中失败的路由

在IBGP的情况下,neighbor 一个不存在的地址,会卡在active 状态。

Nei命令的还以:我用我自己的更新源去访问对方的179端口。

我允许对方用访问我的179端口。

IBGP同步:从IBGP学到的路由要从IGP也学到

BGP的扫描时间为60秒

可以关闭同步的情况:

⑴重分布BGP路由进IGP

⑵在数据包的走向上所有的路由器都运行BGP

⑶末节AS的IBGP中可关闭

关同步,使其同步:关闭同步的检测机制,使BGP表最优,放进路由表是RIB和BGP表同步。

解决同步的方法:

⑴tunnel

⑵mpls

IBGP同步中的特殊情况:当IGP是OSPF时,从OSPF学到这条路由的ROUTER-ID和从IBGP学到的这条路由的ROUTER-ID是否相同,如果相同则可优化,若不相同则不能优化。

R1: router ospf 110

router-id 1.1.1.1

log-adjacency-changes

network 192.12.1.0 0.0.0.255 area 0

network 192.13.1.0 0.0.0.255 area 0

!

router bgp 13

no synchronization

bgp router-id 1.1.1.1

network 2.2.2.0 mask 255.255.255.0

neighbor 192.13.1.3 remote-as 13

no auto-summary

R2:

router ospf 110

router-id 2.2.2.2

log-adjacency-changes

no auto-cost

network 2.2.2.0 0.0.0.255 area 0

network 192.12.1.0 0.0.0.255 area 0

R3:

router ospf 110

router-id 3.3.3.3

log-adjacency-changes

network 192.13.1.0 0.0.0.255 area 0

!

router bgp 13

synchronization

bgp router-id 3.3.3.3

bgp log-neighbor-changes

neighbor 192.13.1.1 remote-as 13

no auto-summary

此时在R3上查看BGP表:

Network Next Hop Metric LocPrf Weight Path

* i2.2.2.0/24 192.12.1.2 65 100 0 i

R3上的路由为不优化,原因是比较了R2 OSPF的router-id和R1的bgp router-id不相同。

EBGP防环:as-path

IBGP防环:1.水平分割:从IBGP学来的路由不会在发给另一个IBGP邻居

2.下一跳防环:收到一条路由,这条路由的下一跳是我本身的一个地址我就会不接收它。从EBGP学到的一条路由,再传给IBGP邻居时,保留其下一跳。

将路由引进BGP下一跳有两种情况:○1从直连引入的为4个0

○2从IGP引入的为IGP的下一跳地址

IBGP防环的特例:当IBGP邻居用直连接口连时,IBGP邻居会接收下一跳为自己的路由,在发出去时会自动将下一跳改为自己。


3. NEI和NETWORK语句的含义,以及邻居的flaping,下一跳在多访问网络中的实现

Neighbor命令的含义:○1本路由器以更新源地址去访问neighbor后面这个地址的179端口,是否可以建立TCP链接要看对方是否允许我的更新源来访问它

○2允许邻居用这个地址来访问我的179端口,但没有指明访问本路由器的哪个地址,只检查源地址

Update-source:所有BGP的数据包都以这个地址来发送

注:路由器建立BGP邻居写两条正确的neighbor命令,是为了冗余。主动发包的时候不能使用默认路由,可以使用静态路由主动发包,默认路由可用来回包。所以说建立BGP邻居不能在两端使用默认路由,只能有一端使用默认路由。

(config-router)#Nei 2.2.2.2 transport connection-mode {active/passive}

设置建立邻居的模式,active为主动建立邻居关系:从我这边发起连接,对方的为179端口。Passive为被动模式:从对方发起连接,我这边的为179端口。

BGP中的network:宣告路由表里的有的路由,除了BGP的路由。

引入路由的方式:重分布与network

路由边界:将要发出的路由与出接口比较,若是不同主类,开启了auto-summary则会自动汇总。

Bgp的Auto-summary会影响2种情况:

1. 在做重分布路由到BGP中是,若自动汇总启动,如果你通告的是一个非主类网络,会将这个非主类网络汇总成主类网络。

2. 假如当你的路由表中的IGP路由有一个10.0.0.0/24,你NETWORK 10.0.0.0/8这个主类网络,若此时你的配置为NO AUTO-SUMMARY时,这个主类网络不会被通告出去。


邻居的flaping:

R1和R2运行RIP和EBGP。BGP用环回口建邻居。

然后将R1的环回口也通告进BGP,此时R2就可以从EBGP邻居学到一条2.2.2.0/24,然后放进路由表,因为其AD为20,小于RIP的120.等待BGP的扫描时间到了以后,会检测出去2.2.2.0/24的下一跳为2.2.2.2,出现递归查找错误,然后BGP会在BGP表里删除该路由,邻居就DOWN了。这时路由表中RIP的路由出现,这时邻居又可达了。邻居可达后,BGP路由又会进入路由表,扫描时间一到后又会发现递归查找错误。这样邻居就出现了flaping。

做这个实验时最好在R2上输入:nei 1.1.1.1 timers 10 30


下一跳的flaping:

解决下一跳不可达的方法:

○1next-hop-self

○2重分布

○3静态路由

○4宣告IGP+passive

所有EBGP邻居之间用直连建立邻居关系,IBGP用环回口建立邻居关系,在R4上将44.44.44.0/24通告进BGP,此时R1收到的2条IBGP路由,下一跳不可达都不能优化,因为R2和R3从EIBP学来的路由再传给IBGP路由后会保留其下一跳。此时在R3上对R1指next-hop-self,接着R1上走R3的这条路由就优化了。接着在R4上通告R2和R4直连的网段通告进BGP,此时R1上的走R2的44.44.44.0/24这条路由下一跳可达了,选择这条路由为最优的,因为其AS-PATH更短,等到BGP扫描时间到了后,会检查到i192.24.1.0 192.24.1.4,出现递归查找错误。然后BGP会将最优的路由下一跳选择为3.3.3.3。过了一分钟后又发现从R2走的路由AS-PATH更短,下一跳为192.24.1.4的路由又优了。就这样出现了下一跳的flaping,一旦查到递归查找错误就选择下一跳为3.3.3.3,一旦查到AS-PATH就

选择下一跳为192.24.1.4

如何在internet的一台路由器上查看是否有flaping的路由:

Show ip bgp summary 后会看到BGP table version is 37, main routing table version 37。看这个table version是否会周期性的增大。因为每条路由都有一个table version,当路由有变化时,table version变会加1。

下一跳在多访问网络中的实现:

R2与R1是IBGP邻居,R1与R3是EBGP邻居,在R2上network 22.22.22.0/24,然后在R3上查看这条路由的下一跳。是否会产生第3方下一跳。

R1R2R3全部用直连接口建邻居 产生

R1 R2用环回口 R1/R3用直连 产生

R1/R2用直连 R1/R3用回环口 不产生

R1/R2/R3都用环回口的 不产生

第三方下一跳:收到路由更新的源地址与将要发出去的接口地址在同一网段的时候,路由的下一跳不改变,为原来路由更新的源地址。

若没有产生第3方下一跳,有3种解决方法:

○1next-hop-unchange只能在EBGP多跳的情况下使用

○2PBR:只能改变数据包的走向,不能改变路由

○3R1:nei 3.3.3.3 route-map a out

Route-map a per 10

Match ip add 1

Set ip next-hop 193.1.1.2

Route-map a per 20

Access-list 1 per 22.22.22.0/24

ICMP重定向只对主机有用,对路由器没有影响,因为路由器只会查路由表。

4. BGP的各种包,以及建邻居的各种状态,keepalive time

BGP的各种包:open , keepalive , update ,notification

BGP如何删除路由:在update包中带一个withdrawn字段,告诉邻居。

IBGP两个更新之间的间隔为5秒,EBGP两个更新之间的间隔为30秒

修改命令:nei 1.1.1.1 advertisement-interval 60

BGP默认的keepalive默认为60秒,hold为180。

修改单个邻居命令:nei 1.1.1.1 timers 60 180 修改所有邻居:timers 60 180

结论:Bgp 2 端的keeplive 时间可以是不相同的! 但是holdtime时间必须是相同的!

两端协商,首先协商出一个小的hold-time,作为两端共同的holdtime,然后用holdtime除以3,得到一个参考keepalive值。如果本端设置的keepalive值小于等于参考keepalive,那么就用本端设定的keepalive值;如果本端设置的keepalive值大于参看keepalive值,那么本端就用参考keepalive值作为自己的keepalive值。假如holdtime设置为0,将不会周期性发送keepalive报文。

建立邻居的各种状态:

Idle→connect →active→ send →opensent →openconfirm→ established

5. BGP聚合路由以及各参数

1. 手工写静态,并将静态引入BGP

缺点:当所有明细路由丢失后,该汇总路由还是存在,不会动态适应网络的变化。

2. aggregate

聚合路由的2个属性:aggregator-指出聚合路由执行者的AS号及router-id

Atomic-aggregate-指出该聚合路由丢失了一些路由属性

参数:summary-only 所有明细路由都会被拒绝

As-set 聚合路由继承明细路由的属性,包括:

as-path;

local_preference(如果有2个明细路由,一个优先级为100,一个优先级为200,将继承数值最大的那个优先级);

community(若有多个community属性,都将继承);

origin-code(如果有2个明细路由,如果相同,是什么就是什么

一个源代码是I,一个源代码是?,那么继承的是?

一个源代码是?,一个源代码是E,那么继承是?

一个源代码是I,一个源代码是E,那么继承的是E );

Supperss-map 指定要抑制的路由

Advtise-map 专门为advtise-map里匹配的路由进行聚合。和as-set合用时,指只继承advtise-map里匹配路由的属性。如果使用summary-only那么只要包含在该聚合路由内的路由都会被抑制。

Nlri {multicast | unicast} 指这条聚合路由是给IPv4单播使用的,还是给IPv4组播使用的。

attribute-map或route-map 设置聚合路由的属性,两个参数的作用一样,当写成route-map后,在配置表里会自动变成attribute-map

如果设置了AS-SET,然后又设置了route-map。并且2个设置出现了相同的地方,这时就会route-map起作用,策略优先。

Nei 1.1.1.1 unsuppress-map 对特定的邻居解除抑制特定的路由

6. BGP的各种属性,BGP选路原则,以及路由最优的必要条件

同步:

为了避免在一个AS内部,在没有运行BGP的路由器上没有路由,造成路由黑洞。同步检测会检测出路由黑洞,不会让路由在bgp转发表中最优。

当从IBGP邻居学来的路由,同时要从IGP学到这条路由这样的话,这条路由就满足了同步的条件。

当我们的IGP路由是OSPF的时候,除了要检测同步条件意外,从bgp学到的路由的rid和ospf的rid要相同。

关闭同步,使其同步。

关闭同步检测机制,使从Ibgp邻居学到的路由,可以立即最优。使BGP转发表和路由表同步。

什么时候可以关闭同步:(关闭同步可以加快BGP的收敛。)(同步只针对IBGP邻居)

1、在数据包的走向上面的所有录取上都运行BGP,这样路由器都有去往目的地的路由。

2、当我们从BGP学到的路由,从IGP也学到了。

3、末节AS可以关闭同步。

其他方法:GRE隧道间bgp邻居、用MPLS。

属性:下一跳,在BGP中,在一跳是下一个AS。

本地始发路由的下一条:自己直连的是0.0.0.0 IGP的路由是IGP的下一跳。

在IBGP中传递的情况:传递过程中,不改变下一跳(当下一跳为0.0.0.0)

在EBGP中传递的情况:一般会改变下一跳。会将下一跳改为对方的跟新源。


BGP的下一跳指到下一个AS的地址。一般是邻居的更新源地址。当将从EBGP邻居收到的路由发送给IBGP邻居时,下一跳将不改变,仍为指向EBGP邻居的更新源地址。这时有可能会产生下一跳不可达的问题。从而产生路由不是最优化的现象。

?? 解决下一跳不可达的方法:

?? a.静态路由

?? b.在IBGP邻居所处的IGP中宣告

?? c.将与EBGP直连的网络重分布进IGP

?? d.neighbor x.x.x.x next-hop-self(将指向EBGP邻居更新源的地址变为自己的更新源地址)(RR有的版本会将下一跳改变)

在EBGP和IBGP的边界。在BGP和igp的边界。

e、用route-map + set ip next-hop

第三方下一跳:

Bgp bestpath compare-routerid

在BGP选路时可以用来跳过最老的EBGP邻居选择,直接比较router-id。

1. weight

思科私有属性,本地有效,取值范围:0-65535,越大越好。自己通告的为32768,学到的路由为0,weight的route-map只能是in方向,因为本地有效。

设置方法:○1nei 1.1.1.1 weight 10 修改从这个邻居学来的所有的路由的权重值

○2nei 1.1.1.1 route-map a in 修改从这个邻居学来的route-map里匹配上的路由的权重值

Route-map a per 10

Match ip add 1

Set weight 20

Access-list 1 per 11.11.11.0/24

2. local-preference

公有属性,在一个AS内传递,IBGP可在in和out方向上,EBGP可在in方向,越大越好,默认100.

设置方法:○1bgp local-prefrence 200

修改自己产生的和EBGP传过来路由的本地优先级

○2nei 1.1.1.1 route-map a {in | out} 修改route-map匹配上的路由的本地优先级

Route-map a

Match ip add 1

Set local-prefrence 200

Access-list 1 per 11.11.11.0/24

3. 本地起源 network>aggregate>redistribute

路由器本地始发的路径优先。在BGP的转发表里显示为0.0.0.0。

4. as-path

公认必选属性,选择AS-PATH最短的。聚合后继承明细路由的属性,在大括号里面的as-path在计算长度时,只算一个。在联盟内小括号里面的AS号,在选路时,不计算到as-path长度里面。

增加as-path长度:可以用route-map里的set as-path prepend进行添加,如:

Nei 1.1.1.1 route-map a [out | in]

Route-map a per 10

Set as-path prepend 6 7

假如本地AS号为5

在neighbor的out方向上做,加入的AS号在本AS之前,策略优先 :5 6 7 i

在neighbor的in方向上做,加入的AS号在本AS之后: 6 7 5 i。因为当我收到这条路由时,5这个AS号已经附加在AS-PATH中,然后再加上附加的AS号

Set As-path prepend后面还有一个参数last-as,如:

Nei 1.1.1.1 route-map a [out | in]

Route-map a per 10 [out | in]

Set as-path prepend last-as 3

意思是将离我最近的AS,将它的AS号在as-path里面再重复出现几次。这个10看起来可以和allowas-in里面的10对应起来。如果一条路由起源于自己,AS-PTCH为空,那么使用out方向的last-as将不起作用,因为没有任何一个离他最近的AS号。

假如as-path prepend 与as-path prepend last-as合用的时候,last-as先生效,然后prepend再生效。

nei 1.1.1.1 remove-private-as 删除私有AS号,但是当AS-PATH中的公有AS号和私有AS号交替出现时便不能删除私有AS号。

bgp bestpath as-path ignore 忽略AS-PATH选路原则

5. 起源代码

I :network E:egp重分布进BGP的 ?:其他协议重分布进BGP的

i>e>?

设置:route-map a

Set origin {egp | igp | incomplete}

实例:假如有一万条路由,若都要network进BGP,这样工作量太大,不现实。那重分布这些路由,然后再route-map里修改origin为I,这样就像是network的一样。


6. MED

相当于IGP的metric,越小越好。MED可以设置在EBGP的OUT方向,而local-prefrence不能设置在ebgp的out方向。MED为空当作0来算。

MED的传递规则总结:○1自己产生的路由的MED会传给任何一个邻居。

○2从一个邻居(IBGP或EBGP)学来路由的MED,会传给任何一个IBGP邻居,不会传给任何一个EBGP邻居。

将一条路由引入BGP,MED的两种情况:○1直连的为0

○2IGP路由的metric会携带进BGP

将IGP引入BGP时,老的IOS不会自动携带IGP的metric,可在route-map里设置set metric-type internal,让其携带IGP的metric。

设置MED方法:nei 1.1.1.1 route-map a out

Route-map a

Set metric 200

默认情况下,MED只会比较来自同一个AS的路由的MED。

bgp always-compare-med 比较来自任何邻居相同路由的MED。

bgp bestpath med confed 比较来自相同或不同联邦AS的路由的MED

bgp deterministic-med 对多个EBGP邻居来的路由的MED进行分组,只对同组的MED进行比较。不同组之间不比较MED,继续向下比较。

bgp bestpath med missing-as-worst 将MED为空的路由的MED值设为最大。

bgp bestpath med confed missing-as-worst 将联邦内收到为空med的路由的MED设为最大


7. EBGP优于IBGP

收到两条路由,一条的为EBGP邻居学到的,一条为IBGP学到的,这时将优选从EBGP学来的一条。

验证:EBGP优于IBGP是不是由于EBGP的管理距离小于IBGP的管理距离?

结论:EBGP优于IBGP不是因为EBGP的管理距离更小。

实验:收到2条路由,一条来自IBGP邻居,一条来自EBGP。此时将EBGP邻居的管理距离改为201,在BGP转发表里优选的还是EBGP的那条。


8. 最近的IGP邻居

BGP路由比较到达最近的下一跳,越小越优。BGP将路由表里的路由作为如何到达下一跳的路径。

9. 如果配置了maximum-path[ibgp]n ,如果存在多条等价的路由,会向路由表中插入多条路由。

BGP默认maxi值为1,如果存在多条等价路由,即可放入多条路由进路由表,BGP表中还是只有一个最优,只有在前8条选不出来的情况下才能用该命令,默认情况下,只能做EBGP之间的负载,12.4IOS可做IBGP邻居之间的负载。

配置maximum-path命令后出现的特点:

当在做EBGP路由负载后,在将该路由(在路由表里负载的)传给IBGP邻居时会自动将该路由的下一跳改为自己。

当在做IBGP路由负载后,在将该路由(在路由表里负载的)传给IBGP邻居时不会将该路由的下一跳改为自己。


10. 最老的EBGP邻居(EBGP有效)

11. 最低的router-id

12. 多条路径的始发路由器ID相同,那么选择cluster-list长度短的,因为每经过一个RR,cluster-list会加上这个RR的cluster-id(IBGP)

13. BGP优选来自于最低的邻居地址的路由,是BGP的neighbor配置中的那个地址,如果环回口,则看环回口地址的高低。


7. dampening,联邦,反射器,对等体组,正则表达式,默认路由

1. 联邦

bgp confederation identifier 1

对外宣称的大AS号,联盟内的所有路由器都要输入。

bgp confederation peers 65530

告诉自己的联邦ebgp邻居,说明我们之间是联邦EBGP关系。并非所有的联邦路由器需要输入,只要连接了联邦EBGP邻居才需要输入此命令。注意:此处输入的对方的AS号

联邦中的一些特性:

1. 在联邦内部保留联邦外部路由的NEXT_HOP属性

2. 公布给联邦的路由的MED属性在整个联邦范围内予以保留

3. 路由的local-pref属性在整个联盟范围内予以保留,而不只是在分配他们的成员AS内保留

4. 在联盟范围内,将成员自治系统的AS号加入到AS_PATH中,但是并不将它们公布到联盟的范围外。缺省情况下,将成员AS号作为AS_PATH属性类型4-联邦内有序列表的形式在AS_PATH中列出来

5. AS_PATH中的联盟AS号用于避免出现环路,但是当在联盟内选择一个最短的AS_PATH时,可以不用考虑联盟AS号。也就是说联邦AS号不能用于路径选择。

6. 在BGP选路时,不考虑联盟内部路由(在AS_PATH中没有任何外部AS号)的MED值。

7. 联邦的ebgp邻居之间传递路由不改变下一跳,next-hop-self可以用在联邦EBGP邻居之间。

8. Originator和cluster-list只会在联邦内部AS传递,不会传递给联邦EBGP邻居。


总的来说在联邦中体现出来的一些特性,就相当于IBGP里的一些特性。一个联邦就相当于一个AS。


2. RR

IBGP防环:1.ibgp水平分割

2.下一跳

3.cluster-list

4.originator-id

RR的机制:

从非客户学到的路由不能反射非客户,其他的情况都能反射

originator和cluster-list:IBGP内部的属性,不会传出本AS。只有经过RR反射的路由才会携带这个属性。

cluster-id:默认情况下为RR的router-id,可通过bgp cluster-id来修改。当收到一条路由,这条路由的cluster-list包含自己的cluster-id,将不会接收这条路由。

Originator:本AS内部始发路由的router-id,如果一条路由始发于EBGP邻居,那么由哪个路由器引入本AS的,originator就是哪个。

originator-id防环机制:所有路由器在接收路由时,检查originator。

如果这时客户发来的路由,RR在转发时检查originator,如果和我一个IBGP邻居(非客户或客户)的router-id相同,我就不会发给这个邻居。

如果这时非客户发来的路由,RR在转发的时候不检查originator,不管originator是否和我的一个IBGP邻居的router-id相同,都会发给IBGP邻居(其实就是客户,因为非非不反射),然后由IBGP邻居自己来检查originator,如果相同则不接收。

例:

R1,R2,R3,R4之间都互相为IBGP邻居。在R2上通告一条22.22.22.0/24进BGP,禁止R2向邻居R4传递这条路由。在R1,R3上分别做RR,R3是R1的客户,R4是R3的客户。

现在看R4会不会向R2发送22.22.22.0/24这条路由:

○1R3为R4的客户,R2为R4的非客户――――不传

○2R3为R4的客户,R2为R4的客户――――不传

○3R3为R4的非客户,R2为R4的客户――――传

no bgp client-to-client reflection 关闭客户到客户的反射,当客户全互连时可以输入。这个命令默认开启。

对等体组:

主要的作用是为了简化命令

常用命令:

Neighbor duxin peer-group 建立一个组

Neighbor duxin remote-as 12 对组配置策略,对组做的策略只能是out方向的

Neighbor duxin update-source lo 0

Nei duxin prefix-list 2 out

Nei 2.2.2.2 peer-group duxin 将邻居加入一个组


3. ORF(outbound route filter)

R1: neighbor 2.2.2.2 capability orf prefix-list send

neighbor 2.2.2.2 prefix-list 1 in

ip prefix-list 1 seq 5 permit 33.33.1.0/24

R2: neighbor 1.1.1.1 capability orf prefix-list receive

在R1上做过滤,不接收22.22.1.0/24。但一般情况下,R2还是会向R1发送这条路由,只是R1不会接收。当其他路由出现抖动,也会影响到R1,虽然R1不接收它们,浪费了带宽与CPU的周期,为了解决这种问题,可以在R1和R2之间做ORF,由R1向R2发送一个SEND,告诉R2我需要什么路由,接着R2就只发送请求的路由给R1了。注意:ORF只支持prefix-list.

neighbor 1.1.1.1 capability orf prefix-list [send|receive|both]

send端要与入向的prefix标准过滤配合使用。

Receive端只需要开启orf接收能力即可。

可用命令:

show ip bgp neighbors 1.1.1.1 advertised-routes

检查效果

ORF携带在OPEN包里,所有当设置了ORF后邻居会自动重启。

4. 正则表达式

正则表达式主要用在2个地方:○1用于减少show命令的输出

○2用于AS-PATH过滤

Ip as-path access-list 1 per 31

可匹配31,1031,3101,等等。

[]代表一个范围,其中的一个字符。例:[23]代表2或3,代表一个字符。

. 代表任意单个字符

^ 代表字符的开始

$ 代表字符的结束

_ 代表空格,或TAB键

\ 代表转意字符:如:^\(213 代表匹配从 (213 开始

* 代表前一个字符0次或多次出现

? 代表前一个字符出现0次或1次

+ 代表前一个字符1次或多次出现

( ) 代表为一个字符,如(234)代表为1个字符,而234代表3个字符

^$ 在AS-PATH中代表源于本AS的内部的路由。

.* 在AS-PATH中代表匹配所有路由。

5. dampening(路由惩罚)

dampening只能对ebgp路由起作用。

惩罚值:每flaping一次加1000,路由down→up算一次。该值无法修改

抑制门限:默认2000,必须要大于2000才路由才会被惩罚。

半衰期:默认15分钟,过15分钟后降到惩罚值的一半。

最大抑制时间:默认为半衰期的4倍,60分钟

重用门限:默认750

最大抑制门限:该数值是通过公式:重用门限×2×(最大抑制时间÷半衰期) 计算得出的,无法手工直接设置。当设置出现错误,最大抑制门限等于或小于抑制门限时,这时路由永远不会dampening,这个设置将无效。

比如:设置为30 750 3000 60 ,这时算出的最大抑制门限为3000,和抑制门限相同,这样路由将永远不会dampening。

设置方法:⑴bgp dampening 15 750 2000 60

设置dampening,对所有ebgp路由生效。第一个值设置半衰期,第二个值设置重用门限,第三个值设置抑制门限,第四个值设置最大抑制时间

⑵bgp dampening route-map a 对指定的ebgp路由设置dampening

Route-map a

Match ip prefix-list 1

Set dampening 15 750 2000 60

Ip prefix-list 1 per 22.22.22.0/24

Show ip bgp dampening 设置dampening的路由

Clear ip bgp dampening 手工清除惩罚值,后面可指定明细路由。

Nei 2.2.2.2 shutdown 管理性关闭bgp邻居

No Nei 2.2.2.2 shutdown 管理性开启bgp邻居

6. maximum-prefix

neighbor {ip-address | peer-group-name} maximum-prefix prefix-limit threshold-value warning-only restart(分钟)

限制从指定邻居得到的路由的条目,prefix-limit表示最大的路由条目,threshold-value决定路由器产生报警的值,默认是75%。若没有指定warning-only则当超过限制条目时,会中断BGP连接,若指定了warning-only参数,则只会产生警报,不会中断 BGP连接。Restart参数表示若此时邻居因为超过最大条目而中断了,那么设置这个时间后,当超过这个时间后将自动重启邻居。

Maxias-limit

Bgp maxas-limit 200

设置本路由器可接收的路由的AS-PATH最大可有多少个AS号,接收小于或等于这个值的路由。

Clear ip bgp 2.2.2.2 in prefix-filter

此命令用于ORF中,比如在2台路由器上做了ORF,这时我SEND端的ip prefix-list列表出现了变动,那么对方将不会知道,除非重启邻居。使用该命令可以发送新的ip prefix-list列表设置给邻居。让邻居知道现在要给我发什么路由。

7. BGP默认路由

在BGP中产成默认路由有2种方法:

○1default-information originate 配置BGP的默认路由0.0.0.0,允许向邻居

发送默认路由,在本地需要有一条默认路由。

配置步骤:1.配置ip route 0.0.0.0 0.0.0.0 s 0/1 (这条默认路由不一定非要是静态,可以IGP协议默认路由)

2.network或重分布默认路由进BGP :network或redistribute

3.配置BGP命令 :default-information originate

默认情况下路由器不能将默认路由重分布进BGP,可以通过default-information originate使其通告默认路由;当是通过network通告默认路由,可以不输入default-information命令。

○2neighbor {ip-address | peer-group-name} default-originate route-map a

对指定的邻居发送默认路由,在本地路由表中不需要有一条默认路由,route-map参数作用是:匹配一条路由,当此路由出现在我路由表中时,我发送默认路由,当这条路由不存在我路由表中时,我禁止发送默认路由。


8. 重启邻居,community,local-as,条件路由,拆分路由

1. 重启邻居

重启邻居有2种方式:

○1硬清-clear ip bgp * 表示清除tcp连接,重新建立邻居关系

○2软清-clear ip bgp * soft in/out 表示发送新的更新策略,并不清除邻居关系

老ios默认软清只在out方向有效,在in方向无效。因为bgp是增量更新,当在in方向重清邻居后,不会马上生效,因为对方邻居并不知道要在发更新给我。可使用:nei 2.2.2.2 soft-reconfiguration inbound。该命令的作用为在内存里开辟一块空间用来保存邻居的更新,当时候in方向的重启邻居后可以马上生效。

新的ios使用clear ip bgp * soft in后,会向邻居发送一个refresh包,要求邻居向我发送一次更新,用于让in方向马上生效。

2. communityd

团体可以向一组路由使用相同的策略。团体是一个路由属性而且可以从一个运行BGP的路由器传给另一个运行BGP的路由器,所有路由的默认community属性为internet。

配置一个团体属性,遵循下面三个步骤:

⑵. 通过route-map来匹配拥有相同策略的路由

⑶. 通过set community命令来设置属性

⑷. 使用neighbor send-community命令来确定该属性将要发送给哪个邻居。

Community生效的地方:

在network后面接community:这个属性从本地开始生效。

在aggregate后面接community:这个属性从本地开始生效。

在redistribute后面接communti:这个属性从本地开始生效。

在neighbor后面接community:这个属性从邻居开始生效。

每个团体属性有4个字节,即32BIT。团体属性有2种类型:

Well-known communities(熟知团体)――――当接收到这些带有团体属性的前缀时,对等体会自动地根据预先定义的团体属性的意义来采取操作。不需要额外的配置。在RFC1997中,熟知的团体属性落在保留值的范围内,即0xFFFF0000-0xFFFFFFFF。

Private communities(私有团体)――――由网络管理员定义的团体,并且在不同自治系统的对等体之间,这些团体必须相互协调。必须明确地配置所采取的行为。私有团体的值在保留范围之外。

当前,cisco IOS软件支持4种熟知团体属性:

internet――――带有这个属性的前缀被通告到internet。这些前缀是没有限制的。这个熟知团体属性在RFC1997没有被明确的定义。在cisco IOS软件中,每一条前缀都属于这个internet团体(值为0)

no_export――――带有这个团体属性的前缀可以在大联盟内传递。这个团体的值为0XFFFFFF01。

Local_AS――――带有这个团体属性的前缀只能在本地的小AS内传递,甚至不能通告到其他联盟的子AS中去。值为(0XFFFFFF03)。

No_advertise――――带有这个团体属性的前缀不会被通告给任何对等体,包括IBGP邻居。改属性的值为0XFFFFFF02。

团体属性在route-map里设定:

Set community [none | internet | no-export | local-AS | no-advertise] [aa:nn] [additive]

None 参数用于删除现存的所有团体属性。如果使用该命令将团体属性删除了,就不需要使用send community命令将团体属性发给邻居了。

Aa:nn 参数用于私有community属性。路由器默认显示的格式为十进制,可使用全局命令ip bgp-community new-format显示AA:NN新格式。

Additive 参数用于在原有属性的基础上添加属性,若无此参数将会覆盖原属性。一个路由可有多个community属性,当具有多个属性时,所有属性都会生效,但只有范围最小的会起作用。

定义私有团体:

三种书写方式 ⑴set community 0:1 AA:NN格式,AA为AS号,NN为团体号

⑵set community 1 十进制格式

⑶set community 0x01 十六进制格式

十进制格式转换AA:NN格式方法:用数值除以65536,除出来的数为前面的数字,余为后面的数字。如65536,换成AA:NN格式就为65536÷65536=1,余为0,那么AA:NN格式就为1:0

团体列表:

⑴一个团体列表用来匹配团体属性来匹配路由

⑵通过route-map匹配团体列表,来对匹配上的路由设置属性

团体列表也有标准和扩展2种形式,标准的为1-99,扩展的为100-199.区别在于两种团体之间的区别在于扩展列表允许你用正则表达式来匹配团体属性。

Ip community { [1-99] | [100-199] } { permit | deny } {number | aa:nn | internet | local-AS | no-advertise | no-export}

Route-map a per 10

Match community 1 这里匹配的是团体列表

Set metric 100 设置属性

一条路由可以有多个团体属性,当一条路由具有多个团体属性的时候,团体列表和匹配命令的使用略有不同。

Ip community 1 per 2000:100 匹配所有团体属性中有2000:100的路由

Ip community 1 per 2000:100 1000:100 匹配所有团体属性中有2000:100,或1000:100,或2个都包含的路由

(config-route-map)#match community 1 exact-match exact-match表示必须要精确的匹配团体列表1中的2000:100 1000:100,还具有其他团体属性的路由将不会被匹配上。

ip community-list 1 permit 1:1

ip community-list 1 permit 2:2

route-map a permit 10

set comm-list 1 delete

若路由中有多个community属性,如果使用set community none将会把所有属性全部删除

,若只想删除其中的几个属性,可以使用set comm-list 命令来实现。

3. allowas-in

BGP的路由器默认是不接收在as-path里面带本AS的AS号的路由的。如果一定要接收可使用:neighbor 1.1.1.1 allowas-in [1-10] 直接按回车的时候=3,即允许在as-path里见到3次本AS的AS号。

Show ip bgp neighbor 1.1.1.1的时候可以看到

For address family: IPv4 Unicast

BGP table version 8, neighbor version 8

Index 1, Offset 0, Mask 0x2

My AS number is allowed for 3 number of times

4. local-as

neighbor 1.1.1.1 local_as 1 [no-prepend | replace-as | dual-as]

表示本端用AS 1与peer 1.1.1.1建立邻居关系。Peer 1.1.1.1指本端的时候必须用

neighbor x.x.x.x remote-as 1与我建立邻居。不能用local-as来建立IBGP的邻居。

R1: neighbor 192.12.1.2 remote-as 3

R2: neighbor 192.12.1.1 remote-as 1

neighbor 192.12.1.1 local-as 3

R1与R2建立EBGP邻居关系,R2用local_as 3与R1建邻居,R1用remote-as 3来与R2建邻居。R1/R2各将自己的环回口引入BGP。

Local_as的作用相当于在AS 1与AS 2之间做了一个虚拟的AS号为3的自治系统。

no-prepend作用:将收到的路由去除虚拟AS号

R2学到R1的路由as-path为 3 1 i,因为R2知道这个AS 3是虚拟的,所以当R1上的路由发给R2时,中间多一个AS 3的号码不太好,我们可以在R2上通过命令:

neighbor 1.1.1.1 local-as 3 no-prepend

解决这个问题,那么这样当R1发给R2路由的时候,as-path里面将不会带虚拟的AS号码。其AS-PATH为1 i 。

Replace-as作用:将发出去的路由去除本地AS号

R1学到R2的路由as-path为3 2 i,若R1是一个客户,客户就会产生疑问,为什么我和AS3建立的邻居,那这条从路由为什么起源于AS2?若要解决这种问题,在R2上可通过命令: neighbor 192.12.1.1 local-as 3 no-prepend replace-as

该命令的作用为使用虚拟的AS号,覆盖我本地的AS号。这时R1上的路由AS-path为3 i

Dual-as的作用:允许对方在使用neighbor命令的时候,即可以指定虚拟AS号,也可以指定我的真实AS号。

比如上面的例子,在R1上即可以使用neighbor 192.12.1.2 remote-as 3,也可以使用neighbor 192.12.1.2 remote-as 2


5. 条件路由

Nei 2.2.2.2 advetise-map aaa exist-map bbb

当bbb匹配的路由存在时,发送aaa匹配的路由,同时bbb匹配的路由也发。

当bbb匹配的路由不存在时,不发送aaa匹配的路由,同时bbb匹配的路由也不发。

Route-map里建立使用前缀列表进行路由匹配。

Nei 2.2.2.2 advestise-map aaa non-exist-map bbb

当bbb匹配的路由不存在时,发送aaa匹配的路由,不发送bbb匹配的路由

当bbb匹配的路由存在时,不发送aaa匹配的路由,发送bbb匹配的路由

Route-map里建立使用前缀列表进行路由匹配。

6.拆分路由

bgp inject-map AAA exist-map BBB [copy-attributes]

当MAP BBB里面匹配的聚合路由存在的话,向BGP的转发表里注入一条明细的路由。在MAP BBB里面要匹配聚合路由,还要匹配route-source。例:

bgp inject-map AAA exist-map BBB [copy-attributes]

route-map AAA

set ip address prefix-list Detail

route-map BBB

match ip address prefix-list Summary

match ip route-source prefix-list source

ip prefix Detail permit x.x.x.x/24

ip prefix Summary permit x.x.x.x/19

ip prefix source permit x.x.x.x/32

copy-attributes参数的意思是,注入的detail路由copy聚合路由的属性。

route-source为邻居更新源地址。从哪个邻居学来的这条聚合路由,就是哪个邻居的地址。一定要用32位前缀。因为要用prefix-list来匹配。

show ip bgp injected-paths 查看注入的路由



版权声明:本文为m0_70935319原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。