今天正式进入ISIS部分,ISIS最开始是在OSI为CLNP设计的动态路由的协议,ISIS说人话就是中间系统到中间系统。他跟OSPF有点相似,像,但不完全像。其实中间系统相当于现在TCP/IP网络模型中的路由器,用于网络层通信。
ISIS基础知识:
ISIS:IGP,链路状态协议,优先级15
支持CLNP、IP网络并且是在数据链路层封装
NASP(Network Service Access Point)网络服务接入点
NASP是ISIS中的网络层地址,就像IP地址一样。
组成部分
IDP:
由OSI规定的,并由AFI和IDI组成的,相当于IP地址中的主网络号。AFI是表示地址分配机构的地址格式,IDI用来标识域。
DSP:
相当于IP地址中的子网号和主机地址,由High Order DSP、system ID、SEL组成,High Order DSP用来分割区域,system ID用于区分主机,SEL表示协议类型,例如00就代表IP协议
如何观察ISIS地址?可以从后往前看,最后两位是SEL,例如00,再看system ID,例如0000.0000.0001。最后剩下的就是Area IP了。
为了方便管理,一般会根据Route ID配置system ID。如何转换?
例子:
Route ID 10.0.0.1
010.000.000.001写成为三位
0100.0000.0001转换完成
49.0100.0000.0001.00添加Area ID和SEL
注意,他是16进制的!!!!
路由器分类:
L1:区域内的路由器,本区域内的路由信息,建立邻接要区域号一样
L2:骨干区域的路由器,所有的路由器信息,建立邻接时区域号可以不同
L1/2:默认类型,和ABR相似
NET(网络实体名称)
OSI协议栈中网络层信息,主要用于路由计算,可以看成特殊的NASP,SEL永远是00。长度与NASP相同。
每台设备最多三个NET,同一台设备上system ID必须相同。
ISIS区域问题:
在OSPF中,一个路由器可以属于多个区域,不同接口处于不同区域下。而ISIS不同,一个路由器属于一个区域。
ISIS中的骨干区域则是包含了L2、L1-2路由器。而在骨干区域这整个大区域中,其实路由器的Area id是不一定相同的。要分清这个概念,骨干、非骨干区域,以及Area ID。
ISIS支持的网络类型
广播(broadcast):比如Ethernet
P2P:比如PPP、HDLC
将其建立连接的方式设定为3-way时,意思是2-way、3-way都可以用
在isis ppp-negotiation 3way后加上only,就是只用3-way了
ISIS的cost:
默认的cost为10,当路由缺省时,cost值不受接口带宽的影响,直接就是10。
ISIS的开销值是有两种类型的,默认为narrow,cost值为10。还有一种wild
narrow:1-63
wild:1-16777215
isis总共有三种方法确定开销值:
优先级从高到低
接口开销:给单独的接口设置开销。
全局开销:给所以接口设置
自动计算开销:根据接口的带宽自动计算。
ISIS报文
主要有ISIS报头(头部又可以分成通用头部和专用头部)和变长字段部分。
ISIS报文四大类:
IIH(ISIS Hello)
这个和OSPF的hello包很像,是用来建立和维持邻接关系的。
细分的话有三种Hello包
L1 LAN IIH
相当直观,是在广播网络中的L1路由器上使用的
L2 LAN IIH
在广播网络中的L2路由器上使用
P2P IIH
在P2P网络中使用。
LSP:
用来交换链路状态信息
也分成L1 LSP和L2 LSP两个类型。
SNP包含了CSNP(完全序列号报文),有点像LSU?、PSNP(部分序列号报文)类似于LSR,LSAck
这个的作用是描述LSDB中的全部或者部分LSP,从维护LSDB的完整和同步。就像是OSPF中的DD。
CSNP和PSNP也都各有L1和L2两种
TLV数据结构:
Type
Lenth
Value
ISIS建立邻接:
ISIS中想要建立邻接需要满足以下条件:
属于同一层次,并且相邻
此外对于L1来说,area id也必须一样
链路两端的ISIS接口的网络类型要一致
链路两端的ISIS接口的地址要在同一网段(默认情况)
相同的MTU
认证相同
接口未被设置成slient
在P2P网络中,system id长度要一致,最大区域地址数要相同。
由于ISIS实际上是运行在2层的协议,并且最早是给CLNP用的,所以邻接关系的建立其实和IP地址没关系,但是在实际应用的时候还是需要的。
在接口下:isis peer-ip-ignore
ISIS建立邻接的过程
广播网络建立邻接的过程(三次握手 3-way)
在DOWN状态下,R1向邻居发送L1 IIH报文,此时R2收到了报文,变成initial状态
R2此时向R1发送L1 IIH报文,报文中告诉了R1,R1是R2的邻接。
R1收到后,状态变成UP,然后R1给R2发一个L1 IIH。
R2收到后,就知道了R2是R1的邻接。状态也变成了UP。
在广播网络中是需要选举DIS的,在邻接关系建立后会等待2个hello间隔,再开始选举。跟OSPF不同,OSPF是等40秒。
怎么选举?
首先看优先级,然后看MAC地址,MAC地址大的做DIS
DIS的选举默认是抢占的,OSPF是不抢占的。
DR的作用:减少LSA泛洪的数量,减轻负担。
DIS的作用:创建和更新伪节点。
伪节点是用来模拟广播网络的一个虚拟节点
伪节点使用DIS的system ID和circuit id标识。
DIS发hello PDU的间隔是普通路由器的1/3。
DIS与DR的区别
DIS不会有BDIS这种东西,而DR有BDR
ISIS中优先级为0只代表优先级低而已,OSPF中优先级为0则直接不参与选举
ISIS中新路由器加入时,如果新路由器更适合做DIS,那么他就会被重新选为DIS。在OSPF中,新路由器直接变成Dother。
ISIS中同一网段上的同一级别路由器都会形成邻接。而OSPF中路由器只会和DR、BDR建立邻接。
DR是为了减少LSA泛洪,而DIS是为了周期性发送CSNP,同步LSDB
DR是在链路上选举的,DIS是在路由器上选举的,L1和L2都会有DIS
OSPF选举需要等40秒,ISIS只需要两个hello间隔。
P2P网络中建立邻接的过程(2-way)
两次握手机制:
只要路由器收到对端发来的hello报文,就单方面宣布邻居为UP状态,建立邻居关系
华为中默认是三次握手
MTU和padding问题
在P2P网络中,如果两台路由器,他们的接口MTU,R1是1000,R2是2000,当R2向R1发了一个MTU为1500的LSP,R1是接收不了的。那么就会出现问题了,R2有这个LSP,R1没有,LSDB不一致了!
解决方案,把Hello填充到接口MTU的长度,此时R2的hello都是2000了,R1接收不了了,邻接无法建立,自然就不会出现LSDB不一致的情况了。宁可不建立邻接,也不能出现这种不一致的情况。