<BGP(Border Gateway Protocol)>

 
·BGP属于EGP,是高级DV协议,也被称为路径矢量协议,基于TCP 179端口。
·现在使用版本BGP4。
  建立TCP连接后,第一次做完整更新,以后就只增量更新、触发更新。
·BGP的目地是提供一种域间路由选择系统,确保自主系统能够无环路的交换路由选择信息。BGP路由器交换有关前往目标网络的路径的信息。
 
·Autonomous Systems:运行同一种选路策略,由统一管理者管理。 
  RFC对AS的定义:一组被统一管理的路由器,它们使用相同的内部网关协议和统一的度量值在AS内部路由分组,并使用外部网关协议将分组路由到其他AS。
 
  取值范围:1-65535
 1-64511   (公有)
 64512-65535 (私有)
  电信AS号:4134  网通AS号:9929
  Bgp.potaroo.net  一个好的网站,可以了解到关于AS号的一些信息
  Telnet route-server.ip.att.net这一地址可以看到公网上的路由条目数
  <http://www.routeriews.org>
  
  
  AS号由internet地址授权委员会(IANA)统一负责分配,下设三个分支局
 
·IGP支持的路由条目有限
 运行IGP不利于做路由聚合、选路。
 
·BGP路由器不接受路径列表中包含其AS号的路由选择更新,这种机制也被称为EBGP的水平分割原则。用来防环
 
·BGP路由器只能将其使用的路由通告给他的邻居。
 
·BGP支持遂跳路由选择模式的策略--你可以决定自已的数据流去往哪一个AS,但不能决定邻接的AS如何转发你的数据流。
 
何时使用BGP:
1、AS允许数据包通过自已到达其它AS
2、AS有多条到其它自治系统的连接
3、需要对数据流进入和离开AS的方式进行控制
 
BGP的特性:
·BGP属于EGP,是高级DV协议,也被称为路径矢量协议,基于TCP 179端口。
·现在使用版本BGP4。
·第一次做完整更新,以后就只增量更新
·使用keeplive消息维持邻居关系
·丰富的metric值,也叫属性
·被设计用于特大的网络,例如internet
 
BGP的几张表:
 
·Neighbor table :
  List of BGP neighbors   BGP的邻居关系需要手动的配置
·BGP forwarding table/database
  List of all networks learned from each neighbor
  Can contain multiple pathways to destination networks 
  Database contains BGP attributes for each pathway
·IP routing table
  List of best paths to destination networks
 
BGP表和路由表是独立的,同样遵循AD小的进入路由表。
BGP默认不做负载均衡,只会选出最优的路由放进路由表,可以做负载均衡.
 
·Router-ID选举和OSPF一致。
 
四种报文:
Open ---includes holdtime 180s and BGP router ID   open和keepalive相当于hello  建立邻居关系
Keepalive ---每隔60S发送一次。hold time=180S  保持邻居关系
如果有更小的holdtime时间路由器之间会自动协商采用最小的holdtime时间
Update ---information for one path only (could be to multiple networks)只能包括一条路径但可以到达多个网络
       ---Includes path attributes and networks
Notification  
      ---when error is detected
      ---BGP connection is closed after sent  (做maximum-prefix时可看到) 
 
·BGP用Open报文建邻居,用KeepaLive报文做日常联系
 
·OPEN消息中包含以下内容:
  1、版本
  2、自主系统号
  3、holdown time 注意:这个时间是可以协商的,取两个BGP邻居中较小的保持时间。
  4、BGP 路由器的 router-id,选择方法与OSPF中相同
  5、可选参数
 
·一个UPDATE 消息一次可以只通告一条路由,但它可以携带多个属性。
 一个UPDATE 消息一次也可通告多条路由,但它们的属性必须相同。
 一个UPDATE 消息可以同时撤消多条路由。
 
实际上也就是说一个UPDATE中只能有一条路径属性
 
