ospf及路由器与路由器关系的建立 |
| 发布时间: 2012/7/4 8:39:26 |
|
ospf和其它路由协议下路由器间关系的建立逻辑上是相通的。在这里大家还能清楚 知道并理解的多种数据报.同时能让大家了解DR,BDR的选举及ospf的配置。 以下的内容大家可以在两本书中找到更详尽的内容。一本是人民邮电出版社出版的[ospf网络设计解决方案],一本是电子工业出版社出版的[CCNP:BSCI(642-801)]。 什么是OSPF: 最短路径优先协议(ospf),一种链路状态路由选择协议。 什么是路由选择协议: 路由选择协议可以作为一个过程来分析。协议通常是通过请求注释过程进行形式化的。 这个过程通常要为一个目标书写注释以便为该技术制定标准。一个路由选择协议标准的例子就是定义ospf的RFC2328. 路由选择协义的基本操作: 一台路由器不直接与其它路由器相连,因而不在路由表中。那么这个路由器是如何识别其他网络的呢?可以通过三种路由选择实现。 第一种,静态路由选择。是指在路由器内手工定义和安装去往给定目的地址的惟一路径; 第二种,缺省路由选择。在路由器内手工为未知目的地址定义一个路径的路由选择类型; 第三种,动态路由选择。使用一个或者是多个路由选择协议中的路由选择算法对到来的路由更新信息进行分析,然后获得通往目的地址的最佳路径。 ospf的特性: ospf是一个链路状态协议,路由选择域中的所有路由器之间交换信息。每个路由器都能了解整个网络的拓扑结构。ospf协议为TCP/IP协议组中的IP协议提供路由信息;向路由器仅发送路由更新信息而不是整个路由表;与RIP相比,它带来的网络流量较少;它是基于标签交换的路由协义。 到此对OSPF作了基本的概念定义。接下来我们了解一个OSPF术语及它的操作。 ospf术语: 邻居:邻居被定义为一个运行有OSPF过程的已建立连接的相邻的路由器,并且这个路由器还要带有被指定为相同区域的邻接接口。 邻接:邻接被定义为路由器与它相应的指定路由器和备份路由器间的逻辑连接。 链路:在OSPF中,链路被定义为一个网络或者是被指定为给定网络的路由器接口。 接口:路由器的一个物理的或逻辑的接口。 链路状态通告LSA:是一个OSPF数据包,它包含有可在OSPF路由器间共享的链路状态和路由信息。 指定路由器DR:只在OSPF路由器被连到一个广播网络时使用。 备份指定路由器BDR:是在广播网络中热备份的DR. 区域边界路由器:有多个区域分配的路由器。 自治系统边界路由器:是一个带有连接外部网络或不同AS接口的路由器。 非广播多路访问:是指像帧中继,X.25和ATM等类型的网络。 路由器ID:是一个用于识别路由器的IP地址。 OSPF的操作: 在CCNP:BSCI(642-801)中作了如下定义: OSPF操作可化分为三类,分别是:邻居和邻接初始化;LSA的扩散;SPF树的计算。 在作出详细讨论前,我们先来了解一个OSPF操作的每个基本步骤: 1,OSPF路由器从所有加入到OSFP过程的接口发送HELLO包; 2,一部分的邻居将形成邻接。形成邻居取决于被发送的hello包所通过的网络类型和交换交换这些hello数据包的路由器类型; 3,路由器发送LSA; 4,接收LSA的路由器将会记录这些LSA到它们的链路数据库,并转发些LSA到各自的邻居; 5,在学习了所有LSA后,每个路由器都会使用这个信息到创建自己的SPF树。SPF树中的信息会用来构建路由表。 什么是邻居: OSPF将具有连接到一个共有网络的接口的两个路由器定义为邻居。当OSPF发现它的邻居时,这是发现网络的和建立路由表的第一步。这个过程开始于路由器通过广播的hello分组来获知其邻居的路由器标识。 在广播和点到点接口中,hello分组每10s发送一次。当路由器在其他的路由器发送的hello分组中看到自己的RID时,应运 始建立邻居关系并且它们达成下列的一至: hello/dead发送时间间隔; 区域ID号; 子网掩码; 端区标志; 认证类型和密码。 邻接体: 为形成邻接体,OSPF应先发现它的邻居。邻接体是为了交换路由信息才形成的。在下列条件下,OSPF形成邻接体: 网络的互联是点到点的; 网络互联的通过虚链路实现的; 路由器是DR; 相邻路由器是DR; 路由器是BDR; 相邻咱由器是BDR。 你住在不同的人的周围,因此你们就是邻居。当你驱车去商店的时候,你或许会和他们打招呼但是你们并不是亲密的朋友。通常,你会和你遇到的最开始遇到的邻居成为亲密的朋友。这些亲密的朋友就是邻接体;你们总是在夏日隔着栅栏或者邀请他们吃饭储如此类的事情。事实上,你和他们有了更紧密的交流。-------[ospf网络设计解决方案] 邻居和邻接初始化: 邻居/邻接的构成是OSPF操作中一个很大的部分。hello协议通常用于发现邻居并建立邻接,并含有大量的有关发包路由器的信息。 邻居状态: Down宕机:没有从此邻居处收到hello包; Attempt尝试:它必须被手工配置,只可用于NBMA网络的连接并表明没有新的信息从这个邻居处接收到; Init:从另外的路由器处接收到hello包,但本地路由器在其他路由器的hello数据中没有看到自己。双向通信还没有建立; 2way双向:已经被接收到的Hello数据包的邻居字段中包含有自己的路由器ID; ExStart:为建立邻接,通过交换数据库描述DD数据包,主/从关系已经被建立; Exdhange交换:路由信息通过使用DD和LSR数据包来交换; Loding加载:链路状态请求数据包被发送给邻居,请求在交换状态中所发现的新的LSA; Full全邻接:在邻接的邻居中所有的LSA信息都是同步的。 初始化的流程可简单描述:这个过程从发送hello包开始。然后,每个侦听的路由器都会将此发包路由器加入到邻居数据库中。响应的路由器将会使用它们的hello信息来做应答,这样发包路由器就可以将它们这些路由器加入到自己的邻居表中。 OSPF的对等初始化表: 组播hello数据包(Down)----->侦听路由器将新的 路由器加入到邻接 表(状态)----->路由器就答hello数据包 |2way state 连路类型被 | 广播多路访问问 | 选择DR和BDR<----- 邻接必须被建立<------------------发包路由器将 | ^ ^ ^ | | | | 应答路由器加入邻接表 | | | |ExStart state | | | |---------------------->交换链路状态信息(Exchange) 比较所有路由器 | | | 优先级值 | | 任何最终的LSA也被交换 | | | (Loading) | 是 | | | 有连接吗?------>比较路 | | 交换hello数据包,每10秒lsr/l | 由器ID | | su交换 | |---------------| | | (完整路由信息) | | | | 取最高值---------->指定为DR-- | | | | | | 取次高值--------->指定为BDR--| 一旦邻居被确认,邻接必须被建立,这样路由LSA信息才能被交换。要改变一个邻居OSPF路由器邻接OSPF路由器需要有两个步聚: 1,建立双向通信; 2,建立数据库同步,这包括在路由器间交换三种类型的数据包: 库描述DD数据包 链路状态请求LSR数据包 链路状态更新LSU数据包 一时数据库同步开始,则两个路由器被认为是邻接。这就是邻接如何被守铖的,但你必须了解邻接将发生在什么时候 。 每个OSPF接口都拥有一个可配置的路由器优先级我们可以通过在接中配置模式中使用ip ospf priority命令设置此优先级。可以用于DR和BDR的选举。 在DR和BDR选举时这个优先级值是个关键。我们来看一下当时行DR和BDR选举时的的步骤。 1,建立一个符合条件路由器的列表。用以下标准 优先级大于0 OSPF状态为双向 DR或BDR的IP地址是与所参加接口的IP地址相同 2,从符合条件的路由器列表中形成所有不要求成为DR的路由器列表; 3,使用下列标准,从第二步列表中选择BDR 此BDR的IP地址是与所参加接口的IP地址相同 带有最高路由器优先顷的路由器将成为BDR 如果所有路由器的优先级是相等的,拥有最高路由器ID的路由器将成为BDR 如果上述标准没有路由器能够满足,则带有最高路由器优先级的路由器将被选择为BDR,万一它们相等,带有最高路由器ID的路由器将被选为BDR 4.使用下列标准,从剩下的符合条件的路由器中选择DR 此DR字段使用路由器的接口的IP地址来进行设备 事宜最高路由器优先级的路由器被选为DR 如果没有剩余的符合条件的路由器声明要成为DR,在第3步中选择的BDR将成为DR LSA OSPF从 LSA数据库得到路由选择表。OSPF有各种路由器名称 和区域类型。这种复杂 性要求OSPF尽可能准确地交流信息以得到最佳的路由选择。OSPF通过使用不同的类型 的LSA来完成通信。 在这里不作详细介绍,请见下表 LSA类型编号 LSA描述 1 路由器链路通告 2 网络链路通告 3 ABR汇总链路通告 4 ASBR汇总链路通告 5 自治系统扩展路由通告 6 多播组LSA 7 非完全端区扩展 9 不透明的LSA:本地链路范围 10 不透明的LSA:本地区域范围 11 不透明的LSA:自治系统范围 SPF SPF比较从一点到另一点间经过的不同路径中的最短中的最短路径。CISCO系统实现的SPF算法可以更快的计算路由。这种改变导致了两种类型的SPF计算:完整的和局部的。而SPF树是指通过网络到达任意给定目标的路径。对于每个不同的目的地就有一条单独的路径。OSPF可以认识两种目的地类型:网络和路由器。一旦所有的OSPF路由器都有了同步的链路状态数据库,每个路由器负责为每个已知的目的地计算此SPF树。 在接下来的内容里我们跳过NBMA 广播,非广播,VLSM,CIDR等概念。进入OSPF的配置内容。但内容将人是零碎的很见谅. 配置OSPF是一个简单的工作。对于所有的OSPF应用启动OSPF方式是基本相同的。 OSPF配置的基本要素是: 启动OSPF 为不同的网络类型配置OSPF 配置OSPF的区域 路由汇总 路由重新分配 接口参数 如果此时你正在试图设计一个OSPF的网络。你一定要朝以下几个方面目标设计。 功能特性。网络必须能工作,这是最基本的底线。 可伸缩性。由于公司会增长,所以网络也必须能保持一致的步伐。 可适应性。随着网络的老化,这个特性就显得非常重要,因为在网络的内部,正以及其危险的速度发生着变化。 可管理性。网络必须具有合适的工具和设计以便确保总是可以了解网络的操作及现在的状态。 成本与效率。这是网络设计的真正底线。 有关网络设计的步骤如下: 需求分析 建立网络拓扑结构 确定编址和命名规定 准备确件 配置协议和CISCO ios软件特征 实现,监控和管理网络 闲话不说切入正题 首先启用一个OSPF路由 命令格式 router ospf process-id#(也理解为进入路由器配置模式) HAL9000(config)#routerospf ? <1~65535>process ID 请注意,IGRP等部分路由协在这里不是使用的区域process-id#而是使用的AS#自治系统号。自治系统的范围是1~65535。 使用OSPF发现网络(也描述成通过命令network定义需要ospf 运行的接口或多个接口) 命令格式 network ip-address mask area area-id 例如: routerA(config-router)#network 172.16.10.5 0.0.0.0 area 0 routerA(config-router)# ospfnterface Serial0 going Up ospf:Tried to build Router LSA within MinLsIterval ospf:Tried to build Router LSA within MinLSInterval^z RouteA# 请注意:这里带有全0的掩码(或是反向掩码)。这里的0用于数据包查询路由表时的匹配条件。 指定与之相邻的路由器(相邻的路由接口IP) 命令格式neighbor ip-address 在network命令之 扣路由配置已经可以说基本完成了。然而,现存的大量OSPF路由器类型有一些独特的配置考虑。这些考虑是: 1,决定在网络中赋给OSPF路由进程ID是多少; 2,决定是否要OSPF决定哪个路由器成为DR和BDR,或者是否使用priority命令然后作出决定; 3,是否准备使用回环接口; 4,使用命令router ospf id启动OSPF路由选择进程,如同前面所描述的哪样; 5,使用合适的网络语句将正确的区域ID赋给OSPF路由器进程,如: router ospf 109 network 130.10.8.0 0.0.0.255 area 0 network 172.25.64.0 0.0.0.255 area 1 注意路由器不能接入到3个或3个以上的AS。一台路由器不能成为不止一个链路的DR。 一,ABR的考虑 主同的地主主要是反映OSPF路由器的网络中所担当的解色 1,区域中是否有一个连接到端区的ABR?如果有则 将区域配置为端区:area area-id stub 2,赋给区域指定的代价 对区域配置缺省的代价命令如下: area area-id default cost cost 在这里我们配置端区是因为端区是有力的网络设计技术。这种区域带缺省路由和区域间路由,不带外部路由。将网络的一部分放到端区里会减少网络的额外开销。减少了跨越整个网络的路由广播。 我们作端区设计时注意以下重要的原则: 端区需要一个单一的ABR,如果存在多于一个的ABR时,就得接受非优化路径。 在端区内部不存在ASBR 不允许虚链路发送到该区域 任何类型端区内有的所有路由器必须配置成能识别他们的地址 骨干区域不能配置成端区 3,用命令area number range使每个区域中的网络能正确汇总。 注意:在OSPF的网络中每个区域要与主干区域相联。如果在OSPF规划中有区域不能与主干区域相联而与其它区域相联需要作穿过中间区域的虚链路。 二,ASBR的考虑 类似于ABR,完成步骤: 1,确保已知OSPF进程ID,是否需要回环接口及使用的OSPF可选参数; 2,启动OSPF路由进程用命令router ospf process-id; 3,赋给OSPF路由选择进程正确的区域ID,例如: router ospf 106 network 130.10.5.0. 0.0.0.255. area 0 network 172.25.64.0 0.0.0.255 area 1 4,利用命令area number range使区域网络可以正确汇总; 5,配置OSPF AS和外部AS间的重发布,使ASBR能提供连接。 三,路由路由器的考虑 同样类似于ABR,使用以下步骤: 1,确保已知OSPF进程ID,是否需要回环接口及使用的OSPF可选参数; 2,启动OSPF路由进程用命令router ospf process-id; 3,赋给OSPF路由选择进程正确的区域ID; 4, 如果骨干路由器还担当了ABR那么加命令area number range使每个区域中网络可以正确汇总。 区域的配置 区域具有额外的功能与OSPF路由类型范围和目的相似。 1,普通区域配置 在OSPF路由器配置模式下使用network命令。 2,端区设置 端区是一种特殊的OSPF区域,OSPF AS上外部路由信息不会发送到端区。区域中所有路由器必须使用area stub配置命令。 例: Trinity#conf t Enter configuration commands,one per line.End with CNTL/Z. Trinity(config)#router ospf 100 Trinity(config-router)#area 201 stub 3,完全端区的配置 为了减少发送到端区泊链路状态通告LSA数量,可以在ABR上设置no-summary阻止向端区发送LSA。通过改变ABR的行为,可以自动将整个端区转为完全端区。 为将OSPF区域设置为完全端区,该区域的ABR路由器必须使用area stub no-summary设置命令。 例: router ospf 100 area 201 stub no-summary network 10.0.0.0 0.0.0.127 area 0 network 201.0.0.0 0.0.0.127 area 201 4,非完全端区 NSSA非完全端区的核 心是重发布进入NSSA的外部网络。特别是当NSSA是端区,而又试图将外部网络连接到该端区的时候,会出现LSA不允许进入端区的问题。 可以用两种方式实现NSSA:普通模式和作为完全NSSA区域。 普通NSSA操作和设置:用命令area nssa标识区域为NSSA; 完全NSSA操作和设置:用命令area number nssa no-summary 5,当引入两个ARB时,就有两个缺省路由被注入区域。用命令area default-cost向缺省路由指定代价以解决多条缺省路的选择问题。 6,区域范围 建立OSPF汇总区域时有一些关键需要考虑。OSPF汇总发生在ABR,ospf支持变长的子网掩码VLSM,因此可以在网络或子网地址中任意位边界汇总。OSPF要求手工汇总。当设计区域时,必须决定在每个ABR上的汇总。 ospf的调整 1,改变管理距离 使用命令distance ospf {[intra-area dist1][inter-area dist2]} 请注意:管理距离的数值越大信任度越低,255的管理距离意味着路由选择信息源不可信任。 2,负载平衡 缺省可使用4条给定目的等代价路径。目前负载平衡是缺省的动作,分组上的负载平衡可以在通过接口配置命令no ip route-cache关闭快速交换来激活。 3,更多的ecmp 用命令maximum-path允许增加所支持的路径的最大数量。 4,缺省路由 产生缺省路由的最普通的方法是在路由器中使用静态路由语句。 如果需要强制ASBR产生缺省路由的话可在路由配置模式下使用命令: default-information originate [always] [metric metricvalue] [metric-type tpyevalue] [route-map map-name] 5,被动接口 使用命令passive-interface可以解决接口由路由选择协议通告但又不想让路由选择协议发送该接口更新消息的问题。 汇总及重发布 此时一个OSPF已经基本启用了,考虑于现目前的IPv4技术,路由器的CPU 、内存负担以及过多路由项的查询时间消耗。我们有必要在此针对相邻的具有相同网络地址范围的网络作次汇总。路由汇总的好处是:减小路由器的CPU、内库的负担,过多路由项的查询时间消耗,以及相邻网络路由器翻滚产生的环路及网络资源消耗。在汇总后,与之相邻的网络变化不会被宣告。 端口上汇总方法:no auto-summary关闭自动汇总 ip summary-address tpy(咱由协议类型) AS#(如果有AS) ip-address mask 这里权给出了在端口上汇总的方法。注大家注意的是:无类路由与有类路由的区别。在IGRP上汇总VLSM会产生麻烦。 我们难免会遇到这种情况:我们接收的或是客户要求把两个网络联系起来。 如果这两个网络运行相同的网络协议且同处一个AS他们间的路由将会自动学习到。如果两网络运用不同的网络协议不能自动相互学习到对方的路由,哪么我们就必须在两个网络的边缘相联的路由器上(这里通常指的是AS边界路由顺)作路由重发布。 router type1 as#启用当前的一种路由协议 redistribute type2 ad# subnets当前的路由学习另一种路由协议学到的路由。 可以这样理解:第2种路由协议他有自己学习到的路由。它向另一种(tpye1)路由协议发布自己的路由信息。 关键字subnets用于多个网络进入OSPF. 分发列表 重发布工作中特别是ASBR中出现重发布是由于在OSPF中ASBR连拉好其他的路由选择域。这个概念很重要。有两种方法在路由器上应用分发列表: 影响到来的路由选择更新; 应用到输出上影响该路由器发出的路由选择更新。 使用下面的命令达到分发列表的目的: distribute-list out当对ASBR上输出应用一个分发列表过滤OSPF到其他协议的路由时,这个命令能正常工作; distribute-list in当对输入应用分发列表来过滤路由时,列表阻止路由被放入路由选择表。 总的来说,路由进入OSPF路由选择域之前应当对其他协义执行路由过滤。 OSPF的设计与配置并不是本文的重点。而且主题暂已介绍完毕。因此,文章只得就此结束。详细内容请参阅[CCNP:BSCI642-801],[OSPF网络设计解决方案].谢谢 PS:说实话。自己也不想这么生硬的结整文章。自己也没能力写得更多。若上文有不明之处,错误的地方还请指出.谢谢 本文出自:亿恩科技【www.enkj.com】 |
京公网安备41019702002023号