IS-IS协议可靠性原理与技术研究
2017-07-24郭慧慧宋媛媛胡曦明刘胜强
◆郭慧慧 宋媛媛 胡曦明,2 刘胜强
(1.陕西师范大学计算机科学学院 陕西 710119;2.现代教学技术教育部重点实验室 陕西 710119;3.广东省电信规划设计院有限公司 广东 510630)
IS-IS协议可靠性原理与技术研究
◆郭慧慧1宋媛媛1胡曦明1,2刘胜强3
(1.陕西师范大学计算机科学学院 陕西 710119;2.现代教学技术教育部重点实验室 陕西 710119;3.广东省电信规划设计院有限公司 广东 510630)
本文针对IS-IS协议在区域设计时的可靠性问题,利用华三模拟器搭建局域网环境,进行了区域组网设计。通过实验分析了在动态路由过程中,IS-IS链路状态PDU对于默认路由所采取的ATT字段置位,以及为避免路由渗透形成环路所采取的路由渗透标识的机制。研究结果显示,IS-IS协议在运行过程中的可靠性,可以为电力、交通等行业构建运营支撑网络的设计与规划提供可靠性实验数据支持。
IS-IS;动态路由协议;链路状态;内部网关协议
0 引言
IS-IS是 CLNS网络环境中的一部分,用于提供在该环境中自动及动态地对数据包进行路由选择的功能。它是一种链路状态路由选择协议,因此会通过邻接关系获得路由选择信息并将这些信息放入链路状态数据库,采用SPF算法确定到达网络中各个目的最优路径[i]。在运行链路状态路由协议的网络内,合理的区域划分既可以控制链路状态数据库的规模,也可以降低因计算、维护和更新路由信息而消耗链路带宽和路由器软、硬件资源[ii]。因此,区域设计的可靠性就显得尤为重要。文献[3]提出了基于数字证书的安全扩展方法提高了 IS-IS的安全性[iii]。本文主要针对IS-IS的可靠性,分析了 IS-IS的默认路由产生的问题和解决方法,以及引入路由渗透的原因和避免产生环路的机制。
1 IS-IS区域设计
1.1 路由等级
在OSI中把路由划分了4个级别,分别是Level 0路由、Level 1路由、Level 2路由、Level 3路由。Level 0路由相当于TCP/IP中的ARP表项,Level 1路由相当于OSPF中的区域内路由,Level 2路由相当于区域外路由,Level 3路由实际上相当于自治系统外路由[iv]。
集成IS-IS协议是运行在IP网络中的,所以在集成IS-IS中就只有Level 1路由和Level 2路由,而Level 0路由相当于被IP网络中的ARP、ICMP和DHCP取代了,Level 3路由被IP网络中的BGP取代了。IS-IS协议支持2层分层体系,以管理和规划大型网络中的路由选择,这种层次化的路由选择结构使域中的路由选择效率更高[v]。
1.2 路由器角色
在IS-IS中可以把区域分为两个层次,分别是Level 1区域和Level 2区域,相应的IS-IS中的路由器可划分为三个角色,分别是Level 1路由器(Level 1-only)、Level 2路由器(Level 2-only)、Level 1和Level 2路由器(Level 1-2)。
1.3 区域划分
在OSPF中会把区域分为两个层次:骨干区域和非骨干区域。并且规定区域0(Area 0)为骨干区域,其他非骨干区域可以通过区域边界路由器ABR来连接到骨干区域,则ABR既属于骨干区域,也属于非骨干区域[vi]。因此,OSPF的区域划分是基于ABR的接口的。而在IS-IS中一个路由器只能属于一个特定的区域,它也会有类似OSPF的骨干区域和非骨干区域之说,不过在IS-IS中并没有严格指明哪一个区域为骨干区域,在IS-IS中所有建立L2的邻接关系构成了Level 2子域,相当于一个骨干网。因此IS-IS中的区域划分是基于路由器之间的链路的[vii]。
2 IS-IS链路状态数据库
IS-IS协议的主要目标包括路由选择信息的收集与扩散以及在网络的节点之间选择最佳路径,因此IS-IS链路状态数据库是实现IS-IS协议目标的基础。存储在链路状态数据库中的信息元称为链路状态数据包(LSP),LSP中包含着IS-IS路由器生成的描述其当时所处环境的路由选择信息。LSP的类型有4种,分别是IS-IS Hello(IIH)、链路状态PDU(LSP)、完全序列号PDU(CSNP)、部分序列号PDU(PSNP)。对IS-IS来讲,Hello数据包起三个作用[viii]:发现邻居路由器、协商并建立邻接关系、邻接关系“保活”,其余数据包在链路状态数据库同步过程中主要的作用是进行数据库的同步与泛洪。
3 默认路由的产生
3.1 实验拓扑图及其配置
图1 实验拓扑图
图2 RTB的配置过程
如图1所示,把IS-IS区域划分为Area 10和Area 20,Area 10中的RTA为L1路由器,RTB和RTC都是L1/2路由器,可以连到区域外,在Area 20中的RTD和RTE路由器都是L2路由器。这里只给出 RTB路由器的配置过程,其余路由器的配置过程与其相似。
3.2 实验结果分析
图3 RTA ping 10.2.2.1
图4 RTA 的is-is route
图5 RTB的LSDB
我们用RTA去ping 10.2.2.1,如图3所示,发现可以ping 通,但查看RTA的IS-IS转发表中并没有10.2.2.0/24网段的路由,根据我们在IP路由中所学的知识可知,RTA一定是通过了一条默认路由到达了区域外。在RTA的LSDB中会有3条LSP条目,一条是RTA自己的LSP,另外两条是他的邻居RTB和RTC生成的LSP。在RTB和RTC生成的LSP中ATT字段置为1,而RTA的LSP中ATT并不置1,在RTB生成的L2的LSP中该位也不置1。
在IS-IS中ATT字段的作用就是L1区域内的路由器会通过LSP中该字段的置位情况,来识别已建妥L2邻接关系的L1/2路由器。需要注意的是,如图5所示,L1/2路由器只会在L1 LSP中把ATT置1,不会在L2 LSP中把ATT置1,因为它的邻居路由器如果收到了它发送的L1 LSP中ATT置1了,它的邻居就知道自己也可以通过 L1/2路由器到达区域外。而且他的邻居如果有L1的邻接关系,它的邻居也会把自己的ATT置1向其他路由器表明自己可以到达区域外。
4 路由渗透
观察如图1所示的实验拓扑可知,在IS-IS L1区域内,L1路由器在转发目的网络为本区域之外的数据包时,只能遵循默认路由,因此会丧失路由选择的精确性。若IS-IS L1区域内只部署了一台通往外部区域的 L1/2路由器,其实也并不影响路由选择的精确性。可要是部署了多台L1/2路由器,L1路由器在转发目的网络为本区域之外的数据包时,则只能把数据包交给在同一区域离本机最“近”的L1/2路由器。然而,这台L1/2路由器实际到目的网络可能最近,也可能不是最近。因为L1路由器无法得知区域外的链路状态,所以在转发目的网络为本区域之外的数据包时只能依靠默认路由。
默认路由会产生次优路由,在IS-IS中默认情况下L1/2路由器是不会把本机所连L2区域的路由,或学自L2邻居的路由,通告进L1区域。因此,次优路由的解决办法就是在L1/2路由器上配置路由渗透的命令,将L2区域内的路由通过L1/2路由器通告进L1区域。
4.1 实验配置及其结果分析
图6 路由渗透后的结果
在RTB上输入了路由渗透的命令(只有在L1/2路由器上配置路由渗透才有意义)后,查看RTA的isis route,这时路由表中出现了10.2.2.0/24网段,如图6所示,说明配置成功了。如果在RTB和 RTC上都配置了路由渗透命令后,则 RTA在去往10.2.2.0/24目的网络时自然而然的选择开销最短的链路去往区域外。
4.2 路由渗透可能产生的问题
在设计IS-IS区域时,要想追求更高的灵活性和可靠性,就得把更为精确的路由信息从L2区域泄露进L1区域,让L1路由器更好地了解外部区域。那么,当IP前缀A(隶属于L1区域之外的L2区域)由某台L2路由器通告给了RTA,RTA再把这条IP前缀置入自生成的L1 LSP的IP内部可达信息TLV,然后通告进L1区域。RTB收到了这条L1 LSP后,会认为该IP前缀隶属于本L1区域,然后再将其置入自生成的L2 LSP的IP内部可达信息TLV,并通告回L2区域,路由环路就此形成[ix]。
在IS-IS协议中解决路由环路的机制是,在路由渗透之后,路由表中出现的 10.2.2.0/24网段的标志位出现了一个新的标志U,U是路由渗透状态表识符,如果设置为“UP”则可避免由L2区域发送到 L1区域的 LSP又返回给 L2区域。虽然 RTA的IP-Internal字段中有10.2.2.0/24(因为路由渗透后RTB和RTC发送的L1 LSP的IP-Internal中有10.2.2.0/24),但RTB和RTC不会把那条IP前缀放进自己的L2 LSP的IP-Internal中然后通告给L2路由器,因为它看到了Up/Down置1 的路由。当L1/2路由器将一条IP前缀从L2区域通告进L1区域时,会将该IP前缀相关联的 Up/Down置 1.若 L1/2路由器从 L1路由域收到了一条Up/Down置1的IP前缀,则不会将其通告给L2的邻居路由器。因此,标志U可以避免在路由渗透后产生环路。
4.3 LSP几个中重要的协议字段
图7 LSDB中显示的LSP的字段
图8 查看is-is协议的基本信息
如图7所示,LSDB表中包含LSP数据包的摘要信息,如LSP ID、序列号、校验和、剩余生存时间、长度等字段。如图8所示,LSP的最大生存时间(LSP-max-age)是1200 秒,LSP的刷新间隔(LSP-refresh)是900秒。
剩余生存时间字段(HoldTime),表示LSP在“寿命到期”之前尚能存活的时间。在HoldTime值为0之前,该LSP会被其源路由器刷新。如果该路由器从网络中移除,则不能刷新此LSP,该LSP的HoldTime值会一直递减至0(网络中的所有IS-IS路由器上其值必须一致)。在 HoldTime值递减的过程中,HoldTime值从1200秒递减到0秒后,该LSP还会在LSDB中存活60秒。因为在IS-IS协议中,定义了一个零寿命生存时间(Zero Age Life time),当LSP剩余生存时间为0时,则所有拥有此LSP拷贝的路由器在经过60秒的宽限时间后最终会将此LSP从其LSDB中清除。
在这个字段的设计上IS-IS要比 OSPF更加灵活。OSPF的LSA中也有一个类似的字段叫做“寿命字段”,说到“寿命”,显而易见,它是从0开始到某个规定值,然后寿命结束了。因此,在OSPF中规定了不同的最大生存时间,那么LSA的寿命字段结束值也就不同。而在 IS-IS中定义的最大生存时间是 HoldTime字段的初始值,不管定义的多少,都会从这个初始值开始递减至0,可以认为LSP寿命结束值是一个常量。所以区域中的路由器看到该字段的值为0,就知道该LSP已失效,然后在规定的时间内把它清除掉。
5 结束语
IS-IS本身是一个网络层协议,运行在数据链路层之上,可以免受 IP数据包欺骗和类似的拒绝服务攻击。用于 IP路由的IS-IS协议的成功使用和广泛接受归功于IS-IS协议的灵活性、可靠性和可扩展性。另外,IS-IS协议不依赖IP层,在IPv4、IPv6路由的混合承载时,给运营商网络平滑迁移提供了便捷。在IS-IS协议中,ATT置1产生默认路由,默认路由产生次优路由,次优路由的解决办法是路由渗透,路由渗透后Up/Down置位出现标志U,Up/Down置位可以避免路由环路,这样就保证了协议的可靠性。与OSPF相比较,IS-IS可以容纳更多的路由条目,当通告相同的路由条目时,ISIS的LSDB的规模明显比OSPF更小。因此,IS-IS更受大型网络运营商的青睐。
[1]李彦刚,邓文平,王宏,刘亚萍.域内路由协议 OSPF与IS-IS差异性的研究与分析[J].计算机科学,2015.
[2]康京山,韩春刚.集成IS-IS路由选择协议的研究[J]. 无线电通信技术,2007.
[3]刘玉贞,李珩,李炳彰.一种基于数字证书的安全IS-IS路由协议[J].无线电工程,2016.
[4]张鑫,朗莹.网络规划中路由协议选择[J].网络安全技术与应用,2015.
[5]李天佑,许敏.基于集成 IS-IS路由协议网络拓扑发现初探[J].计算机应用,2007.
[6]杨敏.基于Packet Tracer的OSPF仿真实验[J].网络安全技术与应用,2016.
[7]翁国梁.IS-IS路由协议分析与大型网络路由设计[J].网络安全技术与应用,2015.
[8]刘海涛.浅析内部网关协议 IS-IS[J].邢台职业技术学院学报,2016.
[9]孙余强译.Jeff Doyle.OSPF和IS-IS详解[M].北京:人民邮电出版社,2014.
[10]殷文珊.城域网下发缺省路由导致路由环路的故障分析[J].中国新通信,2014.
中央高校基本科研业务费专项资金资助项目(GK201503065),现代教学技术教育部重点实验室开放课题资助项目(SYSK201501),陕西师范大学非师范拔尖创新人才培养计划2017年度项目。