分享

中间系统到中间系统(IS-IS)知识点总结!

 新用户16501297 2022-01-06

集成IS-IS协议是一种基于链路状态算法的IGP协议;   
IS-IS原本是隶属于OSI协议栈的,经过二次开发后,可以同时工作在CLNP和IP环境中,采用TLV设计,扩展性好;使用SPF算法计算路由、支持触发更新,可快速收敛;目前在大型ISP的网络中被广泛部署。

1、IS-IS和OSI协议栈:

图片

面向连接的网络服务CONS:指的是网络设备在传输数据之前先确定网络设备之间的逻辑连接;为了实现可靠数据传输、保证数据以恰当的顺序到达

传输数据之前,CONS需要在通信实体间请求一条明确的路径或电路;主要协议有面向连接协议CONP,充当了CONS和上层协议的通信接口。

面向无连接的网络服务CLNS:实现了数据报的传输,在传输数据之前,不需要建立任何连接;用于交换路由选择信息的主要协议有CLNP、ES-IS和IS-IS。

无连接网络协议CLNP:工作在网络设备间的中间系统,用来向传输层提供服务

用于充当子网独立收敛协议(SNICP)的角色,其功能为在同一组底层服务上建立OSI网络服务,保证一组互连子网上的无连接模式网络服务的统一性

当SNICP没有提供在一个接入点到另一个接入点上的无连接网络服务所需的功能时,CLNP也可以用来进行适当的调整(L3封装协议,其功能同TCP/IP中的IPv4/v6)。

CLNP使用网络服务接入点NSAP地址(同IP地址)和网络实体标题NET来识别网络,其中源目地址是NSAP地址,而NET地址是作为终端或中间系统中的标识符;使用子网接入点SNPA来统一标识二层地址(同MAC地址或DLCI)。

终端系统到中间系统协议ES-IS:

在OSI中,一个路由器就是一个IS(中间系统),一个主机就是一个ES(终端系统)

ES-IS就是提供IS和ES(路由器和主机)之间通信的协议,通过交互hello让PC和网络设备中间也可以建立邻居关系。

用于数据链路地址到网络地址间的映射(同TCP/IP中MAC到IP地址的映射)。



2、工作原理

IS-IS是一种链路状态路由协议,每一台路由器都会生成一个LSP,它包含了该路由器所有开启IS-IS协议接口的链路状态信息

路由器之间通过跟相邻设备建立IS-IS邻接关系,互相更新本地设备的LSDB,使得整个IS-IS网络设备之间的LSDB数据库实现同步,每台IS-IS路由器都具备描述整个拓扑的一致的链路状态信息库

然后通过SPF算法计算出IS-IS路由;如果此IS-IS路由是到目的地址的最优路由,则此路由会下发到路由表中并指导报文的转发。

区域划分:IS-IS是基于路由器划分区域的,路由器/接口分为L1、L2和L1/2。

L1:类似于ospf中非骨干路由器,为了实现区域和区域之间的通信,L1可以与本区域内的L1或L1/2路由器建立L1的邻居关系,维护区域内L1的LSDB。

L2:类似于ospf中骨干路由器,能和本区域的L2设备或者区域外的L1/2设备建立L2的邻居关系,维护区域内和区域外L2的链路状态数据库。

L1/2:类似于ospf中ABR,能够和区域内的L1路由器建立邻居关系,维护L1的LSDB,同时和同一或不同区域的L2路由器建立L2的邻居关系,维护L2的LSDB。

IS-IS中可以有多个骨干区域且骨干区域ID不固定,但它与OSPF一样要求所有的非骨干区域(通过L1/2路由器)必须直接与骨干相连,普通区域之间不能直接连接

在IS-IS中的一组连续的L2和L1/2路由器连接而成的链路就是IS-IS的逻辑骨干(同OSPF中的骨干区域);在骨干区域内部L2路由器必须直连,在与普通区域之间,必须与L1/2路由器相连,不能直接与L1路由器相连。

L1/2路由器可以接收到L1和L2的LSP并建立对应的LSDB,最终形成路由加表

它可以把L1的路由复制转化为L2路由发送给L2路由器;但不能把L2的路由转发给L1路由器,所以L1区域从设计上就相当于ospf中tolltyNSSA区域;L1路由器收到L1/2发送的LSP中ATT位置0时,会自动生成一条默认路由指向L1/2路由器,L1区域的路由器会使用该缺省路由访问外网。

