首页 ospf协议

ospf协议

举报
开通vip

ospf协议 OSPF 路由协议概述 1 OSPF 路由协议概述 1.1 内容简介 随着 Internet 技术在全球范围的飞速发展,OSPF 已成为目前 Internet 广域网和 Intranet 企 业网采用最多、应用最广泛的路由协议之一。OSPF 是 Open Shortest Path First(开放最 短路由优先协议)的缩写。它是 IETF 组织开发的一个基于链路状态的内部网关协议。目前 针对 IPv4 协议使用的是 OSPF Version 2(RFC2328)。 OSPF 协议是由 In...

ospf协议
OSPF 路由 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 概述 1 OSPF 路由协议概述 1.1 内容简介 随着 Internet 技术在全球范围的飞速发展,OSPF 已成为目前 Internet 广域网和 Intranet 企 业网采用最多、应用最广泛的路由协议之一。OSPF 是 Open Shortest Path First(开放最 短路由优先协议)的缩写。它是 IETF 组织开发的一个基于链路状态的内部网关协议。目前 针对 IPv4 协议使用的是 OSPF Version 2(RFC2328)。 OSPF 协议是由 Internet Engineering Task Force 的 OSPF 工作组所开发的,特别为 TCP/IP 网络而设计,包括明确的支持 CIDR 和标记来源于外部的路由信息。OSPF 也提供了对路由 更新的验证,并在发送/接收更新时使用 IP 多播。此外,还作了很多的工作使得协议仅用很 少的路由流量就可以快速地响应拓扑改变。 本文主要介绍 OSPF 路由协议的基本原理,包括:OSPF 的协议报文、邻居状态机、链路 状态同步,以及 DR、BDR 选举和 OSPF 区域的划分。 本文来源于 H3C 网络学院教材,作为 OSPF 路由协议实验的主要参考资料。通过这个实验, 学生应该能掌握 OSPF 路由协议的基本概念和基本原理,OSPF 路由计算过程,具备规划 和配置 OSPF 路由协议的能力,并能处理一般的 OSPF 故障。 说明: 若没有特别说明,下文中所提到的 OSPF均指 OSPFv2。 1.2 相关概念回顾 在理论课程中,我们对距离矢量和链路状态路由协议有了一定的了解。下面,我们将会回顾 一些相关的概念,指出距离矢量算法和链路状态算法的一些区别。 1.2.1 路由表 路由器转发分组的关键是路由表。每个路由器中都保存着一张路由表,表中每条路由项都指 明分组到某子网或某主机应通过路由器的哪个物理端口发送,然后就可到达该路径的下一个 路由器,或者不再经过别的路由器而传送到直接相连的网络中的目的主机。 根据来源不同,路由表中的路由通常可分为以下三类: OSPF 路由协议概述 2 1. 链路层协议发现的路由(也称为接口路由或直连路由) 2. 由网络管理员手工配置的静态路由 3. 动态路由协议发现的路由。 路由协议 静态路由协议 动态路由协议 距离矢量路由协议 (如RIP) 链路状态路由协议 (如OSPF IS-IS) 图1-1 如图 1-1 路由协议的分类 其中动态路由协议又包括有:TCP/IP 协议栈的 RIP(Routing Information Protocol,路由信 息协议)协议、OSPF(Open Shortest Path First,开放式最短路径优先)协议;OSI 参考 模型的 IS-IS(Intermediate System to Intermediate System)协议等。如图 1-1。 1.2.2 距离矢量算法和链路状态算法 动态路由协议有很多种,分类 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 也很多。主要的分类标准是根据算法的不同来划分,不同 的算法能适应的网络规模也不尽相同。目前常见的动态路由协议,根据使用的算法可分为: ¾ 距离矢量协议(Distance-Vector):包括 RIP 和 BGP。其中,BGP 也被称为路 径矢量协议(Path-Vector)。 ¾ 链接状态协议(Link-State):包括 OSPF 和 IS-IS。 以上两种算法的主要区别在于发现路由和计算路由的方法。 1. 距离矢量协议(Distance-Vector): 距离矢量协议也称为 Bellman-Ford 协议,网络中路由器向相邻的路由器发送它们的整个路 由表。路由器在从相邻路由器接收到的信息的基础之上建立自己的路由表。然后,将信息传 递到它的相邻路由器。这样一级级的传递下去以达到全网同步。也就是说距离矢量路由表中 的某些路由项有可能是建立在第 2 手信息的基础之上的,每个路由器都不了解整个网络拓 OSPF 路由协议概述 3 扑,它们只知道与自己直接相连的网络情况,并根据从邻居得到的路由信息更新自己的路由 表,进行矢量行叠加后转发给其它的邻居, 距离矢量算法存在的一个重要的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 就是会产生路由环路。路由环路问题产生的原因和距离 矢量算法的原理有关,正如前面所讲的,每个路由器根据从其它路由器接收到的信息来建立 自己的路由表。如果某个路由器出现“故障”或者因为别的原因而无法在网上使用时,就会 造成路由环路。 针对产生回路的问题,防止和解决的方法有: ¾ 定义最大路由权值 ¾ 水平分割 ¾ 毒性逆转 ¾ 路由保持法 ¾ 触发更新 距离矢量协议无论是实现还是管理都比较简单,但是它的收敛速度慢,报文量大,占用较多 网络开销,并且会产生路由环路,为避免路由环路得提供特殊处理。路由环路是 DV 算法必 须要解决的问题,只有处理好环路问题的路由协议才能应用在实际的系统中。常见的 D-V 路由协议一般都会采用上述阐述的多种方法解决路由环路的问题。 2. 链路状态算法 链路状态算法对路由的计算方法和距离矢量算法有本质的差别。距离矢量算法是一个平面式 的,所有的路由表项学习完全依靠邻居,交换的是整个路由表项。链路状态是一个层次式的, 执行该算法的路由器不是简单的从相邻的路由器学习路由,而是把路由器分成区域,收集区 域内所有路由器的链路状态信息,根据链路状态信息生成网络拓扑结构,每一个路由器再根 据拓扑结构图计算出路由。链路状态路由协议的一些注意事项如下: z 网络中的设备并不向邻居传递“路由信息”,而是通告给邻居一些链路状态。 z 网络中的设备(路由器)最终都会得到网络的拓扑结果元素,只是详细程度并不相同。 z 各设备以自身为“树根”,根据 LSDB 中的数据计算到各个网断的“最短生成树”。 z 由于各设备有义务将网络拓扑信息向下传递,而具体的路由信息又是各设备自己计算所得, 所以链路状态协议中,对是否“发出路由”不能进行控制,但可以控制路由的某些属性。 3. 距离矢量算法和链路状态算法的比较 采用链路状态算法的路由器,首先要得到整个网络的拓扑结构,再根据网络拓扑图计算出路 由。这种路由的计算方法对路由器的硬件相对要求较高,但它计算准确,一般可以确保网络 OSPF 路由协议概述 4 中没有路由环路存在。由于路由不是在路由器间顺序传递的,网络动荡时,路由收敛速度较 快。而且路由器不需要定期的将路由信息复制到整个网络中,网络流量相对较小。表 1-1 对 这两种路由算法作一比较: 表1-1 距离矢量算法与链路状态算法 距离矢量算法 链路状态算法 是否有环路 有 无 收敛速度 慢 快 对路由器 CPU、RAM 的要求 低 高 网络流量 大 小 典型协议 RIP、BGP OSPF、IS-IS 1.3 OSPF 的基本概念 OSPF 是 Open Shortest Path First(即“开放最短路径优先协议”)的缩写。IETF(Internet Engineering Task Force)于 1988 年提出的 OSPF 是一个基于链路状态的动态路由协议。 OSPF 是一类 Interior Gateway Protocol(内部网关协议 IGP),它处理在一个自治系统中的路 由表信息。当前 OSPF 协议使用的是第二版,最新的 RFC 是 2328。 OSPF 协议是特别为 TCP/IP 网络而设计,包括明确的支持 CIDR 和标记来源于外部的路由 信息。OSPF 也提供了对路由更新的验证,并在发送/接收更新时使用 IP 多播。此外,还作 了很多的工作使得协议仅用很少的路由流量就可以快速地响应拓扑改变。 O S P F 用链路状态算法来计算在每个区域中到所有目的的最短路径,当一个路由器首先开 始工作,或者任一个路由变化发生,这个配备给 O S P F 的路由器将 L S A 扩散到同一级区 域内所有路由器,这些 L S A 包含这个路由器的链接状态和它与邻居路由器联系的信息,从 这些 L S A 的收集中形成了链路状态数据库,在这个区域中的所有路由器都有一个特定的数 据库来描述这个区域的拓扑结构。 在 OSPF 路由协议中,可以通过划分区域来分割整个自治系统,每一个区域都有着该区域 独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见 的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。这意味着 OSPF 路由域中的网络链路状态数据广播被区域的边界挡住了,这样做有利于减少网络中链路状态 数据包在全网范围内的广播,也是 OSPF 将自治系统划分成很多个区域的重要原因。 OSPF 路由协议概述 5 OSPF 仅通过在 IP 包头中的目标地址来转发 IP 包。IP 包在 AS 中被转发,而没有被其他协 议再次封装。OSPF 是一种动态路由协议,它可以快速地探知 AS 中拓扑的改变(例如路由 器接口的失效),并在一段时间的收敛后计算出无环路的新路径。收敛的时间很短且只使用 很小的路由流量。 说明: 作为一种链路状态的路由协议,OSPF 将链路状态广播数据包 LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运 行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。 1.3.1 OSPF 的基本特点 OSPF 是一种基于链路状态(Link-state)算法的协议,其核心思想是:每一台路由器将自 己周边的链路状态(包括接口的直接路由、相连的路由器等信息)描述出来,发送给网络中 所有的路由器。每台路由器在收到其他所有路由器的发送的链路状态信息之后,运行 Shortest Path First 算法计算路由。 随着 Internet 技术在全球范围的飞速发展,OSPF 已成为目前 Internet 广域网和 Intranet 企 业网采用最多、应用最广泛的路由协议之一。 OSPF 协议具有如下特点: z 适应范围 —— OSPF 支持各种规模的网络,最多可支持几百台路由器。 z 快速收敛 —— 如果网络的拓扑结构发生变化,OSPF 立即发送更新报文,使这一变化 在自治系统中同步。 z 无自环 —— 由于 OSPF 通过收集到的链路状态用最短路径树算法计算路由,故从算法 本身保证了不会生成自环路由。 z 子网掩码 —— 由于 OSPF 在描述路由时携带网段的掩码信息,所以 OSPF 协议不受自 然掩码的限制,对 VLSM 提供很好的支持。 z 区域划分 —— OSPF 协议允许自治系统的网络被划分成区域来管理,区域间传送的路 由信息被进一步抽象,从而减少了占用网络的带宽。 z 等值路由 —— OSPF 支持到同一目的地址的多条等值路由,即到达同一个目的地有多 个下一跳,这些等值路由会被同时发现和使用。 z 路由分级 —— OSPF 使用 4 类不同的路由,按优先顺序来说分别是:区域内路由、区 域间路由、第一类外部路由、第二类外部路由。 OSPF 路由协议概述 6 z 支持验证 —— 它支持基于接口的报文验证以保证路由计算的安全性。 z 组播发送 —— OSPF 在有组播发送能力的链路层上以组播地址发送协议报文,不仅达 到了广播的作用,而且最大程度的减少了对其他网络设备的干扰。 1.3.2 Router ID OSPF 协议使用一个被称为 Router ID 的 32 位无符号整数来唯一标识一台路由器。基于这 个目的,每一台运行 OSPF 的路由器都需要一个 Router ID。这个 Router ID 一般需要手工 配置,一般将其配置为该路由器的某个接口的 IP 地址。 由于 IP 地址是唯一的,所以这样就很容易保证 Router ID 的唯一性。在没有手工配置 Router ID 的情况下,一些厂家的路由器(包括 Quidway 系列)支持自动从当前所有接口的 IP 地址 自动选举一个 IP 地址作为 Router ID。 Router ID 选择注意点: z 首先选取最大的 loopback 接口地址 z 如果没有配置 loopback 接口,那么就选取最大的物理接口地址 z 可以通过命令强制改变 Router ID:VRP 平台系统视图下,router id z 如果一台路由器的 Router ID 在运行中改变,则必须重启 OSPF 协议或重启路由器才能 使新的 Router ID 生效 协议号: OSPF 协议用 IP 报文直接封装协议报文,协议号是 89。 说明: 通常 OSPF的协议报文是不被转发的,只能传递一跳,即在 IP报文头中 TTL值被设为 1 (虚 连接除外)。 为保证 OSPF 运行的稳定性,在进行网络规划时应该确定路由器 ID 的划分并手工配置。手 工配置路由器的 ID 时,必须保证自治系统中任意两台路由器的 ID 都不相同。通常的做法是 将路由器的 ID 配置为与该路由器某个接口的 IP 地址一致。 VRP3.4 平台的 OSPF 支持多进程,在同一台路由器上可以运行多个不同的 OSPF 进程,它 们之间互不影响,彼此独立。OSPF 进程号是本地概念,不影响与其它路由器之间的报文交 换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。不同 OSPF 进程之 OSPF 路由协议概述 7 间的路由交互相当于不同路由协议之间的路由交互。路由器的一个接口只能属于某一个 OSPF 进程。 1.3.3 SPF 算法和 COST 值 1. SPF 算法 SPF 算法是 OSPF 路由协议的基础。SPF 算法有时也被称为 Dijkstra 算法,这是因为最短 路径优先算法 SPF 是 Dijkstra 发明的。SPF 算法将每一个路由器作为根(ROOT)来计算 其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓 扑结构图,该结构图类似于一棵树,在 SPF 算法中,被称为最短路径树。 2. Cost 值 在 OSPF 路由协议中,最短路径树的树干长度,即 OSPF 路由器至每一个目的地路由器的 距离,称为 OSPF 的 Cost。Cost 值应用于每一个启动了 OSPF 的链路,它是一个 16 bit 的 正数,范围是 1~65535。 Cost 值越小,说明路径越好。OSPF 选择路径是依靠整个链路 Cost 值的总和。那么 Cost 值是如何计算的呢? OSPF 协议中,Cost 值的计算方法是用 108/链路带宽。在这里,链路带宽以 bps 来表示。 也就是说,OSPF 的 Cost 与链路的带宽成反比,带宽越高,Cost 越小,表示 OSPF 到目的 地的距离越近。举例来说,56k 的链路花费是 1785,10M 以太网链路花费是 10,64k 的链 路花费是 1562,T1 的链路花费是 64。 缺省情况下,接口按照当前的波特率自动计算接口运行 OSPF 协议所需的开销。 1.3.4 OSPF 路由的计算过程 OSPF 是基于链路状态算法的路由协议,所有对路由信息的描述都是封装在 LSA 中发送出 去。L S A(Link State Advertisement)用来描述路由器的本地状态, L S A 包括的信息是 关于路由器接口的状态和所形成的邻接状态。 每台 OSPF 路由器都会收集其它路由器发来的 LSA,所有的 LSA 放在一起便组成了链路状 态数据库 LSDB(Link State Database)。LSDB 则是对整个自治系统的网络拓扑结构的描 述。到达某个目的网段的最短路径,可通过这些信息计算出来。 OSPF 路由协议概述 8 在图 1-2 中,描述了通过 OSPF 协议计算路由的过程。一个典型的网络,由四台运行 OSPF 的路由器组成,连线旁边的数字表示从一台路由器到另一台路由器所需要的花费。为简化问 题,我们假定两台路由器相互之间发送报文所需花费是相同的 1. 每台路由器都根据自己周围的网络拓扑结构生成一条 LSA ( Link State Advertisement),并通过相互之间发送协议报文将这条 LSA 发送给网络中其它的所 有路由器。这样每台路由器都收到了其它路由器的 LSA,所有的 LSA 放在一起称作 LSDB(链路状态数据库)。显然,4 台路由器的 LSDB(Link State Database) 都是 相同的。 图1-2 图 1-2 OSPF 协议计算路由的过程 2. 由于一条 LSA 是对一台路由器周围网络拓扑结构的描述,那么 LSDB 则是对整个网络 的拓扑结构的描述。路由器很容易将 LSDB 转换成一张带权的有向图,这张图便是对 整个网络拓扑结构的真实反映。显然,4 台路由器得到的是一张完全相同的拓扑图。 3. 接下来每台路由器在图中以自己为根节点,使用 SPF 算法计算出一棵最短路径树,由 这棵树得到了到网络中各个节点的路由表。显然,4 台路由器各自得到的路由表是不 同的。 这样每台路由器都计算出了到其它路由器未知网段的路由。 OSPF 路由协议概述 9 1.3.5 OSPF 报文头 OSPF 有五种报文类型,他们有相同的报文头。如下图所示。 Authentication 0 7 15 31 Version Router ID Area ID Packet lengthType AuTypeChecksum 图1-3 OSPF 报文头格式 主要字段的解释如下: z Version:OSPF 的版本号。对于 OSPFv2 来说,其值为 2。 z Type:OSPF 报文的类型。数值从 1 到 5,分别对应 Hello 报文、DD 报文、LSR 报文、LSU 报文和 LSAck 报文。 z Packet length:OSPF 报文的总长度,包括报文头在内,单位为字节。 z Router ID 报文起源的 Router ID。 z Area ID 一个 32 位的数,标识报文属于哪个区域,所有 OSPF 报文只属于单个区域, 且只有一跳。当报文在虚链接上承载时,会打上骨干区域 0.0.0.0 的标签。 z Checksum 包的整个内容的校验,从 OSPF 报文头部开始,但是除了 64 位的认证字段。 z AuType 认证类型包括四种:0(无需认证),1(明文认证),2(密文认证)和其他 类型(IANA 保留)。当不需要认证时,只是通过 Checksun 检验数据的完整性;当使 用明文认证时,64 位的认证字段被设置成 64 位的明文密码;当使用密文认证时,对于 每一个 OSPF 报文,共享密钥都会产生一个“消息位”加在 OSPF 报文的后面,由于在网 络上从来不以明文的方式发送密钥,所以提高了网络安全性。 z Authentication:其数值根据验证类型而定。当验证类型为 0 时未作定义,为 1 时此字段为密 码信息,类型为 2 时此字段包括 Key ID、MD5 验证数据长度和序列号的信息。 说明: MD5验证数据添加在 OSPF报文后面,不包含在 Authenticaiton字段中。 OSPF 路由协议概述 10 1.3.6 OSPF 的五种报文类型 z HELLO 报文(Hello Packet): 最常用的一种报文,周期性的发送给本路由器的邻居,使用的组播地址 224.0.0.5。DR 和 BDR 发送和接收报文使用的组播地址是 224.0.0.6。 HELLO 报文内容包括一些定时器的数值,DR,BDR,以及自己已知的邻居。 根据 RFC2328 的规定,要保持网络邻居间的 hello 时间间隔一致。需要注意的是,hello 时 钟的值与路由收敛速度、网络负荷大小成反比。 缺省情况下,p2p、broadcast 类型接口发送 Hello 报文的时间间隔的值为 10 秒;p2mp、 nbma 类型接口发送 Hello 报文的时间间隔的值为 30 秒。 说明: 根据路由器使用链路层协议的不同,OSPF将网络分为四种类型: 点到点 P2P(point-to-point)类型、广播(Broadcast)类型、NBMA(Non-Broadcast Multi-Access)类型、点到多点 P2MP(point-to-multipoint)类型。 注意: 没有一种链路层协议会被缺省的认为是 Point-to-Multipoint类型。点到多点必须是由其他的 网络类型强制更改的。常用做法是将非全连通的 NBMA改为点到多点的网络。 具体内容,我们会在 OSPF的网络类型章节讲解。 z DD 报文(Database Description Packet): 路由信息(连接状态传送报文)只在形成邻接关系的路由器间传递。 首先,它们之间互发 DD(database description)报文,告之对方自己所拥有的路由信息, 内容包括 LSDB 中每一条 LSA 的摘要(摘要是指 LSA 的 HEAD,通过该 HEAD 可以唯一标 识一条 LSA)。 这样做是为了减少路由器之间传递信息的量,因为 LSA 的 HEAD 只占一条 LSA 的整个数据 量的一小部分,根据 HEAD,对端路由器就可以判断出是否已经有了这条 LSA。 DD 报文有两种,一种是空 DD 报文,用来确定 Master/Slave 关系(避免 DD 报文的无序发 送)。确定 Master/Slave 关系后,才发送有路由信息的 DD 报文。 收到有路由信息的 DD 报文后,比较自己的数据库,发现对方的数据库中有自己需要的数据, 则向对方发送 LSR(Link State Request)报文,请求对方给自己发送数据。 OSPF 路由协议概述 11 z LSR 报文(Link State Request Packet): 两台路由器互相交换过 DD 报文之后,知道对端的路由器有哪些 LSA 是本地的 LSDB 所缺 少的或是对端更新的 LSA,这时需要发送 LSR 报文向对方请求所需的 LSA。内容包括所需 要的 LSA 的摘要。 z LSU 报文(Link State Update Packet): 用来向对端路由器发送所需要的 LSA,内容是多条 LSA(全部内容)的集合。 z LSAck 报文(Link State Acknowledgment Packet) 由于没有使用可靠的 TCP 协议,但是 OSPF 包又要求可靠的传输,所以就有了 LSAck 包。 它用来对接收到的 LSU 报文进行确认。内容是需要确认的 LSA 的 HEAD(一个报文可对多 个 LSA 进行确认)。 DD 报文、LSR 报文、LSU 报文发出后,在没有得到应有的对方相应的 LSR、LSU、LSAck 报文时,会重发。(例外:对 DD 报文若收到后发现没有必要产生连接状态请求报文,则不 发连接状态请求报文。)同步后数据改变,则只向形成 Adjacency 关系的路由器发 LSU 报 文。 1.3.7 LSA 头格式 所有的 LSA 都有相同的报文头,其格式如下图所示。 0 7 15 31 LS age Link State ID Options LS type Advertising Router LS sequence number LS checksum length 图1-4 LSA 的头格式 首先,我们分析一下 LSA 报文头: LSA 头部都是 20 个字节,它包含了足够的信息来唯一标识一条 LSA(LS type,Link State ID, and Advertising Router )。LSA 多实例在同一时候可以存在于路由域中,它被用来决定哪 一个实例是最新的。LSA 头部还包括 LS 老化、LS 序列号和 LS 校验和等字段。 OSPF 路由协议概述 12 主要字段的解释如下: LS age,用来标识 LS 产生的时间。生成 LSA 的路由器将 LS 时域初始化为 0,在洪泛过程 中,每经过一个路由器,要按 InfTransDelay 的量增加,这个量表示传输 LSA 到下一个跳所 需要的时间。当该时间达到所设定的 MaxAge 参数时,要撤消该 LSA。 Options,用来描述支持的路由域,主要包括 DC、EA、N/P、MC、E、T 等选项。DC 指的 是始发路由器支持 Demand Circuits (按需拨号等);EA 指的是始发路由器支持 External Attributes LSAs (现在未推广);N/P 只用在 Hello 中 N=1,说明支持 NSSA,P 只用在 NSSA 中,通知 ABR 把 type7 的 LSA 翻译成 type5 的 LSA;MC 只在 MOSPF 中用到;E 表示可 以接受外部路由(不是 stub 区),在一个 area 中的所有 router 此位必须一致,(Hello 中体 现) 否则邻接关系无法建立;T 表示始发路由器支持 TOS。 LS type,链路类型。每种类型的 LSA 都有唯一的通告格式。 Link State ID,这个字段标识被描述的网络环境的一部分,Link State ID 的内容取决于 LSA 的类型,即不同类型的 LSA 其 Link State ID 也是不同的。比如,当 LSA 的类型是 Type 1 时, Link State ID 是始发路由器的 Router ID;当 LSA 的类型是 Type 2 时, Link State ID 是 DR 在该网段上接口的 IP 地址;当 LSA 的类型是 Type 3 时, Link State ID 是被通告的 网络/子网的 IP 地址;当 LSA 的类型是 Type 4 时, Link State ID 是被通告 ASBR 的 Router ID;当 LSA 的类型是 Type 5 时, Link State ID 是目的地的 IP 地址。 Advertising Router,指始发此 LSA 的路由器的 Router ID。比如在 Network-LSAs 中,这个 字段就是 DR 在该网段上接口的 IP 地址。 LS sequence number,用于识别 LSA 包是否是一个最新包。路由器每生成一个新的 LSA 时, 将该序列号加 1。 LS checksum 用来检查 LSA 的完整性,包括除了 LS age 之外的 LSA 头部的内容。 Length,LSA 的长度,用 bytes 表示。LSA 的头部包括 20 字节。 LSA 头中的链路类型、链路状态 ID 和通告路由器的 Router ID 是一个 LSA 的唯一标识。一 个 LSA 将有多个实例,不同的实例通过 LS 的序列号、LS 的校验和及 LS 的 Age 字段来描 述。因此,必须要决定其实例是否是最近的,这要通过检查 LS 的序列号、LS 的校验和及 LS 的 Age 字段内容。 OSPF 路由协议概述 13 1.3.8 LSA 的类型 OSPF 是基于链路状态算法的路由协议,所有对路由信息的描述都是封装在 LSA 中发送出 去。当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时, 路由器会产生链路状态广播数据包 LSA(Link-State Advertisement),该数据包里包含路 由器上所有相连的链路,也即为所有端口的状态信息。 LSA 根据不同的用途分为不同的种类,主要有如下类型的 LSA: z Router LSA(Type = 1): 是最基本的 LSA 类型,所有运行 OSPF 的路由器都会生成这种 LSA。主要描述本路由器运 行 OSPF 的接口的连接状况,花费等信息。 对于 ABR,它会为每个区域生成一条 Router LSA。这种类型的 LSA 传递的范围是它所属的 整个区域。 z Netwrok LSA(Type = 2): 本类型的 LSA 由 DR 生成。对于广播和 NBMA 类型的网络,为了减少该网段中路由器之间 交换报文的次数而提出了 DR 的概念。 一个网段中有了 DR 之后不仅发送报文的方式有所改变,链路状态的描述也发生了变化。 在 DROther 和 BDR 的 Router LSA 中只描述到 DR 的连接,而 DR 则通过 Network LSA 来 描述本网段中所有已经同其建立了邻接关系的路由器。(分别列出它们 Router ID)。 同样, 这种类型的 LSA 传递的范围是它所属的整个区域。 z Network Summary LSA(Type = 3): 本类型的 LSA 由 ABR 生成。当 ABR 完成它所属一个区域中的区域内路由计算之后,查询 路由表,将本区域内的每一条 OSPF 路由封装成 Network Summary LSA 发送到区域外。 LSA 中描述了某条路由的目的地址、掩码、花费值等信息。 这种类型的 LSA 传递的范围是 ABR 中除了该 LSA 生成区域之外的其他区域。 z ASBR Summary LSA(Type = 4): 本类型的 LSA 同样是由 ABR 生成。内容主要是描述到达本区域内部的 ASBR 的路由。 这种LSA与Type3类型的LSA内容基本一样,只是Type4的LSA描述的目的地址是ASBR, 是主机路由,所以掩码为 0.0.0.0。 这种类型的 LSA 传递的范围与 Type3 的 LSA 相同。 OSPF 路由协议概述 14 z AS External LSA(Type = 5): 本类型的 LSA 由 ASBR 生成。主要描述了到自治系统外部路由的信息,LSA 中包含某条路 由的目的地址、掩码、花费值等信息。 本类型的 LSA 是唯一一种与区域无关的 LSA 类型,它并不与某一个特定的区域相关。 这种类型的 LSA 传递的范围整个自治系统(STUB 区域除外)。 z Multicast OSPF LSA(Type =6): 使用在 OSPF 多播应用程序里。 z Not-So-Stubby Area(Type =7): 本类型的 LSA 由 Not-So-Stubby area(NSSA) 区域中 ASBR 生成。 为了解决 ASE 路由(自治系统外部路由)单向传递的问题,Not-So-Stubby area(NSSA) 中 重新定义了一种 LSA——Type 7 类型的 LSA,作为区域内的路由器引入外部路由时使用。 该类型的 LSA 除了类型标识与 Type 5 不相同之外,其它内容基本一样。这样区域内的路由 器就可以通过 LSA 的类型来判断是否该路由来自本区域内。 但由于 Type 7 类的 LSA 是新定义的,对于不支持 NSSA 属性的路由器无法识别,所以协 议规定:在 NSSA 的 ABR 上将 NSSA 内部产生的 Type 7 类型的 LSA 转化为 Type 5 类型 的 LSA 再发布出去,并同时更改 LSA 的发布者为 ABR 自己。这样 NSSA 区域外的路由器 就可以完全不用支持该属性。 在 NSSA 区域内的所有路由器必须支持该属性(包括 NSSA 的 ABR),而自治系统中的其 他路由器则不需要。 z External-Attributes-LSA(Type =8): 特殊的 LSA,还没有实现。当 BGP 信息需要在 OSPF 上承载时,需要用到此 LSA。 z opaque LSA(Type =9~11): 用于 MPLS 流量工程,有关此 LSA 的详细应用请参考网络学院 MPLS 流量工程培训教材或 RFC2370 文档。 当一台路由器向它的邻居发送一条 LSA 后,需要等到对方的确认报文。若在重传间隔时间 内没有收到对方的确认报文,就会向邻居重传这条 LSA。 OSPF 路由协议概述 15 1.3.9 邻居和邻接 在 OSPF 中,邻居(Neighbors)和邻接(Adjacencies)是两个不同的概念。 OSPF 路由器启动后,便会通过 OSPF 接口向外发送 Hello 报文。收到 Hello 报文的 OSPF 路由器会检查报文中所定义的一些参数,如果双方一致就会形成邻居关系。 形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交 换 DD 报文,并能交换 LSA 之后,才形成真正意义上的邻接关系。 为了交换路由信息,邻居路由器之间首先要建立邻接关系,并不是每两个邻居路由器之间都 能建立邻接关系。 HELLO Interval:接口上发送报文的时间间隔,以秒为单位。OSPF 邻居之间的 Hello 定时 器的时间间隔要保持一致。Hello 定时器的值与路由收敛速度、网络负荷大小成反比。 如果两路由器不具有相同的呼叫周期,则不能成为邻接关系。 DEAD Interval:如果在 DEAD TIME 指定的秒数内没有从已建立的邻居处收到报文,那么, 邻居被宣布为故障状态。 如果 Hello 报文中的 Dead Interval 与接收端口所设置的 DeadInterval 值不相同,则丢弃该 报文。因此,要确保两邻居路由器具有相同的参数。 在同一接口上失效时间应至少为 Hello 间隔时间的 4 倍。 说明: Hello 报文主要负责建立和维护邻接关系,周期性的在路由器的接口上发送。当路由器发现 自己被列在邻居路由器的 hello报文中,双向通信就建立起来。 在不同类型的链路上,hello报文工作的方式也不同。邻居建立后,还需要通过 HELLO报文 进行邻居关系的维持,有两个定时器来进行这项工作:   HELLO TIME:缺省为 10秒(对于 NBMA网络为 30秒)   DEAD TIME:缺省为 4倍的 HELLO TIME 邻接关系形成之后,接下来就是同步链路状态数据库。 OSPF 路由协议概述 16 1.3.10 OSPF 的邻居状态机 图1-5 OSPF 的邻居状态机 z Down: 邻居状态机的初始状态,是指在过去的 Dead-Interval 时间内没有收到对方的 Hello 报文。 z Attempt: 只适用于 NBMA 类型的接口,处于本状态时,定期向那些手工配置的邻居发送 HELLO 报文。 z Init: 本状态表示已经收到了邻居的 HELLO 报文,但是该报文中列出的邻居中没有包含我的 Router ID(对方并没有收到我发的 HELLO 报文)。 z 2-Way: 本状态表示双方互相收到了对端发送的 HELLO 报文,建立了邻居关系。在广播和 NBMA 类 型的网络中,两个接口状态是 DROther 的路由器之间将停留在此状态。其他情况状态机将 继续转入高级状态。 z ExStart: 在此状态下,路由器和它的邻居之间通过互相交换 DD 报文(该报文并不包含实际的内容, 只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的 DD 报文交换中能够有序的发送。 OSPF 路由协议概述 17 z Exchange: 路由器将本地的 LSDB 用 DD 报文来描述,并发给邻居。 z Loading: 路由器发送 LSR 报文向邻居请求对方的 LSU 报文。 z Full: 在此状态下,邻居路由器的 LSDB 中所有的 LSA 本路由器全都有了。即,本路由器和邻居 建立了邻接(adjacency)状态。 说明: Down、2-Way、Full 的状态是指稳定的状态,其他状态则是在转换过程中瞬间(一般不会 超过几分钟)存在的状态。 本路由器和状态可能与对端路由器的状态不相同。例如本路由器的邻居状态是 Full,对端的 邻居状态可能是 Loading。 1.3.11 链路状态数据库的同步过程   链路状态数据库同步过程的主要步骤: z HELLO 报文发现邻居 z 主从关系协商 z DD 报文交换 z LSA 请求 z LSA 更新 (1) LSA 应答 如图 1-6 显示了两台路由器之间如何通过发送 5 种协议报文来建立邻接关系,以及邻居状态 机的迁移。 z RT1 的一个连接到广播类型网络的接口上激活了 OSPF 协议,并发送了一个 HELLO 报文(使用组播地址 224.0.0.5)。由于此时 RT1 在该网段中还未发现任何邻居,所 以 HELLO 报文中的 Neighbor 字段为空。 z RT2 收到 RT1 发送的 HELLO 报文后,为 RT1 创建一个邻居的数据结构。RT2 发送 一个HELLO报文回应RT1,并且在报文中的Neighbor字段中填入RT1的Router ID, 表示已收到 RT1 的 HELLO 报文,并且将 RT1 的邻居状态机置为 Init。 OSPF 路由协议概述 18 z RT1 收到 RT2 回应的 HELLO 报文后,为 RT2 创建一个邻居的数据结构,并将邻居 状态机置为 Exstart 状态。下一步双方开始发送各自的链路状态数据库。 图1-6 两台路由器之间建立邻接关系的过程 为了提高发送的效率,双方需先了解一下对端数据库中那些 LSA 是自己所需要的 (如果某一条 LSA 自己已经有了,就不再需要请求了)。 方法是先发送 DD 报文,DD 报文中包含了对本地数据库中 LSA 的摘要描述(每一 条摘要可以唯一标识一条 LSA,但所占的空间要少得多)。由于 OSPF 直接用 IP 报文来封装自己的协议报文,所以在传输的过程中必须考虑到报文传输的可靠性。 为了做到这一点,在 DD 报文的发送过程中需要确定双方的主从关系。作为 Master 的一方定义一个序列号 seq,每发送一个新的 DD 报文将 seq 加一。作为 Slave 的 一方,每次发送 DD 报文时使用接收到的上一个 Master 的 DD 报文中的 seq。实 际上这种序列号机制是一种隐含的确认方法。如果再加上每个报文都有超时重传, 就可以保证这种传输是可靠的。 RT1 首先发送一个 DD 报文,宣称自己是 Master(MS=1),并规定序列号为 x。 I=1 表示这是第一个 DD 报文,报文中并不包含 LSA 的摘要,只是为了协商主从关 系。M=1 说明这不是最后一个报文。 z RT2 在收到 RT1 的 DD 报文后,将 RT1 的邻居状态机改为 Exstart,并且回应了一 个 DD 报文(该报文中同样不包含 LSA 的摘要信息)。由于 RT2 的 Router ID 较大, 所以在报文中 RT2 认为自己是 Master,并且重新规定了序列号为 y。 OSPF 路由协议概述 19 z RT1 收到报文后,同意了 RT2 为 Master,并将 RT2 的邻居状态机改为 Exchange。 RT1 使用 RT2 的序列号 y 来发送新的 DD 报文,该报文开始正式地传送 LSA 的摘 要。在报文中 RT1 将 MS=0,说明自己是 Slave。 z RT2 收到报文后,将 RT1 的邻居状态机改为 Exchange,并发送新的 DD 报文来描 述自己的 LSA 摘要,需要注意的是:此时 RT2 已将报文的序列号改为 y+1 了。 z 上述过程持续进行,RT1 通过重复 RT2 的序列号来确认已收到 RT2 的报文。RT2 通过将序列号加 1 来确认已收到 RT1 的报文。当 RT2 发送最后一个 DD 报文时, 将报文中的 M=0,表示这是最后一个 DD 报文了。 z RT1 收到最后一个 DD 报文后,发现 RT2 的数据库中有许多 LSA 是自己没有的, 将邻居状态机改为 Loading 状态。此时 RT2 也收到了 RT1 的最后一个 DD 报文, 但 RT1 的 LSA,RT2 都已经有了,不需要再请求,所以直接将 RT1 的邻居状态机 改为 Full 状态。 z RT1 发送 LS Request 报文向 RT2 请求所需要的 LSA。RT2 用 LS Update 报文来 回应 RT1 的请求。RT1 收到之后,需要发送 LS Ack 报文来确认。上述过程持续到 RT1 中的 LSA 与 RT2 的 LSA 完全同步为止。此时 RT1 将 RT2 的邻居状态机改为 Full 状态。 说明: 以上过程是两台路由器由相互没有发现对方的存在到建立邻接关系的过程。或者可以理解为 网络中新加入一台路由器时的处理情况。当两台路由器之间的状态机都已经达到 Full状态之 后,如果此时网络中再有路由变化时,就无须重复以上的所有步骤。只由一方发送 LS Update 报文通知需要更新的内容,另一方发送 LS Ack报文予以回应即可。双方的邻居状态机在此 过程中不再发生变化。 OSPF 路由协议概述 20 1.3.12 OSPF 的四种网络类型 OSPF 协议计算路由是以本路由器周边网络的拓扑结构为基础的。每台 OSPF 路由器根据自 己周围的网络拓扑结构生成链路状态通告 LSA(Link State Advertisement),并通过更新 报文将 LSA 发送给网络中的其它 OSPF 路由器。 根据路由器使用链路层协议的不同,OSPF 将网络分为四种类型: z 广播(Broadcast)类型: 当链路层协议是 Ethernet、FDDI 时,OSPF 缺省认为网络类型是 Broadcast。在该类型 的网络中,通常以组播形式(224.0.0.5 和 224.0.0.6)发送协议报文,选举 DR /BDR。 图1-7 OSPF 的四种网络类型 z NBMA(Non-Broadcast Multi-Access)类型: 当链路层协议是帧中继、ATM 或 X.25 时,OSPF 缺省认为网络类型是 NBMA。在该类 型的网络中,以单播形式发送协议报文。手工指定邻居,选举 DR/BDR,DR/BDR 要求 和 DROTHER 完全互连。 z 点到多点 P2MP(point-to-multipoint)类型: 没有一种链路层协议会被缺省的认为是 Point-to-Multipoint 类型。点到多点必须是由其 他的网络类型强制更改的。常用做法是将非全连通的 NBMA 改为点到多点的网络。在该 类型的网络中,以组播形式(224.0.0.5)发送协议报文。多播 hello 包自动发现邻居, 不要求 DR/BDR 的选举。 OSPF 路由协议概述 21 z 点到点 P2P(point-to-point)类型: 当链路层协议是 PPP、HDLC 和 LAPB 时,OSPF 缺省认为网络类型是 P2P。在该类型 的网络中,以组播形式(224.0.0.5)发送协议报文。无需选举 DR BDR,当只有两个路 由器的接口要形成邻接关系的时候才使用。 说明: 在 OSPF协议中 NBMA和点到多点都是指非广播多点可达的网络,但 NBMA网络必须满足 全连通(full meshed)的要求,即任意两点都可以不经转发而使报文直达对端。否则,我们 称该网络是点到多点网络。 1.3.13 DR(Designated Router)和 BDR(Backup Designated Router) 1. 广播及 NBMA 网段中的 N2 连接问题 图1-8 广播及 NBMA 网段中的 N2 连接问题 在广播和 NBMA 类型的网络上,任意两台路由器之间都需要传递路由信息(flood),如果 网络中有 N 台路由器,则需要建立 N *(N-1)/2 个邻接关系。 任何一台路由器的路由变化,都需要在网段中进行 N*(N-1)/2 次的传递。 这些邻居关系要定期更新链路状态数据库 LSDB,不仅浪费了宝贵的带宽,也会消耗大量的 系统资源。应该怎么处理呢? OSPF 路由协议概述 22 2. DR(Designated Router)概念的提出: 为了解决这个问题,OSPF 协议指定一台路由器 DR(Designated Router)来负责传递信息。 所有的路由器都只将路由信息发送给 DR,再由 DR 将路由信息发送给本网段内的其他路由 器。 两台不是 DR 的路由器(DROther)之间不再建立邻接关系,也不再交换任何路由信息。 这样在同一网段内的路由器直谏只需建立 N 个邻接关系,每次路由变化只需进行 2N 次的传 递即可。 图1-9   DR(Designated Router)概念的提出 如上图,在一个广播的网段中,存在 N=8 台路由器,则需要建立 M=n(n-1)/2 = 28 个邻接 关系。网络中有 每 台路由器,则需要建立 28 个邻接关系。 选举 DR 后,两台不是 DR 的路由器(DROther)之间不再建立邻接关系,也不再交换任何 路由信息。 这样在同一网段内的路由器之间只需建立 8 个邻接关系,每次路由变化只需进行 16 次的传 递即可。 OSPF 路由协议概述 23 3. DR(Designated Router)的选举过程: 通过 Hello 报文的所带 priority 位,和 DR、BDR 信息,可以选出该网段的 DR。所有路由器 认可一个优先级最高的路由器作为 DR,优先级次高的作为 BDR,所有这个网段的路由器与 DR,BDR 构成邻接关系。 哪台路由器会成为本网段内的 DR 并不是人为指定的,而是由本网段中所有的路由器共同选 举出来的。 DR 的选举过程如下: z 登记选民 本网段内的运行 OSPF 的路由器;(本村内的 18 岁以上公民) z 登记候选人 本网段内的 Priority>0 的 OSPF 路由器;Priority 是接口上的参数,可以配置,缺省值是 1;(本村内的 30 岁以上公民且在本村居住 3 年以上) z 竞选演说 一部分 Priority>0 的 OSPF 路由器自己是 DR;(所有的候选人都自认为应该当村长) z 投票 Priority 大于 0 的路由器都可作为“候选者”,选票就是 Hello 报文。 每台路由器将自己选出的 DR 写
本文档为【ospf协议】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_240192
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:46
分类:互联网
上传时间:2012-03-21
浏览量:76