OSPF(Open Shortest Path First)

本文深入探讨了OSPF路由协议的核心概念,包括其工作原理、关键组件、网络结构、消息类型以及如何在不同网络环境中应用。重点介绍了OSPF在区域划分、邻居与邻接关系、DR与BDR选举、路由注入等方面的功能与特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OSPF(Open Shortest Path First)
2009年08月28日
  <OSPF>
  ??开放标准,国标
  ??OSPF属于IGP,是Link-State协议,基于IP Pro 89。
  ??采用SPF算法(Dijkstra算法)计算最佳路径。
  ??快速响应网络变化,收敛速度快。
  ??支持VLSM
  ??网络稳定时以较低频率(每隔30分钟)发送定期更新,被称为链路状态刷新。
  ??网络变化时触发更新。距离向量协议也称为距离矢量协议,是根据距离矢量(跳数hop)来进行路由选择的一个确定最佳路由的方法,比如RIP协议就是一种距离向量协议。
  链路状态协议则是根据带宽、延迟等指标综合考虑而得到一个权值,再根据权值确定最佳路由的方法,比如ospf就是一类链路状态协议。OSPF维护的3张表:
  1)Neighbor Table:
   确保直接邻居之间能够双向通信。
  2)Topology Table:
   LSDB(Link-State DataBase),同一区域的所有路由器LSDB相同。
  3)Routing Table:
   对LSDB应用SPF算法,选择到达目标地址的最佳路由放入路由表。OSPF的区域:
  ??OSPF采用层次设计,用Area来分隔路由器。
   区域中的路由器保存该区域中所有链路和路由器的详细信息,
   但只保存其他区域路由器和链路的摘要信息。
  必须要有AREA0区域(防环)??Transit area (backbone or area 0)
   主要功能:为快速、高效地传输数据包。通常不接用户。??Regular areas (nonbackbone areas)
   主要是连接用户。而且所有数据都必须经过area 0中转。采用层次设计的好处:
  1、减少了路由表的条目
  2、加速会聚
  3、缩小网络的不稳定性,一个区域的问题不会影响其它区域。OSPF的邻居与邻接关系:
  ??OSPF路由器与它直连的邻居建立邻居关系。
  ??OSPF路由器只会与建立了邻接关系的路由器互传LSA。
  ??路由器只和建立了邻接关系的邻居才可以到达FULL状态。
  ??路由更新只在形成FULL状态的路由器间传递。
  ??P2P链路可以到达FULL状态。
  ??MA网络,所有路由器只和DR/BDR(Backup Designated Router)到达FULL状态。DR/BDR的选举:
   1)比较优先级,越大越优(默认为1,如设为0表示不参与选举)
   2)比较Route-ID,越大越优。??DRother发送给DR/BDR用224.0.0.6
  ??DR发送给DRother用224.0.0.5
  ??非MA网络(没有DR/BDR),路由器都用224.0.0.5 OSPF中,DR的选举有以下特点: 1、不抢占
  2、when DR down,BDR成为DR
  3、DR是一个接口的概念
  4、不同网段分别选DR/BDR
  OSPF建邻居的必要条件:
   1)Hello/Dead Intervals
  2)Area ID
  3)MTU
  4)subnet mask(必须是同一个网段)??Hello Intervals:10S/30S
  ??Dead Interval:4*Hello =40S 不同于其它协议的三倍于Hello时间Metric值的计算:
  ??OSPF Cost = 108/BW (bps) 环回口的COST值是1,serial口的COST值是64,以太口是10Route-ID:
   为唯一标识OSPF域中路由器。
   设置Route-ID的优先顺序:
   1)手工指定Route-ID x.x.x.x(可任意,但不能重复)
   2)最大的Loopback IP
   3)最大的接口IP(保证接口是激活状态)higher active physical interface ip
  ID也可以写成十进制格式,例如:0.0.1.0=256<OSPF>
  R1(config)#router ospf 110 进程号只具有本地意义,不同的路由器进程号可以不同
  R1(config-router)#network 1.1.1.0 0.0.0.255 area 0(正/反掩码皆可)
  R1(config-router)#network 12.1.1.0 255.255.255.0 area 0 R1(config)#router ospf 110(进入进程)
  R1(config-router)#router-id 2.2.2.2(手工配置ID)如果不手动配置则选取环回口最大的ID号,如果没有环回口那则选择物理接口最大的ID号
  R1(config-router)#network 12.1.1.2 0.0.0.0 area 0(ospf的宣告)show ip ospf neighbor(显示邻居信息)
  show ip router(显示router表)
  show ip ospf interface(显示OSPF接口信息)
  show ip protocols
  show ip ospf interface brief
  修改hello时间:
  R4(config-if)#ip ospf hello-interval 9
  (dead自动*4)R4(config-if)#ip os dead-interval 80 改dead时间不会对hello时间产生影响
  <向OSPF域注入默认路由>
  第一种做法:
  R4(config)#ip route 0.0.0.0 0.0.0.0 Serial 0
  R4(config-router)#default-information originate O*E2 0.0.0.0/0 [110/1]
  第二种做法:
  R4(config-router)#default-information originate always <被动接口>
  R1(config)#router ospf 110
  R1(config-router)#passive-interface loopback 0接口将不收发Hello包,但此接口还是被宣告进OSPF
  补充:
  OSPF(Open Short Path First)最优路径算法路由协议。OSPF路由协议的Distance值为110,它拥有一个Metric值,此值是OSPF路由协议用来衡量链路好坏的,当一条链路的Metric值越小,则证明此条链路越好,反之此条链路越差。
  路由协议按数据传输方式分,分为有类(Classfull)和无类(Classless)两种,有类路由协议是指传输可达性路由信息(NLRI)时不带子网掩码;无类路由协议是指传输可达性路由信息(NLRI)时带子网掩码。路由协议按数据传输类型分,分为距离向量(Distance Vector)和链路状态(Link State)两种,距离向量(DV)路由协议没有路由器ID(Router-ID),并且只传递可达性路由信息(NLRI);链路状态(LS)路由协议限制每一台路由器必须要有一个未被使用过的路由器ID(Router-ID),而且它无条件转发任何从邻居传来的可达性路由信息(NLRI)。
  距离向量路由协议:
  此时,假如RouterA后面有一个1.0网段,RouterB后面有一个2.0网段,RouterA告诉RouterB通过我(RouterA)可以到达1.0网段,RouterB告诉RouterC通过我(RouterB)可以到达1.0网段,此时,RouterA到达1.0网段的路断了,那么,他会查找它的邻居RouterB,而此时RouterC也要到1.0网段,他也会去查找它的邻居RouterB,这时RouterB的路由表里有1.0网段的路由,RouterA和RouterC都会将数据发到RouterB,可是,RouterB到不了1.0网段,这样就形成了路由环路。各种距离向量路由协议都有它自己解决路由环路的方法,在此暂不讨论。
  链路状态路由协议:
  在这里,我们用上面的例子继续讨论,因为在之前我曾提到过链路状态路由协议无条件转发任何从邻居传来的可达性路由信息(NLRI),所以,RouterA告诉RouterB我(RouterA)可以到达1.0网段后,RouterB将告诉RouterC从RouterA那里可到达1.0网段,RouterC将一个数据包发往1.0网段时,会查找路由表,得知从RouterA那里可以到达1.0网段,此时RouterC查找邻居表,得知到RouterA那里要经过RouterB,这样,数据包就可以从RouterC发到1.0网段。当RouterA到达1.0网段的路断了,那么,因为RouterB和RouterC的路由表中都是知道通过RouterA才能到达1.0网段,所以,此时就不会出现路由环路。
  链路状态路由协议有四种网络结构:
  1、有广播多层访问(Broadcast Multi Access):
  Hello包间隔:10秒;Down判定40秒。每10秒发一次Hello包,当40秒还未收到回应时认为路由器Down掉。
  2、无广播多层访问(None Broadcast Multi Access):
  Hello包间隔:30秒;Down判定120秒。每30秒发一次Hello包,当120秒还未收到回应时认为路由器Down掉。
  3、点对点(Point-toPoint):
  Hello包间隔:10秒;Down判定40秒。每10秒发一次Hello包,当40秒还未收到回应时认为路由器Down掉。
  4、点对多点(Point-to-Multi Point):
  Hello包间隔:30秒;Down判定120秒。每30秒发一次Hello包,当120秒还未收到回应时认为路由器Down掉。
  OSPF协议号:89。
  OSPF协议要想连通,需要经历两个阶段,第一个阶段是建立邻居关系,第二个阶段是建立邻接关系。
  OSPF有三个表,他们分别是邻居表(Neighbor Table),它的作用是帮助路由器找邻居;第二个表是链路状态数据库(Link State Database,LSDB),它的作用是帮助路由器找到最优路径;第三个表是路由表(Route Table),它的作用是存放最优路径。
  OSPF的路由器状态:
  1、建立邻居关系:
  (1) Down:
  (2) Init:
  (3) Two-Way:
  2、建立邻接关系:
  (1) Exstart:
  (2) Exchange:
  (3) Loading:
  (4) Full:
  运行OSPF路由协议的网络需要一台路由器专门进行计算路由,这台路由器在OSPF域内叫做DR(Design Router),在OSPF域内,还有一台备用的DR叫做BDR,OSPF路由协议会自动选择DR和BDR。首先,路由器先比优先级(Priority),优先级高的就成为DR,次高的为BDR,优先级为0的为DROther,不能成为DR和BDR,DROther与DROther之间只能到达Two-Way关系。如果,优先级相同,那么就比较路由器ID(Router-ID),路由器ID大的为DR,次大的为BDR。
  区域OSPF:
  OSPF有种区域类型,分别是:
  1、骨干区域(BackBone Area):
  2、标准区域(Standard Area):
  3、末节区域(Stub Area):
  4、完全末节区域(Total Area):
  5、非完全末节区域(Not-So-Stubby Area):
  骨干区域为Area 0。
  在区域内OSPF是链路状态(LS)路由协议,而域间OSPF是距离向量(DV)路由协议。
  ,所有分支区域全都与骨干区域直连。虽然不直连也是可以的,可以打一条虚链路(Visual Link),但是这样会大量消耗路由器的CPU,所以我不建议大家这样配置。
  OSPF的消息包类型:
  1、LSA Type 1:任意路由器皆可以产生。
  2、LSA Type 2:由DR产生。
  3、LSA Type 3:区域间路由信息,由ABR(边关路由器)产生。
  4、LSA Type 4:不要求知道,如要了解详细信息,可参考相关RFC文档。
  5、LSA Type 5:区域外路由信息,由ASBR(区域外边关路由器)产生。
  6、LSA Type 6:不要求知道,如要了解详细信息,可参考相关RFC文档。
  7、LSA Type 7:由ASBR产生,NSSA区域内部独有。
  我认为,在做一个项目时,可以考虑一下,区域内或自治系统内部使用OSPF路由协议,而边关路由器使用BGP路由协议,因为,OSPF路由协议的Distance值较高(OSPF为110,而IS-IS为115,RIPv2为120,IBGP为200),并且OSPF不会出现路由环路,相对比较严谨,问题较少。而边关路由器由于EBGP(外部边关路由协议)Distance值为20,仅比直连路由(Distance为0)和静态路由(Distance为0或1)要低,且BGP是用来管理的路由协议,可以根据情况是用路由策略(如:Router Map,Distribute List,Filter List)。以上为个人见解,仅供参考。
  以上是OSPF路由协议的一些基本理论,不完全的地方可以参考相关RFC文档,那里有更为详细地说明。 推荐书籍:CCIE Professional Development Routing TCP/IP Volume I、II,(CCIE企业级网络构建,TCP/IP路由技术I、II)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值