原理概述
一个OSPF链路状态数据库是若干条LSA的集合。与此相似,一个IS-IS链路状态数据库是由若干条LSP的集合。与OSPF链路状态数据库不同,IS-IS链路状态数据库有Level-1和Level-2之分。
在IS-IS协议中,每一条LSA都有一条剩余生存时间、一个序列号和一个校验和。LSP的剩余生存时间是由最大生存时间(默认1200s)开始逐渐递减的。当一条LSP的剩余生存时间递减至0时,仍然会在链路状态数据库中继续保留60s(称为ZeroAgeLifetime),然后才会被删除。LSP的始发路由器会周期性地刷新LSP,刷新时间间隔为900s减去不超过25%的随机量。
LSP的序列号是一个32bit的整数,初始值为1,每次刷新时都会递增1。与OSPF中的LSA一样,同一条LSP,其序列号越大,表示该LSP越新,路由器总是将最新的LSP放入其链路状态数据库中。如果序列号递增至最大值时,则无法被继续刷新,但其剩余生存时间会递减至0,然后会被从链路状态数据库中删除。
LSP的校验和用于检验LSP是否在传输过程中受到损坏。当路由器收到一条包含错误的校验和的LSP时,会将其直接丢弃。
实验目的
理解IS-IS链路状态数据库的内容
掌握查看IS-IS链路状态数据库的方法
实验内容
实验拓扑如图所示。本实验模拟了一个简单的企业网络场景,Level-1路由器R1和Level-1-2路由器R2为公司部门A的网络设备,Level-2路由器R3为公司的骨干路由器。整个网络都运行IS-IS协议,R1和R2属于IS-IS区域10,R3属于IS-IS区域20,R1的Loopback 0接口模拟了部门A的内部网络,R3的Loopback 0接口模拟了公司服务器所在的网络。实验内容的重点是观察和分析R1、R2、R3上的IS-IS链路状态数据库。
实验拓扑
1.基本配置
根据拓扑图进行相应的基本配置,并使用Ping命令检测R1与R2之间的连通性。
R2和R3的连通性测试过程在此省略。
2.配置IS-IS路由协议
在R1、R2、R3上配置IS-IS路由协议,其中R1为Level-1路由器,R2为Level-1-2路由器,R3为Level-2路由器。
[r1]isis
[r1-isis-1]is-level level-1
[r1-isis-1]is-name r1
[r1-isis-1]network-entity 10.0000.0000.0001.00
[r1-isis-1]interface loopback 0
[r1-LoopBack0]isis enable
[r1-LoopBack0]int g0/0/0
[r1-GigabitEthernet0/0/0]isis enable
[r2]isis
[r2-isis-1]is-level level-1-2
[r2-isis-1]is-name r2
[r2-isis-1]network-entity 10.0000.0000.0002.00
[r2-isis-1]int g0/0/0
[r2-GigabitEthernet0/0/0]isis enable
[r2-GigabitEthernet0/0/0]isis circuit-level level-1
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]isis enable
[r2-GigabitEthernet0/0/1]isis circuit-level level-2[r3]isis
[r3-isis-1]is-name r3
[r3-isis-1]is-level level-2
[r3-isis-1]network-entity 20.0000.0000.0003.00
[r3-isis-1]int g0/0/1
[r3-GigabitEthernet0/0/1]isis enable
[r3-GigabitEthernet0/0/1]int loopback 0
[r3-LoopBack0]isis enable
配置完成后,在R2上查看IS-IS邻居信息。
可以看到,R2与R1建立了Level-1邻接关系,与R3建立了Level-2邻接关系。
在R1上以10.0.1.1为源,使用ping命令测试10.0.3.3之间的连通性。
可以看到,部门A的内部网络与服务器所在网络之间的通信是正常的,全网实现了互通。
3.查看Level-1路由器的链路状态数据库
在Level-1路由器R1上查看IS-IS链路状态数据库。
可以观察到,链路状态数据库中包含了3条LSP,以及相应的LSP ID、序列号(Seq Num)、校验和(Checksum)、生存时间(Holdtime)、长度(Length)等属性。因为R1是Level-1路由器,所以它只为Level-1维护了一个链路状态数据库。第一条LSP的LSP是Level-1路由器,所以它只为Level-1维护了一个链路状态数据库。第一条LSP的LSP ID为R1.00-00*,R1.00-00*中的R1为动态主机名。如果没有配置动态主机名时,相应的位置就是系统ID。R1.00-00*中前面的00是伪节点标识,00表示此LSP是由真实节点而非伪节点生成的。R1.00-00*中后面的00为分片号,当LSP的长度太长时,LSP会被分片,分片号的作用是为了重组被分片的LSP。R1.00-00*中的“*”表示此LSP是于本地生成的。
在R1上使用display isis lsdb verbose命令查看IS-IS链路状态数据库的详细信息。
可以看到,第一条LSP是本地生成的,LSP ID中包含了系统ID,系统是一个真实节点而非伪节点。Source为动态主机名附伪节点标识,Host Name为动态主机名,NLP ID为该LSP所支持的网络协议,此处为IPv4,表明此LSP工作在Ipv4网络中,Area Address为该LSP的区域地址(即区域ID),此处为10。INTF Addr为接口地址,描述了生成此LSP的路由器所拥有的接口的IP地址,此处为10.0.1.1和10.0.12.1。NBR ID为邻居的系统ID附伪节点标识,Cost为去往邻居的开销值。IP-Internal为区域内IP路由信息,描述网络前缀和掩码,以及Cost信息。需要注意的是,第三条LSP是伪节点产生的。
4.查看Level-1-2路由器的链路状态数据库
在Level-1-1路由器R2上查看IS-IS链路状态数据库。
可以看到,R2为 Level-1和 Level-2分别维护了一份链路状态数据库,另外,其中的 Level-1链路状态数据库中的 LSP 条目与 Level-1路由器R1的链路状态数据库中的 LSP 条目完全相同,这表明 Level-1链路状态数据库在R1和R2上完成了同步。
在R2上使用命令 display isis lsdb level-1 verbose 查看 Level-1链路状态数据库的详细信息。
观察发现,在R2的 Level-1链路状态数据库中,除了用于标识本地生成的 LSP 的"*"之外,内容上与R1的 Level-1链路状态数据库完全相同。
在R2上使用命令 display isis lsdb level-2 verbose 查看 Level-2链路状态数据库的详细信息。
观察发现,在 Level-2链路状态数据库中, LSP 的格式与在 Level-1链路状态数据库中并没有区别。 Level-1链路状态数据库与 Level-2链路状态数据库的最主要区别在于:Level-1链路状态数据库中的 LSP 的区域 ID 彼此都相同,而 Level-2链路状态数据库中的 LSP 的区域 ID 彼此可以不同。
5.查看 Level-2路由器的链路状态数据库
在 Level-2路由器R3上查看 IS-IS 链路状态数据库。
可以看到,Level-2路由器R3为Level-2维护了一份链路状态数据库,其中的LSP条目与R2中的Level-2链路状态数据库中的LSP条目相同。
在R3上查看IS-IS链路状态数据库的详细信息。
可以看到,R3的Level-2链路状态数据库与R2的Level-2链路状态数据库完全相同。