0.拓扑与基础配置
0.1拓扑
0.2部分配置
R1:
#
isis 1
is-level level-1
network-entity 49.0001.0000.0000.1111.00
is-name AR1
#
interface GigabitEthernet0/0/1
ip address 10.1.12.1 255.255.255.0
isis enable 1
#
interface NULL0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
isis enable 1
其它路由器配置参照图示及R1即可。
1.IS-IS的概念
1.1基础概念
NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。NSAP包括IDP及DSP。
IDP(Initial Domian Part)相当于IP地址中的主网络号。它是由ISO规定,并由AFI(Authority and Format Identifier)与IDI(Initial Domain Identifier)两部分组成。AFI表示地址分配机构和地址格式,IDI用来标识域。
DSP(Domian Specific Part)相当于IP地址中的子网号和主机地址。它由High Order DSP、System ID和SEL三个部分组成。High Order DSP用来分割区域,System ID用来区分主机,SEL(NSAP Selector)用来指示服务类型。
NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP(SEL为00的NSAP)。
1.2 IS-IS区域划分
(1)Leve1路由器部署在非骨干区域。
(2)Leve2路由器、Leve-1-2路由器部署在非骨干区域。
(3)非骨干区域通过Leve-1-2路由器与骨干区域相连。
1.3 IS-IS路由器分类
L1路由器:
(1)L1路由器是区域内部路由,只与本区域内的L1和L1/2路由器形成邻接关系。
(2)L1路由器无法与L2路由器建立邻接关系。
(3)L1路由器只负责维护L1的状态数据库,只包含本区域路由信息。
(4)L1路由器必须通过L1/2路由器接入IS-IS骨干区域从而访问其它区域。
L2路由器:
(1)L2路由器是骨干路由器,可与同区域或不同区域L2或者L1/2路由器形成邻接关系。
(2)L2路由器维护一个Leve2的LSDB,包含整个IS-IS域的所有路由信息。
(3)所有L2级别路由器组成骨干网,负责不同区域间通信。L2级别路由器必须是物理连续,保证骨干网的连续性。
L1/2路由器:
(1)L1/2路由器也是IS-IS骨干网络的组成部分。
(2)L1/2路由器维护两个LSDB,L1 的LSDB用于区域内路由,L2用于区域间路由。
(3)L1/2路由器可以与同区域L1路由器和L1/2路由器形成L1邻接关系。也可以与其他区域的L2和L1/2路由器形成L2邻接关系。
1.4 IS-IS支持的网络类型
IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两种类型的网络:
广播(Broadcast): 如Ethernet。
点到点(P2P): 如PPP、 HDLC等。
1.5 IS-IS开销
IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。然而与OSPF不同的是,IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,缺省时Cost为10。
一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和。
1.6 IS-IS报文格式
IS-IS报文是直接封装在数据链路层的帧结构中的。
PDU(Protocol Data Unit,协议数据单元)可以分为两个部分,报文头(IS-IS Header)和变长字段部分(Variable Length Fields )。
其中IS-IS Header又可分为通用头部(PDU Common Header)和专用头部(PDU Specific Header)。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。
1.7 IS-IS报文类型
IS-IS的PDU有4种类型:IIH(IS-IS Hello),LSP( Link State PDU,链路状态报文),CSNP(Complete Sequence Number PDU,全序列号报文),PSNP(Partial Sequence Number PDU,部分序列号报文)。
**IIH:**用于建立和维持邻接关系, 广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH; 广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH; 点到点网络中则使用P2P IIH。
**LSP:**用于交换链路状态信息。LSP分为两种,Level-1 LSP、Level-2 LSP。
**SNP:**通过描述全部或部分链路数据库中的LSP来同步各LSDB,从而维护LSDB的完整与同步。SNP包括CSNP和PSNP,进一步又可分为Level-1 CSNP、 Level-2 CSNP、 Level-1 PSNP和Level-2 PSNP。
2.IS-IS的工作原理
2.1邻接关系建立
2.1.1 IS-IS邻接关系建立原则
(1)只有同一层次的相邻路由器才有可能成为邻接。
(2)对于L1路由器来说,Area ID必须一致。
(3)链路两端IS-IS接口的网络类型必须一致。
(4)链路两端IS-IS接口地址必须处于同一网段。
2.1.2 广播网邻接关系建立过程
广播网络中,使用三次握手建立邻接关系。
(1)Down
R1发给R2的IIH,报文中没有邻接列表:
(2)Initial
R2收到报文后,将R1状态标识为Initial。R2再向R1回复L1 LAN IIH,并标识R1为邻接(用mac标识)。
(3)Up
R1收到报文,将自己与R2的状态标识为up。然后再向R2发送L1 LAN IIH,并标识邻接为R2.
R2收到R1的报文,将R1标识为up。
2.1.3 DIS与伪节点
在广播网络中,IS-IS需要在所有的路由器中选举一个路由器作为DIS(Designated Intermediate System)。
DIS用来创建和更新伪节点(Pseudonodes),并负责生成伪节点的LSP,用来描述这个网络上有哪些网络设备。伪节点是用来模拟广播网络的一个虚拟节点,并非真实的路由器。在IS-IS中,伪节点用DIS的System ID和Circuit ID(非0值)标识。
Level-1和Level-2的DIS是分别选举的,用户可以为不同级别的DIS选举设置不同的优先级。
DIS的选举规则如下:
DIS优先级数值最大的被选为DIS。
如果优先级数值最大的路由器有多台,则其中MAC地址最大的路由器会成为DIS。
查看R1的邻居,邻居AR2的Circuit ID为AR2.02,说明AR2为DIS,且伪节点ID为AR2.02。
查看R1的isis lsdb,LSPID和AR2相关的有3个。AR2.00-00,为物理路由器ID。AR2.01-00,伪节点ID(与AR4的广播网的伪节点)。
AR2.02-00,伪节点ID(与AR1的广播网的伪节点)。
2.1.4 点到点网络中邻接关系建立过程
点到点网络中,邻接关系的建立使用两次握手方式:只要路由器收到对端发来的Hello报文,就单方面宣布邻接为Up状态,建立邻接关系。
两次握手机制存在明显的缺陷,华为设备在点到点网络中使用IS-IS时,默认使用三次握手建立邻接关系。此方式通过三次发送P2P IIH最终建立起邻接关系。
(1)Down。
R2发送P2P IIH给R3,不包含对方信息。
(2)Init。
R3收到R2的P2P IIH,将对方状态置位Init,给R2发送IIH,包含对方的SystemID。
(3)Up。
R2收到R3的P2P IIH,将对方状态置为up。给R3发送IIH,包含对方的SystemID。
R3收到后,发现包含自己的信息,将R2也置为up。
2.2链路状态数据库同步
2.2.1 LSP
IS-IS链路状态报文LSP用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。
两类LSP有相同的报文格式。
2.2.2 IS-IS的LSDB
(1)AR1、AR2、AR3、AR4表示System-ID,这里用名称表示。
(2)AR2.00、AR2.01、AR2.02中.00是伪节点标识,.00表示不是伪节点,.01、.02为伪节点。
(3)-00为分片号。
(4)*表示是自己产生的LSP。
查看非伪节点的LSP:
非伪节点的LSP包含:
(1)端口信息。(2)邻接信息(3)网段信息(路由信息)
查看伪节点的LSP:
包含:(1)广播网络中所有IS-IS路由器。(2)到达路由器的Cost值为0.
2.2.3 CSNP
CSNP包含该设备LSDB中所有的LSP摘要,路由器通过交互 CSNP来判断是否需要同步LSDB。
在广播网络上,CSNP由DIS定期发送(缺省的发送周期为10秒)。
Source ID:发出CSNP报文的路由器的System ID。
Start LSP:CSNP报文中第一个LSP的ID值。
End LSP ID:CSNP报文中最后一个LSP的ID值。
在点到点网络上,CSNP只在第一次建立邻接关系时发送。
2.2.4 PSNP
PSNP只包含部分LSP的摘要信息(与CSNP不同):
(1)当发现LSDB不同步时,PSNP来请求邻居发送新的LSP。
(2)在点到的网络中,当收到LSP时,使用PSNP对收到的LSP进行确认。
2.3 路由计算
2.3.1 L1路由器的路由计算
L1路由器只维护区域内L1 LSDB,R1,R2,R3,R4均属于49.0001区域,且均属于L1路由器。
R3和R4是本区域的L1/2路由器,他们向该区域下发的L1 LSP中设置ATT标志位,告诉本区域的路由器,通过自己可以到达其它区域。
R1、R2路由器会根据ATT标志生成默认路由,并指向R3和R4。
2.3.2 L1路由器的次优路径问题
我们首先将R3与R5互联的端口S1/0/1接口带宽改为50.
此时R2到5.5.5.5有两条路:
(1)R2-R3-R5。cost值为10+50=60。所以这条路由为次优路径。
(2)R2-R4-R5。cost值为10+10=20。所以这条路由为最优路径。
但是在R2上去往5.5.5.5将使用默认路由(2条等价默认路由,cost值为10):
在R2上tracert,R2选择的正好是次优路径。
2.3.3 路由渗透
上面出现了次优路径问题,是默认路由导致的,如果R4将去往5.5.5.5的明细路径发给R2,那么R2将选择R4去往R5。
通过路由渗透可实现。
在R4上:
定义一个前置列表:
将L2路由渗透到L1:
在R2上查看路由表,多出一个5.5.5.5的明细路由:
2.3.4 L1/2路由器的路由计算
(1)R3、R4维护L1 LSDB,计算出去Area 49.0001的路由。
(2)R3、R4维护L2 LSDB,计算出去Area 49.0002的路由。
(3)R3、R4将去往Area 49.0001的路由以L2 LSP的形式发送到Area 49.0002。
在R5上查看:
2.3.5 L2路由器的路由计算
R5 只维护L2 LSDB,计算出去往各个网段的路由。