中文名称:中间系统到中间系统 ISIS是ISO定义的OSI协议栈中的CLNS(无连接网络服务),
不使用IP地址进行传输,仅封装在数据链路层。进行IP传输,采用TLV扩展内容传递。
ISIS是链路状态协议
ISIS的优点:
- 可扩展性高,兼容性好
因为报文结构中存在TLV信息,可以更快的适应不同协议报文。
- 收敛速度块
报文结构决定。
- ISIS本身没有那么多的链路状态信息。
只有类似OSPF的1,2类。3457类都不存在。设备性能得到优化。
NSAP
由CLNP定义的地址,是OSP协议栈中用于定位资源的地址,主要用于网络层和上层应用之间的接口。
NSAP由IDP+DSP组成
IDP:(Initial Domian Pat)相当于IP地址中的主网络号。它是由ISO规定,并由AFI (Authority and Formatldentifier)与IDI(initial Domain dentifier) 两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域
DSP:(Domian Specific Part) 相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机类似于OSPF中的Router ID,SEL (NSAP Selector) 用来指示服务类型(就是两个0)
缺点:nsap的安全性极低。通过IDP即可定位国家和机构(AFI表示国家,IDI表示一个机构)。
IDP长度可调,1-13个字节。
SystemID固定6字节
Sel固定两个0
NET地址(现网中存在的ISIS的AREA ID+RouterID)
NSAP 网络服务访问点 到OSI更名为 NET 网络实体名称
网络实体名称,主要用于路由协议由区域地址 Area ID和System ID组成,可以看作是特殊的NSAP (SEL为00的NSAP)
一台设备中System ID必须一致,因为SystemID类似于OSPF中的RouterID。用于标识路由器。
而AreaID可以不同区域。相当于OSPF中的区域1 2 3,一台设备最多可以属于三个区域。可以实现平滑变更区域。
NET把区域和routerID组合成一个信息了。所以一台设备多区域配置时,Area ID可以不同,但是System ID必须一致。
NET的长度与NSAP的相同,最长为20Byte,最短为8 Byte。
在IP网络中运行IS-IS时,只需配置NET,根据NET地址设备可以获取到Area ID以及System ID.
NET地址=Area ID+Router ID+00
最短NET地址:49.0000.0000.0001.00
最长NET地址:49.0000.0000.0001.0000.0000.0001.00
华为设备中RouterID转化为ISIS SystemID的计算方式
采用前置位+0扩充成3位后以四个数字隔开的方式。
举例:192.12.10.1为某一个设备的router ID,如何扩充成systemID?
答:192已经是3位了不扩充
12扩充为012
10扩充为010
1扩充为001
组合成192.012.010.001,再以4个数字为一组划分,最终得:1920.1201.0001,此数字为ISIS中的systemID。
ISIS协议路由器的类型 有3种
1、L1的路由器,类似于OSPF的非骨干区域的IR
2、L2的路由器,类似于OSPF的骨干区域的IR
3、L12的路由器,类似于OSPF的ARB
区域划分
ISIS的区域ID,只是表示物理区域的作用,并不代表区域是骨干和非骨干。
ISIS协议在逻辑上存在骨干区域和非骨干区域
由L1和L12建立的L1的邻居的链路组成非骨干区域
由L2和L12建立L2的邻居的链路组成骨干区域
L1的邻居要求区域ID要一致,L1的路由器只能建立L1的邻居
L2的邻居不要求区域ID一致,L2的路由器只能建立L2的邻居
L12和L1的路由器 建立L1的邻居,此时L12路由器需要和L1的路由器在同一个区域
L12和L2的路由器 建立L2的邻居,此时区域ID是否相同没有要求
L12和L12路由器 在区域ID相同的情况下 即建立L1邻居,又建立L2邻居
L12和L12路由器 在区域ID不相同的情况下,建立L2邻居
L2的区域 就是由L2的邻居之间组成,骨干区域
L1的区域 就是由L1的邻居之间组成,非骨干区域
ISIS支持的网络类型
广播
P2P
ISIS 两台路由器通过以太网连接 默认是广播型:可以改成P2P
通过PPP连接,默认是点到点
对于NBMA(非广播多路访问)网络,需对其配置子接口,并需要将子接口类型配置为P2P
开销值
ISIS在接口缺省情况下,并不与接口带宽相关。缺省情况下为10
IS-IS有三种方式来确定接口的开销,按照优先级由高到低分别是:
接口开销:为单个接口设置开销。(配置后最优为接口开销)
全局开销:为所有接口设置开销。(其次优为全局开销)
自动计算开销:根据接口带宽自动计算开销。(最次优)
项目使用wide宽的计算方式 开销值=参考带宽/实际带宽*10
除了wide或wide-compatible 以外其余开销模式开销值为下表确定
如果和一些其他协议配合使用 需要将模式改为宽!
IS-IS报文
报文格式
ISIS报文直接封装在数据链路层帧中
ISIS的报文名称:协议数据单元(PDU)。PDU由“报文头(ISIS Header)”+“变长字段(TLV)”组成。
报文头部又可分为“通用头部”+“专用头部”
通用头部(PDU Common Header):每一个ISIS报文都会携带的信息字段。
专用头部(PDU specific Header):不同ISIS携带的专用头部信息不同。
通用头部
Intradomain Routing Protocol Discriminator:域内路由选择协议鉴别符,固定为0x83。
Length Indicator:IS-IS头部的长度(包括通用头部和专用头部),以Byte为单位。
Version/Protocol ID Extension:版本/协议标识扩展,固定为0x01。
System ID Length:NSAP地址或NET中System ID区域的长度。值为0时,表示System ID区域的长度为6Byte。
R(Reserved):保留,固定为0。
Version:固定为0x01。
Max.Areas:支持的最大区域个数。设置为1~254的整数,表示该IS-IS进程实际所允许的最大区域地址数;设置为0,表示该IS-IS进程最大只支持3个区域地址数。
报文类型
IS-IS的PDU有4种类型:
1、IIH(IS-IS Hello)
2、LSP( Link State PDU,链路状态报文)
3、CSNP(Complete Sequence Number PDU,全序列号报文)
4、PSNP(Partial Sequence Number PDU,部分序列号报文)。
IIH:用于建立和维持邻接关系, 广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH; 广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH。
LSP:用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP。
SNP:通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level-1 CSNP、 Level-2 CSNP、 Level-1 PSNP和Level-2 PSNP。
IIH类似于OSPF Hello报文
LSP类似于OSPF LSA报文 (既是链路状态信息也是报文) OSPF中LSA(只是一条链路状态信息)是封装在LSU中 转发的并不是同一条 而ISIS中LSP就是一个报文
CSNP类似于OSPF DD报文 交互摘要
PSNP 类似于LSR LACK 把你请求的缺少的给你做确认
IIH报文
类似于OSPF中的HELLO报文。
建立发现建立维护邻接关系
L1的hello包建立和维护L1的邻居
L2的hello包建立和维护L2的邻居
P2P的hello包在P2P链路上建立和维护L1或L2的邻居
L12的路由器在广播型链路上和链路级别取交集,交集L1则发送L1的hello,交集L2则发送L2的hello,如果交集L12,即发L1也发L2
本地链路ID 只有点到点网络才有 设备对该接口的标识
报文头部
发送hello报文时间及死亡时间(失效时间)
P2P链路 默认每隔10s发送一次hello报文,失效时间是发送hello时间间隔3倍
广播型链路 DIS每隔3s发送一次hello报文,失效时间是10s
非DIS每隔10s发送一次hello报文,失效时间是发送hello时间间隔3倍
IIH的死亡时间是用于让对端邻居认为本端的失效时间
进入接口修改hello时间 isis timer hello 10 类型
默认改的全部L12 可单独修改 范围3-255
修改死亡时间 进入接口 isis timer holding-multiplier 倍数
广播型链路下
Level-1报文的DMAC地址为:01-80-C2-00-00-14
Level-2报文的DMAC地址为:01-80-C2-00-00-15
在点到点型的以太网链路上
所有ISIS报文都使用DMAC 09-00-2b-00-00-05
LSP 既是链路状态信息也是报文 类似OSPF的LSA
OSPF中 LSA是链路状态信息 封装在LSU中传输
ISIS中 LSP既是链路状态信息 也是报文
L1 LSP L1的邻居之间用于交换链路状态信息
L2 LSP L2的邻居之间用于交换链路状态信息
LSP报文传递内容不做修改,仅仅是修改发送主机的源ID。
LSP传递是逐跳进行。
LSP信息即是拓扑信息,也是路由信息。
LSP也采用组播形式发送。
LSP的字段及其作用
Remaining Lifetime(holdtime):LSP的存活时间,倒计时,最大1200s,倒计时为0则该LSP老化删除,每隔15分钟周期更新自己产生的LSP。
LSP ID 用于唯一标识一条LSP:由三部分组成,System ID、伪节点ID和LSP分片后的编号。 ystem ID(产生LSP路由器的system ID)+伪节点ID (2字节,非0取值,如果伪节点ID为0则代表是实节点)+分片标识
Sequence Number:LSP的序列号。在路由器启动时所发送的第一个LSP报文中的序列号为1,以后当需要生成新的LSP时,新LSP的序列号在前一个LSP序列号的基础上加1。更高的序列号意味着更新的LSP
Checksum : LSP的校验和
ATT(Attachment):骨干区域连接符,是L12路由器的专属功能,当L12路由器至少存在一个不同区域的L2的邻接时,将L1的LSP ATT位 置为1,让L1区域的生成默认路由到该L12路由器
seq num、checksum、holdtime 用于判断LSP的新旧,新的同步掉旧的LSP,+ LSP ID 这四个参数集合组成了LSP的摘要信息/头部信息
systerm id.Pseudonode ID-分片标识符
0000.0000.0001.00-00
system id 标识 LSP的产生路由器
pseudonode id 当伪节点ID为0时,则标识该LSP是实节点LSP,类似于ospf的一类LSA
当伪节点ID不为0时 ,则标识该LSP是伪节点LSP,类似于ospf的二类LSA
*分片标识符:当LSP携带信息过多,一条LSP无法加载完成,则需要多条LSP去携带,需要通过分片标识来进行区分
0000.0000.0001产生该LSP路由器的systemID
00代表伪节点标识符(实节点为00,一般用于P2P链路,非00代表了广播型链路中的伪节点)
尾部0X与(1)中星号共同代表分片,分片1分片2的区别。
LSP的新旧判断
seq num 越大越新,每隔15分钟周期更新自己产生的LSP或者链路状态发送变更时,触发更新seq+1,越大越新。从0x00000001开始,最大0xFFFFFFFF
seq num 相同,比较剩余的存活时间,初始剩余存活时间1200S,倒计时方式,当倒计时为0,认为最新,删除这条LSP
如果剩余时间都不等于0,则比较checksum,越大越新,如果checksum相同,则认为是相同的LSP。
LSP的更新机制
IS-IS路由区域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:
邻居Up或Down
IS-IS相关接口Up或Down
区域间的路由发生变化
引入路由发生变化
接口开销值变化
周期性更新:每隔900s周期更新,剩余老化时间默认1200s
收到LSP后的处理过程
将新的LSP加入到自己的LSDB表中,并标记为flooding。
发送洗的LSP到除接收口外的其他接口。
邻居再以上述两种方式扩散给其他邻居。
SNP报文
类似于OSPF的DD+lsu和lsack报文。
- 序列号PDU。
- 是CSNP+PSNP总称
- 分为L1CSNP、L1CSNP、L2PSNP、L2PSNP。
- 用于告知对方我的LSDB摘要信息以及更新完整LSDB数据。
- SNP也采用组播地址形式发送。
CSNP 类似 OSPF的DD
发送本设备所有的LSP的摘要,路由器通过交互CSNP来判断是否需要同步LSDB
广播链网络上:CSNP由DIS定期发送 默认为10秒
点到点网络上:CSNP只在第一次建立邻接关系时发送
Source ID:发出CSNP报文的路由器的system ID
Start LSP:CSNP报文中第一个LSP的ID值
End LSP ID:CSNP报文中最后一个LSP的ID值
LSP ID 用于唯一标识一条LSP seq num、checksum、holdtime 用于判断LSP的新旧
PSNP
只包含部分LSP的摘要信息(与CSNP不同):
当发现LSDB不同步时,
在广播网络中,PSNP来请求邻居发送新的LSP。不做确认
在点到的网络中,PSNP来请求邻居发送新的LSP,当收到LSP时,使用PSNP对收到的LSP进行确认
1、类似于OSPF中的LSR。
2、部分序列号PDU,传递自身部分LSP信息传递出去。是一条摘要信息。
3、CSNP互相传递,互相比对后,发现LSP信息不同步,此时缺少LSP信息的路由器会发送PSNP请求缺少的LSP信息。
4、P2P网络中,PSNP会做确认操作。
抓包中,CSNP同步LSP信息后,有一方设备发现缺少LSP,会发送PSNP进行请求。
LSP Sequence Number字段为全0时,代表PSNP包为请求包。
LSP Sequence Number字段为非全0,且从1开始排列。代表PSNP包为确认包。
5、广播型链路中,PSNP不做确认操作。
6、摘要信息依靠LSP-ID来标识一条唯一的LSP信息。 且描述LSP的一些简单信息
TLV详解
1、ISIS之所以在运营商网络中广泛使用,主要是因为存在TLV报文信息,也就是所谓的扩展信息。
2、ISIS本身不支持IP地址,但是现在广泛应用在TCP/IP协议中,正是因为TLV信息中扩展出了IP信息。
3、.ISIS的TLV信息在头部信息之下即可查询。
4、TLV在ISIS中定义了区域信息、邻居信息、IP信息、认证信息等所有信息。
5、TLV中TYPE字段代表的含义:
邻接建立
IS-IS按如下原则建立邻接关系:
只有同一层次的相邻路由器才有可能成为邻接。
对于Level-1路由器来说,Area ID必须一致。
链路两端IS-IS接口的网络类型必须一致。
链路两端IS-IS接口的地址必须处于同一网段(默认情况下)。
由于IS-IS是直接运行在数据链路层上的协议,并且最早设计是给CLNP使用的,IS-IS邻接关系的形成与IP地址无关。但在实际的部署中,在IP网络上运行IS-IS时,需要检查对方的IP地址的。如果接口配置了从IP,那么只要双方有某个IP(主IP或者从IP)在同一网段,就能建立邻接,不一定要主IP相同。
1、接口上的链路类型要一致。在ppp、HDLC链路类型只能是p2p,二层封装要一致。
2、在广播型链路上,链路类型也要一致
3、在链路上发送的hello级别也要一致
4、L1的邻居区域ID要一致,L2的邻居区域ID不同也可以建立
5、L12的路由器之间,区域ID相同的可同时建立L1和L2邻居,如果区域ID不同则只能建立L2的邻居
6、systemID每台设备要唯一
广播型链路建立邻居的过程
1、首先,两台路由器建立ISIS时,首先需要建立邻接关系,采用三次握手建立邻接关系。
2、ISIS建立邻接过程只有3个状态:down,init,up状态。
3、建立邻接过程:
初始状态下,一台R1设备向另一台设备发送IIH包,携带自己的systemID,区域ID,以及自己的邻居为null。
对端设备R2接收到此IIH包,状态修改为init状态。同时发送自己的IIH包,携带自己的systemID,区域ID,以及自己的邻居的MAC地址。
R1设备收到R2的IIH包后确认自己的IIH包已经完整发送给对方了。此时,R1再给R2发一个IIH包,再次发送携带自己systemID,区域ID,以及自己的邻居的MAC地址。
交互过后,双方同时进入up状态。
4、邻接关系建立完成后,选举DIS设备。路由器会等待两个HELLO报文时间,进行DIS 选举。
ISIS使用的是组播MAC OSPF使用的是组播IP
广播型链路下L1和L2发送的组播MAC地址
Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15
在以太网链路上,如果链路类型修改为P2P,则发送P2P的Hello包,无论是LSP/CSNP/PSNP还是L1/L2,都使用DMAC 09-00-2b-00-00-05
如果这台路由器连接着广播型链路 初始情况下就认为自己是DIS
P2P链路建立邻居的过程
1、首先P2P链路采用两次握手建立邻接关系。
2、两次握手,只要携带自己的信息,发送给对方,就可以建立邻居关系
3、两次握手建立邻接关系过程:
R1发送IIH包给R2,R2收到状态转为UP。
R2发送IIH包给R1,R1收到状态转为UP。
4、由于两次握手存在巨大缺陷,双方可能因为种种原因导致协商不通过,所以会出现卡在init的情况,此现象叫做单向邻居。
6、华为设备在 P2P链路中依旧采用三次握手(向下兼容2次握手)。
注:不同的地方在于,华为的三次握手机制中,双方交互的其中一条信息。不是广播型链路中对方的MAC地址,而是对方的SystemID。
7、携带P2P Adjacency字段就证明采用3次握手机制(仅仅P2P链路中才有)。但是可以修改。建立邻居的握手情况分为3中情况。
2次握手:双方都是两次握手。配置仅2次握手模式,不会处理P2P Adjacency字段,也不会发送P2P Adjacency字段字段。
3次握手:双方都是3次握手,一定会发送P2P Adjacency字段。
3次握手向下兼容:一端配置3次握手,一端配置2次握手也可以建立邻居,会发送P2P Adjacency字段。如果接收HELLO包,有此字段,进行3次握手,没有次字段,进行2次握手。
LSP类型
IS-IS的LSP分为1类和2类LSP,与OSPF的1,2类LSA概念相同。
仅依靠伪节点标识符判断ISIS的1,2类LSP信息。
且,IS-IS只有1,2类LSP,没有其他LSP信息。
伪节点表示符00时,此LSP信息代表1类LSP。
伪节点标识符非00时,此LSP信息代表2类LSP。
只有广播型链路中才存在2类LSP信息。
P2P不存在2类LSP。
1类LSP
1类LSP信息中包含拓扑信息和路由信息。以便计算路由。
若1类LSP信息中的拓扑信息存在伪节点标识符非全0的信息时,此条LSP为2类LSP信息。
2类LSP
2类LSP只有拓扑信息,无路由信息
出现2类LSP必然存在伪节点,必然是广播型链路
2类LSP由DIS的SYSTEM-ID代替,且伪节点标识符不为全0
DIS
广播链路中会选举 DIS
DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。
当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。
同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
DIS选举规则
1、先比较DIS优先级,默认64,越大越优,取值范围0-127,0的优先级也能参与IDS选举
2、优先级相同则比较接口的MAC地址,最大的成为DIS
3、广播型链路上所有路由器,都建立邻接关系
4、DIS具有抢夺性
5、DIS在每条广播型链路上有且只有一个
7、L1和L2的DIS是分别选举的,可以为不同级别的IDS选举设置不同的优先级
8、DIS和非DIS,非DIS和非DIS都建立邻居关系
手动设置优先级
进入接口 isis dis-priority 127 级别
查询LSP信息时,LSP-ID中如图所示位置,代表了伪节点标识符。
伪节点依据DIS表示,一般广播型ISIS链路中,DIS的systemID+非0伪节点标识符组成伪节点LSP-ID。
广播型链路中的LSDB同步
前置条件:
已经正产工作的ISIS环境中,新加入了一台ISIS路由器XXX。
新设备已经完成三次握手。
DIS并没有变更。
开始LSDB同步过程:
新加入的ISIS路由器XXX,等待LSP定时器超时,开始向外发送自身LSP信息(采用组播mac地址发送,保证广播域内所有的ISIS路由器都可以接收我发送的LSP信息)
广播域中的DIS收到XXX设备的LSP信息后,并不会做确认机制,而是等待自身CSNP定时器时间老化(10S)后,对整个广播域泛洪CSNP。
XXX在收到DIS发送的PSNP信息后开始与自身LSDB比对,发现缺少某些LSP。开始对DIS发送PSNP,请求缺少LSP。
DIS收到XXX设备发送的PSNP请求后,给XXX路由器发送LSP信息。以便同步。
广播域内其他设备由于XXX设备的加入,也会缺少XXX的LSP信息,虽然会将LSP信息加入自己的路由表,但是不其他广播域传递,其他设备只会通过DIS的CSNP信息向DIS发送PSNP信息请求XXX的LSP信息。
广播型链路中,LSDB同步依靠DIS进行,DIS发送CSNP信息泛洪全网通告本广播域内ISIS的LSDB信息。(广播网络CSNP报文只由DIS组播发送)
P2P链路中的LSDB同步
两台设备建立邻接关系
互相发送CSNP信息,若发现LSDB不同步,直接发送PSNP请求
双方再发送LSP信息
完成同步
P2P仅仅只会在第一次建立邻接关系后发送一次CSNP。
由于P2P的PSNP存在确认机制,所以当LSP发送后对方没有回复PSNP确认报文,就会每隔5S发送一次LSP,直到收到确认PSNP信息位置。
广播型链路上同步机制
IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP:
邻居Up或Down
IS-IS相关接口Up或Down
引入的IP路由发生变化
区域间的IP路由发生变化
接口被赋了新的metric值
周期性更新
在DIS稳定的情况下:
1、新增路由器和DIS一旦建立邻居,会互相发送自身LSDB的LSP。
2、非DIS路由器会和新增路由器建立邻居关系,但不会向新增的路由器发送自身LSDB中的LSP,避免重复发送LSP。
3、非DIS路由器接收到新增路由器的LSP后,如果是新的LSP,添加到自身的LSDB中,不会发送PSNP确认此LSP,并向其他链路上邻居泛洪这些LSP。
4、新增路由器收到DIS的CSNP后,根据比较自身的LSDB,发送相应的PSNP,DIS接收此PSNP后,发送相应的LSP,新增路由器接收后,添加自身的LSDB,不会发送PSNP确认这些LSP,同步过程结束。
5、DIS每10s周期发送CSNP,维护此广播型网络上的路由器的LSDB同步。
点到点链路上同步机制
在P2P链路中设备的LSDB更新过程如下:
若收到的LSP比本地的序列号更小,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认;若收到的LSP比本地的序列号更大,则将这个新的LSP存入自己的LSDB,再通过一个PSNP报文来确认收到此LSP,最后再将这个新LSP发送给除了发送该LSP的邻居以外的邻居。
若收到的LSP序列号和本地相同,则比较Remaining Lifetime,若收到的LSP报文的Remaining Lifetime为0,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到的LSP报文的Remaining Lifetime不为0而本地LSP报文的Remaining Lifetime为0,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
若收到的LSP和本地LSP的序列号相同且Remaining Lifetime都不为0,则比较Checksum,若收到LSP的Checksum大于本地LSP的Checksum,则将收到的LSP存入LSDB中并发送PSNP报文来确认收到此LSP,然后将该LSP发送给除了发送该LSP的邻居以外的邻居;若收到LSP的Checksum小于本地LSP的Checksum,则直接给对方发送本地的LSP,然后等待对方给自己一个PSNP报文作为确认。
若收到的LSP和本地LSP的序列号、Remaining Lifetime和Checksum都相同,则不转发该报文。
路由计算
同区域路由计算
随便找一台设备,查询ISIS的LSDB表,并以此为根开始计算。
由于1类LSP包含拓扑和路由信息,且伪节点标识符表明链路是P2P还是广播型链路。
以上图为例,我们已知该ISIS网络中,完成LSDB同步,共计7条LSP。
所以我们可以进行1类LSP详细信息查询。
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0000.0000.0001.00-00* 0x00000007 0x683d 856 97 0/0/0
SOURCE 0000.0000.0001.00 产生该LSP路由器的system ID,实节点的LSP
NLPID IPV4 描述IPV4的网络链路状态
AREA ADDR 49.0001 路由器所属的区域ID
INTF ADDR 13.1.1.1 启用ISIS协议的接口IP地址
INTF ADDR 12.1.1.1 启用ISIS协议的接口IP地址
INTF ADDR 1.1.1.1 启用ISIS协议的接口IP地址
NBR ID 0000.0000.0002.00 COST: 10 描述点到点链路上的邻居以及去往该邻居的开销值(.00伪节点标识符)
NBR ID 0000.0000.0003.00 COST: 10 拓扑信息
IP-Internal 13.1.1.0 255.255.255.0 COST: 10 描述自身直连的网络/掩码
IP-Internal 12.1.1.0 255.255.255.0 COST: 10
IP-Internal 1.1.1.1 255.255.255.255 COST: 0 路由信息
由于简要LSP信息我们得知,登录的AR1设备的system ID为0001,以我自己为根查询到的LSP信息,我们可以分析出AR1连接着两台设备,AR2和AR3,且链路类型为P2P。同时,我们可以得知与其接口相连的路由信息。
接下来我们要通过查询NBR ID字段提供的信息,利用dis lsdb NBR ID verbose查询邻居的LSP信息。查询AR2和AR3的。
通过查询AR2我们得知,AR2除了连接刚才查询的AR1还有一个AR4,且AR4的伪节点标识符非0。证明AR2与AR4采用广播型链路连接。且与AR4的互联地址段在100.1.1.0,子网掩码24.
通过查询AR3我们得到与上图一样的LSP信息。证明AR2/AR3/AR4处于一个广播型链路。
接下来我们需要通过查询2类LSP信息完善此广播型链路中的拓扑和路由信息。
通过查询2类LPS信息我们得知,伪节点相连的的确是AR2/AR3/AR4设备,且由于2类LSP的SYSTEM ID是AR4的systemID,所以我们得知此广播型链路中,AR4为DIS。
ISIS中同区域路由计算,由1类LSP进行自我宣告,自己宣告自己的网段,无论是p2p还是广播型链路。都会在1类LSP的IP-Internal字段中进行宣告,
由于ISIS的特殊性,若互联接口不属于同一个网段,也可以建立邻居,但是在路由表中,会新增一条不同网段的路由信息。
多区域路由计算
多区域路由计算,首先明确两个概念
1、L1路由器中只有L1的LSP信息,L2路由器只有L2的LSP信息。区域不同,LSP信息不同步。
L1-L2设备,会把非骨干区域的LSP信息,变成骨干区域的路由信息,通过骨干区域的LSP信息传递进骨干区域内。
非骨干区域的设备无法得知骨干区域路由,仅仅通过默认路由传递给与之相连的L1-L2设备中,才可以进行路由传递。
L1-L2设备必须有L2设备作为邻居,且L2设备存在不同区域时,L1-L2设备会将L1的LSP中ATT位 置位为1,并且给非骨干区域生成一条默认路由。
若ATT置位不为1时,无法形成默认路由。
对链路的描述
L1路由器 只通过L1的LSP对加入进程的接口进行描述自身的链路状态
L2路由器 只通过L2的LSP对加入进程的接口进行描述自身的链路状态
L12路由器,对于直连的L2链路 只通过L2 LSP来描述自身链路
L12路由器,对于直连的L1和L12的链路 既通过L1 LSP来描述自身链路状态,也通过L2 LSP来描述自身链路状态
骨干区域如何计算非骨干区域的路由:
L12路由器将L1的路由作为自身直连的叶子路由信息,在L2的LSP中进行描述,并且在L2的区域进行泛洪
非骨干区域如何计算骨干区域的路由:
L12路由器默认不会将L2的路由作为自身直连的叶子信息在L1的LSP中描述,所以L1的区域默认无法计算区域间的明细路由
通过L12路由器产生的L1的LSP的ATT位 置1时,会计算一条到达L12路由器的缺省路由用于访问外部网络。
非骨干区域通过缺省路由访问其他区域的网络,ISIS L1的区域天生就是一个类似OSPF的完全NSSA区域
ATTbit:骨干区域连接符,是L12路由器的专属功能,当L12路由器LSDB表中至少存在一个不同区域的L2 的LSP时(能收到不同区域的L2 LSP),才将L1的LSP ATT位 置为1
存在次优路径的问题
由于非骨干区域路由器是采用默认路由与L1-L2设备进行交互的,若一台非骨干ISIS设备连接两台L1-L2的ISIS设备时,需要访问骨干区域或者通过骨干区域访问其他非骨干区域路由时,对于非骨干区域的设备来说,两条默认路由都属于等价路由,就会出现次优路径的问题。 解决办法,将L2的路由渗透到L1中
解决办法,将L2的路由渗透到L1中。
L12路由器不会根据同区域的其他L12路由器的ATT位生成缺省路由
路由渗透
L1区域的路由默认渗透到L2的区域路由
进入isis进程 import-route isis level-2 into level-1
将L2区域的路由渗透到L1的区域
已经渗透了 就不需要默认路由了
L12路由器上:
对ATT bit总是置0 attached-bit advertise never
通知L1不生成缺省路由
对ATT bit总是置1 attached-bit advertise always
通知L1生成缺省路由
L1路由器上:
不根据ATT置1 进行计算缺省路由 attached-bit avoid-learning
(ATT 置1 也不计算缺省路由)
选路和防环的功效
DU bit标识是否属于泄露路由
L1路由优于L2路由优于DUbit置1的路由
只要路由器能从L1中学到路由,就不会从L2中计算路由,防止重新渗透形成环路。无论是L1-L2路由器还是L1路由器,都需要服从此条规则。
L12级别路由器不会把渗透进L1的路由重新传入骨干区域。
当我们在L12路由器查询L1的LSP表中,我们可以查询到渗透到非骨干区域的路由,但是后方携带由“*”(DU位)标识符,此处的*标识符代表了此路由是被渗透进来的。是属于L2的LSDB,不会再被L12当做L1的路由传出去。
渗透的路由优先级最低
当同区域有多台L12路由器连接同一骨干区域,且配置了路由渗透,此时,L12路由器访问L2的路由时,不会采用渗透进来的路由器计算路由。 如果L12路由器与骨干区域断线,此时才会计算渗透路由,经过非骨干区域从另一台L12设备进入骨干区域
总结:
如果路由器的类型是L1的路由器,他只维护自身所在的非骨干区域的L1的LSP,并且会对L1和L12,加入进程的直连链路生成L1的LSP
如果路由器的类型是L2的路由器,他只维护自身所在的骨干区域的L2的LSP,并且会对L2和L12,加入进程的直连链路生成L2的LSP
如果路由器的类型是L12的路由器,既维护L1的LSP又维护L2的LSP,两个LSDB之间互不干扰。如果相连的接口链接L2的邻居,只会生成L2的LSP如果相连的设备属于L12/L1的路由器,他既会产生L1的LSP也会产生L2的LSP。
特殊场景:L12路由器,AR2和AR3如果在骨干区域形成了邻居关系,但是没有其他任何L2的邻居时,ATT位不置位为1,因为置位为1的话,没有指导报文访问骨干区域的意义。
L12的路由器在L2的LSDB中,至少存在一条其他区域的LSP。此时ATT位才会置位为1,如果L1、L12、L2的路由器都在同一个区域时,L12路由器不会产生ATT位置位为1的LSP
外部路由引入
引入时默认是级别L2 开销默认是64
ISIS认证
根据报文的种类,认证可以分为以下三类:
接口认证:在接口视图下配置,对Level-1和Level-2的Hello报文进行认证。
区域认证:在IS-IS进程视图下配置,对Level-1的CSNP、PSNP和LSP报文进行认证。
路由域认证:在IS-IS进程视图下配置,对Level-2的CSNP、PSNP和LSP报文进行认证。
接口认证:
Hello报文使用的认证密码保存在接口下,发送带认证TLV的认证报文,互相连接的路由器接口必须配置相同的口令。
假设有俩台路由器R1、R2
如果R1配置了接口认证 那么他发送的Hello报文有TLV认证字段,R2没有配置接口认证,不会查看TLV,此时查看邻居表,和R1卡在intlit状态,R1接收到R2的hello报发现没有认证字段TLV,不会跟R2建立邻居。
如果R1配置了send-only 那么R1、R2可以建立邻居
区域认证
区域内的每一台L1路由器都必须使用相同的认证模式和具有共同的密钥。
假设有俩台路由器R1、R2
如果R1配置了区域认证 那么他发送的CSNP、PSNP和LSP报文有TLV认证字段,R2没有配置接口认证,不会查看TLV,此时查看邻居表,和R1在UP状态但是数据报文无法交互,R1接收到R2的CSNP、PSNP和LSP报文发现没有认证字段TLV,不会跟R2正常交互数据
如果R1配置了send-only 那么R1、R2可以正常交互数据
路由域认证
IS-IS域内的每一台L2和L1/L2类型的路由器都必须使用相同模式的认证,并使用共同的密钥。
对于区域和路由域认证,可以设置为SNP和LSP分开认证。
本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都进行认证检查。
本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文携带认证TLV,但不对收到的SNP报文进行检查。
本地发送的LSP报文携带认证TLV,对收到的LSP报文进行认证检查;发送的SNP报文不携带认证TLV,也不对收到的SNP报文进行认证检查。
本地发送的LSP报文和SNP报文都携带认证TLV,对收到的LSP报文和SNP报文都不进行认证检查。
认证方式
简单认证:将配置的密码直接加入报文中,这种加密方式安全性较其他两种方式低。
MD5认证:通过将配置的密码进行MD5算法加密之后再加入报文中,提高密码的安全性。
Keychian认证:通过配置随时间变化的密码链表来进一步提升网络的安全性。
HMAC-SHA256认证:通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性。
ISIS区域认证只要在一台设备上做认证,必须在所有设备上做认证,原包泛洪 携带认证接收的也要认证。
OSPF 认证 收了解封 重新封
send-only可以修改认证而不会造成网络震荡
命令
查看
查看接口详细配置 dis isis int g0/0/0 v
查看错误日志 dis isis error interface g0/0/0
查看lsdb详细详细 dis isis lsdb 0000.0000.0001.00-01 verbose
配置
进入进程 isis 1
缺省为1
设置区域及本机标识 network-entity 49.0001.0000.0000.0001.00
设置级别 is-level level-2
默认为L12
去接口启用isis
int g0/0/0
启动ISIS进程1 isis enable 1
当L12路由器接口链路中只有L2的路由器他任然会发L1的IIH可以关闭发送L1的IIH
进入接口 int g0/0/0
只发L2的IIH isis circuit-level level-2
在纯P2P的链路下,正常情况下也要双方检查是否处于同一个网段,输入peer ip-ig
不在同一个网段也可以建立邻居
修改网络类型 进入接口 isis circuit-type
恢复默认的网络类型undo即可
路由渗透
L1区域的路由默认渗透到L2的区域路由
进入isis进程 import-route isis level-2 into level-1
将L2区域的路由渗透到L1的区域
已经渗透了 就不需要默认路由了
L12路由器上:
对ATT bit总是置0 attached-bit advertise never
叫L1不生成缺省路由
对ATT bit总是置1 attached-bit advertise always
叫L1生成缺省路由
L1路由器上:
不根据ATT置1 进行计算缺省路由 attached-bit avoid-learning
(ATT 置1 也不计算缺省路由)
P2P链路修改认证时握手的次数
isis ppp-negotiation 2-way
仅采用2次握手建立邻居关系 自身发送的hello包中 不携带Point-to-point Adjacency State 也不处理该TLV
isis ppp-negotiation 3-way
采用3次握手建立邻居关系 向下兼容可和2次握手建立邻居关系 收到hello包中携带Point-to-point Adjacency State 则进行3次握手,没有携带进行2次握手
isis ppp-negotiation 3-way
仅采用3次握手建立邻居关系 收到和发送的hello报文中必须携带 Point-to-point Adjacency State
DIS
手动设置优先级
进入接口 isis dis-priority 127 级别
开销
接口开销
int g0/0/0
isis cost 30
改的是L1和L2的开销
isis cost 50 level-1
修改级别1的开销值
全局开销
进入进程 isis 1
circuit-cost 40
改的是L1和L2的开销
circuit-cost 40 level-1
修改级别1的开销值
自动计算接口开销
进入进程 isis 1
bandwidth-reference 50000
默认是100Mbit/s
auto-cost enable
启动自动计算开销
cost-style 参数
修改开销模式 工作中项目使用wide宽的计算方式(只有宽模式才携带TAGTLV ) 开销值=参考带宽/实际带宽*10
除了wide或wide-compatible 以外其余开销模式的开销值为下表确定
修改heelo时间死亡时间
修改hello时间 进入接口 isis timer hello 10 类型
默认改的全部 范围3-255
修改死亡时间 进入接口 isis timer holding-multiplier 倍数
修改P2P链路 建立邻接 是2次握手 还是3次握手 华为默认是3次
进入接口 isis ppp-negotiation 3-way
发送hello时携带p2p adj tlv 接收hello时,处理p2p adj tlv 如果没有则采用2次握手
isis ppp-negotiation 2-way
发送hello时不携带p2p adj tlv 接收hello时,不处理p2p adj tlv
isis ppp-negotiation 3-way only
发送hello时携带p2p adj tlv 接收hello时,处理p2p adj tlv 如果没有则不建立
认证
接口认证:
[Huawei-GigabitEthernet0/0/0] isis authentication-mode [keychain | md5 | simple ] [ level-1 | level-2 ] [ ip | osi ] [ send-only ]
level-1 指定设置Level-1级别的认证;level-2 指定设置Level-2级别的认证;
send-only 指定只对发送的Hello报文加载认证信息,不对接收的Hello报文进行认证。
区域认证:
[Huawei-isis-1] area-authentication-mode { { simple | md5 } { plain plain-text | [ cipher ] plain-cipher-text } keychain keychain-name | hmac-sha256 key-id key-id } [ snp-packet { authentication-avoid | send-only } | all-send-only ]
authentication-avoid 指定不对产生的SNP封装认证信息,也不检查收到的SNP,只对产生的LSP封装认证信息,并检查收到的LSP;
send-only 指定对产生的LSP和SNP封装认证信息,只检查收到的LSP,不检查收到的SNP;
all-send-only 指定对产生的LSP和SNP封装认证信息,不检查收到的LSP和SNP。
路由域认证:
[Huawei-isis-1] domain-authentication-mode { { simple | md5 } { plain plain-text | [ cipher ] plain-cipher-text } keychain keychain-name | hmac-sha256 key-id key-id } [ snp-packet { authentication-avoid | send-only } | all-send-only ]
authentication-avoid 指定不对产生的SNP封装认证信息,也不检查收到的SNP,只对产生的LSP封装认证信息,并检查收到的LSP;
send-only 指定对产生的LSP和SNP封装认证信息,只检查收到的LSP,不检查收到的SNP;
all-send-only 指定对产生的LSP和SNP封装认证信息,不检查收到的LSP和SNP。
area-authentication-mode md5 plain 123456 区域认证,接收的报文也要携带认证TLV
area-authentication-mode md5 plain 123456 all-send-only 代表发送LSP、CSNP、PSNP携带TLV,接收的报文忽略认证TLV
area-authentication-mode md5 123456 snp-packet send-only 代表发送LSP携带认证TLV,接收的CSNP、PSNP报文忽略认证TLV,对SNP报文要进行认证
area-authentication-mode md5 123456 snp-packet authentication-avoid 代表发送SNP携带认证TLV,接收的LSP报文忽略认证TLV,对接收到的SNP报文忽略认证TLV
评论 (0)