IS-IS路由协议

IS-IS是最初在ISO / IEC标准10589:2002中指定的链路状态路由协议 ,最初是为OSI网络创建的。在内部,它使用与开放式最短路径优先(OSPF)相同的Dijkstra最短路径优先(SPF)算法。IS-IS使用所谓的网络服务访问点(NSAP)寻址来识别单个路由器,它们的区域成员资格及其邻接关系。

IS-IS旨在根据OSI路由层次结构提供Level1一级(区域内)和Level2二级(区域间)路由。除此之外,IS-IS不会在任何网络层协议上运行;而是将其消息直接封装到数据链接帧中。IS-IS消息中的邻接和寻址信息被编码为Type-Length-Value(TLV)记录,从而提供了出色的灵活性和可扩展性。

本文从IS-IS保留的网络中的NSAP寻址开始。之后,文章讨论IS-IS路由级别。

NSAP寻址

端到端通信需要在网络层上寻址。在OSI网络中使用的无连接和面向连接模式下的寻址都称为NSAP寻址,首字母缩写代表网络服务访问点,代表网络中特定网络节点上特定网络服务的地址。

NSAP寻址与TCP / IP网络中的寻址有很多差异。NSAP地址分配给整个网络节点,而不是分配给其各个接口。在一个公共设置中,单个节点仅需要一个NSAP地址,而不管它使用了多少个网络接口。

结果,NSAP寻址不具有类似于IP子网的每个接口子网的概念。可以在IPv6网络中创建一个近似的类比,方法是为每个节点仅为其全局接口分配一个全局IPv6地址,使所有物理网络接口仅使用 IPv6链路本地 地址运行,并在所有环回和物理链路上运行路由协议允许所有节点了解彼此的全局地址及其指向的路径。

前面的图显示了NSAP地址的基本格式。从较高的角度来看,NSAP地址由两部分组成:

  • 初始域部分(IDP)
  • 域特定部分(DSP)
NSAP地址

这两个部分的内部格式和长度在很大程度上是可变的,并且取决于使用NSAP寻址的实际应用。结果,NSAP地址的长度可变。

IDP本身包含两个字段:授权和格式标识符(AFI)和初始域标识符(IDI)。AFI值(00到FF范围内的1个八位位组)指示剩余地址字段的格式。

IDI字段的长度可变,具体取决于AFI指示的地址格式,甚至可以省略。AFI和IDI一起指示节点所在的路由域(自治系统)。

DSP的格式再次取决于特定的地址格式。但是,至少在通常的方法中,DSP由可变长度的高阶域特定部分(HO-DSP)组成,该部分标识节点所在域的部分(或区域)。

该字段可以进一步构造为子字段。系统ID是节点本身的唯一标识符。虽然NSAP允许此字段的长度为1到8个八位位组,但所有当前的实现方式都将系统ID字段的长度固定为6个八位位组。

NSAP寻址中的SEL字段

SEL字段或NSAP选择器(NSEL)是一个1字节长的字段,用于标识目标节点上应处理数据报的网络层之中或之上的特定服务。IP世界中的一个大致类比是IP之上的特定协议或传输端口。

下表列出了一些最常用的NSAP地址格式。

NSAP地址格式

在每种AFI类型中,HO-DSP(区域编号)都可以进一步内部构造。但是,这些细节此时不相关。在典型的IS-IS部署中,寻址使用49的AFI,其中HO-DSP字段的长度和含义完全取决于管理员。

尽管这种寻址系统可能被认为是复杂且可能繁琐的,但它仍然非常灵活并且可以适应各种枚举方法。

NSAP地址的最小大小为8个八位位组-仅存在AFI,系统ID和SEL字段。NSAP最大地址大小为20个八位位组。SEL八位位组值得特别提及。如前所述,它用于将数据报寻址到目标节点上的特定服务。

例如,SEL值为22或1D表示OSI TP4传输层协议(不同的供应商似乎使用不同的SEL值)。2F值表示GRE IP-over-CLNP隧道。

