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)。



OSPF路由协议基础(二)
距离向量路由协议:
     此时,假如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网段,所以,此时就不会出现路由环路。


OSPF路由协议基础(三)
链路状态路由协议有四种网络结构:
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路由协议基础(四)
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:
     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)。