第十章 集成ISIS协议--10.1
术语
中间系统IS:一台路由器
ES:一台主机
ES-IS:主机与路由器之间的通信协议
IS-IS:路由器之间用来相互宣告的协议
SNAP:与一个子网相连的接口称为子网连接点
PDU协议数据单元:从一个节点的OSI层到另一个节点对等的OSI层的数据单元
NPDU:一个数据包就是一个网络层协议数据单元
链路状态PDU:执行与OSPF协议中的LSA等价功能的数据单元
10.1.1 IS-IS区域
一个中间系统可以是一台L1路由器,一台L2路由器,或L1/L2路由器
L1路由器:类似OSPF中非骨干内部路由器
L2路由器:类似OSPF中的骨干路由器
L1/L2路由器:类似OSPF中的ABR
cisco中使用命令is-type配置L1-only,L2-only或L1/L2类型,缺省情况下为L1/L2
区域间通信都必须经过L2区域,防止区域间路由选择环路
缺省情况下L1/L2路由器不需要通告L2类型路由给L1类型路由器,因此,一台L1路由器无法知道自己区域外的路由,类似于OSPF中的完全末梢区域。
当L1/L2路由器发送第一次LSP进入到一个区域时,它将通过在LSP中设置“区域关联位(Attached,ATT)”的二进制位通知其他L1路由器它可以到达其他区域
10.1.2 网络实体标题 Network Entity Title,NET
> 缺省情况下,一台路由器至多有三个区域地址,利用命令max-area-address,可增加至254个
> 每台IS-IS路由器必须有一种在它所在的路由选择域内唯一标识本身的方法,即系统ID
> 系统ID,类似OSPF中的router-ID。
>在一台ISIS路由器上,可以通过单一的地址同时定义区域ID和系统ID,即网络实体标题 Network Entity Title,NET
一个NET地址的长度范围可以是8-20个八位组字节,并可以描述为区域ID和一台设备的系统ID
NSAP选择符(SEL):1个八位组字节的字段,设置为0x00
一个ISO地址的SEL设置为0x00时,这个地址就是一个NET地址,指明某个结点网络层本身地址
无论是何种格式的地址,需要满足以下规则:
*NET地址必须是以一个单个八位组的域开始,如:47.xxx
*NET地址必须是以一个单个八位组的域结束,并且应该设置为0x00(xxx.00)
如果SEL是非零的,IS-IS也会起作用,但是在一个CLNP/IP混合的路由器可能会出问题
*在思科路由器上,NET地址的系统ID必须是6个八位组字节
10.1.3 IS-IS的功能结构
网络层由两个子层组成:
子网独立子层subnetwork indepent sublayer 为传输层提供一致的和统一的服务
子网依赖子层subnetwork dependent sublayer 为子网独立子层的需求去存取数据链路层提供的服务
1.依赖于子网的功能
依赖于子网的功能是指子网的功能依赖于它的下层。
(1)IS-IS网络类型
定义了两种网络类型:
广播型子网:支持多路广播的多路访问数据链路
点到点或一般拓扑子网:可能是永久链路或动态链接链路
(2)邻居路由器和邻接关系
IS-IS路由器是通过交换IS-IS Hello PDU数据包信息来发现邻居并形成邻接关系的
Hello数据包每隔10S传送一次
一台L1-only和一台L2-only不能形成邻接关系,缺省情况下,cisco为L1/L2路由器
区域ID对邻接关系的影响,可应用以下规则:
>两台L1-only路由器只有在它们的AID匹配时才能形成一个L1邻接关系
>两台L2-only的路由在AID不同时,也能够形成一个L2邻接关系
>一台L1-only路由器和一台L1/L2路由器只有在它们的AID匹配时才能形成L1邻接关系
>一台L2-only路由器和一台L1/L2路由器即是它们的AID不匹配,也能形成一个L2邻接关系
>如果两台L1/L2路由器AID匹配,可以同时形成L1和L2类型的邻接关系
>如果两台L1/L2路由器的AID不匹配,只能形成L2类型的邻接关系
一旦邻接关系建立成功,Hello数据包将担当keepalive保活功能
抑制时间(hold time):用来通知邻居路由器在宣告这台路由器无效之前,应该等待多长时间去侦听下一个Hello包。
cisco路由器,默认抑制时间是Hello时间间隔的3倍(30s)
cisco使用命令isis hello-multiplier改变
注:与OSPF差异
两个IS-IS邻居之间hello时间间隔和保持时间间隔不需要一致,每台路由器会认同邻居所通告的保持时间
ISIS在路由器之间能够交换Hello包,就认为形成了邻接关系
IS-IS邻居表 show clns is-neighbor
第六列 Circuit Id
电路ID Circuit Id 一个八位组字节的数字
>路由器用它来唯一的标识IS-IS接口
>如果该接口和一个广播型多路访问网络连接,那么这个电路ID是和该网络上的指定路由器的系统ID相连,称为LAN ID,更为准确 把电路ID称为伪结点ID(Pseudonode ID)。
例:如图,与E0相连的链路的LAND ID为0000.0C76.5B7C.02
指定路由器的系统ID为:0000.0C76.5B7C
伪结点ID为:02
第七列 Format
对于集成ISIS,此格式永远为Phase V,用来说明OSI/DECnet Phase V。另一个唯一格式是DECnet Phase IV
(3)指定路由器
每台ISIS路由接口都被指定一个L1类型的优先级和L2类型的优先级,范围0--127
cisco对于L1和L2路由器,缺省为64
通过命令isis priority改变
如果优先级为0,表示最低的优先级,仍可以称为DR路由器
对于非广播型的接口,不需要选举指定路由器,因此将优先级设置为0
选取:
1.拥有高优先级的路由器将会称为指定路由器
2.如果路由器优先级相同,那么拥有在数值上具有最高MAC地址的接口的路由器将成为指定路由器
ISIS较之OSPF缺陷:
>ISIS协议不选取备份指定路由器。如果ISIS指定路由器失效,将选取新的指定路由器。
>ISIS指定路由器相较于OSPF的指定路由器很不稳定。
OSPF指定路由器不会发生抢占。
ISIS协议中,如果一台新的ISIS路由器比现有指定路由器有更高的优先级,或优先级相同,但有更高MAC地址,那么新的ISIS路由器将成为指定路由器
2.独立于子网的功能
(1)更新过程
更新过程update process的职责是构建L1和L2的链路状态数据库
L1的LSP在整个区域内泛洪,L2的LSP在所有L2的邻接内泛洪
每个LSP都包含一个剩余生存时间,一个序列号,一个校验和
>剩余生存时间remaining life 是一个老化时间或使用期限,LSP的剩余生存时间是从最大生存时间开始,递减到0,
ISIS的最大生存时间MaxAge为1200s
ISIS的刷新时间间隔为15min减去一个最大不超过25%的随机抖动变量。
如果剩余时间减到0,那么这个过期的LSP还会在路由器的链路状态数据库中保留60s,称为零老化生存时间ZeroAgeLifetime
在一个点到点的子网上,路由器将直接发送L1和L2的LSP给邻居
在一个广播型的子网上:
LSP将以组播的方式发送到它的所有邻居路由器
携带L1 LSP的帧会有一个0180.c200.0014的目的MAC地址,称为:AllL1ISs
携带L2 LSP的帧会有一个0180.c200.0015的目的MAC地址,称为:AllL2ISs
序列号数据包SNP 用来了解LSP的接受情况和维护链路状态数据库的同步情况
部分序列号报文PSNP
完全序列号报文CSNP
在一个点到点的子网上,路由器通过PSNP确认每一个LSP是否收到,通过以下信息来描述正在被确认的LSP
LSP ID
LSP的序列号
LSP的校验和
LSP的剩余生存时间
当一台路由器在一个点到点的子网上发送一条LSP时,它会设置一个周期为minimumLSPTransmissionInterval的计时器,cisco路由器的缺省值为5s,缺省值通常为最适合的值。
在一个广播型子网上,指定路由器会周期的以组播的方式发送CSNP,用来描述链路状态数据库中的每一个LSP,缺省周期为10s
过载overload OL位
路由器如果不能完整地存储链路状态数据库,那么它将会在所发送的LSP数据包中设置一个过载位
show isis database 显示ISIS链路状态数据库摘要
第一列 LSP ID
有始发路由器的系统ID连接2个八位组字节组成
第一个八位组是伪结点ID,如果这个八位组是非零的,LSP则是由一台DR路由器始发的
第二个八位组是LSP的编号
LSPID后的星号* 表示这条LSP数据包始发于正在查看的数据库所在的路由器
第二列,第三列 每一个LSP的序列号和校验和
第四列 抑制时间
LSP的剩余时间,以秒计数,
第五列
每一个LSP的区域关联为ATT;区域分端为Partition,P;过载位OL
ATT位:L2和L1/L2路由器设置ATT位为1来指明它们含有到达其他区域的路由
P位:指始发路由器有支持区域分段修复的能力,cisco不支持
OL位:OL位设置为1,可能是始发路由器正处于内存过载状态。
(2)决策过程
一旦更新过程建立了链路状态数据库,决策过程就将使用数据库中的信息去计算一个最短路径树
ISIS使用以下度量计算最短路径(一项必须,三项可选)
缺省度量Default-----每一台ISIS路由器必须支持和理解的度量
时延度量Delay-------可选项,反映子网的传输时延
代价度量Expense----可选项,反映一个子网的成本代价
差错度量Error--------可选项,反映子网的出错概率
cisco只支持缺省度量
cisco路由器上,无论接口类型,都会指定每个接口的缺省度量为10,使用isis metric可修改缺省度量
一条路径的总代价可以看做是沿此路径方向的每一个出站接口的单独度量简单相加
对于任何一条路由,ISIS的最大度量值为1023
ISIS扩展度量wide metric 具有32为度量,使用命令metric-style wide设置
ISIS路由器不仅分为L1和L2,还分为外部路由,内部路由
内部路由:到达ISIS路由选择域内的目的地的路径,L1路由总是内部路由
外部路由:到达ISIS路由选择域外的目的地路径,L2可能是内部路由,也可能是外部路由
如果达到目的存在多条可能的路由,那么L1的路由优先于L2的路由。
10.1.4 IS-IS的PDU格式
ISIS协议使用9中PDU类型来进行控制信息处理,并使用一个5位的类型号来标识每一个PDU数据包,
ISIS PDU数据包起始的8个八位组字节
域内路由选择协议鉴别符
用来标识网络层协议数据单元NPDU,在所有的ISIS PDU中,该字段的值为0x83
长度标识符
标识该固定头部字段的长度,以八位组字节数表示
版本/协议ID扩展
当前始终设置为1
ID长度
用来标识该路由选择域内使用的NSAP地址和NET的系统ID的长度。该字段取值为:
>1--8的整数,表示系统ID字段具有相同长度的八位组字节数
>0,表示系统ID字段的长度为6个八位组字节
>255,表示系统ID字段为空(0个八位组字节)
cisco路由器中系统字段的长度固定为6个八位组,在cisco路由器始发的PDU数据包中,这个ID长度字段始终为0
PDU类型
5位的字段,前三位为保留位,始终为0
版本号
当前始终设置为1,
保留位
当前设置为全0
最大区域地址数
表示该IS区域所允许的最大区域地址数量
>1--254整数,表示该区域实际所允许的最大区域地址数
>0,表示该IS区域最多只支持3个区域地址数
cisco默认为最多支持3个区域,该值始终为0,可通过命令max-area-address修改
1.TLV字段
在PDU专有字段之后,类型 长度 值 type length value
2.IS-IS Hello PDU格式
电路类型 Circuit Type
2位的字段,前6位为保留位,始终设置为0,用来指定路由器类型
01 L1路由器
02 L2路由器
11 L1/L2路由器
00 PDU数据包会被忽略
源ID source ID
发送该Hello数据包的路由器ID
抑制时间 Holding Time
邻居路由器在宣告始发路由器失效之前,它所等待的接受下一个Hello数据包的间隔
PDU长度
整个PDU数据包长度的八位组字节数
优先级
用来选取DR的7位字段,可以设置成0--127之间的数值,数值越大优先级越高
LAN ID
指定路由器DR的系统ID加上一个八位组字节(伪结点ID)
与LAN Hello PDU区别:
本地电路ID代替了LAN ID字段
无优先级字段
在ISIS LAN Hello 数据包中可以使用下面多种TLV:
区域地址 类型1
中间系统邻居 类型6
填充 类型8
认证信息 类型10
可选的校验和 类型12
支持的协议 类型129
IP接口地址 类型132
重启 类型211
多拓扑 类型229
IPv6接口地址 类型232
实验用 类型250
(1)区域地址TLV
区域地址TLV是在始发路由器上配置,并用来通告该区域的地址,一台路由器可以配置多个区域地址
(2)中间系统邻居TLV(Hello)
中间系统TLV
中间系统邻居TLV列出本地路由器所有邻居的系统ID
此TLV只能用在LAN Hello数据包中,
(3)填充TLV
填充TLV使用来填充一个Hello PDU的数据包,以使它达到允许的ISIS大小的最小值(1492字节),或该链路的MTU大小
由于一个值的最大长度为255字节,因此会使用多个填充TLV
它的内容经常被忽略,因此值字段可以为任意值,cisco默认设置为0
(4)认证信息TLV
认证信息TLV在配置认证时才会使用
认证类型字段包含一个0--255之间的数字,用来指定认证类型
IOS软件支持明文口令认证,或HMAC-MD5认证
明文口令认证类型为1
HMAC-MD5认证类型为54
(5)支持的协议TLV
(6)IP接口地址TLV
IP接口地址TLV是指发出PDU数据包的接口地址或IP地址
长度为1个八位组字节,因此ISIS路由器接口理论上最多有63个地址
3.ISIS协议链路状态PDU格式
L1 LSP和L2 LSP的格式是相同的,L1泛洪到整个区域,L2在L2区域内泛洪
PDU长度
整个PDU数据包的长度,用八位组字节数表示
剩余生存时间Remaining Lifetime
在确认一个LSP过期之前等待的秒数
LSP ID
可以是系统ID,伪结点ID,或LSP数据包的LSP编号
序列号
32位的无符号整数
校验和
对LSP内容的校验和
P位
分段区域修复位,cisco不支持,始终为0
区域关联为(ATT)
一个4位的字段,用来指明始发路由器与一个或多个其他区域相连的。
在L1和L2的LSP数据中存在,但实际只和L1/L2路由器始发的L1 LSP数据包有关
位7 差错度量
位6 代价度量
位5 时延度量
位4 缺省度量
cisco IOS仅支持位4 缺省度量,其余设置为0
过载位OL
中间系统类型(IS Type)
两位的字段,用来指明始发路由器是L1路由器还是L2路由器
00 未用
01 L1
10 未用
11 L2
(1)中间系统邻居TLV(LSP)
中间系统邻居TLV用来在LSP中列出始发路由器的ISIS邻居(包括伪结点)
虚拟标记Virtual Flag
长度为8位,取值只有0x01或0x00
在cisco路由器中该字段始终设置为0x00
R位
保留位,始终设置为0
I/E位
该位和每个度量相关,用来指明相关的度量是内部度量还是外部度量
缺省度量
一个6位的缺省度量,用来表示始发路由器到达所列出的邻居的链路度量,大小范围在0--63之间
S位
和度量相关,用来指明是否支持此度量。
0 支持
1 不支持
邻居ID
指邻居的系统ID,
如果邻居是一台路由器,末尾的八位组设置为0x00
如果邻居是伪结点,则系统ID就是指定路由器,末尾八位组就是伪结点的ID
(2)IP内部可达性信息TLV
IP内部可达性TLV列出了与通告该LSP的,路由器直连的路由选择域内的IP地址和相关的掩码信息。
这个TLV使用在L1和L2的类型的LSP,但是从来不会出现在伪结点LSP中。
(3)IP外部可达信息TLV
IP外部可达信息TLV列出了到达ISIS路由选择域外部的IP地址和相关掩码
(4)域间路由选择协议信息TLV
域间信息类型
指定了在可变长度的外部信息字段中包含的信息类型
该字段设置为0x01 外部信息使用本地域间路由选择协议方式
该字段设置为0x02 外部信息就是一个16位的自主系统号,用来标记所有后续的外部IP可达性条目,直到LSP的结尾或者下一个域间路由选择协议信息TLV的出现。
4.ISIS协议序列号PDU报文
SNP通过描述数据库中的部分或者全部的LSP信息,对ISIS链路状态数据库进行维护,也用来请求LSP,以及隐性或显性的确认接收到的LSP
一台指定路由器DR会周期性的以组播方式发送完全序列号数据包CSNP,来描述伪节点数据库中所有的LSP信息。
10.1.5 ISIS的扩展属性
1.三方握手
在邻居之间建立邻接关系之前,邻居必须确保它们之间形成双向通信,确保该过程的形成称为握手
ISIS协议使用三方握手机制,如果从邻居收到了Hello数据包,本地路由器所发送的LAN Hello数据包就会在它的IS邻居的TLV列出所有邻居。
ISIS路由器在它所收到的LAN Hello数据包的IS邻居TLV中看到自己的SYSID,那么就会认为双向通信状态已建立