培训教材-路由器 * Router id-用于描述数据包的源地址,以IP地址来表示 * Area Id用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的 OSPF区域 * Checksum-校验位,用于标记数据包在传递时有无误码 Authentication type-定义OSPF验证类型 * Authentication-包含OSPF验证信息,长为8个字节 1.3.3.0SPF基本算法 SPF算法及最短路径树 SPF算法是OSPF路由协议的基础。SPF算法有时也被称为 Dijkstra算法,这是因为最短 路径优先算法SPF是 Dijkstra发明的。SPF算法将每一个路由器作为根(ROOT)来计算其到 每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结 构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。在OSPF路由协议中 最短路径树的树干长度,即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost, 其算法为: Cost=100×106/链路带宽 在这里,链路带宽以bps来表示。也就是说,OSPF的Cost与链路的带宽成反比,带宽 越高,Cost越小,表示OSPF到目的地的距离越近。举例来说,FDDL或快速以太网的Cost 为1,2M串行链路的Cost为48,10M以太网的Cost为10等。 链路状态算法 作为一种典型的链路状态的路由协议,OSPF还得遵循链路状态路由协议的统一算法。链 路状态的算法非常简单,在这里将链路状态算法概括为以下四个步骤: 1、当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等) 时,路由器会产生链路状态广播数据包LSA(Link- State Advertisement),该数据包 里包含路由器上所有相连链路,也即为所有端口的状态信息 2、所有路由器会通过一种被称为刷新( Flooding)的方法来交换链路状态数据。 Flooding 是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据 其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻 的路由器,直至稳定的一个过程。 3、当网络重新稳定下来,也可以说OSPF路由协议收敛下来时,所有的路由器会根据 其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达 目的地的Cost以及到达该目的地所要转发的下一个路由器( next-hop)。 4、第4个步骤实际上是指OSPF路由协议的一个特性。当网络状态比较稳定时,网络 中传递的链路状态信息是比较少的,或者可以说,当网络稳定时,网络中是比较安静的。这 也正是链路状态路由协议区别与距离矢量路由协议的一大特点, 培训教材-路由器 客户服务中心
培训教材-路由器 培训教材-路由器 11 客户服务中心 * Router ID-用于描述数据包的源地址,以 IP 地址来表示。 * Area ID-用于区分 OSPF 数据包属于的区域号,所有的 OSPF 数据包都属于一个特定的 OSPF 区域。 * Checksum-校验位,用于标记数据包在传递时有无误码。 * Authentication type-定义 OSPF 验证类型。 * Authentication-包含 OSPF 验证信息,长为 8 个字节。 1.3.3. OSPF基本算法 SPF 算法及最短路径树 SPF 算法是 OSPF 路由协议的基础。SPF 算法有时也被称为 Dijkstra 算法,这是因为最短 路径优先算法 SPF 是 Dijkstra 发明的。SPF 算法将每一个路由器作为根(ROOT)来计算其到 每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结 构图,该结构图类似于一棵树,在 SPF 算法中,被称为最短路径树。在 OSPF 路由协议中, 最短路径树的树干长度,即 OSPF 路由器至每一个目的地路由器的距离,称为 OSPF 的 Cost, 其算法为: Cost = 100×106/链路带宽 在这里,链路带宽以 bps 来表示。也就是说,OSPF 的 Cost 与链路的带宽成反比,带宽 越高,Cost 越小,表示 OSPF 到目的地的距离越近。举例来说,FDDI 或快速以太网的 Cost 为 1,2M 串行链路的 Cost 为 48,10M 以太网的 Cost 为 10 等。 链路状态算法 作为一种典型的链路状态的路由协议,OSPF 还得遵循链路状态路由协议的统一算法。链 路状态的算法非常简单,在这里将链路状态算法概括为以下四个步骤: 1、 当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等) 时,路由器会产生链路状态广播数据包 LSA(Link-State Advertisement),该数据包 里包含路由器上所有相连链路,也即为所有端口的状态信息。 2、 所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding 是指路由器将其 LSA 数据包传送给所有与其相邻的 OSPF 路由器,相邻路由器根据 其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻 的路由器,直至稳定的一个过程。 3、 当网络重新稳定下来,也可以说 OSPF 路由协议收敛下来时,所有的路由器会根据 其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达 目的地的 Cost 以及到达该目的地所要转发的下一个路由器(next-hop)。 4、 第 4 个步骤实际上是指 OSPF 路由协议的一个特性。当网络状态比较稳定时,网络 中传递的链路状态信息是比较少的,或者可以说,当网络稳定时,网络中是比较安静的。这 也正是链路状态路由协议区别与距离矢量路由协议的一大特点
培训教材-路由器 1.3.4.0SPF路由协议的基本特征 前文已经说明了OSPF路由协议是一种链路状态的路由协议,为了更好地说明OSPF路由协 议的基本特征,我们将OSPF路由协议与距离矢量路由协议之一的RP( Routing information Protocol)作一比较,归纳为如下几点: RIP路由协议中用于表示目的网络远近的唯一参数为跳(HOP),也即到达目的网络所 要经过的路由器个数。在RIP路由协议中,该参数被限制为最大15,也就是说RP路由信息 最多能传递至第16个路由器:对于OSPF路由协议,路由表中表示目的网络的参数为Cost, 该参数为一虚拟值,与网络中链路的带宽等相关,也就是说OSPF路由信息不受物理跳数的 限制。并且,OSPF路由协议还支持TOS( Type of Service)路由,因此,OSPF比较适合应用 于大型网络中。 RIP路由协议不支持变长子网屏蔽码(ⅥLSM),这被认为是RIP路由协议不适用于大 型网络的又一重要原因。采用变长子网屏蔽码可以在最大限度上节约IP地址。OSPF路由协 议对ⅤLSM有良好的支持性 RP路由协议路由收敛较慢。RIP路由协议周期性地将整个路由表作为路由信息广播至 网络中,该广播周期为30秒。在一个较为大型的网络中,RIP协议会产生很大的广播信息 占用较多的网络带宽资源:并且由于RP协议30秒的广播周期,影响了RIP路由协议的收敛 甚至出现不收敛的现象。而OSPF是一种链路状态的路由协议,当网络比较稳定时,网络中 的路由信息是比较少的,并且其广播也不是周期性的,因此OSPF路由协议即使是在大型网 络中也能够较快地收敛。 *在RP协议中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由CIDR 概念的出现,RP协议就明显落伍了。在OSPF路由协议中,一个网络,或者说是一个路由域 可以划分为很多个区域area,每一个区域通过OSPF边界路由器相连,区域间可以通过路由 总结( Summary)来减少路由信息,减小路由表,提高路由器的运算速度。一个典型的OSPF 网络结构可以参见附图 附图2:OSPF典型结构 培训教材-路由器 客户服务中心
培训教材-路由器 培训教材-路由器 12 客户服务中心 1.3.4. OSPF路由协议的基本特征 前文已经说明了 OSPF 路由协议是一种链路状态的路由协议,为了更好地说明 OSPF 路由协 议的基本特征,我们将 OSPF 路由协议与距离矢量路由协议之一的 RIP(Routing Information Protocol)作一比较,归纳为如下几点: * RIP 路由协议中用于表示目的网络远近的唯一参数为跳(HOP),也即到达目的网络所 要经过的路由器个数。在 RIP 路由协议中,该参数被限制为最大 15,也就是说 RIP 路由信息 最多能传递至第 16 个路由器;对于 OSPF 路由协议,路由表中表示目的网络的参数为 Cost, 该参数为一虚拟值,与网络中链路的带宽等相关,也就是说 OSPF 路由信息不受物理跳数的 限制。并且,OSPF 路由协议还支持 TOS(Type of Service)路由,因此,OSPF 比较适合应用 于大型网络中。 * RIP 路由协议不支持变长子网屏蔽码(VLSM),这被认为是 RIP 路由协议不适用于大 型网络的又一重要原因。采用变长子网屏蔽码可以在最大限度上节约 IP 地址。OSPF 路由协 议对 VLSM 有良好的支持性。 * RIP 路由协议路由收敛较慢。RIP 路由协议周期性地将整个路由表作为路由信息广播至 网络中,该广播周期为 30 秒。在一个较为大型的网络中,RIP 协议会产生很大的广播信息, 占用较多的网络带宽资源;并且由于 RIP 协议 30 秒的广播周期,影响了 RIP 路由协议的收敛, 甚至出现不收敛的现象。而 OSPF 是一种链路状态的路由协议,当网络比较稳定时,网络中 的路由信息是比较少的,并且其广播也不是周期性的,因此 OSPF 路由协议即使是在大型网 络中也能够较快地收敛。 * 在 RIP 协议中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由 CIDR 概念的出现,RIP 协议就明显落伍了。在 OSPF 路由协议中,一个网络,或者说是一个路由域 可以划分为很多个区域 area,每一个区域通过 OSPF 边界路由器相连,区域间可以通过路由 总结(Summary)来减少路由信息,减小路由表,提高路由器的运算速度。一个典型的 OSPF 网络结构可以参见附图二 附图 2:OSPF 典型结构
培训教材-路由器 *OSPF路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信 息。并且OSPF可以对不同的区域定义不同的验证方式,提高网络的安全性。 *OSPF路由协议对负载分担的支持性能较好。OSPF路由协议支持多条Cost相同的链路 上的负载分担,目前一些厂家的路由器支持6条链路的负载分担。 1.3.5.区域及域间路由 前文已经提到过,在OSPF路由协议的定义中,可以将一个路由域或者一个自治系统AS划 分为几个区域。在OSPF中,由按照一定的OSPF路由法则组合在一起的一组网络或路由器的 集合称为区域(AREA)。 在OSPF路由协议中,每一个区域中的路由器都按照该区域中定义的链路状态算法来计 算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图 对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对 其域外的其氽网络结构也不了解。这意味着OSPF路由域中的网络链路状态数据广播被区域 的边界挡住了,这样做有利于减少网络中链路状态数据包在全网范围内的广播,也是OSPF 将其路由域或一个AS划分成很多个区域的重要原因。 随着区域概念的引入,意味着不再是在同一个AS内的所有路由器都有一个相同的链路 状态数据库,而是路由器具有与其相连的每一个区域的链路状态信息,即该区域的结构数据 库,当一个路由器与多个区域相连时,我们称之为区域边界路由器。一个区域边界路由器有 自身相连的所有区域的网络结构数据。在同一个区域中的两个路由器有着对该区域相同的结 构数据库 我们可以根据P数据包的目的地地址及源地址将OSPF路由域中的路由分成两类,当目 的地与源地址处于同一个区域中时,称为区域内路由,当目的地与源地址处于不同的区域甚 至处于不同的AS时,我们称之为域间路由。 OSPF的骨干区域及虚拟链路( Virtual-ink) 在OSPF路由协议中存在一个骨干区域( Backbone),该区域包括属于这个区域的网络及 相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨 干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域 之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传 递至区域α(骨干区域),再由区域θ将该路由信息向其余区域作广播。骨干区域与其余区域的 关系可以以附图三来说明 培训教材-路由器 客户服务中心
培训教材-路由器 培训教材-路由器 13 客户服务中心 * OSPF 路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信 息。并且 OSPF 可以对不同的区域定义不同的验证方式,提高网络的安全性。 * OSPF 路由协议对负载分担的支持性能较好。OSPF 路由协议支持多条 Cost 相同的链路 上的负载分担,目前一些厂家的路由器支持 6 条链路的负载分担。 1.3.5. 区域及域间路由 前文已经提到过,在 OSPF 路由协议的定义中,可以将一个路由域或者一个自治系统 AS 划 分为几个区域。在 OSPF 中,由按照一定的 OSPF 路由法则组合在一起的一组网络或路由器的 集合称为区域(AREA)。 在 OSPF 路由协议中,每一个区域中的路由器都按照该区域中定义的链路状态算法来计 算网络拓扑结构,这意味着每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。 对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对 其域外的其余网络结构也不了解。这意味着 OSPF 路由域中的网络链路状态数据广播被区域 的边界挡住了,这样做有利于减少网络中链路状态数据包在全网范围内的广播,也是 OSPF 将其路由域或一个 AS 划分成很多个区域的重要原因。 随着区域概念的引入,意味着不再是在同一个 AS 内的所有路由器都有一个相同的链路 状态数据库,而是路由器具有与其相连的每一个区域的链路状态信息,即该区域的结构数据 库,当一个路由器与多个区域相连时,我们称之为区域边界路由器。一个区域边界路由器有 自身相连的所有区域的网络结构数据。在同一个区域中的两个路由器有着对该区域相同的结 构数据库。 我们可以根据 IP 数据包的目的地地址及源地址将 OSPF 路由域中的路由分成两类,当目 的地与源地址处于同一个区域中时,称为区域内路由,当目的地与源地址处于不同的区域甚 至处于不同的 AS 时,我们称之为域间路由。 OSPF 的骨干区域及虚拟链路(Virtual-link) 在 OSPF 路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及 相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨 干区域一般为区域 0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域 之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传 递至区域 0(骨干区域),再由区域 0 将该路由信息向其余区域作广播。骨干区域与其余区域的 关系可以以附图三来说明
培训教材-路由器 areao Inter-arda,Route Intra-area Route area route Intra-ayea Route area2 area 附图3:骨干区域及域间路由 在实际网络中,可能会存在 backbone不连续的或者某一个区域与骨干区域物理不相连的 情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决 虚拟链路是设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相 连。虚拟链路被认为是属于骨干区域的,在OSPF路由协议看来,虚拟链路两端的两个路由 器被一个点对点的链路连在一起。在OSPF路由协议中,通过虚拟链路的路由信息是作为域 内路由来看待的。下面我们分两种情况来说明虚拟链路在OSPF路由协议中的作用 当一个区域与area0没有物理链路相连时 前文已经提到,一个骨干区域Area0必须位于所有区域的中心,其余所有区域必须与骨 干区域直接相连。但是,也存在一个区域无法与骨干区域建立物理链路的可能性,在这种情 况下,我们可以采用虚拟链路。虚拟链路使该区域与骨干区域间建立一个逻辑联接点,该虚 拟链路必须建立在两个区域边界路由器之间,并且其中一个区域边界路由器必须属于骨干区 域。这种虚拟链路可以以下图来说明。 培训教材-路由器 客户服务中心
培训教材-路由器 培训教材-路由器 14 客户服务中心 附图 3:骨干区域及域间路由 在实际网络中,可能会存在 backbone 不连续的或者某一个区域与骨干区域物理不相连的 情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决。 虚拟链路是设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相 连。虚拟链路被认为是属于骨干区域的,在 OSPF 路由协议看来,虚拟链路两端的两个路由 器被一个点对点的链路连在一起。在 OSPF 路由协议中,通过虚拟链路的路由信息是作为域 内路由来看待的。下面我们分两种情况来说明虚拟链路在 OSPF 路由协议中的作用。 1.当一个区域与 area0 没有物理链路相连时 前文已经提到,一个骨干区域 Area 0 必须位于所有区域的中心,其余所有区域必须与骨 干区域直接相连。但是,也存在一个区域无法与骨干区域建立物理链路的可能性,在这种情 况下,我们可以采用虚拟链路。虚拟链路使该区域与骨干区域间建立一个逻辑联接点,该虚 拟链路必须建立在两个区域边界路由器之间,并且其中一个区域边界路由器必须属于骨干区 域。这种虚拟链路可以以下图来说明
培训教材-路由器 areal A B areaO area 2 附图4:虚拟链路(1) 在上图所示的例子中,区域1与区域0并无物理相连链路,我们可以在路由器A及路由 器B之间建立虚拟链路,这样,将区域2作为一个穿透网络( Transit- network),路由器B作 为接入点,区域1就与区域0建立了逻辑联接 2当骨干区域不连续时 OSPF路由协议要求骨干区域area0必须是连续的,但是,骨干区域也会出现不连续的情 况,例如,当我们想把两个OSPF路由域混合到一起,并且想要使用一个骨干区域时,或者 当某些路由器出现故障引起骨干区域不连续的情况,在这些情况下,我们可以采用虚拟链路 将两个不连续的区域0连接到一起。这时,虚拟链路的两端必须是两个区域0的边界路由器 并且这两个路由器必须都有处于同一个区域的端口,以下图为例:附图5:虚拟链路(2) area 2 area A B VL areao areaO areal 在上图的例子中,穿过区域1的虚拟链路将两个分为两半的骨干区域连接到一起,路由 器A与B之间的路由信息作为OSPF域内路由来处理。 培训教材-路由器 客户服务中心
培训教材-路由器 培训教材-路由器 15 客户服务中心 附图 4:虚拟链路(1) 在上图所示的例子中,区域 1 与区域 0 并无物理相连链路,我们可以在路由器 A 及路由 器 B 之间建立虚拟链路,这样,将区域 2 作为一个穿透网络(Transit-network),路由器 B 作 为接入点,区域 1 就与区域 0 建立了逻辑联接。 2.当骨干区域不连续时 OSPF 路由协议要求骨干区域 area0 必须是连续的,但是,骨干区域也会出现不连续的情 况,例如,当我们想把两个 OSPF 路由域混合到一起,并且想要使用一个骨干区域时,或者 当某些路由器出现故障引起骨干区域不连续的情况,在这些情况下,我们可以采用虚拟链路 将两个不连续的区域 0 连接到一起。这时,虚拟链路的两端必须是两个区域 0 的边界路由器, 并且这两个路由器必须都有处于同一个区域的端口,以下图为例:附图 5:虚拟链路(2) 在上图的例子中,穿过区域 1 的虚拟链路将两个分为两半的骨干区域连接到一起,路由 器 A 与 B 之间的路由信息作为 OSPF 域内路由来处理