图片

图片

网络服务接入点NSAP:在OSI结构体系中,使用NSAP地址来标识网络设备,建立拓扑信息;主要作用是提供网络层和上层应用之间的接口,相当于TCP/IP中的IP地址和协议号;

10.0000.0000.0001.00

图片

区域地址:AreaAddress,长度可变,为1-13字节。

  • 组织格式标识符AFI:表示一个独立的组织;其中49为私有AFI

  • 初始域标识符IDI:AFI的子域,如47.0005、47.0006

  • 高位域指定部分HODSP:描述路由器或节点所属的区域,如0001

SystemID:用来唯一标识区域内的IS,长度固定为6个字节;用48位MAC地址或者是扩展的接口IPv4地址(每位添加前导0),如1720.1601.0001

网络服务选择器NSEL:描述某个应用,长度为1个字节,同IPv4中的协议号。

网络实体标题NET:指的是IS本身的网络层信息,可以看作是一类特殊的NSAP,即NSEL位置0的NSPA地址

每台IS可以拥有最多不超过3个NET地址,这些NET拥有相同的systemID和不同的区域地址;为了便于管理,一般根据routerID来生成对应的systemID(同OSPF中的routerID)

图片

图片

注:为了适应IP环境,20个字节,13个字节(1—13个字节,区域ID可调整)作为区域id,6个字节(48个比特,才用十进制的方式表示)作为SystemID(router-id),还有一个字节作为标识(固定为00,代表的IP环境),可以看做AS和router-id的结合体;同一个区域内的所有IS包含相同的区域地址,每一台IS拥有所在区域内唯一的systemID。

子网接入点SNPA:OSI中标识数据链路层地址,SNPA地址标识一个子网服务的节点,在IS-IS中表示一个接口的二层地址路由;在点到点链路中,电路CircuitID用来表示IS-IS路由器下的某个接口,比如01、02;在广播子网中,由SystemID Circuit ID共同组成LANID;



3、网络类型

普通子网:点到点网络,PPP、HDLC上接口缺省网络类型为点到点,对于NBMA网络,如帧中继,需对其配置子接口,并注意子接口网络类型应配置为P2P。

广播子网:在Ethernet网络中,当所有路由器之间建立完邻接关系后,IS-IS需要在所有的路由器中选举一个路由器作为指定中间系统DIS;

状态机:

路由器IS之间通过周期性(10s/次)发送hello报文,建立起邻接关系;其中点到点网络中,只要IS能够收到对端的hello包,就认为邻居关系能够建立,邻居状态为UP

广播网络中,采用的是可靠的邻接建立过程,则需要通过三次握手才能建立起邻接关系

如果在接收的IIH报文中看到了自己接口的MAC地址,说明邻接已经收到并确认了自己发送的IIH报文,邻居的状态变为UP状态

点到点网络中,默认使用两次握手,没有可靠性保证。只要收到邻接发送的IIH报文,并检测通过,维护邻居的状态为UP状态;但是可以新增一种TLV实现三次握手建立邻居关系,以保证邻接建立的可靠性。

图片

图片

在广播网络中,需要在所有的路由器中选举一个路由器作为指定中间系统DIS

指定中间系统DIS:在广播网络中创建和更新伪节点的LSP,通过周期性地发送CSNP来泛洪LSP进行同步;IS-IS中的优化机制,以简化拓扑,减少资源消耗。

同一级别的IS之间都会形成邻接关系;L1、L2路由器的DIS是分别选举的,两台L1/2路由器之间会分别选举出两个DIS(L1和L2)。

IS优先级数值最大的被选举为DIS,取值范围0-127,默认值64;如果优先级数值最大的路由器有多台,则其中最大的SNPA地址(MAC)的路由器会被选中;如果SNPA是一样的,具有最大的systemID的路由器将当选为DIS;

优先级为0的路由器也参与DIS的选举,DIS没有备份且DIS的选举支持抢占。

同网段上的同一个级别路由器之间都会形成邻接关系,包括所有的非DIS路由器。

图片

图片

广播网络:路由器IS相互之间泛洪发送LSP,以实现LSDB数据库的同步;此时DIS需要等待一个初始计时器,当计时器到期后,DIS开始周期性(10s/次)发送CSNP报文,报文中包含了LSP的报头信息