------------------------------------------------------------------------------------------
BGP对等体=BGP邻居
  EBGP--位于当前AS之外的,属于其它AS的邻居,通常要求直连。
  IBGP--位于同一个AS之内的邻居,无需彼此相连,只要它们能够彼此到达对方,完成TCP握手即可。
 
·BGP's Split Horizon Rule:
 IBGP:从IBGP邻居收到的路由不再传给其他的IBGP邻居。
 EBGP:不接收携带本AS号的路由更新。
 
·BGP路由黑洞,水平分割的解决方法:
 1)物理线路的Full Mesh (成本高,不可取)
 2)BGP重分布进IGP(不可取)
 3)BGP's Full Mesh  IGP内所有路由器都运行BGP(可取)
 4)BGP's Partial Mesh (路由反射器/联邦)
  5)MPLS/×××
 
建议EBPG之间用直连接口来建邻居
建议IBGP中用环回口建邻居
 
<BGP>
 
R4(config)#router bgp 64512
R4(config-router)#bgp router-id 94.4.4.4
R4(config-router)#neighbor 24.1.1.2 remote-as 64513 (EBGP邻居)
 
R2(config)#router b 64513
R2(config-router)#neighbor 3.3.3.3 remote-as 64513 (IBGP邻居)
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0 (更新源是环回口)
 
R3(config)#ip route 5.5.5.0 255.255.255.0 serial 0
R5(config)#ip route 3.3.3.0 255.255.255.0 serial 0
R5(config-router)#neighbor 3.3.3.3 update-source loopback 0
R3(config-router)#neighbor 5.5.5.5 ebgp-multihop 2      (EBGP设置多跳,环回口才用得上)
R5(config-router)#neighbor 3.3.3.3 ebgp-multihop (默认255)
 
R2#show ip bgp summary (摘要的邻居邻居信息)
R2#show ip bgp 2.2.2.0/24  显示明细路由的详细信息
R2#show tcp brief    可以看到是谁发起的TCP链接
R2#show ip bgp neighbors  (详细的邻居信息)
R2#show ip bgp rib-failure    可以看到提示有更高AD的路由
R2#show ip bgp neighbors 2.2.2.2 advertised-routes  看向这个邻居发了哪些路由信息
R2#show ip bgp neighbors 3.3.3.3 received-routes  看这个邻居给我发了哪些路由信息,必须在本路由器上用下面这条命令开启后才能用
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,无法争抢入路由表
 
R4(config-router)#network 4.4.4.0 mask 255.255.255.0 (严格按照IP地址掩码通告)
R4(config-router)#network 100.0.0.0        (在auto-summary时,也可以主类方式通告)
 
·BGP的network能够通告路由表中的所有非BGP路由量。
 
打>号的路由是优的路由,会放进路由表并传给下一个邻居,不优的路由是不会传给下一个邻居
优的路由要满足两个条件:
1、同步  
2、下一跳
 
 
关于更新源
“show ip bgp summary中的Neighbor” / “show ip bgp中的Next Hop ”
 都是指Update-Source。
 
------------------------------------------------------------------------------------------
<MA网络的下一跳问题>
 
R1(config-router)#network 2.2.2.0 mask 255.255.255.0
 
R3:
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       123.1.1.2                1             0 64513 i
 
R3将BGP收到的2.2.2.0/24下一跳与R1路由表中2.2.2.0/24下一跳比较,
如果在同一网段,就发生“重定向”,直接指向R1路由表中2.2.2.0/24的下一跳。
 
router#debug ip bgp updates
 
<origin attribute>
IGP (i)  在BGP进程中用network命令宣告的路由都会打上i
EGP (e)这个EGP指的是一种早期的协议,现已不用
Incomplete(?)
 
<Peer-Group>类似于过程封装
 
BGP为每个邻居都占用一个Buffer,使用Peer-Group可以使多个邻居共用一个Buffer。
针对多的邻居关系,减少配置量。
R1(config-router)#neighbor WOLF peer-group     在BGP进程下配
R1(config-router)#neighbor WOLF remote-as 64513
R1(config-router)#neighbor WOLF update-source loopback 0 
 