具体来说,如果SEL八位位组的值为0,则不对特定服务进行寻址,并且整个NSAP地址仅标识目标节点本身,而无需引用该节点上的任何特定服务。SEL字节设置为0的NSAP地址称为网络实体标题(NET),这是在节点上配置的地址。NET的配置将是IS-IS配置的必需部分。

概括而言,可以认为NSAP地址在单个实例中包含有关目的地的自治系统,区域,唯一标识符甚至所请求的上层服务的信息。

NSAP地址的书面格式

NSAP地址的书面格式使用十六进制数字,并用点将其分成一个或多个八位字节的组。通常,为了获得更好的可读性,AFI值(1个八位字节; 2个十六进制数字)立即用点分隔,而NSAP地址的其余部分则简单地写在两个八位字节组中,例如49.0001.1234.5678.3333.00。

在该地址中,AFI为49, 本地地址为0001, 区域号;1234.5678.3333是节点的系统ID,尾随的00是SEL值,因此此NSAP地址也是NET。但是,点的使用是任意的,只要它可以分隔整数字节长度的组即可。因此,以下所有符号表示相同的地址:

49.0001.1234.5678.3333.00
4900.0112.3456.7833.3300
49.00.01.12.34.56.78.33.33.00
49000112.34.5678.33.3300
49000112345678333300

NSAP地址通常更容易从右到左读取。在NSAP地址49.0001.1234.5678.3333.00中,最右边的八位位组是SEL值(00),以下六个八位位组是系统ID(1234.5678.3333),其后是其他HO-DSP八位位组(0001),IDI(不存在)在此NSAP中),并以最左边的八位位组AFI(49)结尾。

要使用NSAP寻址可视化网络,请考虑下图所示的拓扑。

使用NSAP寻址的网络

上图中的寻址再次使用本地NSAP空间,由AFI值49表示。为提高可读性,NSAP地址的系统ID部分已在图中加下划线。

请注意,网络中的所有节点都在同一区域0001中。每个节点都有唯一的系统ID。由于没有子网的概念,因此两个网络之间的路由是由每个IS组装所有连接的ES节点的列表并将其通告给其邻居来完成的。

在网络层没有为各个接口分配其自己的地址。但是,它们的第2层地址的使用方式与TCP / IP网络使用它们的方式相同:路由数据包时,会将其封装到寻址到由其第2层地址标识的下一个直接连接的跃点的帧中。在OSI网络中,接口的第2层地址称为子网连接点(SNPA)。

IS-IS中的路由级别

IS-IS网络中的路由具有层次结构或级别的概念,具体取决于执行路由的网络范围。定义了四个路由级别:

  • Level 0级别0路由:同一链路上的两个ES节点之间或ES节点与其最近的IS之间的路由
  • Level 1一级路由:域的单个区域中的ES节点之间的路由
  • Level 2二级路由:域中不同区域的ES节点之间的路由
  • Level 3三级路由:不同域中的ES节点之间的路由

Level 0

级别0路由与ES(终端节点)发现其最近的IS(网关)的方式有关,反之则与IS如何知道与其连接的ES节点有关。这是通过ES和IS发送定期的Hello消息来通告它们的存在来完成的。适当命名的ES节点发送的Hello称为ES Hello(ESH),而IS节点发送的Hello称为IS Hello(ISH)。 

级别0路由也称为ES-IS路由(公开可用的标准ISO 9542中涵盖了ES-IS协议)。在基于IPv6的网络中,级别0路由与发送路由器通告消息的路由器大致相似,允许工作站检测其存在,并且主机发送邻居通告,尽管邻居通告不是定期发送的。

Level 1一级

级别1路由与区域内路由有关,即,属于同一区域的ES节点之间的路由。区域的通常含义是:区域的管理分区,就链路状态路由而言,区域中的IS节点将具有整个区域拓扑的详细而完整的可见性。

在级别1上,IS节点收集直接与其相连的所有ES节点的列表,并相互通告这些列表以了解所有ES节点的位置。