当其他IS路由器收到LSP报文,需要查看在CNSP报文中是否包含自己的LSP,如果包含说明DIS收到了自己发送的LSP,如果没有需要重传;同时会对比这两份LSP,如果本地有缺失,则会发送PSNP请求给DIS(同OSPF中的LSR)

如果DIS发送的LSP没有本地齐全时,则会主动将本地的LSP更新给DIS同步。

点到点网络:路由器IS互相发送CSNP,在CSNP报文中包含本地LSBD中所有LSP的摘要信息;收到邻居发送的CSNP报文,需要将CSNP报文中的LSP摘要信息和自己的LSDB做对比,查看缺少的LSP,并通过PSNP报文请求缺少的LSP。

收到PSNP请求后,回复LSP报文;收到LSP报文后回复PSNP确认接收到的LSP。

LSP刷新周期为15分钟,老化时间为20分钟,从大开始计数,0为最大值

但是一条LSP的老化除了要等待20分钟外,还需要等待60秒的零老化时延

LSP重传时间为5秒;在点到点网络中,CSNP报文默认只会发送一次,对端路由器需要使用PSNP报文进行确认(同LSACK);而在广播网络中,CSNP是周期性发送的,则不需要。



4、IS-IS报头封装

Layer2/IS-IS/FCS

IS-IS报文直接封装在数据链路层中;包含了通用报头和专用报头;对于所有的PDU来说,通用报头都是相同的,但是专用报头是根据PDU类型不同而有所区别。

图片

报文类型:分为L1和L2两种

IIHHello PDU:用于建立和维护邻接关系,组播MAC:01-80-C2-00-00-14/15

广播:LANIIH 组播发送,分为L1、L2两种;见右边图

点到点:P2PIIH,单播发送;见左边图

图片

图片

P2PIIH中相对于LANIIH来说,多了一个表示本地链路ID的LocalCircuit ID字段,缺少了表示广播网中DIS的优先级的Priority字段以及表示DIS和伪节点SystemID的LANID 字段。

LSPPDU:用于交换链路状态信息,同LSA的拓扑信息以及路由信息

广播:伪节点DISLSP(同ospf中的2类LSA)

点到点:普通的LSP

图片

图片

注:L1LSP仅在区域内传播;L2LSP在骨干网传播

SNP:用于维护LSDB的完整与同步,切位摘要信息;并对邻居间接收的LSP确认

CSNP PDU:通告链路状态数据库LSDB摘要信息;本路由器LSDB中所有LSP的报头信息,同ospf中的DBD

PSNP PDU:请求和确认链路状态信息同ospf中的LSR、LSACK(点到点网络中)

图片

图片



5关于IS-IS的特性

1.1 SPF算法Dijkstra:目的在于计算到达网络拓扑中其它路由器的最短路径;通过计算得到的最短路径树SPT(Shortest Path Tree),可以建立路由信息表。

图片

图片

计算过程:重复执行以下三步N次

1、从tentativelist 的所有路由器中找出离自己(根)最近的节点,并把它从tentativelist 移到pathslist

2、发现此节点通告的所有前缀并安装到RIB中

3、发现此节点的所有邻居并把这些邻居移动到tentativelist中

在IS-IS中,IP前缀是最短路径树上的叶子,不使用IP前缀来计算和建立SPT

使用CLNSSystem-ID 来标记路由器

PRC计算

图片

ISPF计算

  • 树中不改变的部分保持原样

  • 重新计算树中受影响的部分

  • 把受影响的部分和保持原样的部分整合到一起

  • 为了实现i-SPF,我们必须维护列表parentlist

图片

1.2 路由泄露:L1路由器一般是使用指向边界L1/2路由器的默认路由访问外网的,当一个L1区域内存在多个边界出口时,可能会出现非对称路由的情况,如果该边界有防火墙存在时,就会出现不能访问外网的情况

此时就需要在L1/2路由器上使用路由泄露的方式将明细路由下放才能解决这个问题。

图片

图片

1.3度量值计算

在ISIS路由协议中,使用Cost作为路由度量值,在路由选路中Cost值越低,则路由越优。缺省情况下与链路带宽无关,缺省值为10。

Cost的类型有两种:Narrow和Wide。