调用:neighbor 2.2.2.2 peer-group WOLF 
 
·Loopback口互ping。
 
network关于BGP中的宣告:
注意:本命令只会宣告路由,不会激活一个接口进入BGP域
 
R4(config-router)#network 4.4.4.0 mask 255.255.255.0 (严格按照IP地址掩码通告)
R4(config-router)#network 100.0.0.0        (在auto-summary时,也可以主类方式通告)
 
·BGP的network能够通告路由表中的所有非BGP路由量。
 
<Synchronization>同步。只针对IBGP邻居
 
·Do not use or advertise to an external neighbor a route learned by IBGP 
 until a matching route has been learned from an IGP.
默认情况下,AS内的一个路由器从IBGP学到一条路由,不用也不传,除非是从IGP学到同样一条路由。(网络号和掩码都必须完全一样)
 
同步规则是为了在一个不是full-mesh的网络中解决路由黑洞而产生的。如果路由器认为一条BGP路由存在黑洞的可能性,它就不会去传这条路由。
 
R3(config)#ip route 4.4.4.0 255.255.255.0 serial 0 (必须写成24位)从IGP收到同一条路由
R3(config)#ip route 24.0.0.0 255.0.0.0 serial 0  (只要下一跳可达即可)
 
·BGP路由优化的2个条件:
 1)同步问题
 2)下一跳是否可达  
 
高级解决方案:
R3(config-router)#no synchronization (不检测同步,高版本IOS默认开启)
R2(config-router)#neighbor 3.3.3.3 next-hop-self (对邻居3.3.3.3说,将下一跳改为我)
 
BGP的邻接状态机:
 
1、idle  空闲--查找是否有去往邻居的路由
2、connect  连接--建立TCP三次握手
3、Active  活动--协商还未成功
4、open sent  打开发送--互发参数进行协商 5s 
5、open confirm  打开确认--协商取得一致
6、established   建立
 
只有当连接处于建立状态时,才能交换更新、存活和通知消息
 
<BGP认证>
BGP支持MD5认证
R2(config-router)#neighbor  2.2.2.2 password cisco
 
清除BGP会话:
当你将一个policy应用于BGP的时候,由于BGP是不会做周期更新,所以需要手动做更新。
 
clear ip bgp * 
clear ip bgp * soft
 
neighbor [ip-address] soft-reconfiguration inbound   本命令告诉BGP路由器:保存从邻居那里学到的所有路由更新,供入站策略被修改时使用。这样就无需对方重新发送信息。
-----------------------------------------------------------
<Auto-Summary>
 
·当其他IGP协议重分布进BGP时,默认会进行自动汇总。其它情况下BGP不会自动汇总
 
·将IGP重分布BGP中,会携带IGP中的Metric和Next-hop。
在auto-summary情况下,将IGP重分布进BGP,不会携带原有的METRIC值,next-hop
在no auto-summary情况下,会携带原有的METRIC值和掩码,next-hop
 
Auto-summary对于network的影响:
1,可以是主类方式宣告(如:network 3.0.0.0),条件是:必须出现在路由表的子网;
2,也可以是明细方式宣告,必须带mask(如:network 3.3.3.0 mask 255.255.255.0),条件是:必须和IGP表的路由精确匹配。
3,如果是用no auto-summary,那么network只能用明细方式宣告。通常都会用这一方式
 
 
·当从BGP邻居收到一条路由,发现下一跳是自己的直连接口地址,则拒收此路由。
 
R1(config-router)#no auto-summary (高版本IOS默认开启)
 
R4(config-router)#network 4.4.4.0 mask 255.255.255.0 
(在no auto-summary时,必须严格按照IP地址掩码通告)
 
在BGP中,network的特点是:
1、必须精确宣告路由和掩码
2、只起到宣告作用,不建邻居
3、可宣告IGP学到的路由,并携带Metric和Next-hop
 
