外部网关协议--BGP详解

BGP外部网关协议

前述:

AS:自制系统:具有相同“路由策略”的一组路由器RFC对AS的定义:一组被统一管理的路由器,他们使用相同的内部网关协议和统一的度量值,来决定如何在as内部路由分组,并使用as间路由选择协议来决定,如何分组路由到其他自制系统
取值范围:1-65535 (16位 2字节) 4字节:1-2^32
1-64511   (公有)
64512-65535 (私有)
23456 (特殊)
IGP(内部网关协议):这种路由协议用于在自制系统(AS)内部交换路由信息
EGP(外部网关协议):这种路由协议用于连接不同的自制系统
BGP是一个AS-by-AS之间的路由协议

BGP概述:

-通过TCP179端又来传递更新和建立邻居
-单播建邻居传递更新(手工指邻居)
-支持VLSM CIDR手工汇总
-以AS为单位的路径矢量属性的路由协议-在会话开始的时候发送完整的路由表,以后会触发更新
-有丰富的路径属性,和简单的选路算法
-遵循AS间的水平分割

BGP的消息类型:

-open消息(打开消息)
-keepalive消息(保持激活)
-update消息(更新)
-notification(通告)
OPEN消息:

  0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+
       |    Version    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     My Autonomous System      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |           Hold Time           |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
       |                         BGP Identifier                        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
       | Opt Parm Len  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+
       |                                                               |
       |                       Optional Parameters                     |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

bgp version number
默认是V4,可以通过命令(neigbour version)来修改,改后向下兼容

As number :
表示会话发起方路由器的AS号,确定该BGP是属于EBGP还是IBGP
EBGP:当收到的AS号和自己的不同
IBGP:当收到的AS号和自己相同

Hold time:保持时间
表示路由器收到keepalive或者update报文之前可以等待的时间,cisco默认180s,若双方不统一,以小为优。
BGP的标示符:表示邻居的ip地址,选举方式等同于OSPF的routerID。
BGP可选参数:该字段用来宣告支持验证、多协议等可选参数

Keepalive:保持激活(19字节)
收到open消息后响应一条keepalive。cisco默认60s一条,或1/3的hold time时间。

Update :(更新)
宣告可行路由和已撤销的路由
NLRI (network layer reachability information)网络层可达信息宣告一个或多个IP地址前缀及长度(二元组) 192.168.1.0/24

路径属性:path attributes
提供了允许BGP选择最短路径,检测路由长度,确定策略路由的相关信息

已撤销路由:
描述那些变为不可达,且退出服务的二元组

注:一个UPDATE 消息一次可以只通告一条路由,但它可以携带多个属性。
一个UPDATE 消息一次也可通告多条路由,但它们的属性必须相同。
一个UPDATE 消息可以同时撤消多条路由。
实际上也就是说一个UPDATE中只能有一条路径属性

Notification: 通告
路由检测到BGP邻居错误时发送的消息
一旦邻居收到该消息,则邻居关系立刻回到idle状态

BGP的状态机:

Idle----connect-----open sent-----open confirm----establish
activeidle状态:空闲
该状态为起点,检查IGP是否可达(检查自己的路由表中是否有neighbor方的具体路由条目)
connect:连接状态
该状态下,bgp会等待tcp的三次握手,如果成功则会进入opensent;如果失败则进入active状态。
Open sent:打开发送
该状态下已发送了open消息,此时bgp会等待邻居的open消息,收到后检测消息的每个字段,如果有差错,发送notification消息,并进入idle状态;如果没有差错则发送keepalive,并设置定时器。
Open confirm:打开确认
该状态下,bgp会等待keepalive、notification
如果收到keepalive则进入establish状态
如果收到notification则进入idle状态
Establish:建立状态
该状态下,bgp对等体连接已经完全建立,此时对等体之间交互update、keepalive、notification消息
Active:激活状态
该状态下,bgp会尝试与其他邻居建立TCP连接。

connect状态等待TCP三次握手,成功则进入open sent状态,收到对方open消息进入open confrim状态,收到keepalive消息进入establish状态;如果TCP三次握手失败则进入active状态。

BGP的三张表:

