终于完成了!里面有些内容没有测试,大家如果看到了感兴趣测试一下可以告诉叔答案,叔请你吃棒棒糖!XD
由于路由BGP的实验涉及的命令太少,所以这里基本将书中所有配置做了一个简单的记录,并且是曹叔口述版!
对了,突然觉得这篇写的比较规范,那么如果,想私藏请自便,如果转载或者上传文库,请联系作者 =。= 这样好咩~
1、 aggregate-addressaddress mash 聚合路由会具有atomic-aggregate(原子聚合)属性,表明该聚合路由的AS属性已经丢失;
a)如果加上as-set参数会保留AS信息,如果上一跳来自两个AS,这两个AS使用大括号圈起,且当大括号内有自己的AS路径时,同样也不会接收这条bgp条目到自己的bgp表中;
b)若再带上参数advertise-map route-map-name时,表示只以匹配route-map的条目生成汇总条目,就算有其他条目也能被汇总条目包括但是不在route-map匹配范围之内也不能生成汇总条目,route-map里面可以匹配访问控制列表,as-path access-list(正则表达式);
c)如果带上的是attibute-map route-map-name或者是route-map route-map-name可以用来修改聚合路由的属性,本台设备立即生效
d)带上summary-only抑制所有明细条目
e)如果带上的是suppress-map route-map-name时,可以抑制route-map里匹配的明细条目,通告其他明细条目
2、 Auto-summary默认启用,对于network或者从IBGP、EBGP学到的条目不生效,只对重分发进来的条目生效,本台立即生效,汇总成主类。
3、 Bgp always-compare-med,默认情况下BGP不会比较从不通AS学来的条目的MED值,会跳入下一个选路属性,这条命令会让路由器对从不通AS学来的相同条目比较MED
a) Bgp bestpath as-path ignore,配置了本条命令BGP选路时会跳过比较AS路径这一项,PS:带as-set的聚合路由无论AS集合(set)中AS项有多少,都记为1,联盟的子AS不会计算在AS-path内; b) Bgp bestpath med confed,只能用来比较AS路径属性中含有AS联盟序列的路由的MED,bgp always-compare-med是会比较所有路径的MED值;
c)Bgp bestpath med missing-as-worst,默认情况下收到条目没有带MED时认为MED为0,配置本条命令之后,认为MED为4294967294,也就是说会优选带有其他MED的相同条目,但是查看BGP表时,MED还是显示0,一般来说要和bgp always-compare-med一起使用,否则不通AS学来的条目不比较MED值。
4、 Bgp client-to-client reflection,将路由器配置为路由反射器时,默认会激活客户端到客户端的路由反射功能(client-to-client reflection),如果客户端之间已经建立了IBGP全互联,则可以通过no掉本命令关闭这个功能;而且如果开启了这个client-to-client reflection功能,客户端则不能成为对等体组的成员。
5、 Bgp cluster 32bit_id,EBGP通过AS路径来判断环路,IBGP则是从IBGP邻居学来的不再传给别的IBGP来防止环路,但是如果配置了路由反射器则这个机制不再生效,然后路由反射器会为路由的始发者生成一个始发者(originator)ID,当网络中有多台路由反射器时,隶属于同一路由反射器集群的路由反射器必须配置相同的集群ID,一个路由反射器集群包含了路由反射器及其客户端,当路由反射器反射路由时,本AS内部的环路检测交由包含在路由集群列表属性中的集群ID来完成。(未测试,P59页)(看31!)
6、 Bgp confederation identifier AS_number,声明自己所处的联盟主AS号(联盟标识符),用来与不属于该联盟的EBGP对等体建立EBGP连接,子AS号只在配置的bgp进程上体现;
a)联盟是用来克服IBGP可扩展性问题的技术,一般来说为了解决IBGP的防环路机制带来的问题我们都要做IBGP,导致IBGP可扩展性不好,新加一个邻居,需要新建的IBGP连接数是原先所有IBGP speaker的数目,全互联的连接数是N*(N-1),使用联盟的话,我们可以在一个AS内部使用类似于EBGP的方式传递条目,但是路由交换信息的内容比如下一跳、MED、以及本地优先级等都如同使用IBGP一样不会改变,联盟内的子AS内也还是IBGP邻居关系,子AS之间就类似于EBGP建立邻居的方式了,这样的结果就是子AS之间的设备不需要起全互联,减少了大量的BGP连接数。
b)Bgp confederation peers 1_or_more_AS_number,声明自己配置的ebgp邻居里面哪些是同个联盟的子AS,使得我们的EBGP邻居关系只限于联盟内部,但是查看邻居的时候一样也是EBGP邻居关系
c)联盟的子AS也会显示在AS路径内,但是被小括号包含起来了,而且不会被计算在AS-PATH长度内,也只会在联盟内的设备上看到,出了联盟之后只能看到主AS。
7、 Bgp dampening,该命令可以开启路由抑制特性,默认half-life(半衰时间):15分钟,reuse(重用限制):750,suppress-limit(抑制限制值):2000,max-suppress-time(最大限制时间):4*半衰时间=60min,惩罚值是定值1000。
a)当一条前缀从up变down(会产生一条WITHDRAWN信息)算作一次翻动,默认情况下如果又从down变up(会产生一条UPDATE信息)就直接可以使用,如果频繁的翻动会导致cpu处理过高,当条目被重分发进IGP也会导致IGP不稳定,如果使用该命令开启路由抑制特性,会为维护每一条翻动路由的历史记录(挂掉的条目在bgp表内显示为h=history),当发生第一次翻动时会给条目1000的惩罚值,如果惩罚值小于抑制限制值,不会触发抑制路由,这个条目还是会生效且发一条UPDATE,这个惩罚值1000会根据半衰时间的函数慢慢减少,如果没过多久又产生了翻动,则在当前惩罚值上再加1000的惩罚值,如果本次或者数次之后超过了抑制限制值则触发抑制,该条目不会被使用,也不会发送UPDATE信息,在bgp表内显示为*d(*表示条目有效,d表示damped被抑制),直到惩罚值减少到重用限制的值为止,一般来说重用限制小于固定惩罚值1000,抑制限制大于固定惩罚值1000。
b)通过IBGP学到的路由不受路由抑制特性的约束,只作用于EBGP学来的每条条目。
c)可以只用Bgp dampening 30(表示半衰时间min),其他默认
d)可以使用Bgp dampening half-life reuse suppress max-suppress-time,使用这条命令时最长抑制时间不能低于半衰时间,半衰时间取值1-45min,默认15;重用限制取值1-20000,默认750;抑制限制取值1-20000,默认2000;最长抑制时间取值1-255,默认半衰4倍。
e)可以使用Bgp dampening route-map route-map-name,也就是说可以针对不通的条目施以不同的路由抑制参数,匹配使用路由图匹配访问控制列表或者as-path list,设置抑制参数可以直接在路由图里面使用set dampening W X Y Z完成。
8、 Bgp default local-preference local-preference(0-4294967295),该命令可以设置自己在本AS内传递条目使用的本地优先级(默认100),如果要在全AS生效,记得全互联,或者说使得自己发出去的条目可以被所有人接收到。
9、 Bgp deterministic-med,这条命令也会使得BGP路由器比较每条EBGP条目学来的MED值,但是先会对来自同一个AS邻居的同一条目编成一组,各组选出最优路由之后再次进行比较。
a)而前面有的bgp always-compare-med一经启用便会比较每条路由的MED,而不考虑是从哪个AS的EBGP邻居收到的。
b)这两条命令一共有四种组合方式,第一种默认都没敲,第二种和第三种是分别启用了一种,第四种是都启用,四种不同方式会对最佳路径的决策造成不同的影响,书里面作者没说清,翻译也只顾着吐槽没有说明,翻译给出的链接失效了,所以这里的话没有弄的很清楚,如果要搭环境一个个测试的话那也太麻烦了,233,我猜测一下,本条命令在对同一组也就是同一个AS来的条目比较的时候,如果没有开启always这条命令,应该会使用其他的属性在本组中选出最优条目,然后再去和其他组的最优条目比较MED,如果两条一起开启的话,和开启一条always过程不一样,但是结果应该是一样的,以上纯属YY不可轻信。
10、 Bgp fast-external-fallover,该命令为默认启用,作用是当用来建立BGP连接的接口失效时,该特性会促使BGP路由器立刻终端BGP会话,如果接口频繁翻动,该特性会引发网络的不稳定性,因为BGP会话会在idel和establish之间不停切换,导致大量UPDATE和WITHDRAWN消息。
a)那我们可以考虑no掉该命令,使得接口挂的时候,不会让用该接口建立的BGP邻居立刻失效,而是等到hold time时间到了而接口还没起来再失效,这样可以使得如果在保持时间内,接口又起来了,或者频繁切换,不会产生大量不必要的消息。
11、Bgp log-neighbor-changes,激活bgp邻居状态变更的日志记录功能,默认开启,和ospf一样,只不过ospf可以选择带上details参数,但是bgp没有,可以记录很多事件,各种报错消息,各种修改配置,各种连接断开,各种请求和各种没有内存,不一一抄写。
a) 可以存放在远端syslog服务器,那么要配置,也可以放在本地,那要配置buffered,直接logging buffered会默认带上4096和debugging的参数,表明4096k和记录7层的信息,也就是所有的保存了。
12、Bgp router-id ip-address,手动配置RID,不配的话就自动选类似ospf的机制!
13、Default-information originate,bgp要重分发默认路由的话,要满足三个条件,创建静态默认路由;将静态默认路由重分发进BGP;并配置本条命令;吐槽:那还不如netw。
a) Default-metric metric_value,将其他协议(包括静态和直连)重分发进BGP时,默认不带MED就默认认为为0,也可以直接在重分发的命令后面加上metric参数,或者注意,一定在重分发的时候没有带上metric参数,再配置该命令,才会生效。
14、Distance AD Sourceip mask list,修改BGP管理距离,可以修改任何学来的BGP条目的管理距离,不管EBGP还是IBGP条目,可以匹配具体的源地址,或者源地址+访问控制列表;
a)Distance bgp external internal local,默认顺序为20、200、200,外部内部无需解释,local表示本地路由,比如本地聚合的条目(即指向null0的条目),目测本地通告的也生效。
15、Distribute-list,这种形式的命令只对IGP生效,配置bgp即使这条命令可以敲进去,但是不要使用该命令,尼玛这到底是生效还是不生效,要使用指邻居带分发列表!
16、 Maximum-paths number-of-path,默认情况下BGP只会认为一个条目是最优的,然后放进路由表,如果有两个从EBGP学到的条目的所有属性相同,如MED、本地优先级、权重等,BGP会继续比较RID甚至是接口ip地址然后选出唯一一条成为最优,如果配置了该命令会将多跳属性完全一样的EBGP条目同时加入路由表,范围1-6!
17、Neighbor X.X.X.X advertise-map 路由图A non-exist-map路由图B/exist-map路由图B,正常情况下,自己通告或者重分发或者从BGP邻居学到的,都可以通告给其他BGP邻居(当然要满足BGP防环路的规则),配置本命令之后,可以设置当匹配B的主条目不存在时,则匹配A的次要条目将会被抑制不会被通告,只有B条目消失时,才会通告次要条目A;当然也有一个参数是exist而不是non-exist,目测这个是当B存在才通告A。
18、Neighbor X.X.X.X advertisement-internal,修改BGP路由更新的最短时间间隔,默认是IBGP5s,EBGP30s,可配置的范围都是1-600s,可以用来减少路由翻动的影响,也就是说假设比如ebgp使用默认30s,再30s内路由抖动多次也不会产生路由更新,30s后发送一次更新,该命令以默认值默认存在。
19、 Neighor X.x.x.X default-originate,除了在每条路由器上配置默认路由,或者前面有提到的重分发静态路由,要么可以使用这条命令将默认路由通告给邻居,但是这条命令的缺点是,不管我有没有默认路由,我都会给邻居通告默认路由,如果从多个邻居收到属性一样的默认路由,根据RID继续往下选。
a)这条命令后面可以跟上route-map,表明只有当路由图内的条件满足时才给邻居通告默认路由,路由图比如可以匹配外网出接口,也可以匹配外网网段,甚至是学来的条目是否存在,或者你想乱配,=。=,反正我是不介意的。
20、Neighbor X.X.X.X description txetabcdef,描述邻居,做标记,无其他意义。
21、Neighbor X.x.x.X distribute-list ACLNO. In/out,过滤BGP的路由更新,可以过滤进来的,也可以在发给邻居前先做一个过滤,可以只放行某些条目,也可以只拒绝某几个条目,这都是看ACL怎么写;
a)比如我如果一台设备进行汇总,但是没有抑制明细的话,邻居如果想只收到明细条目或者只想收到汇总条目,理论上是可以用标准访问控制列表来写,但是结果可能差强人意,因为用标准访问控制列表的话,比如0.0、1.0、2.0、3.0/24被汇总成0.0/22,这样的我们就没法写,比如你先允许汇总路由,再deny那肯定不行,明细条目都被放行,如果你先deny明细的0.0,那这样的会这条应该会影响到汇总路由,所以当网络号一样但是掩码不一样的时候,我使用标准访问控制列表就有问题;
b) 一般我们会用前缀列表来解决这样的掩码问题,但是这里匹配不了前缀列表,我们还可以怎么做呢,这里可以使用扩展访问控制列表,一般情况下扩展访问控制列表前面是源后面是目标,但是用于分发列表时,这后面的地址表示掩码的长度,比如可以这样写172.16.0.0 0.0.3.255 255.255.255.252.0 0.0.0.0,前面是我的网络号和掩码,但是前面的掩码不会去精确匹配,后面这255.255.255.252就是我可以匹配的掩码长度了,最后写4个0表示精确匹配掩码长度,亮!赞!
c)Neighbor x.x.x.x ebgp-multihop hop_value(默认不敲是255),建立ebgp的地址如果不是直连的话,需要配置多跳的值是的open-sent报文可以到达。
22、Neighbor x.x.x.x filter-list as-path-list-number in,就是使用AS路径过滤器(即AS-filter使用正则表达式)过滤从一个指定邻居来的条目,比如现在要写一个过滤掉所有从AS3始发的条目,用如下语句
a) Ip as-path access-list 1 deny _3$(表示以as路径3在最尾,即3始发)
Ip as-path access-list 1 deny _3_(表示所有as路径含有3)
Ip as-path access-list 1 deny ^3$(表示有直连as3的EBGP邻居生成的路由)
Ip as-path access-list 1 permit .*(BGP配置手册附录B详见)
b)使用in方向的列表时,debug BGP的路由更新可以看到邻居条目传过来了,但是DENIED due to:filter-list;
c)如果as-filter-list之后不是in或者out,而是参数weight,后接具体的权重值,范围1-65535,as-filter的使用方法一样,该命令的意思就是对于邻居XXXX传来的匹配列表的条目,设置权重为多少,对ebgp和ibgp都生效。
23、Neighbor x.x.x.x maximum-prefix prefix-limit-value threshold-value warning-only,该命令用来限制学自特定邻居的前缀数,假设最大前缀1000,门限值75%(不敲的话默认就是75%),当从邻居收到了751条的前缀时就会产生一条告警信息,如果再继续超过最大前缀1000就会中断和邻居的BGP连接,当然最后warning-only是可选参数,如果不敲默认超过1000之后就中断BGP连接了,但是如果敲了,只会产生告警消息而已。
a)如果都是产生告警消息,那产生的内容差不多,除了条目数显示不一样,超过门限会提示MAXPFX,超过最大限制的话是MAXPFXEXCEED;
b)如果是没有敲warning-only参数,超过最大限制连接就会断开,在show ip bgp neighbors里面就能看到邻接断开的原因是超过了最大前缀限制。
24、Neighbor x.x.x.x next-hop-self,当从EBGP邻居学来条目时,下一跳是ebgp邻居和我建立连接的地址,当我把这个条目再传给别的ibgp邻居时,默认情况下下一跳是不会变的,但是我的ibgp邻居一般来说是不知道这个下一跳是怎么达的,因为一般来说我不会把我自己和ebgp相连的网段通告进底层IGP,所以可以通过这条命令,强制把我自己发给邻居XXXX的条目修改为自己和XXXX建立连接的地址。
a)但是这种默认不修改下一跳为自己是有好处的,比如在一个多路访问情况下,BC建立EBGP邻居关系,AB建立IBGP邻居关系或者IGP关系,A学的下一跳如果直接是C的地址的话会使得去往C的数据包少走弯路,类似与OSPF的FA地址。
b)但是要注意在NBMA的环境中,如果是上述情况,A一定要有去往C的PVC。
25、Neighbor x.x.x.x password cisco,在BGP对等体之间启用TCP连接的MD5认证,密码最大长度80字符,包括空格。
26、Neighbor peer-group-name peer-group,定义对等体组,和neighbor x.x.x.x peer-group peer-group-name将xxxx加入对等体组,当一台路由器有多个BGP邻居,并且执行的路由更新策略也全部都相同,当然一般情况下我们都是分别配置路由更新策略,如果这么做的话,就算所有更新策略相同,BGP也会针对每个邻居单独计算,如果配置了对等体组的话,我们就对路由更新策略进行一次计算,然后将路由更新发送给隶属于该对等体组的所有邻居;
a)一般来说我认为,这就是对命令的一种简化,对BGP路由器工作方式的优化我们是感受不到的,如果邻居比较少,这种方法的配置命令也不一定会少多少;
b)配置了对等体之后,也可以对对等体内的邻居进行特殊处理,比如如果使用filter-list的入向策略,则会压倒(override)对等体组内配置的入向策略,出向策略不行。
27、Neighbor x.x.x.x prefix-list prefix-list-name in/out,使用前缀列表过滤从指定邻居来的条目或者发给指定邻居的条目,使用前缀列表的话过滤精确掩码的条目就容易多了,关于前缀列表的使用这里不在赘述,
28、Neighbor x.x.x.x remote-as ASNO.,这条命令是最重要的BGP命令,没他你还做个毛啊,就是用来配置BGP的会话,这个我想大家都懂。
29、Neighbor x.x.x.x remove-private-as,向指定邻居发送BGP条目时,剔除条目中的私有AS号,范围64512-65535,不应该将此类AS号通告给internet,但是注意如下几点:
a)只对EBGP对等体生效,
b)如果路由更新的AS路径中只有私有AS号时,才会将私有AS剔除;如果路由更新的AS路径中又有私有AS又有公有AS,BGP不会剔除,将这种情况视为配置错误;
c)如果路由更新的AS路径中包含指定邻居的AS号,也不会剔除
d)如果路由更新的AS路径中包含联盟,那么只有当私有AS号出现在AS路径的联盟部分之后,才会将其剔除
e)以上书中摘取内容有点难以理解,所以我做了如下实验,ABC三台路由器连接,全部EBGP邻居,A的AS号65535,BC分别是1、2,在A上设置这个命令是无效的,只有B上可以设置成功;也就是说A设置这个命令,B还是能收到AS路径65535的条目;B设置这个命令之后,C收到的条目里面AS路径只有1;
f)得出以下结论:是我已经收到了带有私有AS号的条目,而且全部是私有AS号,然后我再发送给有公有AS号的邻居时,只使用我自己的AS发送出去,也就是说要在公有和私有的边界配置本命令,且是那台公有AS的边界;
g)并且说明,对于本来路由器来说,AS路径是我收到的AS路径,不包括我要发送给邻居时,即将加上的自己的AS号,抓包发现,AS路径是我发送时加上自己的;
h)还有新发现就是,一个路由器的所有条目都会发送给所有EBGP邻居,就算这个条目是从这个EBGP邻居学来的,不过没关系,会被环路检测机制丢弃,这就可以解释上述C部分的原因,我如果从你学来的发送给你的时候不会剔除你的AS号;
i)再关于H我又有新扩展,比如我可以配置allow-in(接受者)也可以配置as-override(发送者),这样我可以使得从EBGP邻居学来的条目又被我发送给EBGP邻居,这样岂不是会产生环路,测试过,这样是可以从邻居学来我发给邻居的条目的,但是没关系,会因为最优路径的问题,它不会再被发送给邻居啦,也就是说我顶多看到一条有我的AS号的AS路径的非最优条目(这条条目由我始发);
j)联盟部分说法未测试=。=
30、Neighbor x.x.x.x route-map route-map-name in/out,通过路由图来操纵路由更新或者修改条目属性,这个也算大家比较常用的命令了;
a)比如在route-map里面匹配访问控制列表,过滤某些条目,但是这个和指定邻居的分发列表或者指定邻居的前缀列表一样的功能,使用路由图有点不直接;这里使用匹配扩展访问控制列表的话,也可以使用扩展访问控制列表的目标表示掩码长度;
b)路由图的功能体现在可以匹配不不同条目,对他们进行特定操作,比如修改各种属性,类似于添加AS路径,修改权重、本地优先级、扩展共同体属性(可以用来执行类似于打tag的功能)等;而且这里的匹配条件也可以是各种列表,标准扩展前缀,甚至是AS-filter-list。
31、Neighbor x.x.x.x route-reflector-client,配置路由反射器是用来解决IBGP全互联引发的可扩展性问题,即新增一台设备,新增的IBGP会话数激增,可以使用RR来大幅度的减少需要建立的逻辑连接的数量;
a)关于路由反射器,我们的路由发射器需要配置IBGP邻居作为客户端,但并不需要把所有IBGP邻居配置为客户端,因为RR会将学自IBGP的条目反射给客户端,也会将从客户端学来的条目反射给其他IBGP邻居,且所有属性不变,书内没有明说但是命令体现出作者还是晓得这点的,哈哈;
b)关于集群(cluster)ID,这里没有明说,但是在一个实验中说明的集群的情况来看,一个集群表明的是一台RR和它的所有客户端,所以前文的内容说错了,或者说说的让我理解错了,不是所有的RR集群ID一样,如果用来避免环路的话,RR的集群ID应该不一样,一个RR和它的客户端的集群ID才应该一样!!!!(重要)。
32、 Neighbor x.x.x.x send-community,默认情况下路由器不会将团体属性向BGP对等体通告,只有配置了改命令之后才能将BGP的团体属性发送给BGP对等体,因为团体属性为可选传递属性,所以要传递共同体属性的话要在路径上的所有路由器配置本条命令;
a)个人觉得团体属性在本质上就是BGP路由更新的一种标记方法,沿途的路由器根据设置的团体属性来对路由进行操作,就不需要再使用列表等来匹配条目;
b)团体属性除了可以是一组数值之外,也可以是NO-EXPORT和NO-ADVERTISE两个值(还可以是internet和local-AS),都是well-know(公认的)团体属性,如果携带了NO-EXPORT这个属性,那么路由器不会将这个条目通告到AS之外,如果携带的是NO-ADVERTISE,则可以组织BGP路由器将路由通告给任何对等体;意思就是当我发送给邻居的时候带上相应属性,邻居就会根据属性选择是否不把条目发送出去;
c)PS:internet的属性是默认所有路由都属于该团体属性,还有一个Local-AS也是不将条目往AS之外发送,和NO-EXPORT的区别在于,如果有联盟,Local-AS是只在子AS内传递,但是NO-EXPORT是在联盟内传递。
33、Neighbor x.x.x.x shutdown,本来一只以为这条命令是***子放屁,但是人家有合理解释啊,就是说早期想断开BGP邻居的唯一方法就是no掉邻居,但是这样会删除邻居相关的所有命令,为网络管理带来不便,所以可以使用该命令来终止BGP会话,通过show ip bgp neighbor可以看到状态是管理down。
34、Neighbor x.x.x.x soft-reconfiguration inbound/outbound,本条命令是说如果BGP邻居配置了路由策略,如果修改了,需要清除BGP会话,会对路由选择造成短暂的影响,这条命令能是的网络管理员修改路由策略且不需要清楚BGP会话,书中明确说明inbound方向的命令会消耗内存来存放邻居重配的路由更新,outbound不会消耗额外内存,而且总是被调用的;实在有点不理解作者的意思,也没有去测试,标注一下,不过一般来说我们用软清也可以达到不中断BGP会话但是能重新设置路由策略的目的。
35、Neighbor x.x.x.x timers keepalive holdtime,keepalive时间间隔是隔多久给邻居发一条我还健在的消息,类似与hello包,但是BGP的keepalive比hello报文要大了不少,那保持时间默认是keepalive时间的3倍,keepalive时间60s,保持时间180s。
a)通常不会去修改他,如果想收敛稍微快点可以适当修改一下,一般让保持时间是keepalive时间的3倍是一个不错的做法(作者说的XD);至少要大过keepalive时间,当然如果对收敛时间要求更高一点,修改这个时间参数就不是很明智了,可以用到BFD这样的新技术。
b)作者说了一句话深得我心:在链路两端配置相同的keepalive时间和保持时间是一个网管人员应该遵循的最佳做法,别再问我当hello时间和保持时间这些时间不一致会有什么现象好么摔,虽然我都知道,就不爱告诉你,自己做实验。
36、 Neighbor x.x.x.x unsuppress-map route-map-name,当我们使用聚合的命令并且带上summary-only时,会使得我只通告默认路由然后抑制所有明细条目,如果我想放行个别明细条目时,可以使用这条命令,将路由图匹配的条目(使用列表匹配)泄漏给邻居。
37、Neighbor x.x.x.x update-source interface-name,一般用来修改环回口作为我的更新源和邻居建立邻居关系,可以在一定程度上增强网络的稳定性,因为使用物理接口的话,只要接口一挂,我们的邻居立刻消失,但是很有可能我和邻居路由器之间还可以走别的路径到达,所以我们可以使用环回口建立邻居关系,因为BGP建立邻居关系的话只需要更新源地址tcp可达;这一般多用于IBGP,ebgp由于邻居通常都是直连,而且用回环口的话还需要写静态路由,所以不会配置本条命令。
38、Neighbor x.x.x.x version version-number,当前默认版本4,如果邻居版本比较低,我们也能协商成低版本的继续建立邻居,但是可以使用该命令,强制锁定版本号,如果指定的邻居不是我所指的版本号,我不会和它建立邻居关系。
39、Neighbor x.x.x.x weight default-weight,权重只对本台路由器生效,默认情况下将收到的所有条目权重设置为0,如果敲了这条命令表明,我会认为从该邻居传来的条目默认权重为我配置的值,或者简单点说我为自己去往目的地指明了下一跳,权重大优先。
40、注意:以上所有neighbor命令除了可以指特定邻居x.x.x.x,也可以指对等体。
41、Network ip-add mask network-mask,掩码参数是可选的,不带表明认为是主类,带的话就是用来支持无类别的网络前缀,(书里说早起只支持network200条,摔那怎么够用,喔,当然现在是么有这个限制滴),书里的叙述太罗嗦,关于BGP通告简单来说,只要我这台路由器的路由表有,我就能通告出去,但是要注意,通告的网络前缀也掩码位数必须完全匹配,和IGP的通告有些不一样(IGP是哪样不知道自己扇自己脸去XD),好吧我提示一下,IGP的通告表明自己哪个接口参与协议,在BGP里面这功能由neighbor命令完成。
a)这里可以使用静态路由和通告命令来完成汇总的目的,就是手动写一条指向null0的汇总静态路由,然后通告出去,这样只会通告汇总路由,如果想泄漏明细路由就再通告下明细路由好了。
42、Network ip-address mask network-mask backdoor,设置BGP的后门,简单来说由于EBGP的AD值为20优秀于几乎所有的IGP协议,为了防止在路由选路时,选择了次优路径,我们想让路由器选择IGP学来的条目时,可以使用这条命令,将我通告出去的该条目的AD值设置为200,同上mask为可选属性,原因也一样。
43、 Network ip-address mask network-mask route-map route-map-name,理论上,本条命令可以让管理员修改通告的前缀的BGP属性,但是根据作者(CCIE#2969)丰富的经验,这个命令BUG太多,大家还是用指邻居的吧,mask意思再同上。作者精验好足!
44、Network ip-address mask network-mask weight weight-value,本条命令的意思大家看一下应该能类推出来,但是本条命令已经废弃不用,就算我们现在的ios还能敲出来这个命令,但是已经完全无用,我们也还是用指邻居吧!
45、Redistribute protocol,可以把想到的任何协议重分发进来,直连、静态、EIGRP、ospf、rip就不说了,isis也可以,odr也行,igrp、egp、dvmrp也都可以,默认可以不带参数;
a)书中说重分发bgp的时候,由于没带metric参数,会使用eigrp条目的metric作为MED值,然后截图看到的现象是0,这不搞笑么,待测试。
b)记得重分发时,如果是有类边界的话,BGP会自动汇总经过重分发的路由喔,一般来说当下环境大家都不想这样,所以记得关闭自动汇总,详细参见no auto-summary;
c)可以给重分发的条目带MED,Redistribute protocol metric metric_value;
d)Redistribute protocol route-map route-map-name,可以用来选择重分发哪些条目经来,也可以对不同的条目配置不同的属性;这条命令后面还可以继续跟metric参数,写metric数值,这个也真是有点,呵呵,好吧存在即合理;
e)Redistribute protocol weight weight_value,为经过重分发的条目分配权重值,这条命令可以被视为过时命令,以后IOS必然会放弃,作者说要修改权重还得指邻居;我是在想,权重只在本台有意义,不能传给别人,我重分发设毛权重啊,=。=,我一般来说肯定不会选BGP的条目加进路由表吧,当我有直连或者IGP学来的条目的时候,所以很奇特;
f)补充一下书里没说的,重分发ospf进BGP时,默认只重分发内部条目,如果想把外部条目也重分发进来记得带上参数,参数不会请问号,就是external这样的。
46、Summary-address,我们bgp汇总根本用不了这货,要用聚合地址,不明白干嘛放在书内,难道BGP进程下也能敲?那这个进程下敲只对ospf和ISIS生效。
47、Synchronization,如果开启了同步,我从IBGP邻居学来一个条目我会去检查我是否也从IGP学来该条目,如果没有从IGP学来条目,则在bgp表中永远不会变成最优条目(另外一个条件是下一跳可达不要忘记哦亲);
a)PS:这条命令早起是用来解决路由黑洞的,但是只能解决路由黑洞不能解决通信问题,这。。。这。。。。所以现在都是默认关闭的,注意排错,特别是LAB考试。
48、Timers bgp keepalive holdtime,时间范围都是1-4294967295,都是IPv4地址的数目啊,那这个命令和之前指邻居的命令是一样的,只不过这个是对所有邻居生效,就不再解释,那BGP的这两个计时器在建立邻居关系的时候,都会协商成最低的,但是记住一个神经正常网络工程师都会把他们设置一样的,再正常一点的都不会去改它,默认就好。
49、哟哟哟,配置命令已经结束了,剩下show和debug了,由于这两大类命令实在太多也无法一一说明具体作用,照例写几条常用的,表明我真的把它看完了,强迫症无解。
50、Show ip bgp,可以跟| 带be ex in查看具体,可以查看bgp条目的很多具体属性,比如状态(s、*、h、>、I),起源代码,网络前缀,下一跳,MED,LP,权重等。
a)Show ip bgp neighbor,可跟具体邻居,查看bgp邻居状态、AS、版本、邻居建立时长、两个计时器、团体属性、进出站策略等等等等等;
b)Show ip bgp summary简单显示BGP连接状态,show ip bgp peer-group查看对等体组;
51、Clear ip bgp *;Clear ip bgp * soft in/out;或者带具体邻居
52、Debug ip bgp,检查建立BGP邻居时产生的错误,debug ip bgp x.x.x.x update,检查邻居更新时发生的错误
a)Debug ip bgp keepalive,检查邻居起不来时,keepalive报文是否有接收或者发送;
b)Debug ip bgp event,调试与BGP邻居关系相关的事件;
53、接下来就是附录
a)附录A:RFC 1771:边界网关协议,介绍了一下BGP的选路属性和建立连接的状态机,所涉及的内容路由课程已经完全覆盖,才11页
b)附录B:正则表达式的使用,为了使用as- filter-list还要学正则表达式,简答的大家度娘或者骨哥一下就好了,书里也是写了最简单的应用
c)附录C:路由映射逻辑,即路由图,这个也是路由课课程,没什么好说的了。
54、 左勾拳右钩拳,打完收工!