IS-IS Technical Document IS-IS 技术文档

2026/1/27 12:43:36

13

IS-IS Technical Document

在我司产品实现的时候和其它厂家是有区别的:请参见易令同学的

在新的VRP、JunOS中都实现了带宽自动计算功能,当不配置时,所有接口metric为10,loop为0: VRP的实现:

? 只有当开销类型为wide或wide-compatible时,配置bandwidth referance才生效,此时

cost=( reference / bandwidth)x10 ?我没想明白为啥要x10

? 当开销类型为narrow、narrow-compatible或compatible时,各种接口的有预定的默认值。 JunOS的实现和OSPF保持一致:cost = reference/bandwidth;

但JunOS即使到了8.5R1.14,也只实现了wide-metrics-only 即我们的wide- compatible,默认为 compatible; 10.

AUTHENTICATION

IS-IS 协议中没有对报文的验证定义很高的安全性要求,一般所有传输的密码都以明文形式出现,更高的安全性将取决于对不同系统的具体实现, 实现此功能的是TLV10

但是同ospf一样所有simple 密码方式的key都会通过相应的PDU或LSA直接传输,如果进行抓包便能很轻易的获取密码,所以推荐如果需要部署认证,最好还是MD5的认证方式;

目前主流厂商都实现了none、simple、MD5三种认证方式,并且可以基于接口和区域进行认证,但是各厂家实现方式有所区别: JunOS: ? ? ? ?

区域认证会附加authen到本路由器生成所有的PDU报文(包括hello、link-state、seq num);同时有命令可以控制只验证那些内容,保证多厂商对接;

接口认证只会在hello中附加authen信息,也就是只能控制邻居的建立,但不验证路由信息报文 由于JunOS可以调节的认证参数很多在此不再敷述,有兴趣的请参照JunOS手册,

请记住最关键的命令loose-authentication-check,no-authentication-check认证建立不起来的时候这个命令可以一次搞定;好处在于如果整网需要从不认证迁移到认证的时候,首先使能loose或不检查,等全部验证配置好后再取消此命令,便能达到不中断业务迁移的目的; IOS: ? ?

authentication mode {md5 | text} [level-1 | level-2]

area-password password [authenticate snp {validate | send-only}]

证,send-only只发送不验证,如果不加authen snp表示只加入到LSP中去; ? ? ?

domain-password password [authenticate snp {validate | send-only}] isis password password [level-1 | level-2]用于接口模式

isis authentication send-only 用于接口模式,只发送验证,不对对端验证

注: 如果authen snp表示把认证信息加入到SNP中去,后面必须带相应参数,validate表示发送并验

VRP:(目前我司实现的认证方式还很有限) ?

domain-authentication-mode发送并验证L2的路由信息报文(LSP/PSNP/CSNP)

13

14

IS-IS Technical Document

area-authentication-mode发送并验证L1的路由信息报文

isis authentication-mode用于接口模式,可指定L1/L2,但是只验证hello

? ? II. 1.

IS-IS协议报文 PDU格式

PDU (Protocol Data Unit)的格式分为三大部分:

数据链路层头:OSI Family 固定为0XFEFE;(如果是Eth链路的话,Eth的Datalink的header还有ctrl域为0x03,IS-IS 广播链路的整个802.2 LLC header为0xFE-FE-03,PPP链路为0x0023/0x8023); IS-IS固定报文头:第一字节为0X83。如果采用ES-IS协议,其固定报文头的第一个字节为0x82,采用CLNP协议,其固定报文头的第一个字节为0x81。

IS-IS TLVs:具体描述IS的链路状态。具体TLV结构请参见附录 IP类型是0x0800 例:

-----original packet-----

0:d0:f8:44:44:44 > 1:80:c2:0:0:14, ethertype 802.1Q (0x8100), length 77: vlan 12, p 0, LLC, dsap OSI (0xfe) Individual, ssap OSI (0xfe) Command, ctrl 0x03: OSI NLPID IS-IS (0x83): length 56 L1 Lan IIH, hlen: 27, v: 1, pdu-v: 1, sys-id-len: 6 (0), max-area: 3 (0) 0x0000: 831b 0100 0f01 0000

source-id: 1111.1111.1111, holding time: 9s, Flags: [Level 1 only] lan-id: 1111.1111.1111.04, Priority: 64, PDU length: 56 0x0000: 0111 1111 1111 1100 0900 3840 1111 1111 0x000f: 1111 04 2.

LSP可通告的路由前缀

LSP最大长度是1492字节 (参见PDU格式:MTU为1500,减去4字节Data-Link头,4字节ISIS头) LSP包头占27字节 ;

LSP的TLV最大长度为255字节;

一个LSP可以划分的最大片段数为256;(与LSP number有关) LSP中TLV字段的可用空间=1492-27=1465;

14

15

IS-IS Technical Document

可插入的 TLV数目为1465/255=5.7 大约等于 6,假定每个 TLV前面有一个1 字节长的类型字段和1 个字节的长度字段,总共为6×2=12 字节。

IP地址可用空间为1465-12的TLV头=1453 字节

TLV中可包含的IP前缀为1453/12=121.08 ,每个前缀长 12 字节(IP地址+掩码+度量) 每个LSP大约可包含121个IP前缀。