1.bgp表:包含了邻居学习到的所有网络列表,包含到达目标网络的多条路径,包含了bgp对任意一条了路径的属性。
邻居表:包含了所有bgp邻居列表

BGP的邻居有两种:

EBGP:当bgp运行在不同的as之间(默认必须直连)默认TTL=1
IBGP:当bgp运行在相同的as之间(不需要直连)默认TTL=255

bgp邻居建立的必要条件:

1.路由可达;
2.tcp三次握手;
3.手工指定邻居;
4、验证通过
IBGP:as内 TTL=255 不需要直连 AD=200
EBGP:需要直连 as间 TTL=1 AD=20
从EBGP邻居学来的路由条目优于IBGP邻居学来的路由条目

任何两个通过一条TCP连接来交换BGP路由信息的路由器,把他们叫做bgp peers
peer:(对等体)【邻居】
speaker:bgp宣告者

2.路由表:和IGP的ip路由表相同,包含了到达目标网络的一条最佳路径

负载均衡:到达同一目标网络有多条代价相同的路径BGP默认不允许任何负载均衡,他到达任何网络只能有一条路径。

BGP的基本配置:

用物理又建立邻居:

router bgp
neighbor<对端的US> remote-as <对端的as>[IBGP邻居]修改下一跳自我:neighbor<对端的US> next-hop-self
例:

QM_R1(config)#router bgp 100
QM_R1(config-router)#bgp router-id 1.1.1.1
QM_R1(config-router)#neighbor 12.12.12.2 remote-as 200 (EBGP邻居)
QM_R2(config-router)#neighbor 3.3.3.3 next-hop-self

next-hop attribute:下一跳属性
ibgp:下一跳不变(公告给ibgp邻居)
ibgp:下一跳不变,用命令来修改next-hop-self 下一跳自我
ebgp:下一跳改成‘更新源
ebgp:使用命令next-hop-unchanged 传递路由时,下一跳不变

在MA的链路中,传给EBGP邻居时,下一跳不变

用loopback又建立邻居:

更新源:update source(US)默认更新源就是路由器的出接又建议用loopback又建立邻居永久up,不会down
用loopback又建立邻居,必须修改更新源
习惯:
ibgp:用loopback又做冗余
ebgp:一般不用loopback又做冗余

router bgp
neighbor<对端的US> remotes-as<对端的as>
修改更新源:neighbor<对端的US> update-source loopback0
[EBGP邻居]修改TTL:neighbor<对端的US>ebgp-multihop不加参数,默认255
或者关闭直连检测:neighbor 3.3.3.3 disable-connected-check
[IBGP邻居]修改下一跳自我:neighbor<对端的US> next-hop-self
例:
[IBGP]

QM_R2(config)#router bgp 200
QM_R2(config-router)#neighbor 3.3.3.3 remote-as 200 (IBGP邻居)
QM_R2(config-router)#neighbor 3.3.3.3 update-source loopback 0(更新源是环回又)
QM_R2(config-router)#neighbor 3.3.3.3 next-hop-self (定义下一跳自我)

[EBGP]

QM_R2(config-router)#neighbor 1.1.1.1 ebgp-multihop 2    (EBGP设置多跳,环回又才用得上)
QM_R2(config-router)#neighbor 1.1.1.1 disable-connected-check (关闭EBGP邻居的直连检测)

注:在同一时间内只能开启一个bgp进程
修改更新源:neighbor<对端的US> update-source loopback0
修改TTL:neighbor<对端的US>ebgp-multihop不加参数,默认255
修改下一跳自我:neighbor<对端的US> next-hop-self
修改RID:路由模式下bgp router-id x.x.x.x
关闭同步:路由模式下 no syn
关闭汇总:路由模式下 no auto-summary

小总结:
所有建立BGP邻居的首要条件是三层必须可达而且必须有明细路由
在使用loopback又建立邻居时,需要考虑步骤
1、使用静态或者动态路由保证US三层可达。
2、手工指定loopback为邻居
3、修改Update-sourec为loopback又;
4、若使Ebgp邻居需要修改EBGP多跳或关闭直连检测
5、IBGP邻居需要修改下一跳自我(next-hop-self)
6、BGP Network时,需要和IGP路由表严格匹配

BGP的查看:

QM_R2#show ip bgp summary (摘要的邻居邻居信息)
QM_R2#show ip bgp 2.2.2.0/24  显示明细路由的详细信息
QM_R2#show tcp brief    可以看到是谁发起的TCP链接
QM_R2#show ip bgp neighbors  (详细的邻居信息)
QM_R2#show ip bgp rib-failure    可以看到提示有更高AD的路由
QM_R2#show ip bgp neighbors 2.2.2.2 advertised-routes  看向这个邻居发了哪些路由信息
QM_R2#show ip bgp neighbors 3.3.3.3 received-routes  看这个邻居给我发了哪些路由信息,必须在本路由器上用下面这条命令开启后才能用
QM_R2(config-router)#neighbor 3.3.3.3 soft-reconfiguration inbound开启查看接收到的路由信息的功能

debgu ip routing 查看路由表调试信息
debug ip bgp updata 查看BGP更新信息
EBGP用环回又做邻居后,不能再将此环回又宣告进BGP,否则会出现递归错误,造成邻居BGP表的翻动,IBGP不会出现这一问题,因为它们AD值是200,无法争抢入路由表

BGP的network能够通告路由表中的所有BGP或非BGP路由条目。


路由表:

用update消息传送,update消息中有as-path
as-path作用:选择一条最佳路径,避免环路
1.as-path可以用于选择一条最佳路径的原因
当路由信息每穿越一个as时,as-path就会现有AS-PATH属性前面加上本as号当同一个路由条目从不同的路由器学习时,选择AS-PATH个数最少的作为最优路由

2.as-path可以避免环路的原因
当本地路由器发现了update消息中的as-path包含了自己的AS号,则会丢弃数据包,说明已经出现环路。

network:

igp:激活接又、公告网段
bgp:只要在igp路由表中存在路由条目都可以公告,公告中带
mask(为了严格匹配igp的路由条目)bgp的报文是通过路由表在三层转发

原则1:
ibgp的水平分割(防止环路)(解决ibgp的环路问题)
ebgp使用as-path来解决环路问题

从一个ibgp邻居学来的路由条目不会公告给其他任何一个ibgp邻居,在ibgp邻居中建议使用全互联来解决ibgp的水平分割带来的某个ibgp路由器学习不到整个路由信息。

三种方法解决IBGP水平分割带来的路由黑洞问题:
1、全互联
2、将BGP路由重分发到IGP (实验环境)
3、MPLS BGP

原则2:
ibgp的同步原则:从ibgp学来的路由条目,不发送给ebgp邻居,自己也不使用,除非在自己的igp路由表中存在该条目。
本地有效(全互联):全互联以后要关闭同步
默认情况下:同步----关闭水平分割-----开启

DF_R3#sh ip bgp rib-failure  

Network Next Hop RIB-failure RIB-NHMatches
50.1.1.0/24 4.4.4.4 Higher admin distance n/a
51.1.1.0/24 4.4.4.4 Higher admin distance n/a


bgp的路径属性:path-attribute可以理解为igp的metric

公认的:(well-know)
必遵:update报文中必须包含,也必须传递
自决(discretionary):update报文中可以包含,也可以不包含但是一旦包含,就必须传递下去

可选的:optional:
可传递(transitive):即使不认识,也必须接受,并传递下去
非传递(nontransitive):不发送给peer

1.origin:(起源代码)标识路由的身份
2.as-path:路径属性
3.next-hop:下一跳
4.local-pref:本地优先级
5.community:团体
6.med(multi-exit-discriminator)多出又鉴别器----》metric
7.originator-id:始发站id(私有)

修改属性的命令:

ip access-list extended acl 
permit ip 10.1.1.0 0.0.0.255 any
route-map lp permit 10 
match ip address acl 
set local-preference 300 
neighbor 1.1.1.1 route-map lp in

1.origin(起源代码)标识路由的的身份“公认必遵”bgp学习路径有三种
从igp学习来的“i”
从egp学习来的“e”(在目前的IOS中已经不支持该属性)
从别的方式学习来的(重分发)“?”
“i”优于“E”优于“?”

as-path:是as号顺序的组合,来决定as间路径和路由“公认必遵”

next-hop:下一跳“公认必遵”
描述到达目标地址的路径上,下一跳路由器的ip地址,这个地址不一定是邻居路由器的地址,是更新源

从EBGP学习来的路由条目传给IBGP邻居的时候,下一条属性不变,保持原来的US
从IBGP学习来的路由条目传给EBGP邻居的时候,下一条属性改变,变成自己的US

med:metric(可选,非传递)【多入口】
in--->学习路由的目的是出业务量(出包)【在in的方向上出包】
out--->公告路由的目的是入业务量(入包)【在out方向上入包】

MED的属性由来:
保持原先IGP或者重分发进BGP之前的metric值不变

用于ebgp邻居之间,在相邻的as中传递,穿越下一个AS后,属性丢失,用于决定到达目标地址as之间的多条路由的优先级。(def:0,以小为优)
影响的对端as选路,out公告路由,入业务量。

local-preferance:本地优先级“公认自决”(多出口)

只是用于ibgp之间,不会传递到其他的as内,只影响本地as的选路,用于决定bgp路由的优先级,取值范围(1~2^32,def:100,越大越优)
在进入as时打上本地优先级---->只在学习路由的时候打上local-preferance来影响出业务量。

weight:权重:私有(0~65535,以大为优)【多出口】
default:
学习路由:0
公告的路由:32768
本路由器有效:在in方向打上weight值,他不会把值发给任何路由器,仅本路由器有效

weight值是在路由器有两个出又的时候使用

bgp的十条选路原则:

1.weight值越大越优
2.local-pre越大越优(def:IBGP=100,EBGP为空)
3.起源于本地最优(network)
4.as-path越小越优
5.origin越小越优(I>E>?)
6.med越小越优(def:源于IGP)
7.ebgp邻居优于ibgp邻居
8.next-hop越小越优(igp路由表中metric越小越优)
9.ebgp时间越老越优
10.ibgp邻居:router-id越小越优
11.ibgp邻居:ip地址越小越优


BGP汇总:

1.对IGP路由条目公告BGP中,并汇总当其他IGP协议重分布进BGP时,默认会进行自动汇总。其它情况下BGP不会自动汇总

Auto-summary对于network的影响:

1,可以是主类方式宣告(必须主类)(如:network 10.0.0.0),条件是:必须出现在路由表的子网;
例:

QM_R1(config)#router bgp 100   
QM_R1(config-router)#auto-summary   
QM_R1(config-router)#network 10.0.0.0   
QM_R4#sh ip route bgp   B    10.0.0.0/8 [20/0] via 2.2.2.2, 00:00:02

2,也可以是明细方式宣告,必须带mask(如:network 10.1.1.0mask 255.255.255.0),条件是:必须和IGP表的路由精确匹配。
例:

QM_R1(config-router)#auto-summary   
QM_R1(config-router)#network 10.1.1.0 mask 255.255.255.0
QM_R4#sh ip route bgp     10.0.0.0/24 is subnetted, 1 subnets   B       10.1.1.0 [20/0] via 2.2.2.2, 00:00:59

No auto-summary对于network的影响:
1,如果是用no auto-summary,那么network只能用明细方式宣告。通常都会用这一方式
例:
用auto-summary:

QM_R1(config)#router bgp 100   
QM_R1(config-router)#no auto-summary   
QM_R1(config-router)#network 10.0.0.0   
QM_R1#sh ip route bgp 

QM_R1#
R1无法在no auto-summary下学习到R4的汇总network

2,

QM_R1(config-router)#no auto-summary   
QM_R1(config-router)#network 10.1.1.0 mask 255.255.255.0   
QM_R4#sh ip route bgp 

10.0.0.0/24 is subnetted, 1 subnets
B 10.1.1.0 [20/0] via 2.2.2.2, 00:00:59
宣告带mask的路由,不管在auto-summary和no auto-summaty下均可,但必须在IGP路由表中存在该条目

 QM_R1(config-router)#network 10.1.0.0 mask 255.255.0.0   
QM_R1#sh ip route bgp

QM_R1#
如果此时IGP路由表中只有10.1.1.0/24的路由,并且no auto-summary ,可手工建立一条指向null0的路由:ip route 10.1.0.0 255.255.0.0null 0

在BGP的no auto-summary中,network的特点是:
1、必须精确宣告路由和掩码
2、只起到宣告作用,不建邻居
3、可宣告IGP学到的路由

