周跃
(1.安徽工业职业技术学院 信息工程系,安徽 铜陵 244000; 2.菲律宾莱康大学,马洛洛斯 3000)
集中管理的网络通常会在规划设计阶段选择一种性能较佳、易于扩展和运维便捷的路由协议,然而由于网络合并、局部网络升级改造等原因导致网络扩展不可避免地出现一网多协议现象。由于不同的路由协议使用不同的路由算法,其协议报文格式、报文传递方式、最优路由计算算法等方面均采用不同的机制,此时就需要在不同路由协议间相互交换路由信息,实现路由协议间的相互学习,这个过程就是路由引入,也称为路由重发布[1]。
多协议复杂场景的网络中,同时运行多种路由协议或同一路由协议运行多进程的路由器称为多协议边界路由器[2](简称边界路由器)。路由引入是在边界路由器上、在一种路由协议中手动配置导入另一种路由协议产生的路由信息,实现路由协议间的相互学习。运行同一种路由协议工作的网络区域可以称为自治系统,为提高自治系统间的路由引入的可靠性,可以在自治系统间的多个边界路由器上进行路由引入,避免单个路由器的故障导致自治系统间无法通信[3]。然而,多边界路由器的引入必然是在冗余路径组网的前提下,由于不同路由协议默认优先级的差异,可能会产生路由反馈、次优路由、路由环路的问题。通过在eNSP网络仿真平台[4]中构建双边界双向路由引入的网络场景,分析产生次优路由和路由环路现象的原因和造成的网络通信影响,然后通过路由过滤、调整协议优先级和添加路由标记等方法实现路由控制,并验证和对比各解决方案的可行性与优缺点。
在X公司并购Y公司的背景下,X公司网络运行的是IS-IS路由协议,Y公司运行的是OSPF路由协议,为确保并购后的信息资源共享,需要将两个网络进行合并。在网络逻辑设计阶段通过eNSP网络仿真平台构建合并后的网络拓扑设计图,如图1所示,通过模拟仿真配置验证合并网络的技术可行性。
图1 网络拓扑图
1)X公司网络仿真配置。配置各设备IP地址、启用中间系统到中间系统(Intermediate System-to-Intermediate System,IS-IS)路由协议,通过路由协议的学习达到X公司内部网络全网互通。
2)Y公司网络仿真配置。配置各设备IP地址、启用开放的最短路径优先(Open Shortest Path First,OSPF)路由协议,通过路由协议的学习达到X公司内部网络全网互通。在AR4路由器上使用环回接口连接直连网段4.4.4.0/24,其模拟OSPF的外部网络,未加入到OSPF协议的进程中。
3)AR1和AR3路由器作为连接X和Y公司网络的边界路由器,分别加入到OPSF和IS-IS路由协议中。
两个不同协议网络之间的相互路由学习,在拓扑连接上必须在边界路由器上分别连接到两个网络,为增强边界路由器连接的可靠性,多边界路由的部署可以避免发生单点故障带来的通信中断隐患。由图1所示,AR1和AR3两个边界路由器分别执行两个路由协议的相互引入,以AR1路由器的配置为例,配置命令:
[AR1]isis 1
[AR1-isis-1]import-route ospf 1
[AR1]ospf 1
[AR1-ospf-1]import-route isis 1
然后分别在AR1和AR3上使用dis ip routing-table 查看双边界双向引入后的路由表,见表1~2。通过路由表的信息可以观察到,AR2学习到了OSPF协议中的路由134.0.0.0/24,AR4学习到了IS-IS协议中的路由2.2.2.0/24与22.22.22.0/24,双边界路由器双向路由引入成功。
表1 AR2路由器路由引入后的路由
表2 AR4路由器路由引入后的路由
路由表的每行称为一个表项,记录对应的目的网段及转发路径,表项包含目的网络地址/掩码、协议、优先级、开销、下一跳地址等属性[5]。当收到关于某个相同目的网络的多个不同路由更新信息时,路由器会选择最优的路径,最优路径的选择通过依次比较目的网段是否存在、优先级和路径开销(cost)来确定,如图2所示,选优的流程:
图2 最优路由选择流程
1)比较目的网段在路由表中是否存在,若不存在则直接添加到路由表中,若已存在则进入流程2)。
2)比较接收到的路由更新与路由表中已有的路由表项的协议优先级,若更高则更新路由表项,若更低则放弃更新,否则进入流程3)。
3)比较接收到的路由更新与路由表中已有的路由表项的路径开销(cost),若小于等于已有路由表项的,则更新路由表,否则放弃更新。
协议优先级是路由协议用于区分协议可信度的属性,其为0~255的数值,数值越小代表可信度越高,优先级越高[5]。每种路由协议都有其缺省的优先级,在华为的网络设备中,默认优先级见表3。
表3 缺省的路由协议优先级
路由表中存储的是根据最优路由选择规则优选后的最优路径,由于不同的路由协议的优选参数不一致,所以路由协议自我选择的最优路径在复杂的网络环境中有可能并非实际网络结构中的最优,这种路由称为次优路由[6]。
在图1中,AR4路由器上环回接口所直连的网段用于模拟Y公司的外部路由,由于其并未加入到OSPF协议进程中,为保证其他的路由器都能学习到4.4.4.0/24的路由信息,需要在AR4路由器的OSPF协议中通过命令import-route direct进行路由引入,引入后的路由是OSPF ASE路由,其优先级为150,并通过OSPF协议报文分别通告到AR1和AR3。由于AR3路由器的IS-IS协议引入了OSPF的路由信息,则在AR3→AR2→AR1的路由更新方向中,AR1亦会收到IS-IS协议关于4.4.4.0/24的优先级为15的路由更新,此时AR1路由器对目的网段4.4.4.0/24的路由项进行最优路由选择,根据优先级的比较规则,IS-IS路由优先级高于OSPF ASE优先级,所以优选下一跳为R2的IS-IS路由,此时整个路由转发路径是AR1→AR2→AR3→AR4→4.4.4.0/24,外部路由4.4.4.0/24的更新流程如图3所示。在AR1中通过查看4.4.4.0/24的路由表可以发现,其下一跳地址为12.0.0.2,即AR2路由器,如图4所示。由于AR1是可以直接通过AR4转发到目的网段的,很明显地产生了次优路由问题。
图3 外部路由4.4.4.0/24更新流程
图4 AR1关于4.4.4.0/24的路由表
通过分析路由更新的过程,可以发现次优路由产生的原因是AR3路由器中IS-IS协议从OSPF协议引入路由信息,又通过AR2→AR1路径从IS-IS协议发布回到OSPF协议中,这种现象是双向路由引入网络中的路由反馈问题[7]。
路由环路是指由于路由表项的错误导致信息在转发过程中,数据包会沿着一个环形的转发路径在多个路由器间循环转发的现象,产生路由环路的原因包括静态路由配置错误、路由协议自身缺陷、路由引入错误和路由协议收敛错误等[8]。在图1中,当4.4.4.0/24网络产生故障或被移除时,由于双边界路由引入就会产生路由环路,产生环路的过程如图5所示。
图5 路由环路产生的过程
整个网络的路由收敛过程:
1)AR4路由器通过直连接口发现网络故障,OSPF协议的链路状态数据库(Link State DataBase,LSDB)删除关于此网络信息的链路状态通告(Link-State Advertisement,LSA),在路由表中移除4.4.4.0/24表项。
2)通过OSPF更新路由信息,AR1和AR3在路由表中移除4.4.4.0/24表项。
3)由于AR1的IS-IS协议的LSDB中依然存在关于4.4.4.0/24的外部路由信息,AR1的OSPF协议通过路由引入IS-IS的4.4.4.0/24路由信息,并更新到OSPF的路由表中,其下一跳地址为AR2。
4)OSPF再次更新路由信息时,AR4学习到达的4.4.4.0/24的下一跳为AR1,AR3学习到达的4.4.4.0/24的下一跳为AR1。
通过分析前面的路由更新过程,并分别在AR1~AR4 4个路由器中查看路由表,可以发现最终关于4.4.4.0/24的路由转发路径是AR1→AR2→AR3→AR1,形成路由环路。产生路由环路问题的原因是双向引入带来的路由反馈导致IS-IS将从OSPF引入的关于4.4.4.0/24的路由又重新发布到OSPF协议中,从而造成无效路由的错误学习。再通过在AR1上使用tracert 4.4.4.4跟踪路由[8],如图6所示,可以发现对于目的网络4.4.4.0/24的转发路径分别是12.0.0.2、23.0.0.03、134.0.0.1、12.0.0.2、……,验证了路由环路的实际产生过程。
图6 tracert验证路由环路
路由过滤是控制路由更新的一种方法,通过与访问控制列表(Access Control List,ACL)、IP前缀列表结合使用对路由的发布和接收进行控制,也可以在路由引入时通过过滤策略来防止路由反馈和次优路由等[9]。在AR1和AR3路由器上分别配置ACL识别OSPF协议中的网络4.4.4.0/24,在IS-IS协议中使用filter-policy工具[10]的入方向策略将此网络的路由进行过滤,避免了通过IS-IS协议从AR2路由器的IS-IS协议中学习此路由,以AR1为例配置命令:
[AR1]acl 2000
[AR1-acl-basic-2000]rule deny source 4.4.4.0 0.0.0.255
[AR1-acl-basic-2000]rule permit
[AR1-isis-1]filter-policy 2000 import
应用过滤策略后,查看AR1和AR3的路由表可以发现关于4.4.4.0/24网络的路由表项均是通过OSPF协议学习到优先级为150、下一跳为AR2路由器,消除了次优路由现象。在AR4路由器上删除loopback 4接口,模拟4.4.4.0/24网络失效后,分别查看各个路由器的路由表可以发现所有路由器均正确地移除了此目的网段的路由条目,没有产生路由环路现象。但是,由于是在边界路由器的IS-IS协议中直接过滤掉4.4.4.0/24路由,当AR3连接AR4的链路出现故障时,AR3的IS-IS协议中由于过滤策略不能产生4.4.4.0/24的IS-IS协议路由表项,从而导致AR3路由器缺少冗余路径,失去了多路径转发的可靠性保障。
路由优先级也称为管理距离,用于区分不同路由协议可信度的属性,其范围为0~255的整数数值,数值越小代表其优先级越高,可信度越高,不同的路由协议都有其初始的默认优先级,在实际的网络配置中也可以根据需要手工修改路由器中的协议优先级。在图1中,由于目的网段4.4.4.0/24的优先级在路由引入时,协议采用其默认优先级,从AR4的直连路由优先级0,到引入OSPF协议中的优先级150,再到引入IS-IS协议中的优先级15,从而导致了AR1路由器优选优先级15的路由更新出现次优路由问题。避免这种问题产生的直接方法是可以在AR1和AR3的边界路由器上将IS-IS协议的优先级手工修改为数值>150的值,低于OSPF ASE的优先级,这样就避免了边界路由器再通过IS-IS学习原本OSPF的路由信息,以AR1路由器为例,配置命令:
[AR1]isis 1
[AR1-isis-1]preference 160
修改IS-IS协议优先级为160后,路由器通过优先级对比会优选OSPF的路由信息加入路由表,通过查看AR1和AR3路由器的路由表可以发现其效果和方案1相同,消除了次优路由问题。此时,在AR4路由器上模拟4.4.4.0/24网段失效,通过查看AR1~AR3的路由表可以发现,均出现了优先级为160的IS-IS路由条目,形成了AR1→AR2→AR3→AR1的路由环路。在边界路由器的OSPF协议中由于网段失效后会在LSDB中删除此网段的LSA信息,但是IS-IS协议的LSDB中依然存在4.4.4.0/24的网段信息,并通过路由引入发布到OSPF协议中,再通过IS-IS相互更新,最终形成了路由环路。
直接调整IS-IS协议的优先级虽然解决了OSPF的外部路由在双向路由引入中带来的次优路由问题,但是其影响了全局上所有路由的优先级,包括IS-IS内部网络的路由。在AR1上查看路由表发现到达IS-IS协议域中的路由是OSPF ASE类型、下一跳为AR3、优先级为150,2.2.2.0/24网段的路由,转发路径为AR1→AR3→AR2→2.2.2.0/24,相比于AR1→AR2→2.2.2.0/24路径并非实际网络的最优路径,如图7所示。通过仿真试验可以发现方案2在解决部分路由环路的同时,也使IS-IS协议网络中的路由出现了新的次优路由问题。
图7 直接修改IS-IS优先级后AR1的路由表
3.3.1 路由策略调整路由引入协议优先级
通过前文对双边界双向路由引入的次优路由和路由环路问题产生原因的分析,为了不使协议对其他目的网段路由产生影响,在AR1和AR3路由器的IS-IS协议中,通过路由策略来匹配前缀为4.4.4.0/24的特定外部路由,将匹配后的路由优先级设置为低于OSPF ASE的优先级,在最优路径选择时则会优选OSPF协议[11]。以AR1路由器的配置为例,具体的配置命令:
[AR1]ip ip-prefix 4 permit 4.4.4.0 24
[AR1]route-policy P4 permit node 10
[AR1-route-policy]if-match ip-prefix 4
[AR1-route-policy]apply preference 151
[AR1-isis-1]preference route-policy P4
前述配置通过定义策略路由P4,匹配IP前缀4从而识别网段4.4.4.0/24,仅将精准匹配的网段的路由优先级设置为151,然后在IS-IS协议中应用策略路由,由于OSPF协议中关于4.4.4.0/24的路由优先级为150,按最优路由选择原则,150的优先级大于151的,优选OSPF协议路由[12]。如图8所示,AR1路由器的路由表中优选OSPF协议的路由,路由转发路径为AR1→AR4→4.4.4.0/24,解决了次优路由的问题。
图8 应用策略路由后的AR1路由表
在AR4路由器中通过undo interface loopback 4命令模拟删除4.4.4.0/24网段[12],分别在AR1~AR3路由器上查看路由表,可以发现关于4.4.4.0/24网段的路由环路问题依旧存在。
3.3.2 路由引入添加路由标记
路由策略调整路由引入协议优先级虽然解决了次优路由问题,但当4.4.4.0/24网段失效后,IS-IS协议关于此路由的信息在LSDB中依然存在,并会引入到OSPF协议中从而导致路由环路问题。在双边界双向路由引入的网络中,消除路由环路的关键是如何避免路由反馈,后面提出一种在路由引入时添加路由标记(Tag)的解决方法,基本的思路是在边界路由器的OSPF和IS-IS协议相互路由引入中,在AR1→AR2→AR3方向的路由更新上将4.4.4.0/24网段在AR1路由器的OSPF引入到IS-IS时添加Tag,再在AR3路由器的IS-IS引入到OSPF时过滤此Tag的路由进入,同理,在AR3→AR2→AR1方向也做类似的标记和过滤,采用手工的路由标记来避免边界路由器从OSPF协议引入的路由通过另一个边界路由器发布回OSPF协议。
具体的方案设计如图9所示,在AR1路由器上创建路由策略ItoO,用于在OSPF协议引入IS-IS路由时添加Tag300、过滤Tag400的路由[13];创建路由策略OtoI,用于在IS-IS协议引入OSPF路由时添加Tag100、过滤Tag200的路由。在AR3路由器上创建路由策略ItoO,用于在OSPF协议引入IS-IS路由时添加Tag200、过滤Tag100的路由;创建路由策略OtoI,用于在IS-IS协议引入OSPF路由时添加Tag400、过滤Tag300的路由。
图9 路由标记方案设计
通过路由标记方案的设计,在仿真网络环境4.4.4.0/24网段的AR1→AR2→AR3方向路由更新中,AR1的IS-IS协议从OSPF引入会根据路由策略OtoI添加Tag100,AR3的OSPF协议从IS-IS引入根据路由策略ItoO被过滤,由此彻底避免了双边界双向路由引入中的路由反馈问题。
以AR1路由器为例,实现方案的主要配置命令:
#创建路由策略OtoI,添加Tag 100、过滤Tag 200。
[AR1]route-policy OtoI deny node 10
[AR1-route-policy]if-match tag 200
[AR1]route-policy OtoI permit node 20
[AR1-route-policy]apply tag 100
#创建路由策略OtoI,添加Tag 300、过滤Tag 400。
[AR1]route-policy ItoO deny node 10
[AR1-route-policy]if-match tag 400
[AR1]route-policy ItoO permit node 20
[AR1-route-policy]apply tag 300
#OSPF协议路由引入IS-IS时应用路由策略ItoO。
[AR1-ospf-1]import-route isis 1 route-policy ItoO
#IS-IS协议路由引入OSPF时应用路由策略OtoI。
[AR1-isis-1]import-route ospf 1 route-policy OtoI
通过前述配置后,模拟删除4.4.4.0/24网段,此时OSPF协议在LSDB中删除关于此网段的LSA[14],且边界路由器分别在路由策略中过滤了对方从OSPF引入后的路由再重新引入到自身的OSPF协议中。分别在AR1~AR3路由器上查看路由表,可以发现关于4.4.4.0/24网段的路由条目均被移除,解决了路由环路问题。
如表4所示,方案1在IS-IS协议中通过路由过滤直接对4.4.4.0/24网段进行屏蔽,有效地解决了次优路由和路由环路问题,其缺点是当边界路由器连接OSPF协议网络链路出现中断时无法通过IS-IS协议学习到4.4.4.0/24的路由转发路径,造成了路由路径冗余的缺失。方案2通过直接修改IS-IS的优先级,使全局性的优先级改变,导致了新的次优路由问题的出现,且不能彻底解决路由环路。方案3通过路由策略局部性精准地对外部路由网段修改优先级,在消除次优路由的同时不影响其他网段的最优路由选择,再通过路由标记的设计彻底避免了路由反馈现象,从而解决了路由环路问题。当边界路由器连接某个路由协议网络链出现中断时,也不影响另一个边界路由器的路由转发,提供了路由冗余的可靠性保障。
表4 方案对比
在进行大规模的网络建设和整合时,网络复杂度越来越高,在多协议的复杂场景网络中尤其要注意次优路由和路由环路的问题。通过对双边界双向路由引入场景中的潜在问题进行原因分析,提出了3种解决方案;通过原理分析和仿真对比各自优缺点,论证了方案3的优势,为此场景提供了一种较佳的解决方法。在现实的网络构建中,会出现更多复杂网络的场景,需要有针对性地分析潜在问题与设计解决方案。另外,随着软件定义网络(Software Defined Network,SDN)的逐步成熟和规模化应用,其控制平面与转发平面分层管理的思想,可通过开放可编程化的控制平台及标准化的接口协议更为灵活地管理复杂网络场景[15],SDN技术在多协议复杂网络场景中的具体应用将是下一步的研究方向。