当使用Narrow类型的Cost时,IS-IS接口Cost长度为6bit,意味着一个接口所支持的Cost值范围为1-63,路由Cost的长度为10bit,接收到的路由最大的Cost值可以到1023;如果在窄度量的环境中收到的路由条目的度量值大于1024,则该路由不选路。


当使用Wide类型的Cost时,接口Cost为24bit,路由Cost的长度为32bit范围得到了很大的扩展;进入ISI进程下使用cost-stylewide或narrow可以选择类型;在现实部署中,要保证域内路由器使用相同的Cost类型。

窄度量(默认):

通过一个字节的长度,表示度量值。在这一个字节中,前两个比特位用于标志位。后面的六个bit表示度量值。

第一bit:up、dowm比特位,如果为0,代表Up,如果为1,代表down。主要目的是用于防环。如果收到的路由条目中down比特位置位,该路由不能被通告会level2的区域。

第二个bit:标识路由类型。(internal/external),如果为0,表示内部路由(internal),如果为1,表示外部路由(external)。

窄度量中同时还划分了四种度量值,分别为:

  •   默认度量。(目前只有这个在使用)

  •   延迟度量。

  •   差错度量。

  •   开销度量。

宽度量(4B):

宽度量:接口COST= (bandwidth-reference/接口带宽)*10;

想要支持IPv6的话必须使用宽度量。

22TLV(3B)扩展的IS可达性

135TLV(4B)扩展的IP可达性

什么场景下需要用到widemetric(宽度量)?

● 支持IPv6

● 携带Tag

● 支持MPLS-TE

● cost值范围不够用

1.4LSP报文的老化处理:

IS-IS的LSP最大老化时间为1200s(20分钟),通告间隔时间为900s(15分钟)。在ISIS中LSP是通过剩余老化时间来维护的(倒计时),如果LSP的剩余老化时间为0,说明该LSP需要被清除。如果LSP的剩余老化时间为0,需要再等待60s(零老化时间)后将LSP删除。

在IS-IS中如何判断LSP的新旧:

1、需要比较序列号。序列号越大越新。

2、如果序列号一样,比较LSP的剩余老化时间是否为0,。如为0,LSP为最新。

3、如果LSP的剩余老化时间不为0,则认为一致。

1.5优雅重启Graceful-restart:

对于路由器ospf来说,有些配置需要重启ospf进程重启一下才能生效,比如更改router-id;另外有的设备路由器有两个控制板,一个活动主板,一个备用主板,当活动主板出现问题后(比如断电),路由器就会自动切换到备用主板,这样路由协议也会被迫重启。


如果不用优雅重启的话,当重启IS-IS进程的以后(不管是手动输入命令来重启,还是断电导致重启),路由器都要与邻居断开IS-IS关系,转发表也会不可用;


等IS-IS进程再次启动后,会跟邻居重新建立关系,再重新计算路由,这需要占用相当一部分时间;在断开邻居关系,到重新计算出路由的这段时间内,转发表无效,流量是不通的,对于大型的网络来说,这是不可取的,因为会造成很大的经济损失。


用了GRGR以后,虽然重启了IS-IS进程,但是可以保持转发表不变,这样流量不会中断,当重启IS-IS进程时,会告诉邻居,不要断开与自己的关系,同时自己一直保持转发表有效。然后当IS-IS进程启动后,迅速与邻居建立好关系。


之所以叫做优雅重启,就是因为重启不会造成流量的中断。

优雅重启在EIGRP、OSPF、BGP中同样可以使用。

IS-IS中,路由器开启优雅重启后,当邻居在10分钟内没有收到该路由器发送的hello报文,就会判断该路由器可能存在问题,立即断开该邻居关系。

1.6认证:支持明文和MD5认证

接口认证:会影响邻接的建立,只对Level-1和level-2的Hello报文进行认证。

区域认证:不会影响邻接的建立,但会影响L1区域的SNP和LSP报文的接收。

域的认证:不会影响邻接的建立,但会影响L2区域的SNP和LSP报文的接收。

1.7影响邻居建立的条件:

1、区域ID不一致(只会影响level-1)

2、网络类型不一致。

3、运行级别不一致

level-1和level-2无法建立。

levle-1和level-1(需保证区域ID一致)

level-1和level-1-2(需保证区域ID一致)