Level 2二级

级别2路由与同一域内的区域间路由有关,即,位于同一域不同区域中的ES节点之间的路由。在级别2上,IS节点不再通告已连接的ES节点的列表。相反,在此级别中,IS节点交换区域前缀以了解如何到达特定区域。

如果Level1一级IS确定数据包的目标ES在不同的区域中,则它将把数据包转发到能够进行Level2二级路由的最近IS,而与目标区域无关。

然后,该数据包将由具有第Level2二级功能的IS节点转发,直到到达带有目标ES的区域,然后再由第Level1一级IS节点转发该数据包。因此,级别1路由可以描述为按系统ID的路由,而级别2路由可以描述为按区域前缀的路由。

Level2二级路由构成了域的主干,在域的各个区域之间提供了通信。

Level 3级

3级路由与域间路由有关。在TCP / IP世界中,这是边界网关协议(BGP)提供的自治系统间路由的相当直接的类比。在OSI网络中,最初打算使用的路由协议是域间路由协议(IDRP,  ISO 10747)。

但是,由于BGP是一种多协议域间路由协议,也能够承载有关NSAP地址的信息,因此当今的OSI网络正在用BGP代替IDRP。

IS-IS指标和邻接

IS-IS度量标准已分配给各个接口(链接)。原始的IS-IS规范定义了四种类型的指标:

  • 默认值:要求所有IS-IS实现都支持;通常与链接的带宽有关(较高的值表示较慢的链接)
  • 延迟:与链路上的传输延迟有关
  • 开销:与通过链接携带数据的金钱成本有关
  • 错误:与链接的剩余误码率有关

这些指标中的每一个都旨在在SPF计算中进行独立评估,从而有效地产生了四个独立的最短路径树(并因此生成了路由表),每个树都根据特定的指标进行了计算。今天,大多数IS-IS实现仅支持默认指标。

Cisco IS-IS实施将所有接口的默认度量标准分配为10,而不管其带宽如何。与OSPF实施相反,Cisco IOS不会自动将接口的带宽重新计算为其IS-IS指标。如果需要,管理员可以使用isis metric metric [level] per-interface命令配置不同的接口指标。可以配置其他类型的度量,但是在IS-IS通告中被通告为不支持。

最初的IS-IS规范将任何单个接口(链路)和连接的网络度量标准定义为6位宽,结果范围为1–63,而完整路径度量标准则为10位宽范围为1–1023。原始指标被追溯命名为狭窄指标。强烈建议在可用和受支持的情况下使用广泛的指标;但是,区域中的所有路由器必须使用相同类型的度量标准。

IS-IS路由器在每个路由级别上独立运行。对于每个路由级别(级别1或级别2),IS-IS路由器都与邻居在同一级别上运行建立单独的邻接关系,并维护单独的链路状态数据库。配置为Level1一级路由的路由器仅与也配置为Level1一级路由的那些邻居建立邻接关系。

同样,配置为Level2二级路由的路由器仅与也配置为Level2二级路由的邻居建立邻接关系。

Level1一级IS-ISI路由器不会与Level2二级路由器建立邻接关系。为级别1和级别2路由配置的两个相邻路由器将创建两个独立的邻接关系,每个邻接关系一个。另外,由于每个路由器都属于一个区域(请注意,通常在路由器上仅配置一个NET,并且NET带有区域标识符),因此仅在具有相同区域标识符的路由器之间创建Level1一级邻接关系。

下表记录了相邻路由器级别的不同组合产生的邻接关系。

IS-IS路由器之间的邻接关系

IS-IS路由器针对其操作的每个路由级别维护一个单独的链路状态数据库。对于每个启用的级别,路由器都会发起并泛洪链路状态PDU(LSP;不要与标签交换路径混淆,这是MPLS中使用相同首字母缩写词的无关术语)。

LSP类似于具有一个或多个链接状态公告的OSPF链接状态更新数据包。IS-IS路由器使用Level1一级和Level2二级LSP来描述其在特定级别上的邻接关系。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