一、 路由引入问题
引入规划不当,会导致次优路由、路由环路等问题。
华为所有路由协议优先级表:
二、路由引入不当的问题1-次优路由
1、RTD 通过RIP 发送给RTB,RTB学习到了2.2.2.2;
2、RTD 通过RIP发送给RTC,RTC做了一个路由引入RIP,此时RTA、RTB都学到了2.2.2;
3、此时RTB共收到了2个方向的2.2.2.2路由,此时选路会根据优先级;
4、ISIS优先级15,RIP优先级100,所以最终路由发送变成了RTD-RTC-RTA-RTB-RTA-RTC-RTD,其实RTD直接到RTB就可以了,由于优先级比较大所以不是最优选路。
二、路由引入不当的问题2-路由环路
1、RTA注入外部直连路由进RTB开销为2,RTB、RTC、RTE运行OSPF协议,所以B、C、E均收到了RTA注入的直连路由2.2.2.2;
2、在RTE中引入OSPF外部路由进ISIS,RTC、RTD、RTE运行ISIS协议,所以C、D、E均收到了RTE注入的OSPF外部路由2.2.2.2;
3、在RTC中引入ISIS路由进OSPF,RTB、RTC、RTE运行OSPF协议,所以B、C、E均收到了RTC注入的ISIS路由和OSPF外部路由2.2.2.2;
4、当RTC引入ISIS进OSPF时,因为RTC、RTB、RTE都是运行OSPF协议,所以优先级比较cost,默认接口没有改开销值开销为1;
5、对于B来说收到RTA的开销值为2的2.2.2.2路由,他会把下一跳给RTC,因为这个还有个2.2.2.2开销值为1;
6、最终导致RTB的下一跳为RTC,RTC下一跳为RTD,RTD下一跳为RTE,RTE下一跳为RTB,最终导致路由环路
注:引入外部路由后,路由表中是ospf的外部类型,所以优先级都是相同的,再看cost,cost值小的为下一跳,先比较优先级再比较开销值。
三、引入问题解决方法
1、过滤:充分利用route-policy,过滤不需要、不发送的路由;
2、优先级:更改优先级
3、标签: 通过给路由打上tag标签,用于多个网段批处理
四、引入问题模拟
环路问题:
此环境,从AR5注入直连路由到AR1的,AR2注入OSPF进RIP,AR4注入RIP进OSPF,模拟环路故障,拓扑如下:
1、R5注入直连路由进OSPF:
定义ACL 2000,内容允许5.5.5.5通过
定义dire路由策略内容为匹配acl 2000
在R5的OSPF 进程1中注入直连路由并设定路由策略dire
在AR2上查看是否学习到5.5.5.5,ping是否正常,都正常说明注入成功。
R2注入OSPF进RIP:
为了模拟环路,OSPF注入也只注入5.5.5.5做测试。
定义路由策略匹配acl2000
定义acl2000 只允许5.5.5.5通过
在rip 进程中注入ospf调用路由策略dire
此时AR3可以学习到AR5的5.5.5.5,验证:
注:对于AR4来说通过AR2把OSPF引入进RIP的直连路由学习到了5.5.5.5,又通过自身OSPF学习到了5.5.5.5,这就造成了次优路径,AR4通过AR1学习到直连路由为OSPF外部路由优先级为150,通过AR2学习到的直连路由为RIP优先级为100,查看AR4的路由表针对5.5.5.5:
路由表中5.5.5.5的协议是rip优先级100,下一跳是34.0.0.3,所以此环境AR2引入OSPF影响了AR4的选路,导致次优路由出现。
把RIP引入OSPF: 定义acl2000 只允许5.5.5.5通过
定义路由策略匹配acl2000
在ospf 进程中注入rip调用路由策略dire
正常情况下AR1的下一跳应该是AR5,下一跳如果是AR4就环路了,上下都发送,查看AR1的路由表:
在AR4抓包验证:
在AR1ping5.5.5.5 发送2个包
查看抓包:
明显环路。
至此环境即出现了次优路由,也出现了路由环路,下面看看如何避免这两种问题。
五、引入问题解决
此次实验要求:
1、配置基本地址信息和路由协议;
2、R2把OSPF引入RIP;
3、R4把RIP引入OSPF;
4、R5把直连引入OSPF;
5、R3把直连和静态引入RIP,不引入/25路由;
6、避免次优路由和环路。
注:优先级高路由往优先级低路由注入时,会导致路由次优路由发生。
问题现象:
上图环境所述:AR5注入直连路由进OSPF称为OSPF外部路由,优先级为150,从AR1到AR2到AR3到AR4一路下来优先级都是150,在优先级相同的情况下比开销,AR1上去往23、34、5.5.5.5下一跳为14.0.0.4就是AR4,去往23网段是就造成了选路次优。
正常选路AR1去往12、23网段下一跳应该给AR2,去往34应该给到AR4。
AR5注入直连路由5.5.5.5后由AR1去往AR2,AR2注入OSPF进RIP,AR4这一条路是正常的,在AR4注入OSPF的时候做策略又把5.5.5.5发送回来导致环路,验证AR5数据库:
要求3:解决方法
第一种方法1、filter policy在out出方向是LSD5五类,这个拓扑直看ospf部分,AR4可以看作5类,所以可以直接在AR4的OSPF进程中调用 ,在AR4注入RIP的时候把收到的5.5.5.5的路由不注入回OSPF即可避免环路。
注:filter policy引入的时候过滤最后不发,在ospf 中只能作用于5类,如果不想把路由发出去就在路由表发送前做out。
要求4: 先给AR5注入外部路由,只注入5.5.5.5
查看AR5得数据库
定义ip前缀列表,注:必须添加一条空规则,不然拒绝除index10意外所有规则。>
在ospf中调用
再查看AR5的数据库:
这样5.5.5.5的路由只有AR5来注入,使用AR1 tracert一下5.5.5.5:
一站直达,因为去往5.5.5.5的下一跳就是15.0.0.5,从AR1 ping 34段,链路正常,环路解决:
第二种方法 :
使用filter-policy 在引入路由时做过滤,建议用这种
注销AR4之前的IP前缀列表
创建新的IP前缀列表
先明确拒绝掉前缀列表允许的5.5.5.5,再允许其他所有,然后在路由引入时调用路由策略:
————————————————————————————————————————————————————
要求5:AR5
配置静态路由:
注:没有正常的下一跳就配置路由黑洞。
在RIP中注入静态路由:
在AR5中验证:
要求只要24网段,不要25,做一个策略:
先在ip前缀列表里允许172.16.0.0/25:
再使用routepolicy拒绝此前缀列表,然后允许其他所有:
或者只放行允许段,比如只放行下面2个网段:
routepolicy也只掉这个test ip前缀列表,但是不写空语句把除此之外全部拒绝掉:
以上两种方法效果一致,我个人觉得拒绝拒绝掉不要的段比较明确好用一些。
现在整个数据流量走向是上图所标识的走向,tracert一下:
六、双向引入
先测试单纯双向引入:
AR4 在RIP里引入OSPF、在OSPF里引入RIP:
AR2 在RIP里引入OSPF、在OSPF里引入RIP:
在AR1中查看下数据库,因为是双向引入所以路由都是两条。
查看AR3的路由表:
发现除了5.5.5.5其他路由都是2个下一跳,为什么5.5.5.5只有一个?因为现在环路了:
15网段给14网段从AR4引入这一条没有问题,但是到了AR3后有2个下一跳,很明显有次优路径。
对于AR1来说也是2个下一跳:
对目前这个拓扑,5.5.5.5去往34走AR4,去往23走AR2才是最合理的,所以现在要解决的是次优路径问题。
同一个路由协议:
同一个路由协议优先级相同,相同路由协议中优先级相同比较开销值,因为开销不同所以导致次优路径。
不同的路由协议:
OSPF和RIP2种不同路由协议互相引入时,OSPF优先级是10,RIP是100,所以会因为优先级影响选路。
所以AR1和AR4的问题是开销,而AR4和AR2负责互相引入的问题是优先级。
总结:双向引入的时候负责引入的路由器之间负责不同路由协议的选路,所以一般问题多出现在优先级中,而其他路由器中出现的次优路径的产生原因是因为开销问题。所以可以在路由发送信息时选择最优路径,在引入路由器上把要引入的其他路由协议开销改大,而自己直连的网段开销改小,保证最优。
AR2配置如下:
AR2引入OSPF进RIP,把引入15和14网段开销改大,12不动,配置如下:
配置1:
acl 2000
rule 0 permit so 15.0.0.0 0
rule 1 permit so 14.0.0.0 0
route-policy ar2 permit node 10
if acl 2000
apply cost 2
route-policy ar2 permit node 20
## 允许匹配acl 2000中的网段开销改为2
配置2:
acl 2000
rule 1 permit so 12.0.0.0 0
route-policy ar2 permit node 10
if acl 2000
route-policy ar2 permit node 20
apply cost 2
允许匹配acl 2000的网段,除此以外的所有网段cost更改为2
引入时调用:
import-route ospf 1 route-policy ar2
如果配置成功,AR3上的去往14、15的下一跳由只有34;因为14、15走AR4出去的开销是2,走AR1开销是1,路由选路只会选择开销小的;去往12还是有2个,因为12网段AR4上也有,开销均为1所以负载均衡,如果要变成了1个还要在AR4中配置,验证:
AR4配置如下:
AR4引入ospf进RIP,把引入12和15网段开销改大,14不动,配置如下:
配置1:
acl 2000
rule 0 permit so 15.0.0.0 0
rule 1 permit so 12.0.0.0 0
route-policy ar4 permit node 10
if acl 2000
apply cost 2
route-policy ar4 permit node 20
## 允许匹配acl 2000中的网段开销改为2
配置2:
acl 2000
rule 1 permit so 14.0.0.0 0
route-policy ar4 permit node 10
if acl 2000
route-policy ar4 permit node 20
apply cost 2
允许匹配acl 2000的网段,除此以外的所有网段cost更改为2
引入时调用:
import-route ospf 1 route-policy ar2
如果配置成功,AR3去往12网段的下一跳为AR2,AR3去往14网段的下一跳为AR4,去往15网段AR4和AR2均有因为开销都是3,现在验证:
六、标签过滤
在此环境中,还有一个5.5.5.5环路的问题,通过加标签让AR2学习到5.5.5.5再引入RIP时0正常放行,AR4通过RIP学习到了AR2引入OSPF中的5.5.5.5,在AR4把RIP引入OSPF时携带的5.5.5.5通过标签拒绝掉,这样避免环路。
注:双向引入时,通常一个路由引入路由器放行标签,一个路由引入路由器拒绝标签。
AR2配置:
引入5.5.5.5标签允许:
acl 2001
rule 1 permit 5.5.5.5 0
route-p ospf2rip permit node 10
if acl 2001
apply tag 10
引入5.5.5.5标签拒绝:
route-p rip2ospf deny node 10
if tag 10
AR4配置:
引入5.5.5.5标签允许:
acl 2001
rule 1 permit 5.5.5.5 0
route-p ospf2rip permit node 10
if acl 2001
apply tag 10
引入5.5.5.5标签拒绝:
route-p rip2ospf deny node 10
if tag 10