为什么说ISIS的分片问题相比与OSPF更值得关注呢?
第1点:OSPF路由器会生成多种类型的LSA来描述链路或路由信息。那么也就是说每种LSA都不会很长。首先,3、4、5、7类LSA只会用来描述一条前缀信息,所以这几类LSA都是很短的。2类LSA可能会很长,但是在广播和非广播网络中连接了众多路由器的伪节点并不常见。1类LSA是最有可能带来分片问题的。比如说,一个路由器连接了众多的邻居路由器或者说一个路由器的众多接口使能了OSPF进程,这个时候1类LSA就会变得很大,但是需要知道的是,1类LSA实际上可以容纳大约5000多条的链路信息,也就说,在绝大多数的情况下,1类LSA的长度是足够用的,而且不会带来分片问题。
第2点:LSA是封装在LSU中的,而LSU又是封装在IP报文中,那么如果一个OSPF报文大到需要分片的程度,那么这个时候可以借助现成的IP数据包的分片机制来实现,不需要OSPF自身提供分片的机制。
以上是关于OSPF分片问题的描述。
接下来,我们来讨论下ISIS的分片问题。
在ISIS中,路由器会为每个级别的区域单独生成一条LSP,这样的话,这条LSP就会很大。另外一个原因是,ISIS是封装在二层上。也就是说,IP数据包的分片机制是无法应用在ISIS上的。所以ISIS需要有自己的分片机制。
那么在ISIS网络中,是如何得知对端设备的接口MTU值,这一点和OSPF是有区别的。我们知道在OSPF中,接口的MTU值信息是包含在DD报文中,也就是说,接收方只要检查接收到的DD报文,就能够得知对端设备的接口MTU值。在ISIS网络中,有所不同,ISIS路由器在从接口发送IIH报文时,会借助"Padding TLV"将IIH报文的长度填充的和接口MTU值大小一致。接收方只要检查IIH报文的长度就能得知对端设备的接口MTU值大小。
在ISIS邻接建立的过程中,链路两端的接口MTU值最好要保持一致,否则,就会因为报文太大接口无法“消化”,而被丢弃。
那么ISIS是如何实现LSP的分片的呢?
在ISIS的LSP报文中的通用头部部分包含LSP ID字段,该字段由“DIS的Systerm ID+伪节点ID+LSP分片编号”组成。LSP的分片编号字段占用一个字节,其中首个LSP分片称为00片,后续的为01片、02片、03片等等。然后,我们需要关注这些个分片之间的联系:
(1)一个LSP的不同分片,各自具有独立的序列号字段、校验和字段、剩余老化时间字段,也就是说它们在LS数据库中是独立存储的;
(2)在SPF计算的时候,ISIS路由器会将这些由同一个路由器产生的不同分片视为同一条LSP进行处理。
(3)在00分片中,包含着与ISIS路由计算至关重要的一些TLV信息,以及ATT字段和OL字段的置位方式信息。也就是说,如果在传输的过程中,00分片丢失了,那么ISIS路由器最终会将其他的所有分片丢弃。如果只是某些非00分片丢失,那么ISIS路由器还是会对剩下的分片进行计算的。
补充:
00分片中包含着哪些与路由计算相关的重要TLV:(00分片有,而非00分片没有的!)
a) Area address TLV
b) IP interface Address TLV
c) Protocols Supported TLV
d) IS neighbor TLV
=======================
而在非00分片中,则更多的是包含:
IP internal Reachability TLV(窄度量)
IP External Reachability TLV(窄度量)
Extended IP Reachability TLV(宽度量)
也就是说,非00的分片包含的更多是ISIS路由前缀的相关信息。
说明:《OSPF和ISIS详解》读书笔记