ISIS简介
IS-IS属于IGP(Interior Gateway Protocol,内部网关协议),用于自治系统内部。IS-IS是一种链路状态协议,使用SPF(Shortest Path First,最短路径优先)算法进行路由计算。SPF算法本身防环。 由于简便性和扩展性(TLV字段) 普遍应用于ISP网络中。
ISIS特点
- 支持CLNP网络.IP网络
- 工作在数据链路层
ISIS拓扑结构
- 采用骨干区域与非骨干区域两级的分层结构
- 一般来说,将Level-1路由器部署在非骨干区域,将Level-2路由器和Level-1-2路由器部署在骨干区域
- 每一个非骨干区域都通过Level-1-2路由器与骨干区域相连
- 与OSPF的区别
| 对比项 | OSPF | IS-IS |
|---|---|---|
| 区域划分 | 接口 | 路由器 |
| 骨干区域 | area0 | L2和L1-2组成 |
| 路由算法 | SPF(同一区域) | SPF |
ISIS路由器分类
- Level-1路由器
-
Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系,维护一个Level-1的LSDB,该LSDB包含本区域的路由信息,到区域外的报文转发给最近的Level-1-2路由器。
-
属于不同区域的Level-1路由器不能形成邻居关系。
- Level-2路由器
-
Level-2路由器负责区域间的路由,可以与同一区域或者其它区域的Level-2和Level-1-2路由器形成邻居关系,维护一个Level-2的LSDB,该LSDB包含区域间的路由信息。所有Level-2路由器和Level-1-2路由器组成路由域的骨干网,负责在不同区域间通信,骨干网必须是物理连续的。
-
Level-2路由器是否形成邻居关系与区域无关。
- Level-1-2路由器
- 同时属于Level-1和Level-2的路由器称为Level-1-2路由器,可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻居关系,也可以与同一区域或者其他区域的Level-2和Level-1-2路由器形成Level-2的邻居关系。Level-1路由器必须通过Level-1-2路由器才能连接至其他区域。Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
ISIS网络类型以及邻居
网络类型
| 网络类型 | 接口 |
|---|---|
| 广播链路 | Ethernet,Roken-Ring |
| 点到点链路 | PPP,HDLC |
邻居
| 对比项 | 广播 | 点到点 |
|---|---|---|
| Hello间隔 | 10s,DIS=3.3s | 10s |
| 邻接关系 | n*(n-1)/2 | n-1 |
| 使用DIS | 是 | 否 |
| LSP和IIH发送方式 | 组播 | 单播 |
| IIH类型 | L1 LLH, L2 LLH | P2P IIH |
IIH类似于ospf的hello包
广播网络邻接关系
- DIS (Designated IS) 作用是创建和更新伪节点,以简化拓扑,减少资源消耗
- 同一级别的路由器之间都会形成邻接关系
DIS与DR对比
| 对比项 | OSPF-DR | ISIS-DIS |
|---|---|---|
| 选举优先级 | 0优先级不参与选举 | 所有优先级都参与选举 |
| 选举规则 | 优先级->RID | 优先级->MAC地址 |
| 选举等待时间 | 40s | Hello报文间隔*2 |
| 备份 | 有 BDR | 无 |
| 邻接关系 | DRother之间是2-way | 所有路由器互相都是邻接关系 |
| 抢占性 | 不会抢占 | 会抢占 |
| 作用 | 减少LSA泛洪 | 减少LSA泛洪 周期发送CCNP同步LSDB |
| 层次性 | 无 | L1和L2分别选举 |
| 其他 | 伪接点 |
ISIS地址结构
NSAP由IDP(Initial Domain Part)和DSP(Domain Specific Part)组成。IDP相当于IP地址中的主网络号,DSP相当于IP地址中的子网号和主机地址。
如果最后两位是00那么是IP网络NET NET由AreaID+SystemID+00 AFI+IDI+HODSP=AreaID 区域ID为可变长度
Area Address区域地址
- 一台设备可以配置三个不同区域的NET,但是SystemID必须一致
- 既可以标识路由域,也能够标识路由域中的区域
- 相当于OSPF的区域编号
- 两个不同的路由域中不允许有相同的区域地址
- 一般情况下,一台路由器只需要配置一个区域地址,且所有区域中的所有节点的区域地址都要相同
- 为了支持区域的平滑合并,分割以及转换,一台路由器最多可以配置3个区域地址
System ID 系统ID
- 在区域内唯一标识主机和路由器 在实际应用中,一般使用RouterID与SystemID进行对应
SEL
- NSAP Selector 类似于IP中的协议标识符,在IP中 SEL为00
NET Network Entity Title 网络实体名称
- 可以看作是一类特殊的NSAP,即SEL=00的NSAP地址。
- 通常情况下,一台路由器配置一个NET即可。
- 当区域需要重新划分时,例如将多个区域合并,或者将一个区域划分为多个区域,这种情况下配置多个NET可以在重新配置时仍然能够保证路由的正确性。
- 由于一台路由器最多可配置3个区域地址,所以最多也只能配置3个NET。
- 在配置多个NET时,必须保证它们的SystemID都相同。
典型NET生成方法
ISIS报文结构
- 直接封装在数据链路层的帧结构中
- 分为通用报头,专用报头,可变长报头
ISIS报文类型
| 类型 | 全称 | 备注 |
|---|---|---|
| IIH | ISIS Hello PDU | 建立和维护邻居关系 |
| LSP | Link State PDU | 传输链路状态信息 |
| SNP | Sequence Numbers PDU | 描述数据库中的LSP |
PDU类型
| 类型 | 简称 | 全称 |
|---|---|---|
| 15 | L1 LAN IIH | hello包 |
| 16 | L2 LAN IIH | hello包 |
| 17 | P2P IIH | hello包 |
| 18 | L1 LSP | |
| 20 | L2 LSP | |
| 24 | L1 CSNP | 全部数据库描述 |
| 25 | L2 CSNP | 全部数据库描述 |
| 26 | L1 PSNP | 部分数据库描述 |
| 27 | L2 PSNP | 部分数据库描述 |
hello报文分析
- DIS选举优先级 取值范围0-127 越大越优先 默认64
LSP报文分析
- OL LSDB overload 表示本路由器内存不足而导致LSDB不完整,其他路由器在进行SPF计算时不会考虑这台路由器,但到此路由器直连地址的报文仍然可以被转发 置位1
SNP报文分析
CSNP报文
PSNP报文
- 请求或者确认链路摘要信息
TLV/CLV字段
- ISIS报文中的变长字段部分是多个TLV三元组
- TLV也称为CLV
ISIS邻居建立
建立邻居机制
- 点到点可以是两次握手建立邻居 也可以三次握手
- MA广播网络必须是三次握手建立邻居
- 默认是三次握手
邻居建立条件
- 只有同一层次的相邻路由器才有可能成为邻居
- 对于L1路由器来说,区域号必须一致
- 链路两点ISIS接口的网络类型必须一致
- 链路两端的ISIS接口的地址必须处于同一网段
- 如果接口配置了从IP,只要双方有某个IP在同一网段即可
- 对于P2P接口 可以配置接口忽略IP地址检查
- 对于以太网接口 需要将以太网接口模拟成P2P接口 才可以配置接口忽略IP地址检查
LSDB数据库同步
- LSP刷新间隔为15分钟,老化时间为20分钟
- 一条LSP的老化除了要等待20分钟外,还要等待60秒的零老化时延
- LSP重传时间为5秒
更新链路状态
LSP比较规则
- 序列号 越大越新
- Remaining Lifetime 存活时间 越小越新
- Checksum 校验和 越大越新
路由算法
区域间路由
L1路由器在转发时候 如何发现目的设备与自己同一区域 那么会查询自己的L1数据库直接转发 如果发现目的地址不在同一区域 那么会将数据包发给距离自己最近的L1-2路由器转发
默认路由
当ATT置位于1 代表该设备连接多区域 那么L1路由器会产生下一跳指向L1/2路由器的默认路由
ISIS路由渗透 Router Leaking, RFC2966
- 默认情况下,L1路由器只有在本区域的路由(L1/2路由器不会向一个区域通告其他区域的L1和L2路由),所以只能通过L1/2路由器注入默认路由去往本区域之外的目的地
- RFC1195中把L1路由器定义为 Stub Router
- 这样就可能导致次优路径和路由不同步
- 通过在L1/2路由器上定义ACL,路由策略,Tag标记等方式,将符合条件的路由筛选出来,通告在自己所在的L1区域
- 同时为了避免换路,渗透的路由会打上downbit
路由不同步问题 [tracert可以判断出来]
路由渗透解决
路由渗透防环
区域外次优路径
L1路由器临近两个L1/2路由器开销值相同但是区域外链路开销不同的情况
在引入外部路由时 附带开销值
路由渗透配置实验
- 可以R2/R3同时引入 或者R2单独引入
- 默认无路由渗透两条默认路由负载均衡
# 在R2的L2数据库引入L1数据库
[R2-isis-1]address-family ipv4
[R2-isis-1-ipv4]import-route isis level-2 into level-1
-
此时已经存在明细路由
-
查看到4.4.4.4为渗透路由
-
报文分析[防环机制]
# 重置isis
reset isis all
ip internal reachability 内部路由 extended ip reachability 外部路由
ISIS接口开销
- 与ospf不同 isis默认每个接口开销都为10 与带宽无关
| 开销配置方式 | 备注 |
|---|---|
| 接口开销 | 为单个接口设置开销 |
| 全局开销 | 为所有接口设置开销 |
| 自动计算开销 | 根据接口带宽自动计算开销 |
| 优先级 | 接口>全局>自动 |
不同的开销值类型存在不同的字节长度 存在兼容性问题
| 接口开销类型 | 备注 |
|---|---|
| narrow | 6bit,取值范围=1-63,路由开销最大为1023 超过1023认为不可达 |
| wide | 24bit,取值范围=1-16777215,路由开销最大为4261412864 配置16777215表示路由不可达 |
- 华为默认narrow
- wide和narrow类型不互通
[R1-isis-1]cost-style narrow // 默认为narrow
[R1-LoopBack0]isis cost 63 // 接口开销最大63
compatible兼容模式 narrow-compatibe与wide-compatibe在发送时存在差距