一. 背景介绍
1. CLNP是什么?
CLNP:
是OSI模型中网络层中的一种不面向连接的网络协议,和IP有相同的特质。但是它是纯粹的OSI模型的一个,而IP现在是我们熟悉的TCP/IP协议栈中的网络层协议。他们两个在OSI模型中是属于同一层的东西,但是在应用中,是两种不同的应用。
2. Intergrate IS-IS有什么用?
由于历史原因,OSI曾经是要比TCP/IP协议栈普及,当现在的TCP/IP流行的时候,以前的采用OSI模型中CLNS(由ISO制定的规范)的应用要和现在的TCP/IP(由IETF进行兼容,可以使网络层为CLNP和为IP的路由信息可以互通,所以需要要有个路由协议来作为这两种情况的兼容点。
二. 和OSPF的相同点
1. 都维护一个链路状态数据库,并使用SPF算法来得出最佳路径。
2. 都是用Hello报文来查找和维护邻居关系。
3. 使用区域来维护一个阶级的概念。
4. 在区域之间都可以使用路由汇总来减少路由器的负担。
5. 都是无类的路由协议。
6. 在广播网络里,都通过选举一个DR来减少报文数量。
7. 都有认证功能。
三. 名词解释
1. ES-IS和IS-IS
在ISO规范中,一个路由器就是一个IS(中间系统),一个主机就是一个ES(末端系统)。提供IS和ES(路由器和主机)之间通信的协议,就是ES-IS;提供IS和IS(路由器和路由器)之间通信的协议也就是路由协议,叫IS-IS。
2. SNPA
(Subnetwork Point of Attachment,子网连接点),是一个连接着子网的接口,它是一个概念上的接口,不一定是物理接口。
3. PDU
(Protocol Data Unit,协议数据单元),是在OSI模型中各层之间所传送的数据单元。
数据帧就是Data Link PDU;报文就是Packet PDU;相当于OSPF中的LSA就是Link State PDU,但不象LSA,前面还要有OSPF头,IP头,LSP本身就是一个报文,不需要额外的封装。
4. Level 1和 Level 2路由器
首先要明白和OSPF的一个区别,OSPF路由协议的区域边界是以路由器为准,而IS-IS路由协议的区域边界是在链路上的。Level 1路由器是没有直接连接到其他区域的路由器;Level 2路由器是连接不同区域的路由器;
Level 1路由器相当于OSPF中的非骨干区域中的路由器;
Level 2路由器相当于OSPF中的骨干区域路由器;
Level 1/Level 2路由器相当于OSPF中的ABR,他必须维护两个不同区域的链路状态表。但是他又不像ABR,他不会把Level 2的路由信息传到Level 1的区域中去。而Level 1区域就相当于OSPF中的完全存根区域,需要把L1/L2路由器作为一个网关,去请求一个去往外区域的路由,L1/L2路由器通过发送LSP报文到L1区域,设置ATT bit让L1区域的路由器知道,发送这个LSP的路由器知道如何去往外区域的路由。
和OSPF的又一个不同:OSPF在区域内采用SPF算法,而区域间路由采用Distance Vector算法来实现;而IS-IS都采用SPF算法来计算路由,因为作为L1/L2路由器他同时维护了两张链路状态表。可以进行SPF计算。
Area ID:
由于IS-IS路由区域里,一个路由器必须只能属于一个区域,不会象OSPF中一个路由器同时属于多个区域,所以一个Area ID只会和一台路由器产生关系。
System ID:
相当于OSPF路由协议中的Router ID;
Network Entity Titles:
Area ID+System ID,System ID是不变的,在一个区域中,所有的IS都必须只能有一个System ID,而且System ID的长度必须一直,为6个Octet。一般都是接口的MAC地址。而所有处在相同Area 的路由器都必须有一致的Area ID
四. IS-IS的网络层
1. 分层
IS-IS协议属于OSI模型,在网络层中,分为两个子层:
Subnetwork Dependent Layer:
它在Subnetwork Independent Layer上把链路状态屏蔽掉了,提供上层一个透明的工作环境。
功能:
完成了PDU从连接网络上的接受和发送;
负责Hello PDU的发送接受,完成邻居的发现和链接关系的建立,维护;
负责把IP和IS-IS的PDU交给各自的Process进行处理
特性:
由于它是负责和地下链路打交道的,所以它决定了IS-IS路由协议支持什么网络类型。
广播和点对点两种类型。
使用show clns is-neighbors命令可以查看邻居表:
Circuit ID:
是一个只有8位bit长度的ID用来确定IS的接口,假如这个接口是连接着一个广播网络,那么它的Circuit ID变成了连接多播网络的DR的System ID+Circuit ID。
LAN ID:
System ID+Circuit ID,也就是由DR产生分发的一个ID,来表示路由器邻居的特性。
在IS-IS中,DR路由器的选择:
通过接口的优先级,只不过这些优先级分成L1和L2,假如优先级为零,那么这个路由器无权进行DR选举。假如优先级相同,根据System ID来进行选择,最高的成为System ID。
和OSPF不同的是,在广播网络中,IS-IS路由器和所有的邻居都会形成adjancency,而不只和DR形成;没有BDR的概念,假如一个Dr fail了,会在区域中重新选一个出来;而且IS-IS路由协议的DR不是恒定的,假如有一个优先级更高或System ID更高的路由器加入,会导致整个区域重新进行DR的选择,并重新泛洪LSP报文通知DR的信息。
一个路由器可以同时是L1和L2区域的DR,取决于不同接口的优先级设置。
Subnetwork Independent Layer:
负责如何在CLNP网络中传送报文到目的地,并同时提供哪些服务对上层协议。而路由功能分为以下四个步骤:
1. Update
这个步骤负责构建L1和L2的链路数据库。
IS-IS对LSP处理的方式和OSPF对LSA处理的方式有一些不同:
IS-IS和OSPF使用MaxAge参数来控制LSP的更新度,但是IS-IS的MaxAge是从大到小计算,OSPF是通过从小到大来计算,一个到零就算过起了,一个到最大就算过期。而当LSP的MaxAge到零了的时候,IS-IS不会马上采取行动,而是会把它在数据库中再保留60秒(ZeroAgeLifetime)。
IS-IS中,假如接收路由器发现LSP的校验和不对,可以删掉LSP,并要求重发。而OSPF中只有LSA的发送者可以清楚LSA。但是这样也等于增加了IS-IS区域中的通信流量,可以使用“ignore-lsp-errors”命令,来去掉接受者进行校验和检查的功能。但也可以使发送者知道LSP有问题,通过使用SNPs(相当于一个Ack)。
在点对点网络上,IS使用单播来发送LSP;在广播网络上,IS使用组播来发送LSP。L1的LSP的目的地址是0180.c200.0014,L2的LSP的目的地址是0180.c200.0015。
IS-IS使用SNPs来进行报文收到确认和维护链路状态同步。SNPs分为两种,Partial SNPs,Complete SNPs:
PSNP是使用在点对点网络上;而CSNP是使用在广播网络上,通过使用组播来达到传送LSP确认的方式,但是它不是明确认,而是在隔了一段时间,收到一定数量的LSP后,它会发送CSNP其中包含了所收到的所有LSP的List,由它的邻接的路由器来判定是否对端路由器接收到了它的LSP。同时,假如CSNP中包含了一个LSP是自己没有的,它会发出组播的PSNP来列出自己没有的LSP,虽然是组播,但是只有DR会进行回复这种报文。类似于OSPF中的LSR和LSU的功能。
IS-IS有一种检测网络负担和路由器负担的特性,假如他发现路由器的内存不够了,或路由区域中的路由太多了,它会设置LSP的Overload bit。一旦设了,不会影响到目的地是它的报文,但是其他路由器不会通过它来转发报文。
2. Decision
IS-IS路由决定也是使用SPF算法,它把路由分为两种,Internal和External;假如有多条路由到达相同目的地时,IS-IS支持负载均衡,最多同时可以支持6条路径。
负责进行路由汇总
支持VLSM
负责计算最近的L2路由器作为到外区域的网关
3. Forwarding
4. Receive
2.PDU的功能描述
由8个Octet的报头加上CLV结构构成了PDU的基本结构,不同用途的PDU,会由不同的CLV结构构成。CLV结构目前有如下分类:
Area address:
通告源路由器所在地Area地址,并且同时有多个可以存在。
IS Neighbors(LSPs)
列出源路由器的邻居和链路信息
ES Neighbors
Partition Designated Level 2 IS
Prefix Neighbors
IS Neighbors(Hellos):
列出上次Holdtime后,源路由器地的邻居的System ID列表。而且这类报文只用在LAN LSP中(发给DR路由器),在点对点网络中没有。Level 1的路由器只发送Level 1邻居,Level 2路由器只发送Level 2邻居。
Padding:
用来填充PDU,达到最小的报文尺寸。
LSP Entries
Authentication Information
IP Internal Reachability Information
列出路由区域中直接连接到源路由器的网络IP地址
Protocols Supported:
通告源路由器是否支持CLNP或IP。
IP External Reachability Information
列出路由区域外直接连接到源路由器的网络IP地址
Inter-Domain Routing Protocol Information
在路由重分发中使用,可以使IS路由器知道外路由域的路由信息。
IP Interface Address
通告源路由器发送PDU的接口的IP地址
Hello PDU:
起到邻居发现和维护邻居关系,根据网络类型可以分为点到点和局域网两种类型。PDU的大小收到源路由器的缓存和MTU的制约。在Hello PDU传送时,答应把PDU填充到最大容量,可以使邻居之间可以隐含的得知各自邻居的MTU。这种策略可以帮助减少链路的符合,避免在低链路上负载大的交通量。
LSP PDU:
相当于OSPF的LSA的作用,其中包含了几个IS-IS特性的字节位:
P:类似于OSPF的Virtual Link的作用,支持Level 2区域被分开后打补丁用的。但Cisco不支持这种功能。
ATT:列出路由器的连接区域个数,通常上在L2 路由器使用这位来标识。
OL:是Overload功能的标识位,当路由器的负载过重,不想再接受LSP时,标识OL位来通知邻居,不要再发送LSP了
SNP(Sequence Number PDU):
用来维持IS-IS的链路数据库,分为两种,PSNP和CSNP。PSNP用在点对点网络来进行LSP的确认,用在广播网络上来进行丢失LSP或最新LSP的请求。CSNP是在广播网络中DR用来组播给邻居自己所有的LSP。
五. 配置要点
在全局模式下启用clns routing;
在每个需要被通告路由的接口上启用ip router isis;
启用router isis进程,配置NET实体;
解决Level 1路由器上要有通往Level 2或外区域路由的问题,有两种方法:
1. 在接口上配置clns router isis,使接口上的IP进程能够理解ATT位的作用,自动建立一条指向外区域的默认路由
2. 在L1/L2路由器上,配置default-information originate