IS-IS
4.1 IS-IS基础
IS-IS最初是ISO为它定义的OSI网络中的CLNP(无连接网络协议)设计的一种动态路由协议。为了提供对IP路由的支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI网络环境中,成为集成IS-IS。
4.1.1 OSI网络基础
在OSI网络中定义了CLNS(无连接网络服务)和CONS(面向连接的网络服务)。提供CLNS服务的协议主要包括CLNP、IS-IS和ES-IS(中断系统到中间系统)。它们分别起不同的作用。CLNS类似于TCP/IP中的IP协议簇,都是无连接服务;而CONS类似于TCP/IP网络中的TCP,都是面向连接的服务。
1、 CLNP
CLNP是OSI网络中的网络层数据报协议,提供了与TCP/IP类似的功能,因此又被称为ISO-IP。与IP一样,CLNP也是一个无连接的网络层协议,提供无连接的网络服务。但是IP是TCP/IP协议栈中唯一的网络层协议,来自高层的协议和数据绝大多数需要封装在IP协议报文中,然后在传输到数据链路层,重新封装在帧中进行传输。而在OSI网络环境中,CLNP、IS-IS、ES-IS都是独立地网络层协议,都直接被封装到数据链路层的帧中进行传输。CLNP使用NSAP(网络服务访问协议)地址来识别网络设备。
2、 IS-IS
IS-IS协议最早是DEC公司于20世纪80年代后期开发并在ISO/IEC10589中以标准形式发布,是一种动态路由协议。IS-IS最初仅用于在使用CLNP的OSI网络中实现各路由器间路由信息交换。随着TCP/IP的流行,为了体工队IP路由的支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI网络环境中“集成IS-IS”。目前的IS-IS版本为ISO/IEC 10589:2002,可以全面支持OSI和TCP/IP网络环境。
3、 ES-IS
ES-IS也是有ISO开发,用来允许终端系统(PC机)和中间系统(路由器)进行路由信息的交换(也就是通常所说的PC机与路由器之间的路由),以推动OSI网络环境下网络层的路由选择和中继功能的操作。ES-IS在CLNP网络中就像IP网络中的ARP、ICMP一样,为用户主机与路由器间提供路由信息交换。
4.1.2 IS-IS基本术语
1、 IS(Intermediate System,中间系统)
IS:运行IS-IS协议的路由设备。它是IS-IS协议中生成路由和传播路由信息的基本单元
2、 ES(End System,终端系统)
ES:相当于通常所说的主机系统。ES不参与IS-IS路由协议的处理,在OSI网络环境中使用专门的ES-IS协议定义ES与IS间的路由通信。
3、 RD(Routing Domaiin,路由域)
RD:指由多个使用IS-IS协议的路由器所组成的范围。
4、 Area(区域)
Area:IS-IS路由域的戏份单元。IS-IS与OSPF一样,允许将整个路由域分为多个区域,且总体上也分为普通区域和骨干区域两类,但IS-IS的普通区域与骨干区域直接连接(没有OSPF中的“虚链接”),普通区域之间不能直接连接。Area又可根据网络中路由器的类型划分为Level-1区域(全由level-1路由器组成)和Level-2区域(由level-2和level-1-2路由器组成)。
5、Sys ID(System ID,系统ID)
在IS-IS协议中使用Sys ID唯一标识一台路由器,必须保留在整个IS-IS路由域中每台路由器的系统ID都是唯一的,与OSPF中的路由器ID一样。
6、LSP(Link-State Packet,链路状态报文)
ISP在IS-IS网络中的设备用来通过泛洪方式向所有邻居通告自己的链路转台信息的报文,类似于OSPF中的LSA(链路状态通告)。网络中每台路由器都会产生带自己系统ID标识的LSP报文,可以通过发送LSP不断更新自己的链路状态信息。
7、LSDB(Link State DataBase,链路状态数据库)
路由器的每个区域都是有一个专门存放该区域所接收的所有LSP报文的数据库,这就是LSDB。通过LSP的泛洪,最终使整个区域的所有路由器拥有相同的LSDB。在每一个IS中都至少有一个LSDB,那就是Level-e LSDB。IS-IS路由器利用各个区域的LSDB,通过SPF算法计算声场自己的IS-IS路由表。
8、DIS(Designated IS,指定IS)
在IS-IS广播网络类型中需要选举一个指定IS(DIS),以便周期性地向区域内其他路由器进行区域LSDB数据库的泛洪(区域内的非DIS仅与DIS之间进行LSDB交互,非DIS之家不能直接进行LSDB交互),使整个区域中各路由器的LSDB同步。DIS的功能类似于OSPF总的DR(指定路由器),但是在OSPF中有备份BDR(备份指定路由器)的概念,IS-IS中没有备份的DIS概念。
4.1.3 IS-IS路由器类型
IS-IS协议也根据各路由器所处的网络位置不同,或者作用不同分成了三类:Level-1(简称L1)、Level-2(简称L2)和Level-1-2(简称L1/2)。所有IS-IS路由器缺省都是L1 /2类型。
IS-IS的这些路由器类型与所处的区域类型有关。区域分为普通区域和骨干区域。但IS-IS中的骨干区域不固定区域ID(可任意),且可以有多个区域ID不通的骨干区域。
1、L1路由器
L1路由器是一个IS-IS普通区域内部的路由器,蕾西与OSPF网络中的普通区域内部路由器(IR),只能在非骨干区中存在。且L1路由器只能与属于同一个区域的L1和L1/2路由器建立L1邻接关系(不能与L2路由器建立邻接关系),交换路由信息,并维护和管理本区域内部的一个L1 LSDB。
L1路由器的邻居都在同一个去榆中,其LSDB包含本区域的路由信息以及到达同一区域中最近L1/2路由器(相当于OSPF中的ABR)的默认路由,但到区域外的数据须有最近的L1/2路由器进行转发。也就是说,L1路由器只能转发区域内的报文,或者将到达其他区域的报文转发到距离他最近,且在同一区域的L1/2路由器
2、 L2路由器
L2路由器是骨干区域中的路由器,主要用于通过与普通区域中的L1/2路由器连接,连接骨干区域和非骨干区域,类似于OSPF网络中的BR(骨干路由器),并负责在不通区域间的通信。
L2路由器只能与其他L2路由器公出一个区域,L2路由器可与本区域中的其他L2路由器及其他区域中的L1/2路由器建立L2邻接关系,交换路由信息没维护一个L2的LSDB。网络中的所有L2路由器和所有L1/2路由器连接在一起共同构成IS-IS网络的骨干网(注意,不是骨干区域),也称为L2区域。IS-IS中的L2区域不是一个特定的区域,是由连接网络中各个区域的一部分路由器组成的,但必须物理是连续。而IS-IS网络中所有L1路由器与L1/2路由器连接所形成的区域统称为L1区域。L1区域是分散的,不是连续的。
3、L1/2路由器
L1/2路由器类似于OSPF网络中的ABR(区域边界路由器),用于区域间的连接,默认所有IS-IS路由器都是L1/2类型的。L1/2路由器既可以与同一普通区域的L1路由器以及其他L1/2路由器建立L1邻接关系,也可以与骨干区域L2路由器建立L2邻接关系。L1路由器必须通过L1/2路由器才能与其他区域通信。L1/2路由器必须维护一下两个LSDB:L1 LSDB用于区域内路由,L2 LSDB用于区域间路由。注意:L1/2路由器不一定要位于区域边界,在区域内部也有可能存在L1/2路由器。
4.1.4 OSI网络/IS-IS路由器类型
在整个OSI网络中,包括了4个路由器级别(4种路由类型):L0(LEVEL-0)、L1(Level-1)、L2(Level-2)和L3(Level-3)。IS-IS所能提供的路由器仅包括L1、L2这两个级别。
1、L0路由
L0路由时OSI网络中ES与IS之间的路由(不属于IS-IS协议所提供的路由功能),使用ES-IS协议进行路由信息交换;ES通过侦听IS发送的IIH报文(ES到ES的hello报文)时将同时把报文发送到IS。同样,IS也会侦听ES发送的ESH报文以获知ES的存在,当有数据要发送到某个ES是,会根据所获取的ESH信息进行发送。这个过程就称之为L0路由选择过程。
2、L1路由
L1路由时OSI或者TCP/IP网络中在同一普通区域内各IS之间的路由,即普通区域内路由,是IS-IS协议提供的路由功能。同一个普通区域中IS之间通过交换路由信息后,得知了本区域的所有路径。当IS收到一个到目标地址是本区域内地址的报文后,通过查看目的地址即可将报文发送正确的链路或目的节点。能提供L1路由的IS-IS路由器类型有L1路由器和L1/2路由器。
经验之谈:尽管同一普通区域内部IS间路由仅需要L路由即可,但是并不能就此推断在同一区域中的IS都只能是L1路由器,也可以是同时支持L1路由和L2路由的L1/2路由器,只是说L1路由时仅用于区域内部的路由。
3、L2路由
L3路由类似于TCP/IP网络中的BGP,器目的是在不同的路由域或自治系统(AS)之间交换路由信息,并将去往其他AS的包转发到正确的AS,以便到达最终目的地。这些AS之间可能拥有不同的路由拓扑,所以不能之间进行路由信息的交换。L3路由时OSI网络中不同IS-IS路由域间的路由,不属于IS-IS提供的路由功能。
IS-IS所能完成的路由功能包括L1和L2路由功能(同时提供L1和L2的卤藕称之为L1/2路由),这仅是整个OSI网络中路由选择功能的一部分。
4.1.5 IS-IS区域与OSPF区域的比较
都是可以划分多个区域,但IS-IS是工作在数据链路层的,报文直接以帧格式封装;而OSPF是工作在应用层的,报文需要由网络IP报文格式封装。
1、IS-IS可以有多个骨干区域
IS-IS中可以有多个骨干区域,且骨干区域ID不固定(即任意);但要求所有的非骨干区域(通过L1/2路由器)必须直接与骨干区域连接,普通区域之间不能直接连接,在与普通区域之间,必须与L1/2路由器相连,不能与L1路由器相连。如下图:
下图是IS-IS网络的另外一种拓扑图,其中有两个骨干区域(1和3)。非骨干区域中的L1/2路由器同时与两个骨干区域的L2路由器连接,同时两个骨干区域之间也彼此连接(可以把他们看成一个大的虚拟骨干区域),这两部分共同构成了一个IS-IS骨干网(也称L2区域)。即IS-IS骨干网是由所有的L2路由器和各区域边界的L1/2路由器构成,他们属于不通的区域,但必须是物理连续,即中间不能为L1路由器。
2、区域边界不同
OSPF的区域边界在设备接口上;而IS-IS的区域边界在链路上,即同一链路的两端接口分别属于不通区域,不同区域的边界仅体现在不同区域间连接的链路上,因此:一台IS-IS路由器的各个接口都必须同属一个区域。如下图所示:
3、不同区域间路由器的邻接关系不同
IS-IS协议规定:路由器整体属于某个特定的区域,L1路由器只能建立L1级邻接关系;L2路由器只能建立L2级邻接关系;L1/2既可以与L1路由器建立L1级邻接关系,又可以与L2或者其它L1/2路由器建立L2级邻接关系。
注:IS-IS路由协议中,只有同一层次的相邻路由器才可能成为邻接体。
A、同一区域的L1路由器间可以建立L1级邻接关系,不同区域的L1路由器间不可能建立任何邻接关系。
B、同一区域的L1路由器和L1/2路由器间可以建立L1级邻接但不能与不同区域的L1/2路由器和L2路由器间建立任何邻接关系。
C、同一区域的L1/2路由器间可以建立L1和L2级邻接关系,但不同区域的L1/2路由器间可以建立L2级邻接关系。
D、同一骨干区域的L2路由器间可以建立L2级邻接关系。
E、骨干区域的L2路由器与普通区域中的L1/2路由器间可以建立L2级邻接关系。
4、SPF路由算法的使用不同
在IS-IS中,普通区域内的L1路由、区域间和骨干区域内部的L2路由都是采用SPF算法进行计算的,分别生成各自的SPT(Shortest Path Tree,最短路径树);而在OSPF中只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
4.1.6 IS-IS的两种地址格式
一种是用来标识网络层服务的NSAP(网络服务访问点)地址,一种是用来标识设备的NET(Network Entity Titile,网络实体名称)
1、NSAP地址格式
仅适用于OSI网络,用来标识CLNS网络层地址,每个通信过程(不是每个接口)对应一个NSAP地址,类似于TCP/IP网络中的Socket套接字服务。
NSAP由IDP(Inter-Domain Portion,域间部分)和DSP(Domain Service Portion,域服务部分)组成。 IDP相当于IP地址中的网络号,DSP相当于IP地址中的子网ID、主机ID和端口号总和。
IDP由一下两个子部分组成:
A、AFI(Authority and format ID,颁发机构与格式ID):用来标识NSAP地址格式和对应地址的分配机构,占一个字节。AFI等于49的地址是私有地址,等于39或47的地址属于ISO注册地址,相当于IP地址的公网地址。
B、IDI(Inter-Domain ID,域间ID):用来标识、区分AFI字段下不同的IS-IS路由域,最长可达10个字节。
DSP由一下三个字部分组成:
A、 HODSP(High Order DSP,DSP高位):用来在一个IS-IS路由域中分割多个区域,相当于IP地址中的子网ID部分。
B、 SID(System ID,系统ID):占6个字节,用来区分主机,通常以MAC地址进行标识,类似于OSPF协议中的路由器ID,相当于IP地址中的主机ID部分。LSP的识别就是依据路由器NSAP地址中的系统ID。当IS工作在L1时,则在所有同区域中的L1路由器的系统ID必须唯一;当IS工作在L2时,则在同一个路由域中所有路由器的系统ID必须唯一。
C、 NSEL(Network-Selector,网络选择器):占一个字节,用来只是选定的服务,相当于TCP协议中的端口号。在IS-IS路由选择过程中没有使用NSEL,所以NSEL始终保持为00。
通常情况下1字节(2个十六进制数字)的长度足够定义Area Address,所以在大多数的IS-IS实现中NSAP地址最小长度为8字节。对于IP应用程序而言,在NSAP地址中,1字节定义AFI(也就是2个数字),最少2字节定义实际的区域信息(IDI),6字节定义System ID,1字节定义NSEL,所以此情况下的NSAP地址最少为10字节。
2、NET地址格式
在IP网络的IS-IS协议中,IS-IS路由器是以NET(Network Entity Title,网络实体名称)地址进行标识的。NET也是一种NSAP地址,只是没有使用OSI网络中NSAP地址的NSEL部分,所以NSEL始终保持为00.
路由器在发送LSP报文中用NET来标识自己,这类似于OSPF发送的LSA中的路由器ID。通常情况下,一台路由器只需要配置一个NET即可,当区域需要重新划分时,由于最多可配置3个区域,所以NET最多也只能配置3个。
A、区域地质(Area Address):是整个地质的最高字节序列,长度范围为1----13个字节,相当于OSPF网络中的“区域ID”。一个IS-IS路由器进程示例可以配置多个区域地址,此时所有区域地质都具有相同含义,主要用于区域合并或者区域划分。可以简单配置成0000.0000.0001、0000.0000.0002格式(十六进制)。
B、系统ID:它是继“区域地址”字段后的6个字节,并且是以数字开始的。当路由器为L1 IS时,则该IS的系统ID必须在同一区域中的所有L1 IS中唯一;当路由器为L2 IS时,则该IS的系统ID必须在整个IS-IS路由域中唯一。
可以把路由器环路接口IP地址转换为系统ID,只需要把每个字节都用3个数字来标识,然后再转换成三段(原来IP地址是四段)即可。如:192.31.231.16转换成192.031.231.016,再转换成三段得到1920.3123.1016即可,这样就可用作系统ID了。
C、NSEL(网络选择器):在“系统ID”字段之后的1个字节,其值总为“00”。
49.0001.aaaa.bbbb.cccc.00
区域地址:49.00001(AFI=49,是一个私有地址;39是一个公有地址)
系统ID:aaaa.bbbb.cccc
NSEL:00
39.0f01.0002.0000.0c00.1111.00
区域地址:39.0f01.0002
系统ID:0000.0c00.1111
NSEL:00
4.2 IS-IS PDU报文格式
IS-SI路由协议直接运行在数据链路层上,对等路由器间通过PDU(协议数据单元)来传递链路状态信息,完成链路状态PDU数据库(LSPDB)的同步。
4.2.1 IS-IS主要PDU类型
IS-IS网络中使用的PDU类型主要有:Hello PDU 、LSP(Link-State PDU,链路状态PDU)和SNP(Sequence Number PDU,序列号PDU)三种。
1、Hello PDU
Hello PDU:周期性的向邻居发送,用于建立和维持邻居关系,成为IIH。
L1 LAN IIH:类型号15,广播网中L1邻居关系的建立和维护。
L2 LAN IIH:类型号16,广播网中L2邻居关系的建立和维护。
P2P IIH:类型号17,非广播网络中邻居关系的建立和维护。
2、LSP PDU
LSP PDU包含IS-IS路由器链路状态信息的PDU,用于与其他IS-IS路由器交换链路状态信息,类似于OSPF中的LSA报文。每个IS-IS路由器都会产生自己的LSP,并向邻居路由器进行泛洪,同时又可以学习由邻居路由器泛洪而来的其他IS-IS路由器的LSP。
LSP分为两种:L1 LSP(类型号为18)和L2 LSP(类型号为20)。L1 LSP可由L1或者L1/2路由器产生,L2 LSP可由L2或者L1/2 IS-IS路由器产生。这些LSP是建立对应级别LSDB的依据。同一区域中各路由器上同级别的LSDB可完全同步的,而各级别LSDB又是路由器通过SPF算法计算SPT(最短路径树)、最终得出路由表的依据。
3、SNP PDU
SNP PDU通过描述全部或部分数据库中的LSP来同步各LSDB,从而维护相同区域中同级别LSDB的完整与同步,类似于OSPF中的DD报文。
SNP宝库啊CSNP(Complete SNP,完全序列号)和PSNP(Partial SNP,部分序列号)。PSNP值列举最近收到的一个或多个LSP的序列号,能一次对多个LSP进行确认。同时当发现自己的LSDB与对端邻居,或者广播网络中的DIS的LSDB不同步时,也是用PSNP来请求邻居或者DIS发送新的LSP。CSP包括本地某个级别LSDB中所有LSP的摘要信息,从而可以在相邻路由器间保持同级别LSDB同步。在广播网络上,CSNP由DIS定期发送(默认周期10S);在点对点线路上,CSNP只在第一次建立邻接关系时发送。
CSNP和PSNP分别也可分为L1 CSNP(类型号为24)、L2 CSNP(类型号为25)、L1 PSNP(类型号为26)和L2 PSNP(类型号为27)
4.2.2 IS-IS PDU报头格式
IS-IS PDU包括一个报头和可变长字段两部分。报头又包括“通用报头”和“专用报头”。对所有PDU来说,通用报头是相同的,专用报头根据不同PDU类型二不同。如下图所示:
Intradomain Routing Protocol Discriminator:域内路由协议标识符,占1个字节,用于标识网络层PDU的类型,IS-IS PPDU的固定值为0x863.
Length Indicator:长度指示器,占1个字节,用于标识报头部分(包括通用报头和各种PDU的专用报头两部分)长度,以字节为单位。
Version/Protocol ID Extension:版本/协议ID扩展,占1个字节,当前值固定为0x01。
ID Length:ID长度,占1个字节,用于标识系统ID长度。
PDU Type:PDU类型,占5位,用于标识L1 LSP;值为20标识L2 LSP;值为24标识L1 CSNP;值为25标识L2 CSNP;值为26表示L1 PSNP;值为27表示L2 CSNP。
Version:IS-IS协议版本号,占1个字节,当前值为0x01。
Reserved:保留为,占1个字节,当前固定为0.
Maximum Area Address:最多区域地址,占1个字节,标识支持的最大区域数,标识可以为一个路由器配置多少个不同的区域前缀。默认值为0,标识最多支持3个区域地址数。
4.2.3 IS-IS PDU报文格式
IIH(IS-IS Hello)PDU用来建立和维持IS-IS路由器之间的邻接关系。IIH PDU包括IS-IS PDU通用报头、IIH专用报头和可变长字段三部分。在IIH专用报头部分包括了发送者的系统ID、分配的区域地址和发送路由器一致的链路上邻居标识。IIH有以下三种类型:
A、 L1 LAN IS-IS Hello PDU(类型号为15):广播网中L1路由器发送的IIH。
B、 L2 LAN IS-IS Hello PDU(类型号为16):广播网中L2路由器发送的IIH。
C、 点对点IS-IS Hello PDU(类型号为17):在点对点网络上路由器发送的IIH。
广播LAN IIH和P2P IIH的PDU报文格式不完全一样。P2P IIH中相对于LAN IIH多了一个标识本地链路ID的Local Circuit ID字段,少了标识广播网中DIS的优先级的Priority字段移机标识DIS和为节点System ID的LAN ID字段。
IIH PDU专用报头部分的各个字段说明:
Reserved:保留字段,占6位。当前没有使用,始终未0.
Circuit Type:电路类型字段,占2位。0x01表示L1路由器,0x10表示L2路由器,0x11表示L3路由器。
Source ID :源ID字段,占1个字节,标识发送该IIH PDU报文的源路由器系统ID。
Holding Time:保持时间,占2个字节,用来通知他的邻居路由器在认为这台路由器失效之前应该等待的时间。如果在保持时间内收到邻居发送的下一个IIH PDU,将认为邻居依然处于存活状态。这个保持时间就相当于OSPF中的DeadInterval(死亡时间间隔)。在IS-IS中,默认保持时间是发送IIH PDU间隔的3倍,但是在配置保持时间时,是通过指定一个IIH PDU乘数(Hello-Multiplier)进行配置的。如IIH PDU的间隔为10S,IIH PDU乘数为3,则保持时间是30S。
PDU Length:IIH PDU长度字段,占2个字节,标识整个IIH PDU报文(包括IS-IS PDU报头)的长度(以字节为单位)。
Priority:优先级字段(仅在LAN IIH中有此字段),占7位,标识本路由器在DIS选举中的优先级。越大越优先,该路由器成为DIS的可能性越大。
LAN ID:局域网ID字段(仅在LAN IIH中有此字段),由DIS路由器的系统ID+1个字节的为节点ID组成,用来区分同一台DIS上的不同LAN。
Local Circuit ID:本地电路ID(仅在P2P IIH中有此字段),占1个字节,用来标识本地链路ID。
4.2.4 LSP PDU报文格式
一个LSP包含了一个路由器的所有基本信息(如邻接关系、连接的IP地址前缀、OSI中断系统、区域地址等)。LSP PDU共分为两种类型。
1、L 1 LSP(类型号为18)
L1 LSP是由支持L1路由的L1或者L1/2路由器产生的,会在本区域内部邻居路由器上泛洪。本区域中的所有L1 LSP交换完成后会在所有本区域L1或者L1/2路由器上形成一致的L1 LSPDB。
2、L2 LSP(类型号为20)
L2 LSP是由支持L2路由器的L2或者L1/2路由器产生的,在位于不同区域中的邻居路由器上泛洪。当整个网络中所有L2 LSP交换完成后,在各支持L2路由的路由器上会形成完全值得L2 LSPDB。
L1 LSP和L2 LSP具有相同的格式,下面是LSP专用报头部分个字段说明:
1、 PDU Length:LSP PDU长度字段,占2个字节,标识整个LSP PDU报文的长度(包括通用报头)。
2、 Remaining Lifetime:剩余生存时间字段,占2个字节,标识此LSP PDU所剩余的生存时间,单位为秒。当生存时间为0时,LSP将被从链路状态数据库中清除。
3、 LSP ID:LSP标识符字段,占“系统ID长度+2”个字节,用来标识不同的LSP PDU和生成LSP的源路由器。包括三部分:源ID(系统ID)、Pseudonode ID(伪节点ID,简称“PN-ID”,普通路由器LSP的伪节点ID为0,伪节点LSP的伪节点ID不为0)和LSP Number(LSP序列号,即LSP的分片号,简称“Frag-Nr”)
00c0.0040.1234.02-00
| | |
System ID PN-ID Frag-Nr
4、 Sequence Number:序列号字段,占4个字节,标识每个LSP PDU的序列号。每一个LSP都拥有一个标识自己的4字节的序列号。它是针对本地路由器发送的LSP而言的,在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个序列号的基础上加1。更高的序列号意味着更新的LSP。
5、 Checksum:校验和字段,占2个字节,用于接收端教研传送的LSP PDU的完整性和正确性。当前一台路由器收到一个LSP是,在将该LSP放入本地链路数据库和将其再泛洪给其他邻接路由器之前,会重新计算LSP的校验和,如果校验和与LSP中携带的校验和不一致,则说明此LSP传输过程中已被破坏,不再泛洪。
6、 P(Partition):分区字段,占1位,表示区域划分或者分段区域的修复位,仅与L2 LSP有关。当P位被设置为1时,表明始发路由器支持自动修复区域的分段情况。
7、 ATT(Attached):区域关联字段,占4位,标识产生此LSP PDU的路由器与多个区域相连。虽然ATT位同时在L1 LSP和L2 LSP中进行了定义,但是它只会在L1/2路由器的L1 LSP中被设置。当L1/2路由器在L1区域内传送L1 LSP时,如果L1 LSP中设置了ATT位,则标识该区域中的L1路由器可以通过此L1/2路由器通往外部区域。
8、 OL(Ov er Load):过载字段,占1位,置1时表示本路由器因内存不足而导致LSDB不完整,设置了过载标志位的LSP虽然还会在网络中扩散,但是在计算通过过载路由器的路由时不会被采用。即对路由器设置过载位后,其他路由器在进行SPF计算时,不会使用这台路由器做转发,只计算该节点上的直连路由。
当系统因为各种原因无法保存新的LSP,以致无法维持正常的LSDB同步时,该系统计算出的路由信息将出现错误。在这种情况下,系统就可以自动进入过载状态,即通过该设备到达的路由不计算,但该设备直连路由不会被忽略。
说明:除了设备异常可导致自动进入过载状态外,也可以通过手动配置使系统进入过载状态。当网络中的某些IS-IS设备需要升级或维护时,需要暂时将该设备从网络中隔离。此时可以给该设备设置过载标志位,这样就可以避免其他设备通过该节点来转发流量。
如果因为设备进入异常状态导致系统进入过载状态,此时系统将删除全部引入或渗透的路由信息;而如果因为用户配置导致系统进入过载状态,此时会根据用户的配置巨鼎是否删除全部引入或渗透路由。详细见.3.4小节介绍。
9、 IS Type:路由器类型字段,占2位,用来致命生成此LSP的路由器类型是L1路由器还是L2路由器,也表示了收到此LSP的路由器将把这个LSP放在L1 LSPDB中还是放在L2 LSPDB中。01标识L1,,1标识L2.
4.2.5 SNP PDU报文格式
SNP分为CSNP和PSNP。它们的报文格式比较简单,CSNP PDU报文格式如图13-14所示。
1、 PDU Length:SNP PDU长度字段,占2个字节,标识整个SNP PDU报文的长度(包括通用报头)。
2、 Source ID:源ID字段,占“系统ID长度+1“个字节,标识发送该SNP PDU的路由器的System ID。
3、 Start LSP ID:起始LSP ID字段(仅CSNP PDU中有此字段),占“系统ID长度+2“个字节,标识在下面的可变字段中描述的LSP范围中的第一个LSP ID号。
4、 End LSP ID:接收LSP ID字段(仅CSNP PDU中有此字段),占“系统ID长度+2“个字节,标识在下面的可变字段中秒速的LSP范围中的最后一个LSP ID号。
4.2.6 IS-IS PDU可变字段格式
除了报头(通用报头和专用报头)部分外,最后还有一个部分是“可变长字段”(Variable length fields)部分。可变长字段就是各种PDU报文的真正内容,是整个PDU报文的核心部分,以“Type-Length-Value”(类型-长度-值)格式列出的,也称为“TLV”部分。
TLV编址方式由三大部分组成:T(Type),即PDU报文类型,不同类型由不同的值定义;L(Length),即Value字段的长度,以字节为单位;V(Value),即包的真正内容,以“Type-Length-Value”(类型-长度-值)格式列出的,也称为“TLV”部分。
TLV编址方式由三大部分组成:T(Type),即PDU报文类型,不同类型由不同的值定义;L(Length),即Value字段的长度,以字节为单位;V(Value),即包的真正内容,也是最重要的部分。在当前的两个IS-IS标准ISO10589和RFC1195中,使用“code”(代码)替换了前面的“Type”部分,所以这种报文编址方式通常也称为CLV,如下图所示:
Code:代码字段,占1个字节,标识PDU类型,不同的IS-IS PDU使用不同的类型。
Length:长度字段,占1个字节,标识Value字段的长度,最大值为255字节。
Value:值字段,长度是可变的,标识实际承载的PDU内容,最大为255字节。
在IS-IS PDU使用的各种TLV中,基友ISO 10589中定义的,也有RFC 1195中定义的。ISO中定义的TLV用于CLNP网络环境,但是其中的大多数也用于IP网络环境。RFC中定义的TLV只用于IP环境。也就是说,对于一个IS-IS PDU,后面既可以携带支持CLNP的TLV,又可以支持携带RFC的TLV。如果一个路由器不能识别一个TLV,那么将忽略它。
4.3 IS-IS基本原理
每台路由器都会生成自己的LSP(会不断更新的),它包含了该路由器所有使能IS-IS协议接口的链路状态信息。通过跟相邻设备建立IS-IS邻接关系,互相更新本地设备的LSDB,可以使得LSDB与整个IS-IS网络的其他设备的LSDB实现同步。然后根据LSDB运用SPF算法计算出IS-IS路由。如果此IS-IS路由是到目的地址的最优路由,则此路由会下发到IP路由表中,并指导报文的转发。
4.3.1 IS-IS邻居关系的建立
OSPF协议支持广播、点对点、NBMA、P2MP这4中主要网络类型;但IS-IS仅支持广播(如以太网、令牌环网、FDDI)和P2P(链路封装PPP或者HDLC协议的网络)这两种网络类型;若要在NBMA网络中使用(如X.25、FR和ATM网络),需要配置子接口,并配置子接口的类型为P2P。IS-IS不能再P2MP网络上运行。
1、 IS-IS邻居建立原则
A、只有同一层次(4.1.5小节)的相邻路由器才有可能成为邻居,即只能建立单跳的邻居关系,不能夸路由器建立邻居关系。
B、对于L1路由器来说,区域号必须一致
C、链路两端IS-IS接口的网络类型必须一致(说明:通过将以太网接口模拟成P2P接口,可以建立P2P链路邻居关系)
D、链路两端IS-IS接口的IP地址必须处于同一网段。
说明:当链路两端IS-IS接口的IP地址不在同一网段时,如果配置接口对接收的Hello报文不做IP地址检查,也可以建立邻居关系;对于P2P接口,可以配置接口忽略IP地址检查;对于以太网接口,需要将以太网接口模拟成P2P接口,然后才可以配置接口忽略IP地址检查。,
2、 在广播链路上建立邻居关系
在广播链路上采二层组播方式发送Hello报文,L1 IIH报文发送到0180-C200-0014组播MAC地址,L2 IIH发送到0180-C200-0014组播MAC地址。当邻居双方都接收到了Hello报文后,它们之间的邻居关系就建立了。
IS-IS在广播链路上巫妖进行三次握手验证,邻居关系才可以建立。与OSPF广播类型网络建立邻居是一致的。注意:OSPF是以IP协议封装的,所以是以组播IP地址发送Hello报文,而IS-IS是链路层协议,直接以帧发送,是通过组播MAC地址发送的,里面封装的是邻居的SNPA(Subnetwork Point of Attachment,子网连接点)地址。
A、在两端接口使能IS-IS协议后,立即以组播方式发送L2 LAN IIH(假设两端路由器均是L2路由器),此时报文中包含一个LAN ID、那就是DIS,另外报文中的IS Neighbors(SNPA Address)TLV字段没有邻居的SNPA地址(通常是映射成路由器的主机名),因为还没收到邻居的Hello报文。
B、路由器B收到此报文后会进行系列的校验动作,如系统ID长度是否匹配、Max Area Address是否匹配、验证密码(配置报文验证时)是否正确等。通过检验后,将自己和路由器A的邻居状态标识为Initial(初始化)状态。然后,从IIH报文中Source ID字段中获取路由器A的系统ID,添加到邻居表中。再想路由器A回复L2 LAN IIDH报文,报文中的IS Neighbor(SNPA Address)TLV字段为路由器A的SNPA地址,标识路由器A为自己的邻居。
C、在路由器A收到此报文后,发现报文中有自己的SNPA地址,于是将自己与路由器B的邻居状态标识为UP,将路由器B的系统ID添加到自己的邻居表中,标识路由器B为自己的邻居。然后路由器A再向路由器B发送一个在IS Neighbor(SNPA Address)TLV字段中标识路由器B的SNPA地址的L2 LAN IIH报文。
D、在路由器B收到此报文后,发现有自己的SNPA地址,于是将自己与路由器A的邻居状态标识为UP。两个路由器就成功建立了邻居关系。
广播网络需要选举DIS,所以邻居关系建立后,路由器会等待两个Hello报文间隔,再进行DIS的选举。Hello报文中包含Priority字段,越大越优先,当Priority相同时,MAC地址较大的被选举为DIS。
3、