OSI 定义了七层模型,那为啥叫 OSI 参考模型?因为 OSI 不仅定义了七层模型,还定义了各层的网络协议,比如:CLNS 、CONP 、IS-IS 等等。但是很多协议,几年时间都无法定稿,定稿的部分也很复杂,实现成本过高。
而 TCP/IP 协议族是先有网络协议,再参考 OSI 的网络分层模型,建立 TCP/IP 网络模型。虽然不如 OSI 完善,但是 TCP 、IP 等协议可直接投入使用。
最后,OSI 大部分项目不了了之,几乎只剩下参考模型。
IS-IS
其中 IS-IS 是为数不多的、现网还在使用的 OSI 网络协议。IS-IS ,即 Intermediate System to Intermediate System ,中间系统到中间系统,是一种链路状态路由协议。与 OSPF 很像,IS-IS 通过 Hello 报文发现对方,建立邻居关系,交互 LSP ,LSP 会存储在自己的 LSDB 中,采用 SPF 算法进行计算,最后得到 IS-IS 路由。
IS-IS 是为 CLNP( ConnectionLess Network Protocol ,无连接网络协议)的动态路由协议,可以把 OSI 中的 CLNP 理解为 TCP/IP 的 IP 协议,两个协议的功能非常相似。IS-IS 是无法运行在 TCP/IP 环境中的,后来对 IS-IS 进行了扩展,让它可以同时支持 IP 路由,这种 IS-IS 叫做集成 IS-IS( Integrated IS-IS )。
常用名词
ISO :国际标准化组织,即在国际上促进各领域的标准化实现,比如 ISO9000 质量体系、OSI 参考模型。
OSI 模型有两种通信类型:CONS(面向连接的网络服务)和 CLNS(无连接网络服务)。
CONS :面向连接的网络服务。CONP 连接的网络协议,用来支持 CONS 服务。但现在 CLNS 已经取代了 CONS 服务。
CLNS :无连接的网络服务。由 CLNP 协议支持。
CLNP :无连接网络协议,类似 IP 协议,是 OSI 模式下的 CLNS 的网络协议。有时也叫 CLNS 协议。IS-IS 、ES-IS 、CLNP 都是网络层协议,直接封装在数据链路层帧内。而 TCP/IP 的 OSPF 报文是封装在 IP 报文里的。
IS :中间系统。IS-IS 协议中,路由器就是中间系统。
ES :终端系统。IS-IS 协议中,比如主机、服务器等
IS-IS :中间系统到中间系统,是 OSI 协议中的动态链路协议,在 CLNS 环境中,IS 之间动态的交换路由信息的协议,后来扩展到同时支持 TCP/IP 协议。OSPF 是 TCP/IP 下的动态链路协议。
集成 IS-IS :IS-IS 仅支持 CLNS 网络环境,不支持 IP 网络环境。后来 IETF 对 IS-IS 进行了修改和扩展,叫做集成 IS-IS( Integrated IS-IS )。集成 IS-IS 能同时在 TCP/IP 和 OSI 网络中,为提供动态的路由信息交换。集成 IS-IS 能同时处理多个网络层协议,比如 IP 和 CLNP ,而 OSPF 只支持 IP 一种。
ES-IS :终端系统与中间系统的通信协议。不属于路由协议。ES 和 IS 间建立邻接关系,数据链路地址到网络地址的映射。类似于 TCP/IP 协议中的 MAC 地址到 IP 地址的映射。
LSP :链路状态报文,是 IS-IS 用于描述链路状态信息,类似 OSPF 的 LSA 。IS 把网络中的 LSP 搜集起来,再装载到自己的 LSDB 中,然后基于 LSP 进行路由计算。LSP 分为两种:Level-1 LSP 和 Level-2 LSP 。
PDU :数据单元,OSI 网络层协议报文,类似于 TCP/IP 中的 IP 报文。
OSI 地址
NSAP
在 OSI 协议栈中,NSAP ,即网络服务器接入点,是 OSI 网络层的地址,在 OSI 协议栈中定位资源的地址。不但包含标识设备的地址信息,还包含标识上层协议类型或服务类型的内容。类似于 TCP/IP 中的 IP 地址和 TCP 或 UDP 端口号的组合。
NSAP 地址由 IDP(初始域部分)和 DSP(域指定部分)组成,IDP 和 DSP 又进一步划分。IDP 和 DSP 长度可变,那么 NSAP 地址的总长度也不固定,最短是 8byte ,最长是 20byte 。
AFI :长度是 1 byte ,表示地址的分配机构,也指定地址的格式。AFI 值是 49 时,表示本地管理,即私有地址空间。
IDI :表示域,长度可变。
High Order DSP :长度可变,在一个域中进一步划分区域。
System ID :表示一个区域内的某台设备,长度固定 6 byte ,通常使用 16 进制表示,比如 1234.abcd.5678 。同时,要保证域内设备的 System ID 必须是唯一的。设备的 MAC 地址刚好是 6 byte ,使用设备的 MAC 地址作为 System ID 是个不错的方案。
SEL :长度是 1 byte ,表示上层协议类型或服务类型。相当于 TCP/IP 中的端口。
IDP :相当于 IP 地址的网络号,由 AFI 和 IDI 组成。AFI 表示地址分配机构和地址格式,IDI 表示域。
DSP :相当于 IP 地址的子网号和主机地址。由 High Order DSP 、System ID 和 SEL 组成。High Order DSP 用来分隔区域,System ID 用来区分主机,SEL 用来表示服务类型。
Area Address :长度可变,最短是 1 byte。由 IDP 和 DSP 的 High Order DSP 组成,既能够表示路由域,又能表示域中的区域,叫做区域地址,相当于 OSPF 中的区域编号。
NET
OSI 协议栈中,还有一个重要的地址,它就是 NET ,即网络实体名称。SEL 值为 0 的 NASP 地址就是 NET ,它表示设备的网络地址。SEL 为 0 ,即未标识上层协议类型,只用于表示设备本身。即使在纯 TCP/IP 环境中部署 IS-IS ,也必须为每台运行 IS-IS 的设备分配 NET ,否则无法正常工作。为设备指定 NET 后,设备就可以解析出区域 ID ,以及设备的系统 ID 。通常,一个设备指定一个 NET ,当然,也支持指定多个 NET ,但是系统 ID 必须相同。系统 ID 相当于 OSPF 的 Router-ID 。
NSAP 是使用一个地址表示一台路由器,而 IP 是路由器的每个端口都分配一个 IP 地址。
在 NET 中,区域 ID 的长度可变,因此 NET 的长度不固定。设备如何识别出区域 ID 和系统 ID 呢?以 49.0001.1234.abcd.5678.00 为例。
NET 最后一个字节是 SEL ,对应的值必须是 0 ,相邻的六个字节是系统 ID ,其余部分就是区域 ID 。在同一个区域的两台 IS-IS 设备,区域 ID 必须相同,系统 ID 必须不同。
配置举例:
isis
命令创建进程,并进入配置视图,isis
命令可指定进程 Process-ID
。如果未指定 Process-ID
,系统就会自动分配一个默认的。配置视图下,network-entity
命令配置 NET ,NET 是 49.1234.abcd.1111.2222.3333.00 ,系统 ID 是 1111.2222.3333 ,也可以是接口的 MAC 地址;区域 ID 是 49.1234.abcd 。配置 NET 时,只需要关注区域 ID 和系统 ID 这两个信息。