加上LSP可以分成256个片段,那么总共为 30976 个 IP前缀。 3.

IS-IS DATA-LINK MTU

作为OSI的Layer2 protocol的ISIS是不支持数据重新分段的,所以在发送数据之前,数据会填充到接口的MTU大小,也就是hello的length字段的大小,但如何知道对方接口是否满足MTUcheck的要求呢?这就靠IIH数据包填充到接口的MTU,确保在形成邻接前能够处理来自邻接点的最大可能的数据包。实现padding功能的是TLV8,每个TLV最长255bytes,可填充多个TLV8:

? P2P链路如果默认MTU1500的话,减去HDLC的broadcast frame开销 (1 byte),

unnumbered information control field (1 byte), PPP Protocol ID field (2 bytes). 还剩1496 bytes 供ISIS使用;

? Broadcast 广播链路上利用type1的 IEEE 802.2 Logical Link Control (LLC) 封装的话,

802.2 LLC format 消耗3 bytes, (包括destination service access point (DSAP), the source service access point (SSAP), and the control field)剩余1497 bytes,但供PDU使用的只有1492 bytes. (目前大部分的厂商会采用Ethernet SNAP header 还会消耗5byte的payload)

所以ISIS只检查MTU是否大于1492;

aviva@RouterG> show interfaces fe-0/0/1.0

Logical interface fe-0/0/1.0 (Index 64) (SNMP ifIndex 40) Flags: SNMP-Traps Encapsulation: ENET2 Protocol inet, MTU: 1500 Flags: None

Addresses, Flags: Is-Preferred Is-Primary

Destination: 10.0.1/24, Local: 10.0.1.2, Broadcast: 10.0.1.255 Protocol iso, MTU: 1497 Flags: Is-Primary

但是如果在确认两端的MTU匹配的情况下,IIH的Padding便成了带宽的浪费,可通过命令关闭padding: Cisco:no hello padding

JunOS:hello-padding (adaptive | loose | strict); 比较智能:)

? Adaptive :在P2P的连接中,IIH从检测到新邻居到adj形成会一直padding,如果收到

adjacency state TLV中显示邻接up,从此定时发送的IIH中不再padding;但如果邻居不支持TLV240,则以后定时发送的IIH依然填充;在Lan的连接中,从检测到邻居并形成至少一个的邻接之前会一直padding;

15

16

IS-IS Technical Document

? Loose padding (the default). 只要形成邻居后就不再padding,无法检测P2P两端MTU

不一致的情况;

? Strict padding. 一直填充;

Huawei:isis small-hello

注: VRP还有一个命令Smart-hello:缺省情况Hello报文的处理模块分布在主控板和接口板上,使能Smart-Hello功能后,发送和接收Hello报文的处理过程将由接口板取代主控板来完成。 4.

PDU类型

IS-IS协议规定了4类9种的报文,它们是:

1、IIH(IIH),当路由器引导时发送,也用来相邻路由器之间的链路维护。

? 发现邻居 (实际上P2P的话还要依靠ISH进行发现邻居的初始化) ? 邻居间发送keepalive 保持邻接 ? 用于DIS选举

2、LSP(Link State PDU),用来在路由器之间交换各自的链路状态。

3、CSNP(Complete Sequence Number PDU),包含地址范围,各LSP的简要信息:LSPid,SequeceNumber, checksum, remainning lifetime等重要信息。如果路由器的LSDB非常大,将分成多个CSNP发出。功能上类似于OSPF协议中的DD报文。 ? 在广播网络上,CSNP报文由DIS定期发送(缺省10秒的周期), ? 在点到点线路上,只在第一次形成邻接时发送CSNP。

4、PSNP(Partial Sequence Number PDU),PSNP在头中利用LSPid,SequenceNumber,Remainning lifetime, LSP checksum来描述LSPs,仅仅包含有LSP报文的头部。用来确保在相邻的路由器上和自己有相同的LSP信息,用于数据库同步,主要有以下功能:

? 在p2p链路上路由器用来相互交换作为Ack应答以确认收到某个LSP;在p2p网络中类似

于OSPF协议中的LS Ack报文;

? 在广播网络中用来请求发送最新的LSP,当路由器从近邻接收到CSNP时,注意到某些LSP

本地数据库中没有的(或自己的比较旧),路由器发送PSNP请求新的LSP。在广播网络中功能上类似于OSPF协议中的LS Request报文。

由于IS-IS协议将整个路由域分为两个层次,所以每种类型的PDU又细分为几种子类型。其中

IIH报文又分为

1、Level 1 LAN IS to IS Hello PDU,组播通信地址为:0180-C200-0014; 2、Level 2 LAN IS to IS Hello PDU,组播通信地址为:0180-C200-0015;

3、Point-to-Point IS to IS Hello PDU,单播通信,地址是对方的2层链路地址(local ciruit ID) LSP报文分为

1、Level 1 Link State PDU,只用于本地区域;

2、Level 2 Link State PDU,包含IS-IS路由区域中所有可到达前缀的信息;

CSNP报文分为

1、Level 1 Complete Sequence Numbers PDU

16


IS-IS Technical Document IS-IS 技术文档.doc 将本文的Word文档下载到电脑
搜索更多关于: IS-IS Technical Document IS-IS 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219