互联网经济蓬勃发展及万物互联, 数据流量越来越大, 运营商网络不断升级扩大、骨干网络路由器承载的路由条目越来越多、路由压力不断增大, 路由的快速收敛和稳定性非常重要. 中间系统到中间系统(Intermediate System-to- Intermediate System, IS-IS)作为ISO定义的路由协议标准(ISO/IEC 10589)并一开始就应用在运营商网络中. 并且IS-IS稳定性和可扩展性好, 在巨量路由条目的情况下, IS-IS比OSPF更有效率, 更适合网络运营商部署[1], 其巨大的吸引力也促使其成为了骨干网络中路由协议的研究和应用热点.
本文重点是研究IS-IS路由协议的技术框架、原理, 并基于Dynamips和思科unzip-c7200-js-mz.124 -12.bin的IOS仿真设计并实现了一个多区域多网络类型的集成IS-IS仿真实例网络, 验证了IS-IS协议工作机制, 仿真设计方案还可直接移植到实际的网络中.
1 IS-IS概述及地址因互联网的开放性而包含了丰富的协议栈, 最著名的当属ISO/OSI RM和TCP/IP. 并且OSI RM作为ISO标准, 但随着技术的发展, TCP/IP成了事实上的标准. IS-IS与CLNP、ES-IS作为OSI RM中网络层的三大协议, 并且相互独立, 均直接封装在链路层帧内、效率高. IS-IS协议开发之初就是应用在运营商(ISP)网络, 为基于Dijkstra的SPF算法的一种链路状态路由协议. 根据ISO/IEC 10589标准, 最初IS-IS仅支持OSI中的CLNP路由[2], 但由于IP的发展壮大及IS-IS优良特性, 后来IETF对IS-IS进行了兼容性改造, 形成了RFC1195, 才同时支持OSI和TCP/IP协议栈, 也即“集成”或“双栈”IS-IS[3]. 考虑到TCP/IP占主导地位, 本文中所讨论的为集成IS-IS, 为了讨论的方便以下描述中直接用IS-IS代替集成IS-IS.
IS(Intermediate System)即中间系统, 即路由器, 与之相对应的有ES(End System)端系统, 如计算机. NSAP(Network Service Access Point)即网络服务访问点, 作为OSI中网络层的地址, 代表整个节点(而非节点的某个接口)即一个IS, 其结构如图1所示, 长度介于8字节到20字节字节, 分为IDP(域的初始部分)和DSP(域的特定部分); IDP用来标识域, 相当于IP地址中的主网络号, 又分为AFI(授权和格式标识符)和IDI(初始域标识符), AFI表示地址分配机构和地址格式(如AFI为49是RFC1618中预留的私有地址), IDI用来标识域; DSP相当于IP地址中的子网号和主机地址, 其中High Order Dsp和IDP的AFI、IDI一起构成Area字段, 作为域的区域地址; System ID即系统地址固定长度为6字节, 标识区域中的路由器(IS), 在每个区域中要保持唯一性; NSEL即选择位, 标识IS上的进程(端口), 把NSEL为0x00的NSAP地址称为NET地址. 即使IS-IS工作在纯IP网络中时, 也需要NSAP地址, 并且思科公司把NSAP地址从右向左分别区分为1个字节NSEL、6个字节的系统ID和其余至少3个字节的区域地址等三个部分.
SNAP(Subnet point of Attachment)子网接入点, 为链路层地址, 类似与以太网中的MAC地址. 电路地址是路由器(IS)上标识不同接口的, 在点到点网络中用SNAP表示. 在以太网中用6字节的系统ID加1字节的接口编号表示电路地址, 并且在思科公司设备中用hostname代替系统ID. 一个路由器(IS)由于有多条链路因此需要有多个SNAP地址, 但只有一个NSAP地址.
2 IS-IS路由协议原理 2.1 IS-IS基本术语IS-IS PDU: IS-IS为了形成邻接表、得到LSDB、生成拓扑表等, 引入了IS-IS PDU(协议数据单元), IS-IS PDU是直接封装在数据链路层中而非IP或CLNP的首部之后. IS-IS PDU主要为Hello、LSP、PSNP及CSNP等四类报文, 报文格式如表1所示, 其中: 附加头部字段与TLV字段均为8位的整数倍, 具体长度与PDU报文类型有关. 特别值得说的是TLV字段, 其包括Type(8位)、Length(8位, 表示Value值的长度)和Value(值), IETF可根据需要新定义Type值向后兼容, 从而可以拓展IS-IS协议的应用领域.
IS-IS网络类型: IS-IS支持多路访问广播网络(BMA)和点到点网络(P2P)两种网络类型.
IS-IS区域类型: 为了支持大规模的路由网络, IS-IS域(Domain)划分成两层结构, 即骨干区域、非骨干区域. 非骨干区域有区域地址, 骨干区域为逻辑区域没有区域地址. 区域中的路由器角色分Level-1、Level-2、Level-1-2三种. 骨干区域由连续Level-2路由器和Level-1-2路由器组成, 负责传递交换不同区域间LSP, 骨干区域如图2所示. 骨干区域中的Level-2路由器必须是物理连续的, 以保证骨干区域的连续性. 每台路由器只能属于一个区域, 区域边界在链路上.
2.2 IS-IS工作过程IS-IS作为一种链路状态的路由协议, 每个路由器均形成一个邻接表, 建立邻居关系后维护一个信息一致的链路状态数据库(LSDB), 进而形成整个网络的拓扑图(拓扑表), 在利用Dijkstra的SPF算法计算出IS-IS路由条目, 最终路由器根据管理距离值(AD)选择是否放入路由表.
(1) 建立邻接关系
通过发送Hello报文用来建立和维护邻接关系形成邻接表, Hello报文有ESH、ISH及IIH等三种, 其中ESH与ISH是发生在ES与IS之间的; IIH即IS-IS Hello, 由IS定期发给邻居IS以建立并维持邻接关系. Level-1路由器只与同区域Level-1和Level-1-2路由器形成邻居关系, Level-2路由器可与同区域或者其它区域Level-2和Level-1-2路由器形成邻居关系. 同时属于Level-1和Level-2的路由器称为Level-1-2路由器, 可与同区域的Level-1和Level-1-2路由器形成Level-1邻居关系, 也可与同区域或者其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系.
(2) 维护LSDB形成拓扑表
形成邻接关系的IS之间会发送LSP(链路状态PDU), 用来交换链路状态信息实现LSDB同步. 在BMA网络中IS-IS选举一个路由器作为DIS(Designated Intermediate System). DIS负责创建和更新伪节点(Pseudonodes), 并生成伪节点的链路状态协议数据单元LSP. 伪节点是用来模拟广播网络的一个虚拟节点, 伪节点通过DIS的System ID和一个字节的Circuit ID(非0值)来标识. 使用伪节点可简化网络拓扑, 使路由器产生的LSP长度较小, 当网络发生变化时, 需要产生的LSP数量也会较少, 减少SPF的资源消耗使SPF计算更快. Level-1和Level-2的DIS分别选举, 用户可以为不同级别的DIS选举设置不同的优先级. DIS优先级数值最大的被选为DIS. 如果优先级相同, 则其中MAC地址最大的路由器会被选中. MBA网络中IS-IS PDU报文通过组播方式传递, Level-1的组播地位为01:80:c2:00:00:14, Level-2的组播地址为01:80:c2:00:00:15. P2P网络中不选举DIS, IS-IS PDU通过单播方式传递.
CSNP(完全系列号PDU), 用来发布IS上完整的链路状态数据库, PSNP(部分序列号PDU)用来确认和请求链路状态信息. PSNP在P2P网络中, 用于对接收到的LSP进行确认; 在BMA网络中用于请求所缺少的LSP. CSNP在BMA网络中由DIS周期性发送, 以保证LSDB的准确性; 在P2P网络中仅在建立邻接时使用.
(3) 计算路由条目
IS-IS网络中路由器均拥有一致的链路状态数据库并得到拓扑图后, 将根据Dijkstra的SPF算法计算并创建路由条目[4]. IS-IS根据路径Metric值来选择到目的网络的最佳路径, 接口缺省的Metric值为10, 链路Metric值等于路径所经过出接口Metric之和.
维护Level-1级的LSDB仅包含本区域的路由信息, 维护Level-2级的LSDB包含区域间的路由信息. 同时维护Level-1级和Level-2级的两个LSDB时, Level-1级的LSDB用于区域内路由, Level-2级的LSDB用于区域间路由.
2.3 IS-IS路由优化路由器默认为Level-1-2, 需要同时维护2个LSDB及发送2种类型的LSP. 为提高路由效率建议做如下优化: 区域内路由器设置为Level-1, 区域间路由器设置为Level-2, 区域边界路由器默认为Level-1-2不变. 优化后Level-1路由器会添加一条指向Level-1-2并且ATT位置1的路由器的默认路由. 同时默认情况下, Level-1级的路由不含Level-2级的路由, 为了提高可靠性或路由策略, 可以根据需要把(部分)Level-2级的路由发布到Level-1级[5], 这优化称为路由泄漏.
3 IS-IS网络设计与虚拟仿真本实验基于Dynamips和思科unzip-c7200-js-mz.1 24-12.bin型号的IOS仿真了一个包含5台路由器[6]的多区域含两种网络类型的IS-IS网络, R1、R2、R3通过BMA网络(Ethernet)相连同处于区域49.0001, R4、R5分别处于区域49.0004、49.0005, 该网络设备间连接及接口信息等情况如图3所示. 实验过程中根据需要设置抓包并分析所抓数据包、邻居表、LSDB、路由表等.
3.1 网络基本配置按表2, 分别配置路由器R1~R5各端口的IP地址和子网掩码等信息, 其中Lo0为环回网卡, 测试用.
3.2 IS-IS配置
按照表3, 分别配置路由器R1~R5的NET地址, 其中Level类型为默认值, 所有路由器及接口均启用IS-IS.
3.3 测试结果分析
在R1上查看邻居表、拓扑图及LSDB表如图4所示, 可以看出与R2、R3通过f0/0口建立了Level-1-2类型的邻居关系, 路由器默认为Level-1-2, 因此含有Level-1和Level-2的LSDB. 同样在R2、R3、R4、R5上也可以看到类似的表项.
在R1上测试到R5上lo0端口的可达性, 如图5所示, 测试成功.
3.4 优化IS-IS及结果分析根据上文IS-IS优化原理及本网络拓扑, 分别对路由器R1、R4、R5的Level类型优化设置为Level-1、Level-2、Level-2. 优化后R1的ISIS邻居表不变, 但ISIS拓扑表和LSDB如图6所示, 表项优化率高达70%. 同样, 在R4、R5上上也会优化率达30%. 优化后R1上会自动添加了一条默认路由(*标记), 如图7所示.
进一步, 当需要提高49.0001区域内部到达45.1.1.0/24的可靠性或需要让该区域内拥有该路由条目, 可在R3上泄漏45.1.1.0/24路由到Level-1, 泄漏后R1上的路由表如图8所示.
3.5 IS-IS报文分析为更近一步验证, 分别在R1的f0/0、R2的s1/0、R3的f1/0及R5的s1/1口抓包. R1 f0/0端口抓获到周期性的Level-1、Level-2 Hello包(IIH, BMA网络)分别如图9、图10所示.
优化IS-IS后R1后在f0/0端口抓获到周期性的Level-1Hello包(IIH, BMA网络)、同样R2 s1/0端口抓获到周期性的Level-2 Hello包(IIH, P2P网络), 分别如图11、图12所示.
在R3的f1/0端口抓获的L2 CSNP包(周期性发自R4, BMA网络中), 如图13所示. P2P网络中的CSNP包就不再一一列举了.
在R5的s1/1口抓获的L2 PSNP包(R5回应, P2P网络)如图14所示, 上框是PDU首部(部分), 中间框是附字段表示的是LSP入口, Type值为0x09, Value加首部字段(PSNP首部), 下框是TLV字段(该TLV值长度为16字节, Value值为0x04 ab 33 33 33 33 33 33 01 00 00 00 00 0a 0a 98), 功能是对R3发来的LSP的回复. R3发来的LSP报文与本报文摘要及顺序如图15所示. BMA网络中的PSNP包就不再一一列举.
以上验证: 在IS-IS路由协议中不论是BMA还是P2P网络中均通过周期性IIH(Hello)包建立保持邻接关系; PSNP在P2P网络中用于对接收到的LSP进行确认, 在BMA网络中用于请求所缺少的LSP; CSNP在BMA网络中由DIS周期性发送以保证LSDB的准确性, 在P2P网络中仅在建立邻接时发送一次.
通过以上仿真实验, 结合NSAP地址、邻居表、拓扑表、路由表及LSDB表及抓获的Hello、LSP、PSNP、CSNP等信息分析了IS-IS协议的工作原理并解析了各种表及IIH、LSP信息的转发的过程, 验证了IS-IS路由协议整个技术框架和原理.
4 结论IS-IS协议既支持CLNP路由也支持IP路由, 还可通过TLV拓展IS-IS PDU实现向后兼容IPv6、MPLS-TE[7]等, 工作原理复杂. 通过Dynamips平台及unzip-c7200-js-mz.124-12.bin IOS仿真设计并实现了一个IS-IS实例网络, 并基于对邻接表、LSDB、拓扑表等相关信息和抓获的报文的分析, 清晰验证了IS-IS路由协议技术原理和特性. 并且该仿真设计方案可直接移植到实际网络中, 对指导实际网络的应用有一定应用价值.
[1] |
李彦刚, 邓文平, 王宏, 等. 域内路由协议OSPF与IS-IS差异性的研究与分析. 计算机科学, 2015, 42(S1): 256-259. |
[2] |
ISO/IEC 10589: 2002(E) Information technology-Telecommunications and information exchange between systems-Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO 8473). Switzerland, 2002. 11–15.
|
[3] |
Callon RW. RFC1195 Use of OSI IS-IS for Routing in TCP/IP and Dual Environments, 1990. 12.
|
[4] |
马素刚. 路由协议OSPF的研究与仿真. 计算机系统应用, 2016, 25(5): 228-231. |
[5] |
Li T, Przygienda T, Smit H. RFC5302 Domain-wide prefix distribution with two-level IS-IS. United States: RFC Editor, 2008. 10.
|
[6] |
熊建辉. BGP/MPLS VPN技术研究及在Dynamips中的仿真实现. 内蒙古民族大学学报(自然科学版), 2018, 33(1): 29-34. |
[7] |
赵玉兰, 张弘宇, 冀超, 等. IS-IS路由协议互操作性测试的研究. 计算机科学, 2012, 39(S1): 146-150. |