Show ip bgp neighbors ip advertised-routers 查看我给这个邻居发了哪些路由

<Summary>aggregate聚合
1)通过Network做汇总:(auto-summary开关均可)
QM_R2(config)#ip route 10.1.0.0 255.255.0.0 Null0
QM_R2(config-router)#network 10.1.0.0 mask 255.255.0.0 (不要宣告明细,必须带掩码)

在BGP中的network命令只要是路由表中有的路由,它都可以宣告,直连的,静态的,即使从IGP学到的也可以
例:

QM_R2(config)#ip route 10.1.0.0 255.255.0.0 null 0
QM_R2(config)#router bgp 100
QM_R2(config-router)#network 10.1.0.0 mask 255.255.0.0
QM_R4#sh ip route bgp
 10.0.0.0/16 is subnetted, 1 subnets

B 10.1.0.0 [20/0] via 2.2.2.2, 00:00:01

2)Aggregate:(从BGP学来的路由汇总)要先宣告每一条明细,再用以下命令做聚合

QM_R2(config-router)#aggregate-address 10.1.0.0 255.255.0.0 (宣告明细) 

明细&汇总都被发出
B 10.1.0.0/16 [20/0] via 0.0.0.0, 00:00:16,
Null0

QM_R2(config-router)#aggregate-address 10.1.0.0 255.255.0.0summary-only (只通告汇总)

必须带这一参数才只会发汇总路由,不然连明细都会发出去,明细路由前面会加“S”

Suppress-map 抑制列表 -----抓的就是被抑制的路由

QM_R2(config)#ip prefix-list 1 permit 10.1.1.0/24
QM_R2(config)#route-map cisco deny 10
QM_R2(config-route-map)#match ip address prefix-list 1
QM_R2(config)#route-map cisco permit 20
QM_R2(config-router)#aggregate-address 10.1.0.0 255.255.0.0suppress-map cisco(抑制10.1.1.0/24路由)
QM_R4#sh ip route bgp   

10.0.0.0/16 is subnetted, 1 subnets
B 10.1.0.0 [20/0] via 2.2.2.2, 00:03:52

show route-map 专⽤查看router-map
注意:如果⽤了suppress-map不起作⽤的话,要清⼀下本路由
器,要硬清才⾏

如果希望汇总从其它AS学习来的路由条⽬时,AS号属性在本地
会消失
如:在R1上做的话,明细路由携带AS号的⼀些属性将会消失

QM_R2(config-router)#aggregate-address 10.1.0.0 255.255.0.0
QM_R2#sh ip bgp
Network          Next Hop            Metric LocPrf Weight Path
*> 10.1.0.0/16      0.0.0.0                            32768 i

⽤下⾯这⼀命令可以还原

M_R2(config-router)#aggregate-address 10.1.0.0 255.255.0.0 as-set 
(还原AS属性)
QM_R2#sh ip bgp
   Network          Next Hop            Metric LocPrf Weight Path
*> 10.1.0.0/16      0.0.0.0                       100  32768 200 i

BGP:策略

router-map: 路由图作⽤,⽤于路由的重分发、PBR、BGP
router-map cisco permit 10
cisco:名字(供neighbor调⽤)
permit/deny:操作码(允许/拒绝)
10:许可操作序列码

match:匹配流量(需要和acl结合)
set:执⾏操作

注意:如果在router-map下没有“match”匹配所有的报⽂和路由
如果在router-map下没有“set”仅匹配流量,不做任何操作

match:(config-router-map)#match ip address 10 20 30 40
他代表或的关系(任意⼀个即可)匹配任何⼀个acl number都会
执⾏

(config-router-map)#match ip address 10  
(config-router-map)#match ip address 20  
(config-router-map)#match ip address 30  

是且的关系,(必须完全匹配)必须同时匹配acl number 10 20
30 才会执⾏set

当router-map中出现同⼀性质的set,后⾯的set覆盖前⾯的set

match interface 匹配下⼀跳接⼜的路由
match ip address匹配acl的流量

set metric 设置metric值
interface 设置出站接⼜
ip next-hop设置下⼀跳路由器的地址
ip tos设置tos位
ip precedence 设置ip优先级

bgp的负载均衡:

1.迭代负载均衡
在去往⽬标⽹络的下⼀跳(更新源)路由,在IGP路由表中该更
新源是负载均衡。

2.as间的负载均衡
通过设置metric值,做as间的负载均衡

3.通过命令maximum-path来实现负载均衡
默认只有1最⼤可以到32
EBGP:必须满⾜as-path,origin,local-pref和med完全相同 (选路
原则前6条)
QM_R4(config-router)#maximum-path 16
IBGP:必须满⾜as-path,origin,local-pref,med和next-hop在IGP的
metric完全相同(选路原则前8条)
QM_R4(config-router)#maximum-paths ibgp 16


管理⼤型的bgp

1.对等组
2.团体属性
3、路由反射器(router reflector,RR)

--对等体组(peer group):把策略应⽤在⼀组“路由器”上
定义模板
neighbor cisco remote-as
neighbor cisco update-source loop0
neighbor cisco next-hop-self
然后应⽤到neighbor上
例:
BGP_R2#sh run | sec bgp
router bgp 200
no synchronization
bgp router-id 2.2.2.2
neighbor cisco peer-group
neighbor cisco remote-as 200
neighbor cisco update-source Loopback0
neighbor cisco next-hop-self
neighbor cisco2 peer-group
neighbor cisco2 remote-as 100
neighbor cisco2 ebgp-multihop 255
neighbor cisco2 update-source Loopback0
neighbor 1.1.1.1 peer-group cisco2
neighbor 3.3.3.3 peer-group cisco
neighbor 4.4.4.4 peer-group cisco
no auto-summary

QM_R2#sh ip bgp summary
BGP router identifier 2.2.2.2, local AS number 200
BGP table version is 1, main routing table version 1

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ
Up/Down State/PfxRcd
1.1.1.1 4 100 8 8 1 0 0 00:04:44 0
3.3.3.3 4 200 4 5 1 0 0 00:01:11 0
4.4.4.4 4 200 4 5 1 0 0 00:01:51 0

peer-group的作⽤:
1、可以简化很多neighbor的命令(邻居越多,命令简化越多)
2、可以同时对多个路由器修改BGP路径属性

缺点:
不可以针对同⼀个peer-group中的不同路由器做不同的BGP策略

路由反射器:RR

路由器的⾓⾊
1、RR的server:对路由条⽬进⾏反射的路由器
2、RR的client(客户机):从server接收或者向server发送路由条
⽬的路由器
3、⾮客户机:对反射的路由条⽬没有任何关系的路由器

RR对路由条⽬的反射原则:

通过ebgp邻居学来的路由条⽬,rr会反射给as内所有的客户机和
⾮客户机。
如果路由条⽬是通过⾮客户机学来的,该路由反射给所有的客户
机。
如果路由条⽬是通过客户机学习来的,该路由反射给除源客户机
以外的所有客户机和⾮客户机

<Reflector>
路由反射器
·打破IBGP的⽔平分割规则。

在路由反射器上做---
QM_R2(config-router)#neighbor 24.24.24.4 route-reflector-client 这
⼀条命令全搞定
               (24.24.24.4为R2的客户端)

<Confederation>
联邦:将⼤AS划分成若⼲个⼩AS,⼩AS之间是EBGP关系。
·1、联邦中的所有路由器都必须⽤起⼩AS号。(Route bgp 202
⼩AS)
R2#show ip bgp neighbor 12.1.1.1 adverised-routes

·2、联邦中的所有路由器都必须声明⼤AS号
 R1(config-router)#bgp confederation identifier 200

3、连接⼩AS的边界路由器要互相指peers:
联邦中的⼩AS号(203)不算作AS-Path属性⽐较
 R1(config-router)#bgp confederation peers 203
                    (对端⼩AS号)
注意:两个⼩AS之间也要解决多跳问题,⼤AS的两个边界必须向
内指下⼀跳。

·联邦外路由器和联邦的边界路由器建⽴邻居关系时,neighbor⼤
AS号。
在sh ip bgp中,⼩AS号会⽤括号括住,并且不算做⼀个进⾏路径
⽐较的AS号,但是⼩AS号会影响IBGP的负载均衡。

<BackDoor> 后门链路