Show ip bgp neighbors __ip___  advertised-routers  查看我给这个邻居发了哪些路由
 
<Summary>aggregate聚合
 
1)通过Network做汇总:
 R4(config)#ip route 192.168.0.0 255.255.252.0 Null0
R4(config-router)#network 192.168.0.0 mask 255.255.252.0 (不要宣告明细)
 
在BGP中的network命令只要是路由表中有的路由,它都可以宣告,直连的,静态的,即使从IGP学到的也可以
 
2)Aggregate:
要先宣告每一条明细,再用以下命令做聚合 
 
 
 
 
R4(config-router)#aggregate-address 192.168.0.0 255.255.252.0 (宣告明细)
                    明细&汇总都被发出
 
B    192.168.0.0/22 [200/0] via 0.0.0.0, 00:00:16, Null0
当一个路由器收到IGP重分布进BGP的路由后,发现下一跳是自已的直连接口,它不会把这一路由放进BGP路由表,并且也不会再向下传。
 
R4(config-router)#aggregate-address 192.168.0.0 255.255.252.0 summary-only (只通告汇总)
必须带这一参数才只会发汇总路由,不然连明细都会发出去,被汇总的明细路由前面会打上S
 
Suppress-map 抑制列表 -----抓的就是被抑制的路由
 
R2(config)#ip prefix-list 1 permit 192.168.0.0/23 ge 24 le 24
R2(config)#route-map WOLF
R2(config-route-map)#match ip address prefix-list 1
R2(config-router)#aggregate-address 192.168.0.0 255.255.252.0 suppress-map WOLF
                                             (抑制192.168.0.0/24 ;192.168.1.0/24路由)
 
show route-map  专用查看router-map 
注意:如果用了suppress-map不起作用的话,要清一下本路由器,要硬清才行
 
如果在R1上做的话,明细路由携带AS号的一些属性将会消失,用下面这一命令可以还原
R1(config-router)#aggregate-address 192.168.0.0 255.255.252.0 as-set (还原AS属性)
 
*> 192.168.0.0/22   0.0.0.0                       100  32768 4 i
                              {4,5} (明细从不同AS传来)
 
<Reflector>
路由反射器
·打破IBGP的水平分割规则。
 从EBGP学到的一条路由,会传给client和非client端
 从client端学到的路由,会传给其它client和非client端
 从非客户端收到路由,会转发给客户端以及EBGP邻居,但不会转发给非客户端。
 
在路由反射器上做---
R2(config-router)#neighbor 1.1.1.1 route-reflector-client 这一条命令全搞定
               (1.1.1.1为R1的客户端)
 
<Confederation>
联邦
·将大AS划分成若干个小AS,小AS之间是EBGP关系。
·1、联邦中的所有路由器都必须用起小AS号。(Route bgp 小AS)
R2#show ip bgp neighbor 12.1.1.1 adverised-routes
·2、联邦中的所有路由器都必须声明大AS号
 R1(config-router)#bgp confederation identifier 1
 
·3、连接小AS的边界路由器要互相指peers:
联邦中的小AS号(64512)不算作AS-Path属性比较,只算作一个
 R1(config-router)#bgp confederation peers 64512
                    (对端小AS号)
注意:两个小AS之间也要解决多跳问题,大AS的两个边界必须向内指下一跳。
 
·联邦外路由器和联邦的边界路由器建立邻居关系时,neighbor大AS号。
在sh ip bgp中,小AS号会用括号括住,并且不算做一个进行路径比较的AS号
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
BGP选路策略--
 
属性分类
1、公认强制的 所有的bgp的updata消息都要包含该属性
2、公认自由决定的 该属性是可选可不选的,但是所有的bgp 进程都能识别
3、可选传递的 即使bgp进程不能识别该属性,也会继续传递下去
4、可选非传递的 如果bgp 进程不能识别该属性,可以忽略这条updata,并且不传递下去
 
 
例如:
1、公认强制属性
    --AS路径(AS-path)
    --下一跳(next-hop)
    --源头(origin)
 
