七、网关协议
Intenet 中的路由器叫 IP网关。网关执行复杂的路由算法,需要大量且及时的路由信息。网关协议就是用于网关之间交换路由信息的协议。
1. 自治系统
(1)自治系统是由同构型的网关连接的因特网,这样的系统往往是由一个网络管理中心控制的。
(2)自治系统内部的网关之间执行内部网关协议 (IGP ),互相交换路由信息。
(3)一般来说,IGP是自治系统内部专用的,为特定的应用服务,在自治系统之外是无效的。
(4)在不同自治系统之间用外部网关协议(EGP),交换路由信息。
(5)EGP 比 IGP 传送的信息要少一些,因为 EGP 只涉及自治系统之间的路由信息,而与系统内部路由无关。换而言之,EGP 以自治系统为节点,通告各个网关可到达哪些系统。
(6)内部网关协议和外部网关协议如下图所示:
2.外部网关协议
(1)早期有一个外部网关协议叫EGP,最新的外部网关协议叫作 BGP。
(2)BGP 4 已经广泛地应用于不同ISP的网络之间,成为事实上的Internet 外部路由协议标准。
(3)BGP 4 是一种动态路由发现协议,支持无类别域问路由 CIDR。
(4)BGP 的主要功能是控制路由策略,例如是否愿意转发过路的分组等。BGP的 4 种报文如下表所示,这些报文通过TCP(179端口)连接传送。
报 文 类 型 功 能 描 述
打开(Open) 建立邻居关系
更新(Update) 发送新的路由信息
保持活动状态(Keepalive) 对 Open 的应答/周期性地确认邻居关系
通告(Notification) 报告检测到的错误
(5)在 BGP 中用上述 4 种报文可实现以3个功能过程:
- 建立邻居关系
- 邻居可到达性。
- 网络可到达性。
3.内部网关协议
(1)网关协议也叫作路由协议,是路由器之间实现路由信息共享的一种机制,它允许路由器之间通过交换路由信息维护各自的路由表。IP协议是根据路由表进行分组转发的协议,按照业内的说法,应该叫作被路由的协议。
(2)常用内部路由协议包括路由信息协议(RIP)、开放最短路径优先协议(OSPF)、中间系统到中间系统的协议(IS-IS)、内部网关路由协议(IGRP)和增强的IGRP协议(EIGRP)等,最后两种是思科公司的专利协议。
路由信息协议
①RIP 作为内部网关协议运行在基于 TCP/IP 的网络中。RIP 适用于小型网络,因为它允许的跳步数不超过 15 步。
②RIP 分为两个版本:RIPv1、RIPv2。
③路由收敛和水平分割
- 距离矢量法要求相邻的路由器之间周期性地交换路由表,并通过逐步交换把路由信息扩散到网络中所有的路由器。这种逐步交换过程如果不加以限制,将会形成路由环路,使得各个路由器无法就网络的可到达性取得一致。
- 解决路由环路问题可以采用水平分割法。这种方法规定,路由器必须有选择地将路由表中的信息发送给邻居,而不是发送整个路由表。
④RIP 报文格式
RIPv2 报文封装在 UDP 数据报中发送,占用端口号 520,报文格式如下图所示。
报文包含 4 个字节的报头,然后是若干个路由记录。RIP 报文最多可携带 25 个路由记录,每个路由记录20个字节,其中各个字段的解释如下。
- 命令:用于区分请求和响应报文 。
- 版本:可以是 RIP 第一版或第二版,两种版本报文格式相同。
- 地址族标识符:对于 IP 协议,该字段为 2 。
- 路由标记:用于区别内部或外部路由,用16位的 AS 编号来区分从其他自治系统学习到的路由。
- 网络地址:表示目标 IP 地址。
- 子网掩码:对于 RIPv2,该字段是对应网络地址的子网掩码;对于RIPv1,该字段是0,因为 RIPv1 默认使用 A、B、C 类地址掩码。
- 下一跳路由器地址:表示下一跳的地址。
- 距离:表示到达目标的跳步数。
OSPF 协议
OSPF 是一种链路状态协议,用于在自治内部的路由器之间交换路由信息。OSPF 具有支持大型网络、占用网络资源少、路由收敛快等优点,在目前的网络配置中占有很重要的地位。
距离矢量协议发布自己的路由表,交换的路由信息量很大。链路状态协议与之不同,它是从各个路由器收集链路状态信息,构造网络拓扑结构图,使用 Dijkstra 的最短通路优先算决(SPF)计算到达各个目标的最佳路由。
距离矢量协议是周期性地发布路由信息,面链路状态协议是在网络拓扑发生变化时才发布路由信息,而且 OSPF 采用 TCP 连接发送报文,每个报文都要求应答,因而通信更加可靠。
OSPF 协议引入了“分层路由”的概念。如果网络规模很大,则路由器要学习的路由信息很多,对网络资源的消耗很大,所以典型的链路状态协议都把网络划分成较小的区域,从而限制了路由信息传播的范围。每个区域就如同一个独立的网络,区域内的路由器只保存该区域的链路状态信息,使得路由器的链路状态数据库可以保持合理的大小,路由计算的时间和报文数量都不会太大。OSPF 主干网负责在各个区域之间传播路由信息。
①OSPF区域
每个 OSPF 区域被指定了一个 32 位的区域标识符,可以用点分十进制表示,OSPF 的区域分为以下 5 种,不同类型的区域对由自治系统外部传入的路由信息的处理方式不同。
- 标准区域:标准区域可以接收任何链路更新信息和路由汇总信息。
- 主干区域:主干区域是连接各个区域的传输网络,其他区域都通过主干区域交换路由信息。主干区域拥有标准区域的所有性质。
- 存根区域:不接收本地自治系统以外的路由信息,对自治系统以外的目标采用默认路由 0.0.0.0。
- 完全存根区域:不接收自治系统以外的路由信息,也不接收自治系统内其他区域的路由汇总信息,发送到本地区域外的报文使用默认路由0.0.0.0。完全存根区域是Cisco 定义的,是非标准的。
- 不完全存根区域(NSAA):类似于存根区域,但是允许接收以类型7的链路状态公告发送的外部路由信息。
②OSPF网络类型
网络的物理连接和拓扑结构不同,交换路由信息的方式就不同。OSPF 将路由器连接的物理网络划分为 4 种类型。
- 点对点网络:在这种网络中,两个路由器可以直接交换路由信息。
- 广播多址网络:以太网或者其他具有共享介质的局域网都属于这种网络。在这种网络中,一条路由信息可以广播给所有的路由器。
- 非广播多址网络(NBMA):例如 X.25 分组交换网就属于这种网络,在这种网络中可以通过组播方式发布路由信息。
- 点到多点网络:可以把非广播网络当作多条点对点网络来使用,从而把一条路由信息发送到不同的目标。
如果两个路由器都通过各自的接口连接到一个共同的网络上,则它们是邻居关系。路由器通过 OSPF 的 Hello 协议来发现邻居。
③OSPF 路由器
在多区域网络中,OSPF路由器可以按不同的功能划分为以下4种。
- 内部路由器:所有接口在同一区域内的路由器,只维护一个链路状态数据库
- 主干路由器:具有连接主干区域接口的路由器。
- 区域边界路由器ABR:连接多个区域的路由器,一般作为一个区域的出口。ABR 为每一个连接的区域建立一个链路状态数据库,负责将所连接区域的路由摘要信息发到主干区域,而主干区域上的 ABR 则负责将这些信息发送给各个区域。
- 自治系统边界路由器(ASBR):至少拥有一个连接外部自治系统接口的路由器,负责将外部非 OSPF 网络的路由信息传入 OSPF 网络。
④链路状态公告
OSPF 路由器之间通过链路状态公告(LSA)交换网络拓扑信息。LSA 中包含连接的接口、链路的度量值等信息。LSA 有几种不同类型的报文,具体如下图:
类型 | 名称 | 发送者 | 传播范围 | 描述 |
---|---|---|---|---|
1 | 路由器 LSA | 任意 OSPF 路由器 | 区域内 | 路由器在区域内连接的链路状态 |
2 | 网络 LSA | DR | 区域内 | 指定路由器 DR 在区域内连接的各个路由器 |
3 | 网络汇总 LSA | ABR | 主干区域 | ABR 连接的本地区域中的链路状态 |
4 | ASBR 汇总 LSA | ABR | 主干区域 | 自治系统边界路由器 ASBR 的可到达性 |
5 | 外部 LSA | ASBR | 除存根区之外的其他区 | 自治系统之外的的路由信息 |
6 | 组播 LSA | 用于建立组播分发树 | ||
7 | NSSA LSA | 连接到 NSSA 的 ASBR | 不完全存根区 Not-So-Stub-Area | 到达自治系统之外的目标的路由可以由 ABR 转换为类型 5 的LSA |
⑤OSPF 报文
下表为 OSPF 的5种报文,这些报文通过 TCP 连接传送。OSPF 路由器启动后以固定的时间间隔泛洪传播 Hello 报文,采用目标地址 224.0.0.5 代表所有的 OSPF 路由器。在点对点网络上每 10 秒发送一次,在 NBMA 网络中每 30 秒发送一次。管理 Hello 报文交换的规则称为 Hello 协议。Hello 协议用于发现邻居,建立毗邻关系,还用于选出区域内的指定路由器 DR 和备份指定路由器 BDR。
类型 | 报文类型 | 功能描述 |
---|---|---|
1 | Hello | 用于发现相邻的路由器 |
2 | 数据库描述 DBD | 表示发送者的链路状态数据库内容 |
3 | 链路状态请求 LSR | 向对方请求链路状态信息 |
4 | 链路状态更新 LSU | 向邻居路由器发送链路状态通告 |
5 | 链路状态应答 LSAck | 对链路状态更新报文的应答 |
OSPF 报文格式如下图所示,对报文头的各个字段解释如下。
- 版本:OSPF 版本1已废弃,现在使用的是版本2。
- 类型:如④当中表中所示。
- 分组长度:整个 OSPF 报文的长度。
- 路由器ID:利用路由器环路接口的 IP 地址作为路由器的标识,如果没有环路接口 IP 地址,则选择最大的接口 IP 地址作为路由器标识。
- 区域ID:在多区域网络中,每一个区域指定一个区域 ID。
- 认证类型:OSPF 支持不同的认证方法,对组播地址 224.0.0.5 发送的 Hello 分组要经过认证才能被接收。
⑥OSPF 的优缺点
- 链路状态协议使用了分层的网络结构,减小了 LSA 的传播范围,同时也减小了网络拓扑变化时影响所有路由器的可能性。
- 链路状态协议使用组播来共享路由信息,并且发布的是增量式的更新消息。
- 链路状态协议支持无类别的路由和路由汇总功能,可以使用 VLSM 和CIDR技术。
- 使用 SPF 算法不会在路由表中出现环路,而这是距离矢量路由协议难以处理的问题。
4.核心网关协议
主干网中的网关叫核心网关。核心网关之间交换路由信息时使用核心网关协议(GGP)。
GGP协议的报文格式与EGP类似。报文分为以下4类。
- 路由更新报文:发送路由信息。
- 应答报文:对路由更新报文的应答,分肯定、否定两种。
- 测试报文:测试相邻网关是否存在。
- 网络接口状态报文:测试本地网络连接的状态。