CCIE
当前位置:网站首页>CCIE
[CCIE笔记]OSPF知识点汇总
发布日期:2019-01-09 10:15:33 发布者:
    OSPF工作原理:
    1、  宣告OSPF的路由器从所有启动OSPF进程的接口上发出hello数据包;
    2、  邻接关系的建立是由交换Hello信息的路由器类型和网络类型决定的;
    3、  每一台路由器都会在所有形成邻接关系的邻居之间发送LSA,LSA描述了路由器所有链路、接口、路由器的邻居以及链路状态信息;
    4、  每一台收到从neighbor发出的LSA的路由器都会把这些LSA记录在自己的LSDB中,并且发送一份LSAcopy给其他的neighbors;
    5、  通过LSA泛洪扩散到整个区域,区域内所有路由器都会形成相同的LSDB;
    6、  当这些路由器的LSDB完全相同时,每一台路由器将以自身为根,使用SPF算法计算出一个无环拓扑,描述自己所知道的到达每一个目的地的shortest path.
    7、  每一台路由器都将从SPF算法树中构建出自己的路由表:
    1)        区域内路由(最优)
    2)        区域间路由
    3)        E1外部路由
    4)        E2外部路由
    OSPF邻居之间交换的Hello数据包称为keepalive,并且每30min重传一次LSA。
    OSPF五种数据包
    l  Hello  建立并维护邻居关系。hello组播地址 224.0.0.5
    l  DBD    DatabaseDescribe  数据库描述,建立邻居时发送,描述自身接口状态。
    l  LSR    LinkState Request 链路状态请求,向邻居请求
    l  LSU    LinkState Update  链路状态更新,发送的是LSA
    l  LSAck  对DBD、LSR、LSU进行确认
    OSPF选举router-id的规则:
    1)        手动配置的router-id为首选;
    2)        所有loopback中最大的IP作为router-id;
    3)        所有活动物理接口中最大的IP作为router-id;
    (用作router-id的接口不一定非要运行OSPF协议)
    使用loopback作为router-id的好处:
    ²  Loopback比其他任何接口更稳定;
    ²  网络管理员能够更好地控制router-id;
    OSPF Hello消息的用途:
    ²  OSPF利用Hello通告router-id并开始建立邻居/邻接关系;
    ²  在两台路由器成为邻居之前,需要通告这两台路由器必须相互认可的几个参数;
    ²  Hello在邻居路由器间担当keepalive的角色;
    ²  确保了邻居路由器之间的双向通信;
    ²  用来在NBMA网络中选举DR/BDR;
    Network-Type point-to-point point-to-multipoint broadcast non-broadcast virtual-link
    hello-interval 10s 30s 10s 30s ---
    dead-interval 40s 120s 40s 120s ---
    OSPF邻居建立失败的可能性参数:
    «  Router-id不能冲突
    «  Area-id不一致
    «  Area-Type不一致
    «  Hello-interval/Dead-interval不一致
    «  MTU不一致
    «  Authentication不一致
    «  Network-Type不一致(可能会邻居建立正常,但是不会将条目加载到路由表中)
    «  IP地址掩码不一致
    «  OSPF hello包被ACL过滤了
    无论何时,路由器发送一个hello包,都会在这个Hello数据包中列出该数据链路上所出现的所有neighbors’ router-ids。如果一台路由器收到了一个有效的Hello包,并在这个Hello包中发现的自己的router-id,那么就认为Two-way Communication建立成功了。
    OSPF Network-Type
    要点
    数据传送方式
    point-to-point
    point-to-point网络上的有效邻居总是可以形成Adjacency关系的。
    组播,224.0.0.5,All SPF  Routers
    point-to-multicast
    不需要选举DR/BDR,可以看成是一群point-to-point链路的集合。
    单播
    broadcast
    选举DR/BDR,所有路由器与DR和BDR建立Adjacency关系,他们互相之间为Neighbor(DRothers)关系,DR和BDR之间也是Adjacency关系。DR/BDR不能被抢占。
    DR发送数据包到224.0.0.5,
    BDR发送数据包到224.0.0.5,
    只有DR/BDR侦听224.0.0.6
    non-broadcast
    NBMA网络不具备传送Broadcast/multicast packets,需要增加额外的配置实现单播数据包,使OSPF邻居建立起来。需要选举DR/BDR,hello是单播的。
    单播
    virtual-link
    虚链路一旦建立,就不再发送Hello消息。
    单播
    除了以上的5种Network Type外,所有的网络都可以归纳到下面更普通的网络类型之一:
    ²  TransitNetwork
    与两台或两台以上的路由器相连。这种网络仅仅传送那些“只需仅仅通过”的数据包,即这些数据包的始发网络和目的网络都不同于当前的Transit Network.
    ²  StubNetwork
    仅仅和一台路由器相连。末梢网络上的所有数据要么始发与这个末梢网络上的某个设备,要么终止于这个末梢网络上的某个设备。
    OSPF认为Loopback口是末梢网络节点,将其作为32位主机路由来通告。
    DR/BDR
    ²  网络中的每一台路由器都与DR形成Adjacency关系;
    ²  DR/BDR是路由器的接口特性,并不是整个路由器的特性;
    ²  网络中所有的路由器都与DR和BDR形成邻接关系,DR与BDR互相形成邻接关系;
    ²  OSPF路由器的每一个BMA或者NBMA接口都有一个priority,大小为0——255,cisco路由器的默认priority为1,可以通过接口下ip ospf priority来修改;
    ²  将接口priority改为0,该路由器将退出DR/BDR的选举进程,即没有选举DR/BDR的资格;
    ²  选举进程由Hello包承载所需要的参数字段(priority、DR/BDR’srouter-id);
    ²  DR/BDR的选举过程
    1)路由器必须和邻居路由器建立Two-way communication状态;(具有选举DR/BDR的资格:priority必须大于0,并且邻居状态必须进入Two-way状态)
    2)多路访问链路上选举priority最高的路由器为DR;次优的为BDR;
    3)若路由器priority相同,则根据最高router-id来选举;
    4)在DR/BDR已经存在的多路访问链路上,如果有新的OSPF路由器加入,则接受已经存在的DR/BDR,即使拥有最高的priority也不会去抢占DR/BDR的角色;
    5)若DR失效,则BDR接管DR的角色,并重新激活一个新的BDR选举进程;
    ²  DR将OSPF packets发往224.0.0.5,所有的OSPF路由器都会接受;DRothers将OSPF packets发往224.0.0.6,只有DR/BDR路由器侦听该地址并接受数据;
    ²  如果在一个多路访问网络上只有唯一的一台路由器具有选举资格,那么该路由将成为DR,而且网络中将不会存在BDR,这是允许的;
    ²  如果多路访问网络中的所有路由器都没有资格选举,那么邻居状态将卡在Two-way状态,即没有DR/BDR产生;
    OSPF邻居
    要成功建立一个OSPF邻接关系,通常需要4个阶段:
    1.邻居路由器发现阶段;
    2.Two-way双向通信阶段;
    3.Database Synchronization数据库同步阶段;
    路由器之间交换DBD、LSR、LSU、LSAck数据包,确保邻居间拥有相同的LSDB。执行这一步骤的目的是使其中一台邻居路由器成为Master(router-id高的路由器),另一台成为Slave,Master将控制DBD的信息交换过程;
    4.Full Adjacency完全邻接状态;
    OSPF邻居状态
    1.Down
    2.Attempt
    该状态仅仅使用于NBMA网络上的邻居,在NBMA网络上的邻居路由器是手动配置。当NBMA网络上具有DR选举资格的路由器和邻居路由器的接口开始变为Active时或者成为DR/BDR时,这台具有DR选举资格的路由器将会把邻居路由器的转该转换到Attempt状态。在Attempt状态下,路由器使用Hello-interval的时间作为Poll-interval的时间来作为向邻居发送Hello数据包的时间间隔。
    3.Init
    该状态表示在最近的dead-interval时间内路由器收到了来自邻居的Hello包,但是双向通信没有建立。
    4.Two-Way
    该状态表示本地路由器已经在来自邻居的Hello包的邻居字段中看到了自己的router-id,即双向通信建立。在多路访问网络中,该状态意味着路由器开始选举DR/BDR。如果在Init状态下从邻居那里收到一个DBD,将引起邻居状态直接转换到Two-way状态。
    5.ExStart
    该状态下,本地路由器与邻居建立起Master/Slave关系,确定DBD的序列号,为DBD的信息交换做准备。router-id最高者成为Master。
    6.Exchange
    该状态下,本地路由器向邻居发送描述自己的DBD,同时在Exchange状态下,本地路由器也会发送LSR给邻居路由器,请求最新的LSA。
    Exchange状态下邻居路由器之间开始同步LSDB,同步LSDB的操作是通过它们互相描述各自的LSDB的所有条目来实现的。
    7.Loading
    该状态下,本地路由器向邻居发送LSR,请求最新的LSA通告,虽然在Exchange状态下已经发现了这些最新的LSA通告,但是本地路由器还没有收到这些LSA通告。
    8.Full
    OSPF Virtual-Link的创建规则:
    ²  Virtual-link必须配置在两台ABR之间;
    ²  配置了Virtual-link所经过的区域必须拥有全部的路由选择信息,即必须是Transit Area;
    ²  Transit Area不能是Stub Area;
    ²  另外,如果网络中有Virual-link存在,则被认为该网络是一个设计的比较糟糕的网络;
    OSPF LSDB
    ²  Type 1 ——Router LSA
    每一台路由器都会产生RouterLSA通告。这个最基本的LSA列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的cost,以及该链路上所有已知的OSPF邻居,这些LSA通告只会在始发它们的区域内部进行泛洪扩散。
    ²  Type 2 ——Network LSA
    每一个多路访问网络中的DR都会产生NetworkLSA通告,Network LSA通告列出了所有与之相连的路由器,包括DR路由器本身,与Router-LSA一样,Network LSA也仅仅在产生这条Network LSA的区域内进行泛洪扩散。
    ²  Type 3 ——Network Summary LSA
    由ABR路由器发出,ABR发送NetworkSummary LSA到一个区域,用来通告该区域外部外部的目的地址;
    当ABR始发一条Network Summary LSA时,将包括从它本身到正在通告的这条LSA的目的地所耗费的cost;
    当其他的路由器从一台ABR收到一条Network Summary LSA时,它并不运行SPF算法,只是简单加上从它到那台ABR之间的路由的cost,并将这个新的cost包含在这个LSA通告中;(这种行为类似于距离矢量协议的行为,这说明OSPF虽然在一个区域内使用的是链路状态协议,但是在查找不同域间路由时,使用的是距离矢量算法)
    ²  Type 4 ——ASBR Summary LSA
    也是由ABR始发的。ASBR SummaryLSA除了通告的目的地是一台ASBR路由器而不是一个网络外,其他的和Network Summary LSA是一样的,即通过ASBR Summary LSA通告的是一个32位主机路由,告诉OSPF系统内所有路由器怎么去往ASBR。
    ²  Type 5 ——AS External LSA
    是由ASBR始发,用来通告到达OSPF自治系统外部的目的网段。AS ExternalLSA将在整个OSPF自治系统内进行泛洪扩散。
    ²  Type 6 ——Group Membership LSA(用于MOSPF)*
    ²  Type 7 ——NSSA External LSA
    由ASBR始发,几乎与ASExternal LSA一模一样,只是不像ASExternal LSA一样在整个OSPF自治系统内进行泛洪扩散,而是仅在始发这个NSSA External LSA的NSSA区域内进行扩散。
    NSSA External LSA的头部有个P-bit的标志(0或者1):
    l  如果ABR接收到的NSSAExternal LSA的P-bit被置为1,则将该Type 7 LSA转化为Type 5 LSA,并将这条LSA泛洪扩散到其他区域中区;
    l  如果ABR接收到的NSSAExternal LSA的P-bit被置为0,则不会将该Type 7 LSA转化为Type 5 LSA,这条LSA只能被限制在本地NSSA区域中传递;
    OSPF特殊区域
    ²  Stub Area
    Stub Area是一个不允许AS External LSA在其内部泛洪扩散的区域。如果在一个区域里没有Type 5 LSA,那么Type 4 LSA也没必要了。因此位于Stub Area边界的ABR路由器将使用Type 3 - Network Summary LSA来向Stub Area内通告一条指向ABR自己的默认路由;StubArea内的所有路由器都将使用默认路由经过ABR去往OSPF的外部网络目的地;
    ²  Totally Stub Area
    Totally Stub Area把Type 3 LSA也过滤掉了,不仅使用默认路由去往OSPF自治系统外部的目的地,而且使用默认路由到达其他OSPF区域的目的地;
    ²  Not-So-Stub-Area(NSSA)
    NSSA区域允许外部路由被重分布进来,而同时保留OSPF自治系统其他的Stub区域特性。在NSSA区域内的ASBR将始发Type 7 – NSSA External LSA来通告那些外部的目的网络。这些Type 7LSA将在整个NSSA区域中泛洪扩散,但是会在ABR路由器的地方被阻塞;(根据Type 7 LSA头部的P-bit来决定是否转换成Type 5 LSA)
    ²  Totally NSSA
    OSPF是根据路由器的每一个接口指定的cost来决定最短路径的。一条路由的cost是指沿着到达目的网络的路由路径上所有出站接口的cost之和。
    cisco默认使用cost=10^8/BW,BW可以使用接口命令bandwidth来修改,单位kbit/s;可以使用命令auto-costreference-bandwidth来修改参考带宽,解决在带宽>100M的接口上计算出的cost始终为1的尴尬局面;
    OSPF路由类型
    ²  Intra-area path(域内路由)
    ²  Inter-area path(域间路由)
    ²  Type 1 - external path(E1)
    在OSPF中,OE1的外部路由的cost是这条路由到达ASBR的每跳cost之和+ASBR通告该外部路由时赋予的起始外部cost值;
    ²  Type 2 - external path(E2)
    在OSPF中,OE2的外部路由的cost始终保持ASBR当初通告时赋予的起始外部cost不变,不管它后来是在OSPF内怎么传输的。
    OE1和OE2类型的路由给网络管理员提供了一个选择的机会:是选择真正意义上距离外部网络最近的站点(OE1),还是选择通过距离外部网络最近的ASBR(OE2),去到达目标网络。
    简单点,OE1参照外部路由被传进来后沿路所累加的cost值,来决定从最短的路径走;OE2忽略外部路由在OSPF区域内的传输过程,只考虑ASBR距离外部网络的远近(由通告的cost决定)。
    路由汇总
    在ABR上汇总
    ABR(config-router)#area 1 range 172.16.0.0 255.255.252.0
    //ABR上汇总OSPF area 1的路由
    在ASBR上汇总
    ASBR(config-router)#summary-address 172.16.0.0 255.255.252.0

微信