2、公认自由决定的
    --本地优先级(local preferent)
 
3、可选传递的
    --社团属性(community)
 
4、可选非传递属性
    --MED
 
weight(权重)--cisco私有技术,只具有本地意义,用于本地路由器进行选路
 
一条路由信息包含了一组属性,每一个属性由三个字段组成。
·属性类型
·属性长度
·属性值
 
If the AS path length is the same, prefer the lowest origin code (IGP < EGP < incomplete).
 
1、<Weight>CISCO的私有属性
越大越好
·本地有效。只在这一台路由器上起作用,人为设置的邻居的权重
·默认值=32768(本地)/ 0(收到的路由)
 
当一个路由器分别从两个不同的邻居处学到同一条路由,它可以根据WEIGHT值决定从哪个邻居走
 
修改Weight---
R1同时从R3和R2学到同一条BGP路由,在R1上改:
 
R1(config-router)#Neighbot 3.3.3.3 weight 1
 
R1(config)#route-map WE
R1(config-route-map)#match ip address _____
R1(config-route-map)#set weight 8
记住还要在后面写一条让其它路由通过的route-map
R1(config-router)#neighbor 3.3.3.3 route-map WE in 在自己的进方向
 
R1(config-router)#neighbor 2.2.2.2 weight 8
 
<Local_Preference>越大越好
 
本地优先级是公认自由决定的属性,它告诉AS中的路由器,哪条路径是离开AS的首选路径。
 
·告诉自己的IBGP邻居如何离开本AS。注意这一句话,和MED做比较有啥不同
·只能在本AS内传递。
·默认值=100 (show ip bgp 1.1.1.0/24)
 
设置方法:单独在AS内的每一台路由器上设置它的本地优先级
例如:如果R1上,网络3.3.3.0的优先级设置为100,R2上网络3.3.3.0的本地优先级设置为200,流量会从R2走。
R1(config)#route-map WE
R1(config-route-map)#set local-preference 101
 
R1(config-router)#bgp default local-preference 101 会影响所有路由,将本地缺省路由改为101
这条命令打上后,本地的值就会变,但必须show明细才能看得到
打上这一命令后----
·对"EBGP传过来的路由"\"自己network的路由"起效,要show明细才能看到。
·对"IBGP传过来的路由"\"汇总路由"不起效。
 
 
<AS-Path>shortest AS-path
只能在EBGP邻居之间来改动,对IBGP邻居传来的路由改不了
最短AS路径,到目标网络经过的AS最少的路由胜出
R1(config)#route-map AS
R1(config-route-map)#set as-path prepend 7 8 9  设置虚拟的AS号
通常都会这样加set as-path prepend 4 4 4 加自已的AS号,不易搞混
做OUT方向往后加
做IN方向往前加
·做out方向:出本AS之前预先设定AS号,人为设定的AS号顺序不变。
·做in 方向:进本AS之前预先设定AS号,人为设定的AS号顺序不变。
 
<origin attribute>
IGP (i)  在BGP中用network命令宣告的路由
EGP (e)这个EGP指的是一种早期的协议,现已不用
route-map wolf
set origin egp
nei 3.3.3.3 route-map wolf out
 
Incomplete(?) 重分布进BGP的路由或者静态路由
 
<MED>多出口鉴别属性
 
Router A’s Configuration:
router bgp 65001
neighbor 2.2.2.2 remote-as 65001
neighbor 3.3.3.3 remote-as 65001
neighbor 2.2.2.2 update-source loopback0
neighbor 3.3.3.3 update-source loopback0
neighbor 192.168.28.1 remote-as 65004
neighbor 192.168.28.1 route-map med_65004 out
!
access-list 66 permit 192.168.25.0.0 0.0.0.255
access-list 66 permit 192.168.26.0.0 0.0.0.255
!
route-map med_65004 permit 10
match ip address 66
set metric 100
!
route-map med_65004 permit 100
set metric 200
 
 
 
