问题一:建立EBGP session之前的注意事项:
验证本AS全部都有full-mesh ibgp connection,并且能收到AS内部其他BGP ROUTER的192.168.x.0/24的bgp路由,确认并验证所有bgp外网的路由器端口可以ping通
问题二:要求做到一个router的两个ebgp peer负载均衡和一个router的双链路的一个ebgp peer负载均衡
一个router的两个ebgp peer的负载均衡用Multipath命令,一个router双链路,如下做法:
首先,创建静态路由到ebgp peer的loopback address,两个下一跳,no-readvertise,然后用source based ping测试连通性
其次,protocols bgp group ebgp-LB下local-address用loopback address,neighbor是ebgp peer的loopback address
再次,加上multihop命令
JUNOS的bgp authentication对于ibgp/ebgp配置是一样的,就一条命令,注意要写在特定的配置层次下authentication-key xxxx
问题三:p1只有一个peer statement,并且p1的ip地址不知道,如果做到r1/r2任何一个断了的话,AS全局上来讲,与p1的peer关系短时间内就可以恢复
这个要做反向工程debug,由于r1/r2预先已经做了vrrp,就好办了,首先随便设置一个neighbor,然后开traceoptions flag open detail,然后monitor traffic interface fe-0/0/0.0,取得对端IP地址和p1对端的TCP连接,类似于22:09:58.351962 In VID [0: 150] 10.0.5.254.1045 > 10.0.5.200.bgp: S3318404620:3318404620(0) win 16384 <mss 1456,nop,wscale 0,nop,nop,timestamp
1984619 0> [tos 0xc0] ,相应修改配置,注意vrrp-group里一定要加上accept-data允许ping才能建立ebgp session(默认是不许ping的),还有注意ebgp session要用local-address vrrp_virtual_ip才可以
问题四:damping配置注意事项
默认的decay half-time=15minutes
max.hold-down time=60minutes
reuse threshold=750
cut-off(suppress)threshold=3000
细化路由的damping应该比粗放的路由更加aggressive
Half-life越小,damping越timid
Suppress越小,damping越aggressive
配置上既要做import damping policy又要在bgp全局上写damping,policy的顺序就是不damping的先写,清除damping的命令是clear bgp damping,查看damping的命令是show route damping suppressed
问题五:martian table和rfc1918,还有policy处理的顺序
如果题目要求过滤掉rfc1918路由,就是172.16/12 orlonger、192.168/16 orlonger、10/8 orlonger三个
Prefix-length-range /xx-/yy
Through x.x.x.x/y
如果说要求“no 0-127 routes with prefix lengths less than /8”,命令为route-filter 0/1 prefix-length-range /1-/7 reject
如果要求的话,不要忘记最后加上reject的term
问题六:regular-expression的问题
简单应用
term 3 {
from as-path c2;
then next policy;
}
[edit policy-options]
lab@r7# show as-path c2
".*
65020";
特别要注意regular-expression的应用,.*以后要空格再写数字,就表示从那个相邻as间过来的路由
问题七:community-tagging的问题
所有路由器的policy-options下都要写community设置,否则不认,基本格式是ASN:NUMBER,如下所示:
[edit policy-options]
lab@r6# set community transit members 65412:100
[edit policy-options]
lab@r6# set community peers members 65412:200
[edit policy-options]
lab@r6# set community customers members 65412:300
问题七:next-hop self问题
注意next-hop self的配置位置:在边界路由器上配置,在对ibgp peer的group里的export policy里设置,不要写accept,测试结果就是看ibgp neighbor是不是已经没有hidden route了
问题八:对外广播路由的过滤
JUNOS默认的是把收到的BGP路由都公布给所有的EBGP/IBGP PEER,所以policy里不用写accept,只有汇聚并公布本AS内部地址段的时候才用accept。对于考试要求的特定的deny的match条件最好用community作条件。
特别要注意的是:本地公布的192.168.x.0/24的地址段要自行过滤掉,单独分出一个term来写!!!
问题九: aggregate route in a ospf stub/isis level 1 area,汇聚路由造成IBGP PEER中断
Generated route/ qualified next-hop static route with a higher route preference
Scenario:
r1/r2因为要汇聚10/8给p1,在本地做了一个aggregate,因为是ospf stub area/isis level 1的关系,使得本地的汇聚路由成为最长匹配,从而aggregate 10/8成为best route,因为aggregate route是下一跳为reject/discard的,就有了路由黑洞了;
方法一: 只有在r3上作本地汇聚,然后通过ibgp发过来,然后r1本地上做一个generate route 10/8,才能再把IBGP peer带起来,同时又能满足对ebgp peer p1发放10/8汇聚路由的需要。
方法二:不用generate route,但是Lab里允许一些静态路由,可以在r1上配两条静态路由,主路由正常配置,次级路由下一跳为qualified-next-hop并且调高route preference使得比主路由不优先
方法三:在ibgp export policy里修改本地的aggregate route 10/8的下一跳
Another solution to the hidden aggregate route problem described in this section, without using generated or static routes, is to use policy to alter the BGP next hop associated with the aggregate route so that the associated BGP next hop is no longer resolved through the summary route. The following policy statement, applied to r3, will cause the BGP next hop for the 10/8 aggregate route to be 10.0.4.13. Because this address is present in the IS-IS level 1 area (and in an OSPF totally stubby area), the advertised BGP next hop will no longer need to recurse through the 10/8 aggregate, allowing it to become active. The following policy term, when applied as part of an IBGP export policy, will achieve this goal:
[edit policy-options policy-statement ibgp-export term agg-route]
lab@r3# show
from {
route-filter 10.0.0.0/8 exact;
}
then {
next-hop 10.0.4.13;
问题十:对端(p1)错误的把一些路由prepend了你的AS号吗,你必须配置你的边界路由器接受这些路由
BGP默认是不接受带有自己AS号码的路由的,这是为了避免环路,To complete this objective, you must tell r1 and r2 that they should accept routes that contain the local AS number in the path:
[edit routing-options]
lab@r1# set autonomous-system loops 2
loops后面的数字代表路由能穿越指定AS的次数,默认为1,这里给设置为2以后才能生效。
记住commit以后要clear bgp neighbor一下,让对端重新发所有路由
问题十一:如何引导入网流量
两种方法,都是用med(特别注意,JUNOS的默认不发med的意思就代表med=0,是med最低也就是最优先的意思)
第一种方法,使用ebgp export policy,但是这里有一些要注意的,就是如果要修改已经有的ebgp export policy的term一般在最后一条增加then metric xxx,这里对前面已经有accept的term的路由是无效的,因为比如10/8的已经跳出policy了,造成了10/8的路由的metric并没有被修改。解决这个问题的方法是:另外创建一个ebgp export policy then metric xxx和原有的一起 作policy chain,并且把这个新创建的policy放在前面先处理[改变顺序]
第二种方法,直接在BGP下使用metric-out命令,注意,肯定是要在neighbor-level下配置此命令,并且如果两种方法同时使用的话,policy下的metric设置优先
问题十二:如何引导出网流量以及local-preference设置
引导出网流量可以使用local-preference,local-pref越高的路由越优先选择,配置方面是在ibgp group下直接写local-preference xxx,相当于对这台路由器说,我对这个IBGP group下的所有neighbor公布的全部路由的local-preference是xxx
问题十三:如果在收到路由超出时告警,并写入syslog文件
lab@r4# show protocols bgp group c1
type external;
multihop;
local-address 10.0.3.4;
family inet {
unicast {
prefix-limit {
maximum 10;
}
peer-as 65010;
neighbor 200.200.0.1 {
authentication-key "$9$n2/i9tOMWx7VY"; # SECRET-DATA
}
以上配置,不加teardown选项是不会down掉bgp peer的,仅仅是告警信息记入日志文件
问题十四:show route advertising-protocol bgp和show route receive-protocol bgp区别
show route advertising-protocol bgp出来的结果是在Remove-private和export policy之前
show route receive-protocol bgp是在import policy执行之后
问题十五:transit provider的policy的match条件问题
term tag-t1 {
from neighbor 172.16.0.14;
then {
community add trans-1;
}
}
term tag-t2 {
from neighbor 172.16.0.18;
then {
community add trans-2;
}
}
在r3上可以按照如上方法写,这就保证了两个transit community的独特性和唯一性
###问题十六:要求对外公布3种NLRI信息:你的10/8地址段,OSPF路由器发过来的路由,OSPF的直联网段,不准修改r2/r3/r6/r7的routing-options的配置,不能用generate route,但是可以使用不超过2条的静态路由
在r5上routing-options下定义aggregate 10/8,192.168/22,172.16.40/29,然后定义policy如下:
term 2 {
from {
protocol aggregate;
route-filter 10.0.0.0/8 exact;
route-filter 192.168.0.0/22 exact;
route-filter 172.16.40.0/29 exact;
}
then accept;
}
lab@r5# show routing-options aggregate
route 10.0.2.0/23;
route 10.0.8.0/21;
route 192.168.0.0/22;
route 172.16.40.0/29;
route 10.0.0.0/8;
这里发现r4不对自己的ebgp peer发布192.168/22和172.16.40/29的路由,因为r4已经有这些网段的isis路由而不是bgp路由(bgp route is inactive),在r4上使用set protocols bgp advertise-inactive就可以解决了。
这里又发现r1/r2不对外发布10/8的路由,解决方法是定义10/8的静态路由,下一跳为正常下一跳,还要设置一个qualified-next-hop并且把preference设得大一些,然后r1/r2上的peer-export policy就是from protocol static route-filter 10/8 exact then accept即可,其他的都是默认就发送出去咯!!!
问题十七:如果要求transit provider使用连接到到r6的link来转发流量到customer的目标地址,并不许在r3上设置med
Med不设置已经是最低了(为0),所以,不能用med比大小的方法解决。解决方法是在r3的bgp配置下到transit provider的配置上设置export policy来prepend AS号码,使得r3-t2这个link比r6-t2的link优先级低
bgp check-list:
查看ibgp peer/ebgp peer是否建立
查看所有BGP ROUTER有无hidden路由,如果有,是否为合法的hidden路由(被filter掉)
Export policy是否成功应用
Martian route是否被filter掉
根据要求是否设立了med/local-pref/prepended AS/community tags
Connectivity是否建立,本地要测试,所有的ebgp peer也要测试(ping/traceroute)
traceroute查看本AS内部是不是走的最优路径
本地路由器是否能够traceroute到每个ebgp peer路由器的loopback地址,是否走的是最优路径,如有特殊路径要求是否走的是要求的路径
Damp工作吗?
Ibgp/ebgp负载均衡是否工作
所有的边界路由器对相应的EBGP PEER的收发路由要特别仔细检查!!!