OSPF和ISIS都是使用SPF计算得到最短路径。 OSPF基于TCP/IP。 ISIS基于OSI。
ISIS是广域的运营商网络。
CLNP:无连接网络协议。 CLNS:无连接网络服务。
网络模型 网络 服务 地址
ISIS OSI CLNP CLNS NSAP
OSPF TCP/IP IP ICMP IPv4/IPv6
集成ISIS TCP/IP IP ICMP IPv4/IPv6
NSAP
NSAP:网络服务访问点,资源标识的一个地址。
- IDP:类似于IP地址的网络位。
- AFI:1字节,地址分配分配机构,按照地域分配的特殊标识。 IDI:0-2字节,标识域的范围。*
- DSP:类似于IP地址的子网+主机位。
- High Order DSP:0-10字节,子网络标识,进一步划分域的范围。*
- System id:6字节,标识了一台设备(类似于OSPF设备的RID)。*
- SEL:1字节,标识上层协议(只在CLNP网络中存在意义,IP网络置0)。*
集成ISIS也会使用NSAP地址,将SEL位置位为全0,改变后的地址称之为NET地址,NET地址只具有地址标识的功能。
NET主要用于路由计算,由区域地址(Area ID)和System ID组成。
::: warning
NET地址每台设备最多配置3个,并要求3个地址的System-id是相同。
:::
NET地址长度最大为20字节,最小值为8字节(不划分域的范围时,不需要IDI和High Order DSP),使用点分十六进制,4位为一组进行表示(类似于MAC地址)。 上图中NET地址中SEL的1字节固定为00。 ::: tip 十六进制时一位表示4个二进制,两位表示8个二进制,即1字节。 ::: ::: warning NET地址的检查是从后向前检查的,先检查SEL是否存在,再检查systerm id是否存在,再检查域标识是否存在(域标识可以存在或省略),最后检查AFI是否存在。 检查必须从后向前,否则无法判断后面字节代表含义。 ::: 可以将NET地址理解成两部分:区域ID(包括AFI、IDI、high order dsp)、systemID(包括system id和SEL)。
RID和system id融合
华为的网络设备上,System ID的长度是固定的6Byte。 在一个IS-IS路由域中,设备的System ID必须唯一,为了便于管理,一般根据Router ID配置System ID。 ::: tip 将RID的每一位都扩展为3位,已经是3位的不需要扩展,小于3位的在前面补0,然后重新组合成4位一组,组合后system id变为3组。 ::: 实际应用场景中,RID融合system id: RID:192.168.12.7,扩展后为192.168.012.007,重新排列后为1921.6801.2007。 即system id为1921.6801.2007。
ISIS路由器的分类
::: warning 级别2是骨干区域,级别1是非骨干区域。与区域ID无关。 :::
1. Level-1设备:连续的级别1设备组合为ISIS的非骨干网络。
- Level-1设备不能和Level-2设备建立邻居关系。
- Level-1设备和Level-1设备建立Level-1的邻居关系。
- Level-1设备和Level-1-2设备建立Level-1的邻居关系。 ::: tip 建立的Level-1邻居关系必须在同一个区域内。 即如果建立了级别1的邻居关系,则两端设备的区域一定相同。 :::
2. Level-2设备:连续的级别2设备组合为ISIS的骨干网络。
- Level-2设备不能和Level-1设备建立邻居关系。
- Level-2设备和Level-2设备建立Level-2的邻居关系。
- Level-2设备和Level-1-2设备建立Level-2的邻居关系。 ::: tip 建立的Level-2邻居关系区域ID可以不同。 即ISIS骨干网络没有区域ID限制,防止骨干区域被分割。 :::
3. Level-1-2设备:连接非骨干和骨干网络。
- Level-1-2设备和Level-1设备建立Level-1的邻居关系。
- Level-1-2设备和Level-2设备建立Level-2的邻居关系。
- Level-1-2设备和Level-1-2设备建立Level-1和Level-2的邻居关系。 ::: tip 区域id相同,建立Level-1和Level-2的邻居关系。
- 区域ID不同,建立Level-2的邻居关系。* :::
不同级别的设备 维护不同级别的链路状态数据库。 Level-1设备通过Level-1-2设备访问Level-2设备。 设备的默认级别是Level-1-2。
ISIS区域的划分,是通过设备的级别进行划分。
在接口上使能IS-IS:
[AR1-GigabitEthernet0/0/0]isis enable
提示建立level-1-1、level-1-2的关系: 查看IS-IS邻居: 修改ISIS设备的级别:
ISIS的接口级别类型:
每一个运行了ISIS的接口都存在对于的级别,默认级别是Level-1-2。 三种级别:
- L1:会发送L1的协议报文。
- L2:会发送L2的协议报文。
- L1-2:会发送L1-2的协议报文。
查看运行ISIS的接口的详细信息: 查看运行ISIS的接口的详细信息:
[AR1]display isis interface GigabitEthernet 0/0/0 verbose
::: tip ISIS路由器的类型和接口类型会相互影响。 路由器类型为主要,接口类型为次要。 如果路由器的类型和接口类型是相同的,则按照相同的级别进行协议报文的转发。 如果路由器的类型和接口类型是不同的,则按照路由器的类型进行协议报文的转发。 ::: ::: warning 如果是单级别设备,只按照路由器级别发送报文,不需要考虑接口级别。 如果是级别1-2设备,发送报文的级别是路由器级别和接口级别相同的级别(即接口级别)。 ::: 设置端口级别(默认是Level-1-2): 设置AR1端口级别为L1,就只能建立L1的邻居关系: 设置AR2端口级别为L2,就无法建立邻居关系: 如上,级别1和级别2设备无法建立邻居关系。
ISIS的网络类型
ISIS的默认网络类型是广播。
[AR1-1-GigabitEthernet0/0/0]isis circuit-type p2p 配置ISIS的网络类型为P2P
::: warning OSPF的广播和P2P可以建立邻居关系(OSPF广播和P2P的hello包都是组播发送的,问题出现在2类LSA,P2P没有2类LSA,导致拓扑学习不能同步,后续SPF计算会出现问题,但不影响邻居建立)。 ISIS网络类型不同不能建立邻居关系。 ::: 设置交互报文次数:
[AR1-GigabitEthernet0/0/0]isis ppp-negotiation
2-way 两次握手建立邻居关系
3-way 三次握手建立邻居关系
::: warning OSPF建立邻居关系经过3次握手,达到2-way状态,命名重复,需要区分。 :::
- 广播:使用3次握手建立邻居关系。
- P2P:使用2次或3次握手建立邻居关系。 2次握手只能在P2P网络中存在,不安全,容易造成邻居单通的现象。 2次握手,只要收到邻居的报文不管是否存在自身的SID(system id)就会将状态置为UP。 3次握手,收到邻居的报文中必须存在自身的SID(system id)才会将状态置为UP。
(单通即两次握手时一端收到另一端的报文后立刻将状态设置为up,如果对方没有收到自己的回报,对端状态仍为init,就会出现单通。)
ISIS的cost:
IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。 IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。 IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,IS-IS缺省时Cost为10。 一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和,计算路由的入方向开销。 cost的配置:
- 全局自动计算:
[AR1-isis-1]auto-cost ? enable Enable the automatic cost on the system
- 为所有接口设置开销:
只有当开销类型为wide或wide-compatible时, 使用命令bandwidth-reference配置的带宽参考值才是有效的, 此时各接口的开销值=(bandwidth-reference/接口带宽值)×10。[AR1-isis-1]bandwidth-reference 设置参考带宽
- 指定接口设置开销:
可以针对不同级别设置不同开销:[AR1-GigabitEthernet0/0/0]isis cost 25