·告诉自己的EBGP邻居如何进入本AS。Local prefrerence决定如何出去,MED决定EBGP邻居如何进来
·只能传递一个AS。
·默认值=0
MED值越小越好
Sh ip bgp 中显示的Metric值就是MED
R1(config)#route-map MED
R1(config-route-map)#set metric 1
R1(config-router)#neighbor 24.1.1.4 route-map MED out
 
注意不能到对方的AS中去看,只能用以下的方法来验证
测试方法: 扩展ping / debug ip bgp updates再软清
 
·默认不比较从不同AS传来路由的MED。如果要比较不同AS传来的MED值,要用下面的命令
R2(config-router)#bgp always-compare-med //接收端打
 
<Community>主要用来控制路由的传播范围
 
社团属性也叫共同体属性
 
社团属性  h
“可选”:BGP的所有邻居都有可能不识别社团属性。(是可选的,路由器默认不认识)
社团属性类似于允许路由器能够使用一个指示符来标记路由,并且允许其他路由器根据这个标记做出相应的决定
 1 并且允许同时打多个标记
 2  社团属性
     well-know commnunities 公认团体
     private commnunities 私有团队
 
R2(config-router)#neighbor 1.1.1.1 send-community //必须打,否则邻居不认识。
 
“传递”:社团属性只会传给指定的邻居,并只在此邻居上起效。
比如上例:就只传给1.1.1.1这一邻居,并只在它上面起效,不会再向后传
 
·no-advertise:携带此属性的路由不会通告给任何BGP邻居。也就是说只传达给一个邻居
·no-export: 携带此属性的路由不会传出大AS外,只会传给IGP。(联邦中的小AS会传递)。
·local-AS: 携带此属性的路由不会传出小AS。d
 
R1(config)#route-map wolf permit 10
R1(config-route-map)#set community no-advertise/no-export/local-AS
R1(config-router)#neighbor 24.1.1.2 send-community
在24.1.1.2上show明细可以看到社团属性,还有其它的一些属性
 
<BGP用loopback口建邻居,不要再通告此loopback>
 
·通过IGP(OSPF)学到对方loopback,用looback建EBGP邻居
·又在BGP中通告此loopback。
 
此时路由表中会出B和O翻动的现象。
因为EBGP AD=20,所以路由表中会显示B
但路由是2.2.2.2/32 Next-hop 2.2.2.2,路由表会有环路检测机制
将路由的网络位与下一跳的相应网络位比较,如果相同,就删除此路由。
把这条路由删除,所以又变成打O的。
--------------------------------------------------------------------------------------
相应的策略   效果就是特指的数据包进行处理
access-list 1 permit 172.16.1.0
route-map wolf 
match ip address 1
set community 4:20
进入bgp中运用route-map
 
 ip community-list 1 permit 4:20
route-map ccnp deny
match ip community 1
route-map ccnp permit 20
router bgp 64513
neighbor 35.1.1.5 route-map ccnp out
 
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
FEATURE
router 4 s0/0<====>s0/0 router 2
router 2 s0/1<====>s0/1 router 1
router 1 s0/2<====>s0/2 router 3
router 3 s0/3<====>s0/3 router 5
 
192.168.1.1
172.16.1.1
         as 4                         |                    as 123                    |                         as 5
|----router 4----------------router 2------------router 1---------------router 3-------------------router5---|
                                          |   64512     |                  |64513 |
 
 
<local-as>主要在过渡AS号时用
如果在EBGP中,邻居指错了R2的AS号,可以在本地用以下方法解决:
R2(config-router)#neighbor 12.1.1.1 local-as 3
                                   (对方指错的AS号)
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 1.1.1.0/24       12.1.1.1                 0             0 3 1 i
                         (加入了指错的AS号)
 
R2(config-router)#neighbor 12.1.1.1 local-as 3 no-prepend 
                  (在AS-path中去掉指错的AS号,只能在我自已这边收到的路由中去掉)
 
第二种解决方案
 
