ISIS区域内、区域间计算
如果将广播型网络改变为P2P网络:
则报文封装IEEE802.3的格式帧 目标MAC地址为0900-2b00-0005而 P2P 网络呢,就像是社区里的两个人在单独打电话,他们之间的对话只有他们自己能听到,不会让整个社区的人都知道。
那这个目标 MAC 地址 0900-2b00-0005 呢,就好比是这两个人在打电话时,他们约定好的一个特殊的 “暗号”。这个 “暗号” 是 IS-IS 协议在 P2P 网络中用来识别和交流的一个特定标识。
比如说,社区里有一些人是专门送快递的(就像 IS-IS 协议在网络中负责传输特定的信息),他们之间传递快递信息的时候,就会用这个特殊的 “暗号” 0900-2b00-0005 来表示这是他们之间需要处理的重要信息,只有看到这个 “暗号” 的送快递的人(也就是运行 IS-IS 协议的设备)才会去处理这个信息,而其他不是专门送快递的人(不运行 IS-IS 协议的设备)就不会去管这个信息。
LSP条目的处理:
1.先比较序列号,值越大越优先
2.序列号相等,查看Age时间值
1.如果age不等于0,则不做比较
2.如果age等于0,则表示撤销一条LSP
3.如果age不等于0,查看chksum
chksum值越大越优先
- 保活时间 **=0 秒 ** → 选它!(这是 “撤销声明”,直接让旧信息失效);
- 保活时间**≠0 秒** → 进入下一步比 “校验和”。
1. 先比较序列号,值越大越优先
可以把序列号想象成 “报告的版本号”。
比如:
- 设备 A 第一次发 “路况报告”,序列号是 1;
- 过了一会儿,路况变了,设备 A 更新报告,序列号变成 2;
- 其他设备收到这两个报告时,会自动选序列号大的(版本 2),因为它是更新的信息。
原理:序列号每次更新都会 + 1,越大说明信息越新,所以优先用新的。
2. 序列号相等时,看 Age(老化时间)
如果两个报告序列号一样(版本相同),就看 “报告的有效期”:
- 如果 Age≠0:说明报告还在有效期内,此时不用比较 Age(因为有效期内的同版本报告内容一致,没必要再比)。
- 如果 Age=0:说明这份报告已经 “失效作废” 了(相当于设备主动撤回这条信息)。比如设备 A 之前报告 “某条路通”,后来这条路断了,它就会发一个 Age=0 的同序列号报告,告诉大家 “之前那条信息作废了”。
3. Age≠0 时,看 Checksum(校验和)
如果序列号相同,且报告都在有效期内(Age≠0),就用 Checksum 来判断。
可以把 Checksum 想象成 “报告内容的指纹”:
- 内容完全一样的报告,指纹(Checksum)相同;
- 哪怕内容有一点点差别(比如路况细节改了),指纹就会变,而且通常新的指纹值会更大。
所以当两个报告版本相同、都有效,但内容可能有差异时,就选 Checksum 大的,因为它代表内容更新(或者说,协议规定用这种方式区分微调后的同版本报告)。
区域内如何计算拓扑与路由?
1.根据学习到的LSP,分析所有链路状态
[AR1]dis isis lsdbLevel-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
每条LSP的标识 序列号 校验和 保持时间 长度 功能bit
-------------------------------------------------------------------------------
0000.0000.0001.00-00* 0x0000000a 0x84fb 1190 102 0/0/00000.0000.0001 .00 -00 *
system-id 伪节点标识符 分片标识符 自身产生标识
伪节点标识符:如果为 .00 则标识该LSP为实节点LSP;如果为 .非0 则表示伪节点LSP
分片标识符:如果为 -00 则表示为不分片的LSP;如果为 -非0 则表示LSP分片
[AR1]display isis lsdb 0000.0000.0001.00-00 verbose 查看LSP的明细Database information for ISIS(1)
--------------------------------Level-1 Link State Database
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0000.0000.0001.00-00* 0x0000000c 0x865d 938 113 0/0/0
SOURCE 0000.0000.0001.00 AR1设备的实节点LSP
NLPID IPV4
AREA ADDR 49.0001
INTF ADDR 10.1.12.1 自身的接口地址
INTF ADDR 1.1.1.1 自身的接口地址
INTF ADDR 10.1.13.1 自身的接口地址
NBR ID 0000.0000.0002.00 COST: 10 邻居system-id标识,拓扑信息
NBR ID 0000.0000.0003.01 COST: 10 邻居system-id标识,拓扑信息
IP-Internal 10.1.12.0 255.255.255.0 COST: 10 自身的路由信息
IP-Internal 1.1.1.1 255.255.255.255 COST: 0 自身的路由信息
IP-Internal 10.1.13.0 255.255.255.0 COST: 10 自身的路由信息
ISIS是拓扑 与 路由 分离的结构,单纯的路由变化 不会影响拓扑的结构
OSPF是拓扑与路由不分离的结构,如果1类、2类LSA 路由变化,则会重新计算拓扑
2.如何计算区域内的拓扑信息?
通过SPF算法
3.如何计算区域内的路由信息?
SPF算法计算出 拓扑树后,直接将路由信息当作叶子 挂载在拓扑节点上
所有的链路开销默认都为10,路由的开销是迭加计算的
区域间如何计算路由?
1.L2设备如何计算L1设备的路由信息?
L1/2设备会将L1的路由信息 当作叶子 挂载在自身产生的L2-LSP上
路由信息挂载时,会携带明细的开销值
从L2设备视角看,该路由相当于是L1/2设备的路由信息2.L1设备如何计算L2设备的路由信息?
L1设备组成的非骨干区域类似于OSPF的特殊区域
即L1设备通过缺省路由访问L2设备的路由信息
*L1设备的缺省路由如何得到?
L1设备收到L1/2设备产生的L1-LSP中 ATT bit置位为1
*L1/2的L1-LSP中ATT bit如何置位?
1.产生该L1-LSP的设备一定是 L1/2设备
2.L1/2设备存在L2的邻居关系
3.L1/2设备收到不同区域的L2-LSP
[AR1-isis-1]attached-bit avoid-learning 在L1设备上设置不根据ATT bit计算缺省路由
[AR2-isis-1]attached-bit advertise never 在L1/2设备上设置通过的L1-LSP不会将ATT bit置位
需要注意的是:AR2的G0/0/1口如果是L2这样它的叶子节点是不会挂载到AR2上去的,只有当AR2的G0/0/1口是L1-2的时候才会挂上去,因为有L1,此时pingAR4的G0/0/0口是可以通信的但是ping AR4的4.4.4.4不会通信,因为AR4(L1/2)没有设备收到不同区域的L2-LSP,ATT不会置位为1,所有AR1不会产生缺省路由
L1访问L2设备路由信息的次优问题:
L1设备通过ATT bit计算的缺省路由开销,都是到达L1/2设备的开销(只能计算到到达L1/2设备的开销,计算不了L1-2后面连接设备的开销,这样就导致了次优)
没有L2设备路由的明细开销,容易出现次优路径如果解决次优路径?
1.修改链路开销
2.设置ATT bit 不置位(会影响备份链路的生成,不建议使用)
3.管理员手工配置静态路由,修改优先级值
*次优路径的形成,是因为计算了到达L1/2设备的缺省路由
如果通过明细路由访问,就不会存在次优了
*如何让L1设备学习L2设备的明细路由?
通过路由渗透实现
*什么是路由渗透?
就是L1/2设备上 执行L2路由 引入到 L1
[AR2-isis-1]import-route isis level-2 into level-1
多台L1/2设备,都要执行渗透路由渗透会存在什么问题?
当L1和L2产生相同的LSP,L12设备会如何选择?
L1的LSP 优于 L2的LSP
当存在双L1/2设备,由一台执行渗透操作
另一台L1/2设备,就会学到L1 和 L2对应的LSP,会优选L2的LSP如果另一台L1/2设备优选L1的LSP,则会造成次优路径的问题
ISIS对于渗透的路由执行优化,即设置相关的bit 可以让L1/2设备识别
*ISIS对于渗透的路由会添加U/D bit 置位
L2的LSP 优于 U/D bit置位的L1-LSP*只有L1/2设备会查看 U/Dbit置位的L1-LSP
*如果L1/2设备学习到 U/Dbit置位的L1-LSP,但不存在对应的L2-LSP
L1/2设备会通过U/Dbit置位的L1-LSP 计算出路由
L1/2设备不会将U/Dbit置位的L1-LSP 当作叶子路由在L2的LSP上挂载
也就是AR2执行渗透了之后,AR1就能学到了,AR3也能学到4.4.4.4,但AR3不会泛洪给AR5了。
*执行渗透的路由信息,在LSP中使用 * 标识
[AR3]dis isis lsdb 0000.0000.0002.00-00 level-1 verbose
LSPID Seq Num Checksum Holdtime Length ATT/P/OL
-------------------------------------------------------------------------------
0000.0000.0002.00-00 0x00000023 0xbb2 1179 162 1/0/0
IP-Internal* 4.4.4.4 255.255.255.255 COST: 10
IP-Internal* 10.1.34.0 255.255.255.0 COST: 20
IP-Internal 10.1.24.0 255.255.255.0 COST: 10
L1/2设备执行渗透后,不会将自身直连的路由 进行U/D bit置位 (看L1的信息)
*L1/2设备一定不会使用ATT bit计算缺省路由
*在L1/2设备渗透时,可以通过设置匹配项 渗透特定的路由信息
#
acl number 2000
rule 5 permit source 4.4.4.5 0
rule 10 permit source 4.4.4.4 0
[AR2]isis
[AR2-isis-1]import-route isis level-2 into level-1 filter-policy 2000
路由渗透形象版:
先给设备们分配 “角色”
把图里的设备想象成快递公司的转运站,规则如下:
- L1 设备(AR1):小县城网点(只能在 “本县” 送货,对应 L1 区域,标识 49.0001 )
- L1/2 设备(AR2、AR3):地级市转运中心(既能给 “本县(L1)” 送货,也能给 “外地市(L2)” 转运,是 “区域边界” )
- L2 设备(AR4):外省总仓库(只能给 “外地市(L2)” 送货,对应另一个区域,标识 49.0002 )
“路由渗透” 就像:地级市 AR2 说:“外省的货(L2 路由),我给小县城 AR1 也送一份!” (
import-route isis level-2 into level-1
)场景 1:正常选路(AR3 选 L2 更优,没问题)
假设只有 AR2 干 “渗透”(给小县城 AR1 送外省货),另一地级市 AR3 会发生啥?
AR3 能收到 2 份 “外省货地址”:
- L2 版地址:AR3 自己是 “地级市转运中心(L1/2)”,能直接通过 “外省专线(AR3 - AR4 链路)”,拿到 “外省总仓库 AR4” 的L2 版地址(走 “外地市正规流程” )。
- L1 版地址:因为 AR2 干了渗透,AR2 会把 “外省货地址” 包装成 “本县能懂的 L1 版”,传给小县城 AR1,而 AR3 作为 “地级市转运中心”,也能从 “本县链路(AR2 - AR3 的 L1 链路)”,拿到这份L1 版地址(相当于 “听小县城说有外省货” )。
AR3 的选择:
ISIS 规则是 **“外地市(L2)的地址比本县(L1)传的更靠谱”(L2 类型 LSP 优于 L1 )。所以 AR3 会优先选 L2 版地址 **(直接走 AR3 - AR4 的 “外省专线” ),这是最快捷的!场景 2:次优路径的 “坑”(假设规则反过来,L1 更优)
现在搞事情:假设规则变成 **“本县(L1)传的地址,比外地市(L2)更靠谱”**(模拟问题逻辑,实际 ISIS 是 L2 更优 ),此时:
- AR3 会优先选 “L1 版地址”(听小县城 AR1 说的 “渗透地址” ),路径就变成:AR3 → AR2 → AR4(绕了一圈小县城 ),而不是直接走 AR3 → AR4 的 “外省专线”!
这就离谱了 → 明明有更快的 “外省专线”,却因为规则乱了,绕路送货,多花时间、多走冤枉路(次优路径问题 )!
回到真实 ISIS 规则(L2 优于 L1),理解 “渗透后可能的坑”
实际 ISIS 里,L2 类型 LSP 天生比 L1 更优(外地市转运中心的地址,比小县城传的更靠谱 )。但如果有多台 L1/2 设备(比如 AR2、AR3 都干渗透 ),或者渗透配置乱了,就可能让设备 “confused( confusion )”:
- 比如两台 L1/2 设备都干渗透,会导致 L1 区域里 “重复传地址”,设备拿到一堆 LSP,选路时可能误判,绕路送货。
- 或者像你图里,只让 AR2 干渗透,AR3 没干,但 AR3 又能从 L1 侧拿到地址,就可能因为 “L2 和 L1 地址打架”,选到绕路的路径。
一句话总结
路由渗透是为了让 “小县城(L1)” 能收到 “外省货(L2 路由)”,但多台 “地级市转运中心(L1/2 设备)” 共存时,选路规则(L2 和 L1 谁更优)会影响送货路线。一旦规则乱了(或配置漏了 ),就会让设备 “放着近路不走,绕路送货” → 这就是次优路径问题!
现在再看拓扑图,是不是能脑补出 “AR3 绕路 AR2 送货” 的画面啦?核心就是L1/L2 设备选路规则冲突,导致流量走冤枉路~
当级别L1-2设备收到L1和L2同时产生的比如4.4.4.4路由的时候会选择L1的
当同时有俩个L1-2设备,只有一个L1-2设备做了渗透,那么L1-2设备不会选择L1的,而是会选择拓扑能计算到的L2设备,因为从L1-2做了渗透的路由Distribution:Down状态。
需要记住的命令:
把广播型网络变成P2P网络: