跟IPv4网络一样,IPv6报文需要使用路由技术来指导报文的转发,我们所了解的在IPv4网络中应用的路由技术有静态路由、OSPF、IS-IS、 BGP等,这些路由技术同样适应于IPv6网络。IS-IS 协议本身是基于TLV结构的,具备天然的扩展性特点,很方便地实现了对IPv6网络的支持。使用IS-IS可以很准确和迅速地发现和计算IPv6路由,为IPv6业务流的转发提供了有力的保障,能支持IPv6网络的IS-IS路由协议又称为IS-ISv6路由协议。
IS-ISv6 的运行机制和IPv4版本的IS-IS是一致的,这个笔记内容只记录了IS-ISv6引入的新机制及特性。
和OSPF不同,由于IS-IS是通过TLV字段实现具体的功能,所以不需要专门像OSPF一样重新定义LSA,仅需要新增加TLV字段来携带IPv6的信息即可。为了支持IPv6路由的处理和计算,IS-IS新增了两个TLV(Type-Length-Value)和一个 新的NLPID (Network Layer Protocol Identifier)。
一、IPv6 可达性TLV
IPv6可达性TLV(类型236)携带了源路由器可以到达的IPv6的网络前缀及路径开销信息,这个TLV可同时用于通告内部和外部路由。这里携带的网络前缀可以是源路由器上启用了IS-IS 协议的直连接口上连接的网络,也可以是源路由通过邻居路由器学习到的网络,该TLV的格式如图所示:
主要字段解释:
二、IPv6 接口地址TLV
IPv6接口地址TLV用于携带源路由器所有启用了IS-IS协议的接口的地址。这个TLV同时存在于Hello和LSP报文中,Hello 报文的IP接口TLV填充的是发送接口的链路本地地址,LSP 报文中的IP接口地址TLV填充的是所有IS-IS接口的全球单播地址。下图显示了一份LSP报文中IPv6接口地址TLV的格式,可以观察到,发送这份报文的路由器有三个IPv6接口使能了IS-IS 协议:
三、支持的NLPID TLV
NLPID是标识网络层协议报文的一个8比特字段, IPv6的NLPID值为142 (0x8E)。如果IS-IS支持IPv6,那么向外发布IPv6路由时必须携带NLPID值。下图显示了Hello报文携带了IPv6的NLPID:
目的:
在现网中,往往会通过同一套IP网络基础设施来提供多种不同的网络服务,比如络同时支持IPv4和IPv6服务。虽然IPv6成为主流技术已经是大势所趋,但是为了节设备和运营成本,没有必要为IPv6单独建立一-张网络,而是在网络中将现有的IPv4逐渐过渡到IPv6,所以在很长一段时间,网络中会是IPv4和IPv6共存的局面。
由IPv4过渡到IPv6的技术主要有双协议栈和隧道,其中,双协议栈是指设备同时支持IPv4和IPv6两个协议族,它可以和只支持IPv4或IPv6协议的设备建立通信。
网络中如果同时存在IPv4和IPv6服务,这时不同协议的数据包转发路径就得分计算,否则会带来一些问题。而IS-IS协议通过IPv6扩展的TLV一起携带IPv6和IPv4的路由拓扑信息,也就是说IPv4和IPv6使用的是相同的最短路径,这时数据包在转过程就可能出现问题,比如IPv6数据包有可能被转发到不支持IPv6的设备或链路而丢弃。同样,存在不支持IPv4的路由器或链路时,IPv4报文也无法转发。IETF有关IS-IS多拓扑的草案就是针对上述情况而提出的。
原理:
IS-IS多拓扑模式允许IS-IS在单个区域或整个路由域内计算和维护多个独立的拓扑,比如IPv4拓扑和IPv6拓扑。每个拓扑都使用自己的独立的SPF进程计算和维护路由信息,这种特性打破了单拓扑模式的一些限制,比如路由器的接口可以配置不同协议的地址,每个接口可支持不同的网络层协议。并且在多拓扑模式下,可以分别为IPv4和IPv6单独定义不同的度量值,注意,多拓扑模式下必须使用宽度量,因为IPv6 仅支持宽度量。
在单个区域或整个路由域内的路由器必须使用相同的拓扑模式,要么单拓扑模式,要么多拓扑模式。运行在多拓扑模式下的路由器不能识别运行单拓扑模式的路由器具有支持IPv6的属性,因此会导致IPv6的路由黑洞。
如图所示,R1、 R3和R4均支持IPv4和IPv6, R2只支持IPv4,不能转IPv6报文。图中链路上的数字表示开销值。如果R1不支持IS-IS MT,进行SPF计算时只考虑单一的整体拓扑,则R1到R3的最短路径是R1→R2→R3,但由于R2不支持IPv6,所以R1发送的IPv6报文将无法通过R2到达R3。
当R1向R3发送的是IPv4报文时,则可以使用该路径正常转发到R3,如图所示:
如果在R1上使能了IS-IS MT,那么此时R1在进行SPF计算时会根据不同的拓扑分别计算。当R1需要发送IPv6报文给R3时,R1只考虑IPv6链路来确定IPv6报文转发路径,则R1→R4→R3 路径被选为从R1到R3的IPv6最短路径。IPv6 报文被正确转发。当R1需要发送IPv4报文给R3时,R1根据SPF计算结果,使用的是R1→R2→R3,如下图所示:
MT ID和TLV:
MT ID:
多拓扑ID (MT ID)用来标识不同的拓扑,一般是接口上配置的,一个接口可以属于一个或多个拓扑。在点对点网络中,要求链路上的两台路由器具有相同的MT ID才能形成邻接关系;而在广播网络中,邻接关系的建立跟接口上的MT ID是没关系的。在LSP中携带路由拓扑信息时,会标记具体的MT ID,以使SPF算法能够区分出这些信息是来自哪个拓扑的。在路由器上会为每个拓扑计算和维护独立的路由表。下表列出了用于IS-IS的MT ID及其代表的含义,目前仅支持MT ID#O和MT ID#2。
TLV:
为支持多拓扑特性,IS-IS 扩展出了新的TLV:
实验背景:
R1和R2建立ISISv6邻接关系,并且R2能够学习到R1的L0接口地址。
在R1上:
首先全局开启IPv6,然后在ISIS中正常配置即可
isis 1
is-level level-2
network-entity 49.0001.0000.0000.0000.0002.00
进入接口开启IPv6,然后使能ISIS ipv6
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local //需要生成一个本地链路地址,不需要全球单播地址,和OSPFv3相同
isis ipv6 enable 1
isis circuit-level level-2 //只发送level-2的报文,建立level-2的邻居关系,优先级大于全局配置
创建一个回环口,通告进入ISIS
interface LoopBack0
ipv6 enable
ipv6 address 2001::1/64
isis ipv6 enable 1
在R2上:
isis 1
is-level level-2
network-entity 49.0001.0000.0000.0000.0001.00
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
isis ipv6 enable 1
isis circuit-level level-2
isis dis-priority 100 //设置优先级(0-127)越大越优先,成为DIS
查看命令:
执行display isis peer [ verbose ] [ process-id | -instance -instance-name ]命令,查看IS-IS的邻居信息。
执行display isis interface [ verbose ] [ -instance -instance-name ]命令,查看使能了IS-IS的接口信息。
执行display isis route [ process-id | -instance -instance-name ] ipv6 [ verbose | [ level-1 | level-2 ] | ipv6-address [ prefix-length ] ] *命令,查看IS-IS的路由信息。
整理资料来源:华为Hedex文档、HCIE路由交换学习指南