·通过IGP学到某条路由,又从EBGP学到相同的路由。
 由于EBGP AD=20,⼩于IGP的AD,所以会优先EBGP的路
由,
 但实际路径从IGP⾛更优化。
例如:R2学到两条相同的路由,⽤以下⽅法在BGP进程下改,
实际上就是提⾼了从BGP学到的路由的AD值

QM_R2(config-router)#network 3.3.3.0 mask 255.255.255.0
backdoor
                 (将此路由的AD调⾼到200)
将BGP学到的路由的AD值提⾼,从20提⾼到200

<Dampening>

·为了防⽌路由频繁抖动。BGP利⽤Dampening机制,将这种频繁
抖动的路由有条件的加以抑制。
·BGP默认不启⽤Dampening,⽽且仅对EBGP邻居传来的路由启
效。
·⼀条路由up->down,默认惩罚1000,当达到start suppress值时,
被抑制。

被抑制的路由不会传给本地,也不会传给其他EBGP邻居
·Half-life Time : 15 m 半衰期
·Reuse     : 750 降到这个值以下,重新开始启⽤路

·Start Suppress : 2000 升到这个值以上,开始抑制(即抖动
3次就开始抑制)
·Max Suppress Time : 60 m (4×15) 最⼤抑制时间(最长抑制这么
长)

QM_R2(config-router)#bgp dampening(对所有从EBGP收到的路
由启⽤Dampening)
QM_R2(config-router)#bgp dampening 15 750 2000 60 可这样修改
默认参数,惩罚值不能更改
 
QM_R2#show ip bgp 1.1.1.0/24 可查Dampening明细

1, (suppressed due to dampening)
12.1.1.1 from 12.1.1.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external

  Dampinfo: penalty 2450, flapped 3 times in 00:11:40, reuse in 

00:03:49

正在翻动的路由会打上h
被惩罚的路由前⾯会打上 d
*d 1.1.1.0/24 (打d的路由,不会进⼊本地路由表,也不会传给
其他BGP邻居)

QM_R2#clear ip bgp dampening 

针对⼀个路由单独做dampening,针对⼀个路由单独做了,就不
要再在全局下做

QM_R2(config)#ip prefix-list 1 permit 1.1.1.0/24
QM_R2(config)#route-map DAMP  
QM_R2(config-route-map)#match ip address prefix-list 1(BGP建议
都⽤prefix,⽐ACL精确)
QM_R2(config-route-map)#set dampening 15 750 2000 60
QM_R2(config-router)#bgp dampening route-map DAMP    
在进程下调⽤

<Maximum-Prefix>控制本路由器最多能收多少路由

neighbor 1.1.1.1 maximum-prefix 10          (1)
neighbor 1.1.1.1 maximum-prefix 10 80        (2)
neighbor 1.1.1.1 maximum-prefix 10 80 warning-only  (3)
neighbor 1.1.1.1 maximum-prefix 10 80 restart 20   (4)

10后⾯跟的数字是百分数,默认值为75%

(1)针对Neighbor 1.1.1.1传过来的BGP路由,
 如果>7条,则报警;如果>10条,则断开BGP连接。
Idle(PfxCt) ⼀旦断开,就⽆法再建邻居,必须⼿⼯清
(2)如果>8条,则报警;如果>10条,则断开BGP连接。
(3)如果>8条,则报警;如果>10条,也只报警,不断开BGP连
接。
(4)如果>8条,则报警;如果>10条,则断开BGP连接。
  20分钟后重新连接,如果≤10条,则连接;如果仍然>10
条,还是断开,(Neighbor会Up,然后Down).

BGP路由震荡问题:

第⼀步:⼿⼯指定邻居
R1:neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 ebgp-multihop
R2: neighbor 12.12.12.1 remote-as 100
neighbor 12.12.12.1 update-source loopback 0
neighbor 12.12.12.1 ebgp-multihop

第⼆步:解决更新源的路由问题
R1: ip route 0.0.0.0 0.0.0.0 12.12.12.2
此时,R1与R2之间的EBGP邻居建⽴完成

在R2上network 22.22.22.22 mask 255.255.255.255
network 2.2.2.2 mask 255.255.255.255

-------------基于于康BGP文档

你可能感兴趣的:(外部网关协议--BGP详解)