第77篇:IS-IS 邻居建立条件——Area、SystemID、MTU
关键词
IS-IS、邻居建立、Area、System ID、MTU、3 路握手、认证
一、IS-IS 邻居建立的条件
IS-IS 的邻居建立比 OSPF 简单——只有 3 个状态:Down → Init → Up。
但要使邻居成功建立到 Up,必须满足以下条件:
| 条件 | 说明 |
|---|---|
| 同一区域 | L1 邻接要求 Area Address 匹配 |
| 接口 UP | 物理链路正常 |
| 同一级别 | 接口级别配置一致(L1/L2) |
| MTU 一致 | 两端接口 MTU 必须相同或大于最小要求 |
| 认证一致 | 如果配置认证,两端必须匹配 |
| 3 路握手完成 | 双方都在对方的 Hello 中看到自己 |
二、条件一:Area 匹配(仅 L1)
2.1 L1 邻接要求
L1 邻接要求双方属于同一区域:
RouterA (Area 49.0001) ── L1 ── RouterB (Area 49.0001) ✅
RouterA (Area 49.0001) ── L1 ── RouterB (Area 49.0002) ❌
L2 邻接不要求区域匹配:
RouterA (Area 49.0001) ── L2 ── RouterB (Area 49.0002) ✅
2.2 配置多个 Area Address
一台路由器可以配置多个 Area Address:
isis 1
network-entity 49.0001.1111.1111.1111.00
area-address 49.0002 # 额外配置的区域地址
多个 Area Address 的作用:在区域合并或拆分时,允许路由器"同时属于两个区域",实现平滑过渡。
2.3 排查命令
# 查看区域地址
display isis
Area Address(es):
49.0001 ← 本路由器的区域地址
# 查看邻居信息(可以看到邻居的区域)
display isis peer verbose
Area Address(es):
49.0001 ← 邻居的区域地址
三、条件二:System ID 唯一
3.1 要求
全网每个 System ID 必须唯一。 与 OSPF 的 Router ID 全网唯一是同样的原则。
3.2 冲突检测
如果两台路由器 System ID 相同:
RouterA: System ID = 1111.1111.1111
RouterB: System ID = 1111.1111.1111
结果:邻居无法建立,或建立后立刻断开
display isis error
System ID conflict: 5 ← System ID 冲突计数
3.3 配置 System ID
# System ID 通过 NET 地址配置
isis 1
network-entity 49.0001.1921.6800.1001.00
└──────┬──────┘
System ID(12 个十六进制字符)
四、条件三:MTU 一致
4.1 为什么 MTU 重要
IS-IS 报文直接封装在二层。如果接口的 MTU 小于 IS-IS 报文长度,报文会被丢弃。
4.2 最小 MTU 要求
| 场景 | 最小 MTU |
|---|---|
| 默认 Hello | 128 字节 |
| 带认证的 Hello | 约 250 字节 |
| 正常的 LSP | 1492 字节(通常) |
4.3 MTU 问题排查
# 查看接口 MTU
display interface GigabitEthernet0/0/0
MTU: 1500 ← 标准以太网 MTU
# 查看 IS-IS MTU(发送 IS-IS 报文时使用的最大长度)
display isis interface
Interface: GE0/0/0
LSP MTU: 1497 ← IS-IS LSP 最大长度
4.4 常见场景
| 场景 | 问题 | 解决 |
|---|---|---|
| 默认以太网 | MTU=1500,正常 ✅ | - |
| VLAN 子接口 | MTU=1500,正常 ✅ | - |
| 隧道/GRE | MTU 变小,可能小于 1500 | 调整隧道 MTU |
| PPPoE | MTU=1492 | 确保 IS-IS MTU ≤ 1492 |
五、条件四:3 路握手
5.1 3 路握手过程
状态机:
Down: 还没收到任何 Hello
Init: 收到对端的 Hello,但自己的 System ID 不在对方的邻居列表中
(单向通信)
Up: 自己的 System ID 出现在对方的邻居列表中
(双向通信 → 邻接建立)
5.2 示例
RouterA RouterB
│ │
│── Hello(邻居列表为空)──→│ B 看到 A,但 A 还不知道 B
│ │ B 的状态:Init
│←─ Hello(邻居列表= A)───│ A 看到自己,状态变为 Init→Up
│ │ A 再将 B 加入邻居列表
│── Hello(邻居列表= B)──→│ B 看到自己,状态变为 Up
│ │
邻接建立 ✅ 邻接建立 ✅
六、条件五:认证一致
6.1 认证类型
| 认证方式 | 说明 |
|---|---|
| 接口认证 | 针对单个接口的认证 |
| 区域认证 | L1 区域级别的认证 |
| 域认证 | L2 骨干级别的认证 |
6.2 配置
# 接口认证
interface GigabitEthernet0/0/0
isis authentication-mode md5 cipher Huawei123
# 区域认证(L1)
isis 1
area-authentication-mode md5 cipher AreaKey456
# 域认证(L2)
isis 1
domain-authentication-mode md5 cipher DomainKey789
注意:认证必须两端一致,否则邻居无法建立。
七、综合排查流程
IS-IS 邻居建立失败排查:
1. 接口 UP 了吗?
├─ No → 排查物理层
└─ Yes → 继续
2. 检查 IS-IS 是否在接口上启用?
display isis interface
├─ 没有该接口 → interface xx isis enable 1
└─ 有接口 → 继续
3. 检查邻接级别配置
display isis interface xx
├─ L1 vs L2 不匹配 → 修改 isis circuit-level
└─ 一致 → 继续
4. 查看邻居状态
display isis peer
├─ 没有邻居 → 排查网络连通性
├─ Init → 检查是否是单向链路或 Area 不匹配
└─ Up → ✅
5. 检查 Area 匹配(仅 L1)
display isis | include Area
├─ 不匹配 → 修改 Area Address
└─ 匹配 → 继续
6. 检查 MTU
├─ 两端不一致 → 统一 MTU
└─ 一致 → 继续
7. 检查认证配置
├─ 不匹配 → 统一认证
└─ 无认证 → 继续
8. 检查 System ID 冲突
display isis error | include conflict
八、常用排查命令
# 查看所有邻居
display isis peer
# 查看邻居详细信息
display isis peer verbose
# 查看接口 IS-IS 信息
display isis interface
# 查看 IS-IS 错误统计
display isis error
# 查看 LSDB
display isis lsdb
# 调试(生产环境慎用)
debugging isis adjacency
九、总结
| 条件 | L1 邻接 | L2 邻接 | 排查命令 |
|---|---|---|---|
| Area 匹配 | ✅ 必须 | ❌ 不必须 | display isis peer verbose |
| System ID 唯一 | ✅ | ✅ | display isis error |
| MTU 一致 | ✅ | ✅ | display interface |
| 3 路握手 | ✅ | ✅ | display isis peer |
| 认证一致 | ✅ | ✅ | display current-configuration |
十、思考
- L1 邻接和 L2 邻接在 Area 匹配方面有什么不同要求?
- IS-IS 的 3 路握手是如何工作的?什么状态下表示邻接已经建立?
- 如果两台路由器的 MTU 不匹配,IS-IS 邻居能否建立?
- 一台路由器可以配置多个 Area Address 吗?什么场景下需要这样做?
- 如果 IS-IS 邻居状态一直卡在 Init,可能是什么原因?
下篇预告:第78篇《IS-IS 路由泄露——Level-2 向 Level-1 注入》——理解 IS-IS 区域间路由的核心机制。