level-2和level-2(level-2的邻居建立不会检查区域ID)

level-2和level-1-2(level-2的邻居建立不会检查区域ID)

level-1-2和level-1-2(可以建立level-1的关系,但需保证区域ID一致。可以建立level-2的关系,不检测区域ID)

4、接口认证不一致;在ISIS中如果收到报文中携带本地不识别的TLV,可以忽略并透传给其他邻居。

5、MTU不一致。(ISIS中存在隐式的MTU检测机制通过IIH报文)

广播网:1497:在广播网中发送的所有的IIH报文都会按出接口的MTU值进行填充。

点到点:1500:在点到点网络中建立邻接关系之前发送的IIH报文长度会按出接口的MTU值进行填充。建立邻接关系以后不填充,发送正常的IIH报文。

6、system-id长度不一致。(默认是6个字节)

7、maxarea数量不一致。(默认是3个)

8、systemid冲突(只限于直连设备)

9、多拓扑。(接口下既可以支持IPv6,也可以支持IPv4)(思科中会有影响,华为默认会在TlV中携带多拓扑信息,不影响。)

10、IP地址不在同一个网段(ISIS在广播网中是开启源检查的,并且不能关闭。P2P也是默认开启,但是可以关闭)

1.8IS-IS中LSP的数据分片:

当IS-IS要发布的链路状态协议数据报文PDU中的信息量太大时,IS-IS路由器将会生成多个LSP分片,用来携带更多的IS-IS信息

IS-ISLSP分片由LSPID中的LSPNumber字段进行标识,这个字段的长度是1字节。

因此,一个IS-IS进程最多可产生256个LSP分片,携带的信息量有限。在RFC3786中规定,IS-IS可以配置虚拟的SystemID,并生成虚拟IS-IS的LSP报文来携带路由等信息。


初始系统(OriginatingSystem):初始系统是实际运行IS-IS协议的路由器。允许一个单独的IS-IS进程像多个虚拟路由器一样发布LSP,

而“OriginatingSystem”指的是那个“真正”的IS-IS进程。

系统ID(NormalSystem-ID):初始系统的系统ID。

虚拟系统(VirtualSystem):由附加系统ID标识的系统,用来生成扩展LSP分片。这些分片在其LSPID中携带附加系统ID。

附加系统ID(AdditionalSystem-ID):虚拟系统的系统ID,由网络管理器统一分配。每个附加系统ID都允许生成256个扩展的LSP分片。

24号TLV(ISAlias ID TLV):用来表示初始系统与虚拟系统的关系。

在IS-IS中,每个系统ID都标识一个系统,每个系统都最多可生成256个LSP分片。通过增加附加系统ID,可以最多配置50个虚拟系统,从而使得IS-IS进程最多可生成13056个LSP分片。


使能分片扩展功能之后,如果存在由于报文装满而丢失的信息,系统会提醒重启IS-IS。重启之后,初始系统会尽最大能力装载路由信息,装不下的信息将放入虚拟系统的LSP中发送出去,并通过24号TLV来告知其他路由器此虚拟系统和自己的关系。

随着规模越大,IS-IS比OSPF的扩展性更强,这个扩展性重点不是体现在能容纳的路由器更多,资源带宽占用更少,而是体现在IS-IS的TLV上:如果现在网络中出现一种新的应用,这中新应用要求与IGP进行交流和通信,如果这种IGP是OSPF的话,那么需要为此开发一种新的LSA,用来让OSPF支持这种新应用,但这样做所付出的代价巨大,且老的OSPF路由器无法识别而丢弃(就像思科路由器不支持LSA6,也就是MOSPF),也就是向后兼容性很差

但如果这种IGP是IS-IS的话,情况就简单了,它支持任何新的应用都无需开发新的LSP,因为它有TLV-T代表type(新特性的名字)、L代表length(新特性字段长度)、V代表value(新特性的具体属性),TLV相当于一节车厢,而LSP相当于一列车,当出现新应用后只需要加挂一节车厢即可,当出现和OSPF里类似的无法识别的情况时,不是作丢弃操作,而是跳过不读取而已。

OSPF为了支持IPV6而专门开发了一个V3的版本,而对于IS-IS来说,无需再专门开发一个针对IPV6的版本,只要增加一个新的支持IPV6的TLV就可以了,IS-IS超强扩展性就在于此。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多