IS-IS基础
IS-IS(Intermediate System-to- Intermediate System)是ISO(International Organization for Standardization)的标准协议,该协议与无连接网络服务(Connectionless Network Service, CLNS)和其它ISO路由协议一起使用。IETF也已经通过一系列RFCs将IS-IS与IP路由集成在一起。
IS-IS如何工作
IS-IS是链路状态协议,它采用最短路径优先算法(Shortest Path First, SPF或者Dijsktra)来计算通过网络的最佳路径。IS-IS提供两级路由――层次1(Level1, L1)路由区域间通过层次2(Level 2, L2)路由进行互联,L2路由域有时也被称为核心。
IS-IS用有层次的地址分配将一个自治域分为多个L1路由区域,并区分L1和L2之间的路由。同一区域内的所有节点都使用L1路由互通,不同区域里的节点之间使用L2路由互通。
IS-IS是链路状态协议,路由器向其所在区域(L1或L2)内的其它路由器扩散与之相连的链路状态,从而传递拓扑信息,每个路由器会对接收到的其它路由器发来的链路状态数据包(Link-State Packet, LSP),运用SPF算法找到网络里每个目的地的最短路径。
由于链路状态协议中的任何路由器都依赖于路由区域中所有其他的路由器,路由器的数据库里有防止路由循环的信息,所以IS-IS通常不允许对路由信息进行过滤。
端系统和中间系统
IS-IS用两个不同的hello-type协议来建立邻居和交换信息――ES-IS和IS-IS。端系统和中间系统(End System-to-Intermediate System, ES-IS)协议被路由器用来发现主机(和主机发现路由器)和交换配置信息以及将数据包重定向到更好的路径。
IS-IS协议在路由器之间建立和维护邻居(中间系统),功能上类似于OSPF里用来发现和维护邻居的hello协议。
CLNS地址
为了理解IS-IS的层次,首先需要理解CLNS地址。CLNS用网络服务接入点(Network Service Access Point, NSAP)来标识网络上的节点(主机或路由器)。
以下是一个NSAP里的典型字段列表:
NSAP选择器(NSAP Selector, NSEL)――表示一个特定主机上的用户或服务(类似于TCP或UDP端口号)。
系统ID(System ID )――表示一个单独的系统或主机。
区域地址(Area Address )――表示主机所在的L1区域。
初始域标识符(Initial Domain Identifier, IDI)――一个可变长字段,用于表示该系统所在的路由域。
权限/格式标识符(Authority Format Identifier, AFI)――一个单字节字段,用于表示该地址被分配的权限和地址的格式。
NSAP分为两部分---初始域部分(Initial Domain Part, IDP)和域特性部分(Domain Specific Part, DSP)---长度最大为20字节。NSEL、系统ID和区域地址属于DSP部分,其余的IDI和 AFI属于IDP部分。
IDP
|
DSP
--------------------------------------------------------------------------------------------
AFI
|
IDI
|
HODSP
|
AREA ID
| SID
|
NSEL
*
47.0012.00C0.A94B.51C1.00各字段的定义如下:
*
47.00---AFI和域(domain)。
*
12---区域(Area)。
*
00C0.A94B.51C1---系统ID,长度6字节。
*
00---NSAP,长度1字节。
经常看到一个00的NSAP,这表示这个系统,而不是系统的高层次实体。注意:AFI和IDI经常作为一块处理,而不是作为两个独立块分别处理。以下是这地址例子的继续:
*
从这个主机发往47.0012.xxxx.xxxx.xxxx.xx的所有信息由L1路由。
*
从这个主机发往47.00xx.xxxx.xxxx.xxxx.xx的所有信息由L2路由。
*
其它的信息需要域间路由(interdomain routed)。
对线路或链接分配IP地址,而对主机分配NSAP。因此,一个有着到多个网络的连接系统(比如路由器)会有多个IP地址(它连接的每个网络有一个),但是它只有一个NSAP。
IS-IS网络里的路由
如果一组端系统(主机)和中间系统(路由器)的NSAP具有相同的区域ID,它们连接在一起时,使用ES-IS和IS-IS组成邻居。
主机总是依靠区域内最近的L1路由器来转发所有的数据,除非这些数据被重定向。一个路由器可以用ES-IS告诉主机,对一个指定目的的数据包应向其它的L1路由器发送;也可以通过ES-IS告诉主机,直接向接收ES发送数据包(如果它们不在一个物理链路上)。
主机向最近的L2路由器发送到区域外的数据,L2路由器查看自己的数据库,找出通向区域内另一个L2路由器的路径,并转发数据。