1. Intermediate System to Intermediate(中间系统到中间系统)特征
- 与 OSPF 一样,也是采用 SPF 算法(迪杰斯特拉算法 Dijkstra),基于 IGP 协议、链路状态的路由协议
- 采用「TLV」结构,扩展性好
- 对 IPv6 的支持不需要对协议做大改动,只需要扩展新的 TLV 或 子TLV 就可以支持新的协议和特性
- 支持 IPv6、TM、MT 等协议和特性
- 原始 ISIS 不支持 IP 地址,改进后既支持[CLNP 也支持 IP](集成化 ISIS)
- 集成 ISIS 可以支持纯 CLNP 网络或者纯 IP 网络,或者运行 CLNP 和 IP 的双重网络
- ISIS 是 ISO 定义 OSI 协议栈中的无连接网络服务「CLNS」,用于动态路由数据包。由三个协议构成
- CLNP:无连接网络协议,是 OSI 传输层服务(协议栈)。类似于 IP 协议栈的 TCP/IP 传输层服务(为 TCP/IP 传输层服务)
- ISIS:中间系统(路由器)间的路由协议。类似于 IP 中的 OSPF
- ESIS:边界到中间系统的协议。类似于 IP 中的 ARP、IGMP(RD)等
- ISIS 通过「MAC 地址」标识邻居
- ISIS Hello time 和 Dead Time 不一致不会影响邻居的建立
- ISIS 没有内外部路由区分,优先级都为「15」
- ISIS 在 MA 中通过目的组播 MAC 地址交互协议报文
- Level-1: 0180-C200-0014
- Level-2: 0180-C200-0015
- 默认级别是 Level-1/2,Level-1 和 Level-2 分别采用 SPF 算法,分别生成最短路径树 SPT
- ISIS 是「基于设备」来划分区域的,每个链路可以属于不同的区域,单个区域没有骨干和非骨干的概念
- ISIS 只支持 Broadcast 和 P2P(PPP、HDLC等)两种网络类型,P2P 采用 240 TLV
- 在 NBMA 等特殊环境下,可以通过创建子接口支持 P2P 的网络类型
- ISIS 默认情况下,引入的 Metric = 64、内部 Metric = 10。如果修改 Cost-style 为 Wide,引入 Metric = 0、内部 Metric = 10
- ISIS 的 IIH 每「10s」周期发送,Holding 时间为「30s(IIH的3倍关系)」。IIH 时间或 Holding 时间与邻居不一致,不会影响邻居建立,会自动协商(以周期时间小的为主)
- ISIS 只能在接口下进行路由的宣告
- 区域扁平化、收敛极快、承载庞大,一般应用于大型网络,承载 BGP 协议
- P2P 网络下,设备通告每条 LSP 都会生成对应的 SRM 值,只有收到对应的 PSNP 后才会进行撤销;当设备收到 LSP 时,会为每条 LSP 生成对应 SSN,表示需要回复对应的 PSNP
- ISIS 在网络设计时必须保证 Level-2 路由器是连续的「不能被分割,因为没有 Virtual Link」;保证所支持的多个路由协议是连续的
2. OSI 与 IETF 术语对比
缩略语 | OSI 术语(ISIS) | ISIS 术语特性 | IETF 术语(OSPF) |
---|---|---|---|
IS(Intermediate System) | 中间系统 | / | 路由器(Router) |
ES(End System) | 末端区域 | / | 终端设备(Host) |
Sys ID(System ID) | System ID | / | Router ID |
DIS(Designated Intermediate System) | 指定中间系统(DIS) | / | 指定路由器(DR) |
IIH(ISIS Hello PDU) | Hello Message | / | Hello Message |
LSP(Link State PDU) | 链路状态协议数据单元(LSP) | - 是单独存在的报文,作用等同于 OSPF 的 LSA,但是按报文来说等同于 OSPF 的 LSU - MA 网络中,LSP 没有确认机制,但是会通过收到的 CSNP 消息中查看是否有自己发送的 LSP 进行隐式确认(如果有自己发送的 LSP,说明自己发送的 LSP 对端已经收到,所以相当于确认) |
链路状态通告(LSA) |
CSNP(Complete Sequence Number PDU) | 完全序列号协议数据单元(CSNP) | - 只有 DIS 才会发送 CSNP 消息 |
数据库描述(DD) |
PSNP(Partial Sequence Number PDU) | 部分序列号协议数据单元(PSNP) | - 在广播类型中只是用于请求(等同于 OSPF 中的 LSR) - 在 P2P 类型中用于请求和确认(等同于 OSPF 中的 LSR/LSAck) |
链路状态请求(LSR) 链路状态确认(LSAck) |
3. ISIS 地址结构
1)NSAP(网络服务访问点)
- 是 OSI 协议中用于定位资源的地址,相当于 OSI 的网络层协议 CLNP 地址(类似于 IP 地址的概念)
- NSAP 可以支持多种协议
- NSAP 总长度最多「20」字节,最少「8」字节
NSAP 由 IDP 和 DSP 组成,长度都是可变的
NET 地址是一个特殊的 NSAP 地址(NET 地址中最后一个字段 SEL = 00,标识基于 IP)
- 在设备上配置 ISIS 时,只需要考虑 NET 地址,没有 NET 地址 ISIS 无法运行
- NET 地址包含了 Area ID + System ID + SEL(例如:49.0000.1111.1111.1111.00)
- AFI + IDI + High Order DSP 相当于 OSPF 的 Area ID(最小 = 1Bit,最大 = 13Bit)
- ISIS 私有 AFI 号:49
- 不同区域之间只能建立 Level-2 邻居关系
- 相同区域之间既可以建立 Level-1,也可以建立 Level-2 邻居关系
- System ID 相当于 OSPF 的 Router ID,唯一标识一台主机或路由器(固定为 6Bit)
- 必须在整个区域和域中的 Level-2 上保持唯一(不能冲突,否则会影响邻居建立)
- SEL 相当于 TCP 的端口号,固定为 00 标识基于 IP
- AFI + IDI + High Order DSP 相当于 OSPF 的 Area ID(最小 = 1Bit,最大 = 13Bit)
- 一个设备至少有一个 NET 地址,最多配置 3 个 NET 地址
1)区域和路由器级别
接口下修改级别,需要进程级别下包括了接口的级别才有效(接口级别需要兼容进程级别)
- ISIS 有两个 Area,分别对应两种级别
- 非骨干区域(一般不用):对应 Level-1
- 骨干区域(一般只用该区域):对应 Level-2
- Level-1 路由器
- Level-1 只负责区域内的路由,只能与相同区域的Level-1 或 Level-2 形成邻居关系
- Level-1 不能学习到 Level-2 的路由,因为「Lelvel-1 是作为叶子」挂在到「Level-2」网络(默认)
- Level-2 路由器
- Level-2 负责区域间的路由,可以与同区域或不同区域的 Level-2 或 Level1/2 形成邻居关系
- Level-2 的 LSDB 包含 ISIS Domain 的所有路由信息,Level-2 必须是连续的
- Level-2 可以学习到 Level-1 的路由
Level-1/2 路由器
DIS(指定中间路由器)
- Lelvel-1 和 Level-2 的 DIS 是分别选举的,可以为不同级别的 DIS 设置不同的优先级,默认优先级是「64」
- 优先级为 0 时,也会参与选举,而且 DIS 支持「抢占」
- DIS 是用来同步 LSDB 的,保证所有设备的 LSDB 都相同
- 同一网段上同一级别的路由器会建立全互联(Full 状态)关系(包括所有非 DIS 设备,不区分邻居和邻接关系)
- DIS 发送 Hello 时间间隔「10/3」秒(华为是 3s,所以 ISIS 中不需要备份 DIS),而其他非 DIS 设备「10s」发送一次 Hello 报文
- DIS 会收集所有的 LSP,形成一个 CSNP。只有 DIS 才会「每 10s」发送一次 CSNP 消息
- 伪节点
- 由 DIS 来创建和更新伪节点
- 伪节点负责生成伪节点 LSP,收集所有的 LSP 信息用来描述网络上的所有设备
- DIS 的选举
- 比较优先级,越大越优(默认 64,优先级范围 0~127)
- 比较 MAC 地址,越大越优
- DIS 在 Broadcast 网络中的作用:DIS 定期发送 CSNP 用于「同步和隐式确认」
- ISIS-DIS 与 OSPF-DR 对比 | 类比点 | IDIS | DR | | —- | —- | —- | | 选举优先级 | 所有优先级都可以参与选举(默认优先级 64) | 优先级为 0,不参与选举(默认优先级 1) | | 选举等待时间 | 2 个 Hello 报文间隔 | 40s | | 备份 | / | 有 BDR | | 邻接关系 | 所有设备之间都是邻接关系 | DRohter 之间是 2-Way 关系,DRother 与 DR 和 BDR 之间是 Full 关系 | | 抢占性 | 支持抢占 | 不支持抢占 | | 作用 | 周期发送 CSNP,保障 MA 网络的 LSDB 同步(DIS 每 10/3 秒发送一次) | 主要减少 LSA 泛洪 |
3)认证
OSPF 的认证在 Header 中,而 ISIS 的认证是采用 TLV 10 挂在到报文中的
- 支持的认证方式
- 明文认证:将密码直接加入到报文中,安全性不高
- MD5 认证:通过 MD5 计算后在加入到报文中,提高密码安全性
- Keychian 认证:通过随时间变化的密码链表来提升网络安全性
- 接口认证(影响邻居和所有级别的路由):只对 Level-1/2 的 Hello 报文进行认证
- 发送带认证 TLV 的 Hello 报文,并对收到的报文进行认证检查
- 发送带认证 TLV 的 Hello 报文,不对收到的报文进行认证检查(send-only)
- 区域认证(只影响 Level-1 的路由):对 Level-1 的 SNP 和 LSP 报文进行认证(可以设置 LSP 和 SNP 分开认证)
- 发送带认证 TLV 的 LSP 报文,并且对收到的 LSP 报文进行认证检查
- 发送带认证 TLV 的 LSP 和 NSP 报文,并对收到的 LSP 和 NSP 报文进行认证检查
- 发送带认证 TLV 的 LSP 和 SNP 报文,不对收到的 LSP 和 SNP 报文进行认证检查
- 发送带认证 TLV 的 LSP 和 SNP 报文,只检查收到的 LSP 报文认证,不检查收到的 SNP 报文认证
- 路由域认证(只影响 Level-2 的路由):对 Level-2 的 SNP 和 LSP 报文进行认证
1)Message Type
ISIS 有 3 种报文类型,9 种报文
- IIH(Hello PDU):用于建立和维护邻居关系
- Level-1 IIH
- Level-2 IIH
- P2P IIH(非广播网络使用)
- LSP PDU:用于交互链路状态信息
- Level-1 LSP
- Level-2 LSP
SNP PDU:用于维护 LSDB 的完整性和同步(为摘要信息)
ISIS 所有的报文结构都有相同的 PDU 格式
① Generic Message Header
Generic Message Header 格式解析
- Intradomain Routeing Protocol Discriminator:域内路由选择协议鉴别符
- Length Indicator:ISIS 头部报文长度
- Version/Protocol ID Extension:版本/协议扩展标识符
- ID Length:NSAP 地址或 NET 中 System ID 的长度
- PDU Type:PDU类型
- 15 = L1 Hello IIH
- 16 = L2 Hello IIH
- 17 = P2P Hello IIH
- 18 = L1 LSP
- 20 = L2 LSP
- 24 = L1 CSNP
- 25 = L2 CSNP
- 26 = L1 PSNP
- 27 = L2 PSNP
- Version:版本号
Maximum Area Address:最大支持的区域个数(最大 NET 地址数量)
② TLV 结构
TLV = CLV:Type-Length-Value(类型-长度-值) = Code-Length-Value(编码-长度-值)
报文中的可变长字段部分是由多个三元组组成的
- TLV Code 编码对应PDU类型
3)IIH Message
用于邻居发现、协商参数并建立邻居关系,收敛完成后用于保活,与 OSPF 相同,通过 Hello 包交互并协商各种参数(Level-1/Level-2、Hold Time、网络类型、支持协议、区域号、系统ID、PDU 长度、接口 IP 等)
- Broadcast 网络中 Level-1 使用目的组播 MAC(0180-C200-0014)交互报文
- Broadcast 网络中 Level-2 使用目的组播 MAC(0180-C200-0015)交互报文
- ISIS Hello time 和 Dead Time 不一致不会影响邻居的建立
非广播网络中则使用 P2P IIH 交互 Hello 报文。P2P IIH 中与 OSPF 的 DR 一样,不需要选举 DIS,所以没有 DIS(伪节点)字段
① Broadcast IIH Message(Levle-1 and Level-2)
Broadcast IIH Message 格式解析Reserved/Circuit Type:级别类型
- 01 = Level-1
- 10 = Level-2
- 11 = Level-1/2
- Source ID:发送 Hello 报文的设备 System ID
- Holding Time:死亡时间,默认30s(是 Hello Time 的三倍)
- PDU Length:报文总长度,由通用头部长度 + IIH 报文长度
- Priority:优先级,用于选举 DIS,越大越优先,默认「64」
-
② P2P IIH Messgae
P2P IIH Message 格式解析 Reserved/Circuit Type:级别类型
- 01 = Level-1
- 10 = Level-2
- 11 = Level-1/2
- Source ID:发送 Hello 报文的设备 System ID
- Holding Time:死亡时间,默认30s(是 Hello Time 的三倍)
- PDU Length:报文总长度,由通用头部长度 + IIH 报文长度
Local Circuit ID:本地链路 ID,用于标识不同链路,便于区分拓扑
4)LSP PDU Message(Level-1 and Level-2)
Level-1 和 Level-2 的 LSP 报文格式相同
LSP 分为实节点 LSP 和伪节点 LSP(伪节点 LSP 只存在广播链路)。实节点 LSP 相当于 OSPF 的 LSA(LSU),伪节点 LSP 相当于 OSPF 的 Type 2 LSA
- Level-1 LSP 由 Level-1 路由器传送
- Level-2 LSP 由 Level-2 路由器传送
- Level-1/2 路由器既可以传送 Level-1 和 Level-2 的 LSP
- LSP 中包含了两个重要字段
- ATT 字段:用于标识 L1/2 路由器告知 L1 路由器自动生成指向 L1/2 路由器的默认路由
- IS-Type 字段:用来表示生成此 LSP 的 ISIS 类型是 Level-1 还是 Level-2
- 与 OSPF 不同,ISIS 的 LSP 刷新时间是倒计时
LSP PDU Message 格式解析
- PDU Length:LSP PDU的总长度
- Remaining Lifetime:LSP的剩余生存时间
- LSP ID:由 System ID、DIS ID 和 LSP 分片后的编号组成
- Sequency Number:LSP的序列号
- Checksum:LSP的校验和
- P(Partition Repair):只在 L2 LSP中有效,表示是否支持自动修复区域分割
- ATT(Attachment):由Level-1-2路由器产生,表明是否与其他区域相连
- Default:缺省度量
- Delay:时延度量
- Expense:代价度量
- Error:差错度量
- OL(LSDB Overload):过载标志位,当路由器内存不足时,自动下发该字段为 1 的 LSP
-
5)SNP PDU Message
① CSNP(Levle-1 and Level-2)
用于同步 LSP,相当于 OSPF 的 DD 报文
CSNP 包括 LSDB 中所有 LSP 的[摘要信息],可以在相邻路由器间保持 LSDB 的同步
- CSNP 在 P2P 下只发送一次,在广播下每「10s」周期性由 DIS 发
CSNP PDU Message 格式解析
- PDU Length:CSNP PDU 的长度
- Source ID:生成该 CSNP 的 System ID
- Start LSP ID:CSNP 报文中第一个 LSP 的 ID 值
- End LSP ID:CSNP 报文中最后一个 LSP 的 ID 值
② PSNP(Levle-1 and Level-2)
PSNP 包含部分 LSDB 中的 LSP 摘要信息,能够对 LSP 进行请求和确认。在 Broadcast 中相当于 OSPF 的 LSR(请求作用),在 P2P 中相当于 OSPF 的 LSR 和 LSAck(请求和确认作用)
PSNP PDU Message 格式解析
1)建立邻居关系
ISIS 两个邻居路由器只需要交互 IIH 就认为形成了邻接关系。而 OSPF 中,两台路由器交互了 Hello(2-Way) 后只形成邻居关系,只有交换完成 LSA 才会进入 Full 状态,标识为邻接关系
① 建立邻居关系的条件
- 建立条件
- 相同的网络类型
- 同一网段
- 同一层次
- 整个邻居ISIS区域中,System ID不能冲突
- 相连邻居的接口不能为被动端口
- 认证正确
- 相同的MTU值
- Level-1 级别邻居关系的建立条件
- Area ID 需要一致
- Level-1 路由器可以和 Level-1 路由器建立 Level-1 邻居关系
- Level-1 路由器可以和 Level-1/2 路由器建立 Level-1 邻居关系
- Level-2 级别邻居关系的建立条件
- Area ID 可以不一致
- Level-2 路由器可以和 Level-2 路由器建立 Level-2 邻居关系
- Level-2 路由器可以和 Level-1/2 路由器建立 Level-2 邻居关系
在 P2P 中,System ID 长度要一致,最大区域地址要相同
② Broadcast 网络的邻居关系建立
因为广播网络需要选举 DIS,在邻居关系建立后,路由器会等待两个 Hello 报文间隔,进行选举 DIS
- 在广播网络的 LSP 中,倒数第三位 = 非0,表示是伪节点 DIS。最后一位 = 1,表示是分片 LSP(1 条 LSP 无法承载,所以分片)
- 三次握手(3-Way)建立过程,包含 6 TLV(有邻居的 MAC 地址)
- RTA 发送广播 IIH,在 IIH 中添加上自己的 MAC 地址,报文中没有邻居的标识
- RTB 收到报文后,将自己的邻居状态标识为 Initialized 后,回复 IIH 时添加上邻居的 MAC 地址(标记出 RTA 是 RTB 的邻居)
- RTA 收到报文后,将自己与 RTB 的邻居状态标识为 Up,向 RTB 回复 IIH 时添加上邻居的 MAC 地址(标记出 RTB 是 RTA 的邻居)
- RTB 收到报文后,将自己与 RTA 的邻居状态标识为 Up,然后成功建立邻居关系
③ P2P 网络的邻居关系建立
- P2P 链路上,邻居关系的建立不同于广播链路,会分为两次握手和三次握手机制(默认是三次握手机制,并且兼容两次握手机制)
- 两次握手存在的问题:与对端的链路单方向 Down,设备之间邻居关系能正常建立,但会影响 SPF 算法,导致数据包仍然会发往 Down 的链路
- 两次握手(2-Way)建立过程
- 只要设备收到对端发来的 Hello 报文,就将接口 UP,表示建立邻居关系(广播网络也适用)
- 三次握手(3-Way)建立过程,包含 240 TLV(有邻居的 System ID)
- RTA 发送广播 IIH,报文中没有邻居的标识
- RTB 收到报文后,将自己的邻居状态标识为 Initialized 后,向 RTA 回复 IIH 时添加上邻居的 System ID(标记出 RTA 是 RTB 的邻居)
- RTA 收到报文后,将自己与 RTB 的邻居状态标识为 Up,向 RTB 回复 IIH 时添加上邻居的 System ID(标记出 RTB 是 RTA 的邻居)
- RTB 收到报文后,将自己与 RTA 的邻居状态标识为 Up,然后成功建立邻居关系
2)LSP 交互过程和同步
链路信息交换与 OSPF 不同,ISIS 交互链路状态的基本载体是 LSP(链路状态协议数据单元)。LSP 是单独存在的报文,而 OSPF 的 LSA 是由 LSU 承载的
① 触发 LSP 的条件
- LSP 的正常刷新时间间隔「900s(15min)」、老化时间「1200s(20min)」、LSP 重传时间「5s」。当一条 LSP 到达 1200s,进行老化后,还需要等待 60s 的零老化时延
什么情况下会触发新的 LSP
DIS 会收集所有 LSP 并每隔 10s 泛洪 CSNP,每个设备收到 CSNP 后对比自身的 LSDB 是否完整,如果发现缺少了某条 LSP,会发送 PNSP 用于请求该条 LSP,DIS 收到后会响应 LSP,对端收到 LSP 不需要确认(因为 DIS 会定期泛洪 CSNP,相当于[隐式确认])
- 同步过程
- C 首先发送 Hello 报文,与该广播域中的路由器建立邻居关系
- 建立邻居关系之后,C 等待 LSP 刷新定时器超时,然后将自己的 LSP 发往组播地址(Level-1:0180-C200-0014;Level-2:0180-C200-0015)。这样网络上所有的邻居都将收到该 LSP
- DIS 会把收到 C 的 LSP 加入到 LSDB 中,并等待 CSNP 报文定时器超时发送 CSNP 报文,进行该网络内的 LSDB 同步
- C 收到 DIS 发来的 CSNP 报文,对比自己的 LSDB,然后向 DIS 发送 PSNP 报文请求自己没有的 LSP
- DIS 收到该 PSNP 报文请求后向 C 发送对应的 LSP 进行 LSDB 的同步(不需要确认,等待下一次 CSNP 进行隐式确认)
- LSP 新旧比较
- DIS 接收到 LSP,如果 LSDB 中没有对应的记录。则加入到 LSDB,并组播更新最新 LSDB
- 比较 LSP 中剩余老化时间是否为 0 ,如果为 0 ,该 LSP 为最优
- 比较 LSP 中的 Sequence(越大越新)
- 若收到的 LSP Sequence > 本地 LSP Sequence,则替换为新的报文,并组播更新最新 LSDB
- 若收到的 LSP Sequence < 本地 LSP Sequence,则向入端口发送本地 LSP 报文
- 若两个 Sequence 相等,就比较 Remaining Lifetime(越小越新)
- 若收到的 LSP Remaining Lifetime = 0,则替换为新的报文,并组播更新最新的 LSDB
- 若收到的 LSP Remaining Lifetime ≠ 0,则向入端口发送本地 LSP 报文
- 若 Remaining Lifetime 相等,就比较 Checksum(越大越新)
- 若收到的 LSP Checksum > 本地 LSP Checksum ,则替换为新的报文,并组播更新最新的 LSDB 内容
- 若收到的 LSP Checksum < 本地 LSP Checksum ,则向入端口发送本地 LSP 报文
- 若序列号、剩余寿命、校验和都相等,则不转发该报文
③ P2P DIS 同步和 LSP 新旧比较
- 建立邻居关系后就开始发送 CSNP,对端响应 PSNP 请求索取相应的 LSP
- 本端发送请求的 LSP 后并启动 LSP 重传定时器,等待对端响应 PSNP(如果定时器超时也为收到对端的 PSNP,则重新发送,直到收到对端的确认 PSNP)
- 现实抓包中,建立邻居关系后,相互发送 LSP 进行同步,通过 PSNP 确认收到的 LSP,然后相互发送一次 CSNP[P2P 唯一发送一次]
- 同步过程
- A 先与 B 建立邻居关系
- 建立邻居关系之后,A 与 B 会先发送 CSNP 给对端设备。如果对端的 LSDB 与 CSNP 没有同步,则发送 PSNP 请求索取相应的 LSP
- B 向 A 索取相应的 LSP。A 发送 B 请求的 LSP 的同时启动 LSP 重传定时器,并等待 B 发送的 PSNP 作为收到 LSP 的确认
- 如果在接口 LSP 重传定时器超时后,A 还没有收到 B 发送的 PSNP 报文作为应答,则重新发送该 LSP 直至收到 PSNP 报文
- LSP 新旧比较
- 比较 LSP 中剩余老化时间是否为 0 ,如果为 0 ,该 LSP 为最优
- 比较 LSP 中的 Sequence(越大越新)
- 若收到的 LSP Sequence > 本地 LSP Sequence,则替换为新的报文,并组播更新最新 LSDB
- 若收到的 LSP Sequence < 本地 LSP Sequence,则向入端口发送本地 LSP 报文
- 若两个 Sequence 相等,就比较 Remaining Lifetime(越小越新)
- 若收到的 LSP Remaining Lifetime = 0,则存入到 LSDB 中并发送 PSNP 报文来确认收到此 LSP
- 若收到的 LSP Remaining Lifetime ≠ 0,则向对方发送本地 LSP 报文,然后等待对方回复的 PSNP 作为确认
- 若两个 Remaining Lifetime 相等,就比较 Checksum(越大越新)
- 若收到的 LSP Checksum > 本地 LSP Checksum,则存入到 LSDB 中并发送 PSNP 报文来确认收到此 LSP
- 若收到的 LSP Checksum < 本地 LSP Checksum ,则向对方发送本地 LSP 报文,然后等待对方回复的 PSNP 作为确认
- 若序列号、剩余寿命、 Checksum 都相等,则不转发该报文
3)执行 SPF 路由计算
1)区域间路由
- Level-1/2 设备使用 ATT = 1 字段标识 Level-1 设备自动生成默认路由
Level-1/2 设备与对端在同一区域是不会向 Level-1 设备下放默认路由。必须是不同区域,Level-1/2 设备才会将 ATT 字段置位
Level-1 设备只会计算到达 Level-1/2 设备的开销,无法知道全局开销,所以造成次优路径
使用 “
**U-bit**
“ 位用于防止渗透后产生环路使用 “OL-bit” 标识过载状态。标志为过载状态后,其他设备在进行 SPF 计算时不会使用该设备作为转发,只计算该设备上的直连路由
- 只有对去往该设备直连的流量才会把数据包发往该设备
- 只针对于过路路由
- 一般用在承载 BGP 的核心 ISIS
除了设备异常或 CPU 占用过高自动进入过载状态,也可以手动配置进入过载状态
4)Wide Metric
ISIS 默认情况下,引入的 Metric = 64、内部 Metric = 10。如果修改 Cost-style 为 Wide,引入 Metric = 0、内部 Metric = 10
Wide 接口开销扩展到 16777215、路由开销扩展到 4261412864
- 只有宽度量值才能识别 Tag,窄度量值不识别 Tag 标签(窄度量分为默认度量、延时度量、差错度量、开销度量)
- 窄度量默认 1字节
- 7bit=up/down
- 6bit=内部和外部度量(默认内部)
- 5-0bit=用于标识度量值,所以导致接口可以配置的最大开销63,链路上整体开销最大1024
- 窄度量默认 1字节
- 窄度量 Narrow
- 2 TLV:用来携带邻居信息
- 128 TLV:用来携带域内 ISIS 路由信息
- 130 TLV:用来携带域外 ISIS 路由信息
- 宽度量 Wide
- 22 TLV:用来携带邻居信息
- 135 TLV:用来携带 ISIS 路由信息,并可以携带 Sub TLV
- 发送和接收的类型 | 开销类型 | 接收 | 发送 | | —- | —- | —- | | narrow(窄度量模式) | narrow | narrow | | narrow-compatible(窄度量兼容模式) | narrow 或 wide | narrow | | compatible(完全兼容模式) | narrow 或 wide | narrow 或 wide | | wide-compatible(宽度量兼容模式) | narrow 或 wide | wide | | wide(宽度量模式) | wide | wide |
5)网络收敛特性
- 增量最短路径优先级算法 I-SPF(针对节点)
- 当网络拓扑发生变化时,只针对受影响的节点进行路由计算,而不对所有节点重新进行 Full-SPF 计算,从而加快路由计算时延。除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点
- 对 OSPF 来说:P2P、Transnet、Virtual Link 发生变化都会运行 I-SPF 算法
- 对 ISIS 来说:只有 NET 地址变化才会运行 I-SPF 算法
- 当网络拓扑发生变化时,只针对受影响的节点进行路由计算,而不对所有节点重新进行 Full-SPF 计算,从而加快路由计算时延。除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点
- 部分路由计算RPC(针对路由,在 I-SPF 之上)
- 当网络上路由发生变化时,只针对发生变化的路由进行重新计算(只针对叶子进行计算,因为叶子是挂载到骨干上的)
- 对 OSPF 来说:只有 Stub 节点发生变化才会运行 RPC 算法
- 对 ISIS 来说:只要 NET 地址没有发送变化都只会允许 RPC 算法
- PRC的原理与 I-SPF 相同,都是只对发生变化的路由进行重新计算。不同的是,PRC 不需要计算节点路径,而是根据 I-SPF 算出来的 SPT 来更新路由。在路由计算中,叶子代表路由,节点则代表路由器。如果 I-SPF 计算后的 SPT 改变,PRC 会只处理那个变化的节点上的所有叶子;如果经过 I-SPF 计算后的 SPT 并没有变化,则 PRC 只处理变化的叶子信息
- 当网络上路由发生变化时,只针对发生变化的路由进行重新计算(只针对叶子进行计算,因为叶子是挂载到骨干上的)
- 智能定时器
- 当网络频繁发送变化时,会消耗系统大量的 CPU 资源进行 SPF、LSP 计算。可以自动延长定时器间隔时间(一般缺省为 5 秒),降低对其他业务的影响
- 该定时器首次超时是一个固定的时间。如果在定时器超时前,又有触发定时器的事件发生,则该定时器下一次的超时时间会增加
- SPF 计算智能定时器
- LSP 生成智能定时器
- 快速扩散
- 边学边发,减轻大量 LSP 一起发送对网络设备带来冲击。在路由计算之前,先将小于指定数目的 LSP 扩散出去,加快 LSDB 的同步过程
- 缺省情况下,接口发送LSP报文最小间隔时间 50ms,最大发送条目 10
优先级收敛
当网络中有多条冗余链路时,可能会出现多条等价路由(到达某一目的网段有多条等开销路径)
- 可以通过修改每条等价路由权重值(优先级),在不修改接口开销的情况下,明确指定路由的下一跳,使得该路由被优选
8. LSP 分片扩展
1)LSP 工作原理
- 当 ISIS 发布的报文 PDU 信息过大,会生成 LSP 分片用来携带更多的 ISIS 信息。LSP 分片由 LSP ID 中的 LSP Number 字段标识,最多产生 256 个 LSP 分片(字段的长度是 1 字节)
- 初始系统(Originating System):实际运行 ISIS 协议的路由器(真正的 ISIS 进程),允许一个单独的 ISIS 进程像多个虚拟路由器一样发布 LSP
- 系统 ID(Normal System-ID):初始系统的系统 ID,每个系统 ID 都标识一个系统
- 虚拟系统(Virtual System):由附加系统 ID 标识的系统,用来生成扩展 LSP 分片,这些分片在其 LSP ID 中携带附加系统 ID
- 附加系统 ID(Additional System-ID):虚拟系统的系统 ID,由网络管理器统一分配
- 24 号 TLV(IS Alias ID TLV):表示初始系统与虚拟系统的关系
每个系统 ID 都标识一个系统,每个系统都最多可生成 256 个 LSP 分片。通过增加附加系统 ID,可以最多配置 50 个虚拟系统,从而使得 IS-IS 进程最多可生成 13056 个LSP分片
虚拟系统参与路由 SPF 计算,初始系统发布的 LSP 中携带了到每个虚拟系统的链路信息。虚拟系统发布的 LSP 也包含到初始系统的链路信息(在网络中虚拟系统看起来与初始系统相连的真实路由器是一样的)。是为了兼容不支持分片扩展的老版本所做的一个过渡模式。在老版本中,IS-IS 无法识别 IS Alias ID TLV,所以虚拟系统的 LSP 必须表现的像一个普通 IS-IS 发出的报文
- RouterB 是不支持分片扩展的路由器,RouterA 设置为 Mode-1 模式的分片扩展
- RouterA1 和 RouterA2 是 RouterA 的虚拟系统,RouterA 将一部分路由信息放入 RouterA1 和 RouterA2 的 LSP 报文中向外发送
- RouterB 收到 RouterA、RouterA1 和 RouterA2 的报文时,认为对端有三台独立的路由器,并进行正常的路由计算
- 同时 RouterA 到 RouterA1 和 RouterA2 的开销都是 0,所以,RouterB 到 RouterA 的路由开销值与 RouterB 到 RouterA1 和 RouterA2 路由开销值都相等
注意:
虚拟系统不参与路由 SPF 计算,网络中所有路由器都知道虚拟系统生成的 LSP 实际属于初始系统。在该模式下工作的 IS-IS,可以识别 IS Alias ID TLV 的内容,并作为计算 SPT 和路由的依据
- 在引入外部路由时,先引入在进行过滤
- 先做 Import
- 在做 Filter-policy
- Filter-Policy(过滤策略):运行完 SPF 算法,但不加入路由表,并不会过滤 LSP
新增了两个 TLV 实现对 IPv6 的支持
1)236 TLV(Reachability TLV)
- 通过前缀、度量、标记等描述IPv6网络前缀的可达性。使用一个
X-bit
来区分 “内部” 和 “外部”
- U(up/down): 标识这个前缀是否是从高 level 通告下来的(用来防环路)
- X(external original): 标识这个前缀是否是从其他路由协议中引入过来的
S(subtlv present): 子 TLV 标识位(可选)
2)232 TLV(Interface Address TLV)
相当于IPv4中的 “IP Interface Address” TLV,只不过把原来的 32bit 的 IPv4 改为 128bit 的 IPv6
- TLV232 跟 TLV132 相似,是直接从 132 映射过来的。132 最多支持 64 个 IPv4 地址,232 最多支持 16 个 IPv6 地址
- 每个接口的地址长度变成 128bits
- 在不同的 PDU 中,字段内容不同
- IIH 中,只能包含发送 IIH 包的接口 Link-Local 地址
- LSP 中,只能包含 IS 的 Non-Link-Local 地址(例如:GUA 地址)
11. ISIS IPv6 扩展内容
1)ST 单拓扑
- ISIS 为所有协议维护相同的 SPT,IPv4 和 IPv6 的拓扑必须一致(共用一个拓扑)
- 不足之处
- ISIS 为 IPv4 和 IPv6 维护相同的 SPT,这意味着 IPv4 和 IPv6 的拓扑必须一致
- IPv6 的路由信息是通过 IPv4 的拓扑计算的,如果不一致会导致转发层面出故障
- 存在的问题
- 不适合分离拓扑的网络部署
- 部署不灵活,所有接口都必须同时运行 ISIS IPv4 和 ISIS IPv6,维护相同的拓扑
- 不能使用 IPv4 区域来链接不同的 IPv6 区域,否则 IPv4 区域会丢弃 IPv6 的流量
2)MT 多拓扑
- MT 可以使 ISIS 在一个路由域中维护多个拓扑,为 IPv4 和 IPv6 分别维护不同的拓扑
- ISIS协议主要包括的方面:
- 邻居的建立
- 路由可达(Preix Reachable)和路由器可达(IS Reachable)的发布
- SPF 计算和路由计算
- 达到多拓扑的相互隔离,以上几个方面均要求携带 MT 参数,以满足要求
- SPF 计算的路由计算在路由器内识别完成
- 定义了 4种 TLV 分别满足多拓扑,实现了通用环境下 ISIS MT 的交互过程
- Compatible:兼容模式(兼容 IPv4 和 IPv6 拓扑),SFP 只在 IPv4(标准)拓扑上运行
- Enable-mt-spf:在兼容模式下开启 MT-SPT,SFP 只在 IPv6 拓扑上运行
- Standard:IPv6 的标准拓扑(单拓扑),必须保证所有链路支持一致的拓扑模式,IPv4 和 IPv6 的拓扑必须一致(共用一个拓扑)
- IPv6:IPv6 MT(多拓扑),链路可以配置成 IPv4 或 IPv6,SFP 都在各自的拓扑进行计算
12. 规划 ISIS
1)NET 地址规划
NET 格式: AA BBBB CCCC DDDD SSSS SSSS SSSS 00
- Area ID = AA.BBBB.CCCC.DDDD
- AA:地址格式标识符AFI(AFI=49的地址为OSI协议的私有地址)
- BBBB :可以是国家编码,例如中国 0086
- CCCC :可以是省编码,自己定义,例如辽宁省 0003
- DDDD :可以是设备所在站点编码,自己定义,例如辽宁省大连站点 3821
- System ID = SSSS.SSSS.SSSS
- 业界通行的做法是通过设备 Loopback0 地址演绎,生成 System ID
-
2)分层分区域规划
所有 ISIS 路由器都工作在 Backbone,Level-2 级别(首选)
-
3)Cost 规划
ISIS Cost 设计比较灵活
- 可以根据链路物理带宽设计
- Cost 的设计决定网络流量的走向
- 所以除了考虑上述 2 个因素外,更重要的是考虑客户对网络流量走向的需求。这就要求在 Cost 设计前,要清楚不同端到端场景的流量走向
ISIS 有三种设置链路 Cost 值的方法:
ISIS 支持三种认证方式:接口认证、区域认证、域认证
上述三种认证都支持简单密码和高密的 MD5 方式认证。高密的 MD5 认证方式具有更高的安全性(推荐高密的 MD5)
5)可靠性规划(ISIS 快速收敛设计)
BFD For ISIS:链路故障快速检测
- ISPF(Incremental SPF):加快路由收敛(缺省支持)
- PRC(Partial Route Calculation):加快路由收敛(缺省支持)
- LSP Fast Flooding :加快 LSDB 同步
6)现网常见配置