zoukankan      html  css  js  c++  java
  • OSPF学习笔记-----Open Shortest Path First

     OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),

    用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),

    故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,

    OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。

    与RIP相比,OSPF是链路状态(路由器接口)协议,而RIP是距离矢量协议。

    OSPF工作在IP层,协议号是89

    OSPF以组播地址224.0.0.5和224.0.0.6发送数据包,其中DR和BDR向其他路由设备发包时用224.0.0.5

    而其他路由器向BR和BDR发包时用224.0.0.6

    支持手动汇总而不支持自动汇总

    不同厂商管理距离不同,思科OSPF的协议管理距离(AD)是110,华为OSPF的协议管理距离是10

    OSPF一般用于一个AS自治系统中,在这个AS中,所有的OSPF路由都维护一个相同的描述这个AS结构的数据库,

    该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库应用Digkstra算法计算出其OSPF路由表的。

    下面讲解OSPF的简单配置过程

    Router>enable

    Router#configure terminal

    Router(config)#interface f0/0

    Router(config-if)#ip address 192.168.1.1 255.255.255.0

    Router(config-if)#no shutdown

    Router(config-if)#exit

    Router(config)#router ospf 1

    Router(config-router)#router-id 0.0.0.1

    Router(config-router)#network 192.168.1.0 255.255.255.0 area 1

    至此我们已经在这一台路由器上完成了OSPF的简单配置

    由上述过程我们可以看到,和EIGRP不同的一点是,我们在打路由器开启的配置命令时还要额外的配置一个进程ID。

    这个进程ID纯粹是一个本地有意义的取值,取值在1-65535之间,因为在同一个路由器上可以运行多个OSPF进程,每一个OSPF进程都会维护一个独立的拓扑表,

    所以需要进程ID来进行标识,但是CCNA考试只涉及单区域单进程的OSPF考察,在此不做深究。

    开启完之后还可以用router-id这条命令来修改RID,

    但在此要注意的一点是,进程ID也可以用"点分十进制"来表示,但是有所区别,比如0.0.1.0 = 256,  0.0.1.1 = 257,以此类推。

    开启完OSPF之后接下来就是用OSPF标识端口,就是network,这项动作有两个作用,

    1. 从协议层激活端口,使其能够手法OSPF报文。

    2. 宣告网络(OSPF默认关闭自动汇总)。

    network命令的参数依旧是网络号和通配符掩码(反掩码),这两个数值共同标识路由器端口,并将包含在OSPF的LSA通告中,

    路由器将根据这条命令来找出位于这个超网内的所有接口进行激活并防止到所配置区域中。

    但是要注意的是,虽然使用通配符掩码把多个接口的网络汇总成一个大大超网进行宣告或者直接利用通配符掩码0.0.0.0宣告某个具体接口比较简单方便,

    但是这种配置不包含在CCNA的目标之中,而是要为每个接口创建一个单独的网络声明,这种配置方式包含在CCNA考试的目标之中!!!

    OSPF在network时也要多打一个配置,就是标识区域号,就是area值,取值在0-4294967395(42亿)之间,这个值和进程ID毫不相关,

    只有配置了相同的区域号的OSPF路由器才能成为邻居,也可以用点分十进制来表示。到此我们就完成了OSPF的基本配置。

    然而OSPF值还有几个值得注意的概念:

    1. 邻居和邻接

        多个共享网络分段的路由器将在这个网络分段上成为邻居,这些邻居是通过hello协议选举出来的,使用IP组播定期的将hello报文从每个端口发送出去。

    路由器在以下这三个方面达成共识时才能成为邻居。

        区域ID                         某个特定网络分段上两个路由器的接口必须同属一个区域,并且这两个接口同属一个子网。

        认证                             OSPF允许未特定的区域设置密码,路由器的认证不是必须的,但是一旦使用了认证,那么这两台路由器在这个网短上设置的密码必须相同。

        hello和dead间隔          两个路由器所设置的这两个时间间隔必须是相同的,默认是10s和40s

        另外还有有特殊字段flag必须相同

        router ID必须不同

        接口的掩码必须相同,即必须在同一网段

       在选举过程中邻接是邻居是下一个步骤。邻接的路由器是指那些通过简单的hello数据交换之后,进入数据库交换过程的路由器。

    而为了特定网段中交换信息的数量,OSPF要在每个网络分段中选出一个指定路由器(DR)和一个备份指定路由器(BDR)。

    这样,每个路由器都只需要把自己的更新信息交给自己的DR和BDR,再由DR或BDR将信息转发给每个路由器。

     邻接建立的必要条件

    必须是邻居状态

    MTU必须相同

    3.配置环回接口

       无论是否是配置OSPF,我们都建议在路由器上配置一个环回接口,配置时使用32位掩码直接确定网络。

    4.BR和BDR的选举

       DR和BDR的选举是通过hello协议实现的。每个网络分段上的hello数据包通过IP组播交换的。只有在广播和费广播的多路访问网络才会进行DR和BDR的选举。

    点到点链路如船型WAN连接则不会有该过程。

    选举规则是:

    1.比较路由器的优先级,默认都是1,优先级高的选举为DR,次高的为BDR,在管理上我们建议修改RID使性能好的设备成为DR和BDR

    2.在优先级相同的情况下比较RID即router ID,最大的为DR,次大的为BDR

    5.RID的设定

    RID可以手动指定:router-id xxxx.xxxx.xxxx.xxxx(点分十进制)

    如果没有手动指定,会将最大的环回地址作为RID

    如果没有环回地址,则会选出最大的已激活的物理接口地址作为RID

  • 相关阅读:
    时间复杂度为O(1)的Iveely搜索缓存策略
    数据挖掘十大算法决策树的实现
    编写有效的C# 代码(一)
    数据挖掘十大算法Kmeans之图像区域选择
    asp.net 导出 Excel
    使用XMLSpyDocEditPlugIn2.dll,页面加载失败
    多线程Thread的使用,并使用Thread传参
    ajaxpro.2.dll的使用
    论道WP(二):如何学习WP开发?
    IList<T> 转换成 DataSet
  • 原文地址:https://www.cnblogs.com/wuguan/p/6847474.html
Copyright © 2011-2022 走看看