router 5
r5(config-router)#neighbor 35.1.1.3 allowas-in
这种方法不如 no-prepend好
<BackDoor> 后门链路IE要考
 
 
·通过IGP学到某条路由,又从EBGP学到相同的路由。
 由于EBGP AD=20,小于IGP的AD,所以会优先EBGP的路由,
 但实际路径从IGP走更优化。
例如:R2学到两条相同的路由,用以下方法在BGP进程下改,实际上就是提高了从BGP学到的路由的AD值
 
R2(config-router)#network 3.3.3.0 mask 255.255.255.0 backdoor
                    (将此路由的AD调高到200)
将BGP学到的路由的AD值提高,从20提高到200
 
<BGP 的负载均衡 >
最多为 6条
 
(config-router)#maximum-path 2
注意bgp的负载均衡仅仅只能在ebgp中实施不能在ibgp中 
 
 
<Dampening>  
 
·为了防止路由频繁抖动。BGP利用Dampening机制,将这种频繁抖动的路由有条件的加以抑制。
·BGP默认不启用Dampening,而且仅对EBGP邻居传来的路由启效。
·一条路由up->down,默认惩罚1000,当达到start suppress值时,被抑制。
 
被抑制的路由不会传给本地,也不会传给其他EBGP邻居
·Half-life Time    : 15 m        半衰期(一个半衰期降为原来的一半)
·Reuse         : 750         降到这个值以下,重新开始启用路由
·Start Suppress    : 2000        升到这个值以上,开始抑制(即抖动2次就开始抑制)
·Max Suppress Time : 60 m (4×15)   最大抑制时间(最长抑制这么长)
 
R2(config-router)#bgp dampening(对所有从EBGP收到的路由启用Dampening)
R2(config-router)#bgp dampening 15 750 2000 60  可这样修改默认参数,惩罚值不能更改
 
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邻居)
 
R2#clear ip bgp dampening 
 
针对一个路由单独做dampening,针对一个路由单独做了,就不要再在全局下做
R2(config)#ip prefix-list 1 permit 1.1.1.0/24
R2(config)#route-map DAMP  
R2(config-route-map)#match ip address prefix-list 1(BGP建议都用prefix,比ACL精确)
R2(config-route-map)#set dampening 15 750 2000 60
 
R2(config-router)#bgp dampening route-map DAMP    在进程下调用
 
 
<Next-hop-unchange>
 
 
 
 
 
<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).
 
<Regular Expression> 正则表达式,用来控制AS号,控制自已只接受哪些AS来的路由(即对sh ip bgp sum中的AS-path查看,是否符合以下条件)
用AS号过滤的路由
^ : 代表输入字符的开头(即AS-path开头)
$ : 代表输入字符的结尾(AS-path结尾)
_ : 匹配一个符号(只能是空格/逗号/左括号/右括号等)
. : 匹配任何一个字符
* : 星号前的字符可重复0次或多次
 
例子:
 100  : 只要AS中包括100都匹配  如2100匹配
_100_ : 所有经过AS100的路由(必须有个)
_100$ : 起源于AS100的路由
^100_ : 进入本AS之前的AS必须是100
^100$ : 起源于AS100,并直接传入本AS(即只包含AS100)
100$:起源的AS号其最后三位一定是100,例如:100,1100,2100都可以
.*    : 所有路由
 
R1#show ip bgp regexp ^23$
 
<1> R1(config)#ip as-path access-list 1 permit _1$
    R1(config-router)#neighbor 13.1.1.1 filter-list 1 in 
             (只允许起源于AS1的路由进入)
 
<2> R1(config)#ip as-path access-list 1 permit _1$
    R1(config)#route-map AS
    R1(config-route-map)#match as-path 1 
    R1(config-router)#neighbor 13.1.1.1 route-map AS in 
 
注意:在列表的最后也有默认的deny any
 
<Remove-Private-AS>
在联邦中,去除掉私有AS号
 
R1(config-router)#neighbor 13.1.1.3 remove-private-AS 
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       13.1.1.1                               0 1 i