CCNP路由实验之五 动态路由协议之 OSPF



      CCNP路由实验之五动态路由协议之 OSPF

 

 动态路由协议可以自动的发现远程网络,只要网络拓扑结构发生了变化,路由器就会相互交换路由信息,不仅能够自动获知新增加的网络,还可以在当前网络连接失败时找出备用路径。根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议EGP)。这里的自治域指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIPEIGRPOSPF外部网关协议主要用于多个自治域之间的路由选择,常用的是BGPBGP-4在一个路由器中,可同时配置静态路由和一种或多种动态路由。它们各自维护的路由表都提供给转发程序,但这些路由表的表项间可能会发生冲突。这种冲突可通过配置各路由表的优先级来解决。通常静态路由具有默认的最高优先级,当其它路由表表项与它矛盾时,均按静态路由转发。

 

OSPF简介

OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议,用于在单一自治系统autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,。链路路由器接口的另一种说法,因此OSPF也称为接口状态路由协议OSPF通过同一个路由域内的路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。在这里,路由域是指一个自治系统Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。OSPF将链路状态组播数据LSALink State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议路由器是将部分或全部的路由表传递给与其相邻的路由器。著名的迪克斯加算法被用来计算最短路径树。与RIP相比,OSPF是链路状态协议,而RIP距离矢量协议。不同厂商管理距离不同,思科OSPF的协议管理距离AD)是110,华为OSPF的协议管理距离是150

 

OSPF协议主要优点

  1. OSPF是真正的LOOP-FREE(无路由自环)路由协议。源自其算法本身的优点。(链路状态及最短路径树算法)

  2. OSPF收敛速度快:能够在最短的时间内将路由变化传递到整个自治系统。

  3. 提出区域(area)划分的概念,将自治系统划分为不同区域后,通过区域之间的对路由信息的摘要,大大减少了需传递的路由信息数量。也使得路由信息不会随网络规模的扩大而急剧膨胀。

  4. 将协议自身的开销控制到最小

1)用于发现和维护邻居关系的是定期发送的是不含路由信息的hello报文,非常短小。包含路由信息的报文时是触发更新的机制。(有路由变化时才会发送)。但为了增强协议的健壮性,每1800秒全部重发一次。

2)在广播网络中,使用组播地址(而非广播)发送报文,减少对其它不运行ospf的网络设备的干扰。

3)在各类可以多址访问的网络中(广播,NBMA),通过选举DR,使同网段的路由器之间的路由交换(同步)次数由 ON*N)次减少为 O N)次。

4)提出STUB区域的概念,使得STUB区域内不再传播引入的ASE路由。

5)在ABR(区域边界路由器)上支持路由聚合,进一步减少区域间的路由信息传递。

6)在点到点接口类型中,通过配置按需拨号属性OSPF over On Demand Circuits),使得ospf不再定时发送hello报文及定期更新路由信息。只在网络拓扑真正变化时才发送更新信息。

7)通过严格划分路由的级别(共分四极),提供更可信的路由选择。

8)的安全性,ospf支持基于接口的明文及md5验证。

9)PF适应各种规模网络,最多可达数千台。

 

OSPF术语

Router-ID就相当于人的名字,用于路由器之间分不清谁是谁,如果没有办法确定各自的身份,那么通告的链路状态就是毫无意义的,所以必须给每一个OSPF路由器定义一个身份,这就是Router-ID,并且Router-ID在网络中绝对不可以有重名,否则路由器收到的链路状态,就无法确定发起者的身份,也就无法通过链路状态信息确定网络位置,OSPF路由器发出的链路状态都会写上自己的Router-ID,可以理解为该链路状态的签名,不同路由器产生的链路状态,签名绝不会相同。如果一台路由器收到一条链路状态,无法到达该Router-ID的位置,就无法到达链路状态中的目标网络。Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算。每一台OSPF路由器只有一个Router-IDRouter-ID使用IP地址的形式来表示,确定Router-ID的方法为:

  1. 手工指定Router-ID

  2. 路由器上活动Loopback接口中IP地址最大的,也就是数字最大的,如C类地址优先于B类地址,一个非活动的接口的IP地址是不能被选为Router-ID的。

  3. 如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。

 

COST:OSPF使用接口的带宽来计算Metric,例如一个10 Mbit/s的接口,计算Cost的方法为:将10 Mbit换算成bit,为10 000 000bit,然后用10000 0000除以该带宽,结果为 10000 0000/10 000000 bit = 10,所以一个10 Mbit/s的接口,OSPF认为该接口的Metric值为10,需要注意的是,计算中,带宽的单位取bit/s,而不是Kbit/s,例如一个100 Mbit/s的接口,Cost值为 100000000 /100 000 000=1,因为Cost值必须为整数,所以即使是一个1000 Mbit/s1GBbit/s)的接口,Cost值和100Mbit/s一样,为1。如果路由器要经过两个接口才能到达目标网络,那么很显然,两个接口的Cost值要累加起来,才算是到达目标网络的Metric值,所以OSPF路由器计算到达目标网络的Metric值,必须将沿途中所有接口的Cost值累加起来,在累加时,同EIGRP一样,只计算出接口,不计算进接口。OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。到达目标相同Cost值的路径,可以执行负载均衡,最多6条链路同时执行负载均衡。

 

链路状态(Link-State:链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。OSPF路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库(Link-State Database),邻居再发给自己的所有邻居,并且在传递过程中,绝对不会有任何更改。通过这样的过程,最终,网络中所有的OSPF路由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓朴。

 

OSPF区域:OSPF路由器之间会将所有的链路状态(LSA)相互交换,毫不保留,当网络规模达到一定程度时,LSA将形成一个庞大的数据库,势必会给OSPF计算带来巨大的压力;为了能够降低OSPF计算的复杂程度,缓存计算压力,OSPF采用分区域计算,将网络中所有OSPF路由器划分成不同的区域,每个区域负责各自区域精确的LSA传递与路由计算,然后再将一个区域的LSA简化和汇总之后转发到另外一个区域,这样一来,在区域内部,拥有网络精确的LSA,而在不同区域,则传递简化的LSA。区域的划分为了能够尽量设计成无环网络,所以采用了Hub-Spoke的拓朴架构,也就是采用核心与分支的拓朴区域的命名可以采用整数数字,如1234,也可以采用IP地址的形式,0.0.0.10.0.0.2,因为采用了Hub-Spoke的架构,所以必须定义出一个核心,然后其它部分都与核心相连,OSPF的区域0就是所有区域的核心,称为BackBone区域(骨干区域),而其它区域称为Normal 区域(常规区域),在理论上,所有的常规区域应该直接和骨干区域相连,常规区域只能和骨干区域交换LSA,常规区域与常规区域之间即使直连也无法互换LSA,如上图中Area 1Area 2Area 3Area 4只能和Area 0互换LSA,然后再由Area 0转发,Area 0就像是一个中转站,两个常规区域需要交换LSA,只能先交给Area 0,再由Area0转发,而常规区域之间无法互相转发。

OSPF区域是基于路由器的接口划分的,而不是基于整台路由器划分的,一台路由器可以属于单个区域,也可以属于多个区域,如果一台OSPF路由器属于单个区域,即该路由器所有接口都属于同一个区域,那么这台路由器称为Internal RouterIR);如果一台OSPF路由器属于多个区域,即该路由器的接口不都属于一个区域,那么这台路由器称为AreaBorder RouterABR),ABR可以将一个区域的LSA汇总后转发至另一个区域;如果一台OSPF路由器将外部路由协议重分布进OSPF,那么这台路由器称为Autonomous System BoundaryRouterASBR),但是如果只是将OSPF重分布进其它路由协议,则不能称为ASBR。可以配置任何OSPF路由器成为ABRASBR。由于OSPF有着多种区域,所以OSPF的路由在路由表中也以多种形式存在,共分以下几种:

如果是同区域的路由,叫做Intra-Area Route,在路由表中使用O来表示;

如果是不同区域的路由,叫做Inter-Area RouteSummary Route,在路由表中使用O IA来表示;

如果并非OSPF的路由,或者是不同OSPF进程的路由,只是被重分布到OSPF的,叫做External Route,在路由表中使用O E2OE 1来表示。

当存在多种路由可以到达同一目的地时,OSPF将根据先后顺序来选择要使用的路由,所有路由的先后顺序为:

Intra-Area — Inter-Area — External E1 — External E2,即 O — O IA — O E1 — O E2

注:一台路由器可以运行多个OSPF进程,不同进程的OSPF,可视为没有任何关系,如需要获得相互的路由信息,需要重分布。每个OSPF进程可以有多个区域,而路由器的链路状态数据库是分进程和分区域存放的

 

Hello用于发现邻居,在成为邻居之前,必须对Hello包里的一些参数进行协商Hello包在邻居之间扮演着keepalive的角色,允许邻居之间的双向通信、用于在NBMA(Nonbroadcast Multi-access)、广播网络(以太网)中选举DRBDRHello Packet包含以下信息:

路由器RID

路由器Area ID

路由器接口的掩码

路由器接口的认证类型和认证信息

路由器接口的Hello包发送的时间间隔

路由器接口的无效时间间隔

优先级

DR/BDR接口IP地址

五个标记位(flag bit)

路由器的所有邻居的RID

 

邻居(Neighbor:邻居关系是指,当双方收到对方的hello报文的时候,报文里面的参数(hello time.deadinterval , area id.authentication ,mask 等)一致的时候,并且邻居关系为2-way的时候,这样就是建立了邻居关系。OSPF只有邻居之间才会交换LSA,路由器会将链路状态数据库中所有的内容毫不保留地发给所有邻居,要想在OSPF路由器之间交换LSA,必须先形成OSPF邻居,OSPF邻居靠发送Hello包来建立和维护,Hello包会在启动了OSPF的接口上周期性发送,在不同的网络中,发送Hello包的间隔也会不同,当超过4倍的Hello时间,也就是Dead时间过后还没有收到邻居的Hello包,邻居关系将被断开。两台OSPF路由器必须满足4个条件,才能形成OSPF邻居,4个必备条件如下:

Area-id(区域号码):即路由器之间必须配置在相同的OSPF区域,否则无法形成邻居。

Hello and Dead IntervalHello时间与Dead时间)即路由器之间的Hello时间和Dead时间必须一致,否则无法形成邻居。

Authentication(认证):路由器之间必须配置相同的认证密码,如果密码不同,则无法形成邻居。

StubArea Flag(末节标签):路由器之间的末节标签必须一致,即处在相同的末节区域内,否则无法形成邻居。

邻接关系建立的4个阶段:

  1. 邻居发现阶段。

  2. 双向通信阶段:Hello报文都列出了对方的RID,则BC完成。

  3. 数据库同步阶段:主从协商;DD交换;LSA请求;LSA传播;LSA应答。

  4. 完全邻接阶段: full adjacency

    邻居关系的建立和维持都是靠Hello包完成的,在一般的网络类型中,Hello包周期性的以HelloInterval秒发送,有1个例外:在NBMA网络中,路由器每经过一个PollInterval周期发送Hello包给状态为down的邻居(其他类型的网络是不会把Hello包发送给状态为down的路由器的).Cisco路由器上PollInterval默认120s Hello Packet以组播的方式发送给224.0.0.5,在NBMA类型,点到多点和虚链路类型网络,以单播发送给邻居路由器。邻居可以通过手工配置或者Inverse-ARP发现。

    注:OSPF只能使用接口的Primary地址建立邻居,不能使用Secondary建立邻居。路由器双方接口要么都为手工配置地址(Numbered),要么都为借用地址(Unnumbered),否则无法建立邻居

     

    邻接(Adjacency):邻接关系是指在建立的邻居关系之后继续发送DDLSRLSU等报文,最终双方的LSDB达到同步之后,邻居状态为FULL时,才成为邻接关系。两台OSPF路由器能够形成邻居,但并不一定能相互交换LSA,只要能交换LSA,关系则称为邻接(Adjacency)。邻居之间只交换Hello包,而邻接(Adjacency)之间不仅交换Hello包,还要交换LSAOSPF路由器在完全邻接之前,所经过的几个状态:

  1. Down:此状态还没有与其他路由器交换信息。首先从其ospf接口向外发送hello分组,还并不知道DR(若为广播网络)和任何其他路由器。发送hello分组使用组播地址224.0.0.5

  2. Attempt:只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval取代PollInterval来发送Hello包。

  3. Init:表明在DeadInterval里收到了Hello包,但是2-Way通信仍然没有建立起来。

  4. two-way:双向会话建立,而RID彼此出现在对方的邻居列表中。(若为广播网络:例如:以太网。在这个时候应该选举DR,BDR。)

  5. ExStart:信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD Sequence Number,路由器ID大的的成为Master

  6. Exchange:信息交换状态,本地路由器和邻居交换一个或多个DBD分组(也叫DDP),DBD包含有关LSDBLSA条目的摘要信息。

  7. Loading:信息加载状态:收到DBD后,将收到的信息同LSDB中的信息进行比较。如果DBD中有更新的链路状态条目,则向对方发送一个LSR,用于请求新的LSA

  8. Full:完全邻接状态,邻接间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断

     

    DR/BDR:当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,通过在多路访问网段中选择出一个核心路由器,称为DRDesignated Router),网段中所有的OSPF路由器都和DR互换LSA,这样一来,DR就会拥有所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像是该网段的LSA中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在多路访问网络中除了选举出DR之外,还会选举出一台路由器作为DR的备份,称为BDRBackup Designated Router),BDRDR不可用时,代替DR的工作,而既不是DR,也不是BDR的路由器称为Drother,事实上,Dother除了和DR互换LSA之外,同时还会和BDR互换LSA DRBDR并没有任何本质与功能的区别,只有在多路访问的网络环境,才需要DRBDRDRBDR的选举是在一个二层网段内选举的,即在多个路由器互连的接口范围内,与OSPF区域没有任何关系,一个区域可能有多个多路访问网段,那么就会存在多个DRBDR,但一个多路访问网段,只能有一个DRBDR选举DRBDR接口状态机的方式触发的规则为

  1. 比较接口优先级:选举优先级最高的成为DR,优先级数字越大,表示优先级越高,被选为DR的几率就越大,次优先级的为BDR,优先级范围是0-255,默认为1,优先级为0表示没有资格选举DRBDR

  2. Route-Id大小:如果在优先级都相同的情况下,Route-Id最大的成为DR,其次是BDR,数字越大,被选为DR的几率就越大。router-ID选举规则首先会在该路由器上的所有环回接口里选一个IP地址最大的,如果没有环回接口就选活动的物理接口IP地址最大的。(只有在IPV4的环境下可以自动选举route-ID如果是纯IPV6环境必须手工指定)

DR BDR选取过程:

  1. 路由器X在和邻居建立双向(2-Way)通信之后,检查邻居的Hello包中Priority,DRBDR字段,列出所有可以参与DR/BDR选举的邻居(priority不为0).

  2. 如果有一台或多台这样的路由器宣告自己为BDR(也就是说,在其Hello包中将自己列为BDR,而不是DR),选择其中拥有最高路由器优先级的成为BDR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为BDR,选择列表中路由器拥有最高优先级的成为BDR,(同样排除宣告自己为DR的路由器),如果相同,再根据路由器标识。

  3. 按如下计算网络上的DR。如果有一台或多台路由器宣告自己为DR(也就是说,在其Hello包中将自己列为DR),选择其中拥有最高路由器优先级的成为DR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为DR,将新选举出的BDR设定为DR

  4. 如果路由器X新近成为DRBDR,或者不再成为DRBDR,重复步骤23,然后结束选举。这样做是为了确保路由器不会同时宣告自己为DRBDR

  5. 要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器DR/BDR是不会重新选举的。

  6. DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系.所有的路由器将组播Hello包到AllSPFRouters地址224.0.0.5以便它们能跟踪其他邻居的信息,即DR将泛洪update packet224.0.0.5;DRother只组播update packetAllDRouter地址224.0.0.6,只有DR/BDR监听这个地址.

    因为所有路由器都能与DRBDR互换LSA,所以所有路由器都与DRBDR是邻接(Adjacency)关系,而DrotherDrother之间无法互换LSA,所以DrotherDrother之间只是邻居关系。在一个多路访问网络中,选举DRBDR是有时间限制的,该时间为Wait时间,默认为4倍的Hello时间,即与Dead时间相同,如果OSPF路由器在超过Wait时间后也没有其它路由器与自己竞争DRBDR的选举,那么就选自己为DR;当一个多路访问网络中选举出DRBDR之后,在DRBDR没有失效的情况下,不会进行重新选举,也就是在选举出DRBDR之后,即使有更高优先级的路由器加入网络,也不会影响DRBDR的角色,在越出选举时间(Wait时间)后,只有DRBDR失效后,才会重新选举。DR失效后,会同时重新选举DRBDR,而在BDR失效后,只会重新选举BDRDRBDRDrother的数据包处理会有所不同,所有OSPF路由器,包括DRBDR,都能够接收和传递目标地址为224.0.0.5的数据包。只有DRBDR才能接收和传递目标地址为224.0.0.6的数据包。由此可见,Drother路由器将数据包发向目标地址224.0.0.6,只能被DRBDR接收,其它Drother不能接收;而DRBDR将数据包发向目标地址224.0.0.5,可以被所有路由器接收

     

OSPF LSA类型

    1. 类型1:Router LSA:每个路由器都将产生Router LSA,这种LSA只在本区域内传播,描述了路由器所有的链路和接口,状态和开销.

    2. 类型2:Network LSA:在每个多路访问网络中,DR都会产生这种Network LSA,它只在产生这条Network LSA的区域泛洪描述了所有和它相连的路由器(包括DR本身)。

    3. 类型3:Network Summary LSA:由ABR路由器始发,用于通告该区域外部的目的地址.当其他的路由器收到来自ABRNetwork Summary LSA以后,它不会运行SPF算法,它只简单的加上到达那个ABR的开销和Network Summary LSA中包含的开销,通过ABR,到达目标地址的路由和开销一起被加进路由表里,这种依赖中间路由器来确定到达目标地址的完全路由(full route)实际上是距离矢量路由协议的行为。

    4. 类型4:ASBR Summary LSA:ABR发出,ASBR汇总LSA除了所通告的目的地是一个ASBR而不是一个网络外,其他同NetworkSummary LSA.

    5. 类型5:AS External LSA:发自ASBR路由器,用来通告到达OSPF自治系统外部的目的地,或者OSPF自治系统那个外部的缺省路由LSA.这种LSA将在全AS内泛洪(4个特殊区域除外)

    6. 类型6:Group Membership LSA

    7. 类型7:NSSA External LSA:来自非完全Stub区域(not-so-stubbyarea)内ASBR路由器始发的LSA通告它只在NSSA区域内泛洪,这是与LSA-Type5的区别.

    8. 类型8:External Attributes LSA

    9. 类型9:Opaque LSA(link-local scope,)

    10. 类型10:Opaque LSA(area-local scope)

    11. 类型11:Opaque LSA(AS scope)

 

OSPF路由类型

  1. 所有路由器都计算前往其所有在区域中每个目的地的最佳路径,并将他们加入到路由表中。这些是1LSA2LSA,在路由表中用路由指示符O(OSPF)表示。

  2. 所有路由器都计算前往互联网络中其他区域的最佳路径。在这些路径是区域间路由(3类和4LSA,在路由表中用路由指示灯IA(区域间)表示。

  3. 除末节区域内的路由器外,所有路由器都计算前往外部自治系统中目标网络的最佳路径(5类)。这些路由是1类外部路由(E1)还是2类外部路由(E2)取决于配置。在路由表中,1类外部路由用O E1表示,2类外部路由用O E2表示。类似的还有ON1/ON2,与OE1/OE2相同,不过是来自NSSA区域的路由。

     

OSPF的数据包类型和格式

  1. HELLO 用于发现邻居、建立邻接关系、维持邻接关系、确保双向通信、选举DRBDR

  2. Database Description 数据库的描述 DBD可靠

  3. Link-state Request 链路状态请求包 LSR可靠

  4. Link-state Update 链路状态更新包 LSU可靠

  5. Link-state Acknowledment 链路状态确认包 LSACK

     

    OSPF泛洪(采用2种报文)

    LSU Type 4---链路状态更新报文

    LSA Type 5---链路状态确认报文

    P-P网络,路由器是以组播方式将更新报文发送到组播地址224.0.0.5.

P-MP和虚链路网络,路由器以单播方式将更新报文发送至邻接邻居的接口地址.

广播型网络DRother路由器只能和DR&BDR形成邻接关系,所以更新报文将发送到224.0.0.6,相应的DR224.0.0.5泛洪LSA并且BDR只接收LSA,不会确认和泛洪这些更新,除非DR失效NBMA型网络,LSA以单播方式发送到DRBDR,并且DR以单播方式发送这些更新.

LSA通过LS类型、LS标识和宣告路由器来识别,并通过序列号、校验和、老化时间判断LSA新旧。

Seq:序列号(Seq)的范围是0x800000010x7fffffff.

Checksum:校验和(Checksum)计算除了Age字段以外的所有字段,每5分钟校验1.

Age:范围是03600秒,16位长.当路由器发出1LSA后,就把Age设置为0,当这个LSA经过1台路由器以后,Age就会增加,1LSA保存在LSDB中的时候,老化时间也会增加.

当收到相同的LSA的多个实例(LS类型、LS标识、宣告路由器相同)的时候,将通过下面的方法来确定哪个LSA是最新的:

  1. 比较LSA实例的序列号,越大的越新.

  2. 如果序列号相同,就比较校验和,越大越新.

  3. 如果校验和也相同,就比较老化时间,如果只有1LSA拥有MaxAge(3600秒)的老化时间,它就是最新的.

  4. 如果LSA老化时间相差15分钟以上,(叫做MaxAgeDiff),老化时间越小的越新.

  5. 如果上述都无法区分,则认为这2LSA是相同的.

     

OSPF区域:域长度32位,可以用10进制,也可以类似于IP地址的点分十进制,分3种通信量

  1. Intra-Area Traffic:域内间通信量

  2. Inter-AreaTraffic:域间通信量

  3. ExternalTraffic:外部通信量

    路由器类型

  1. Internal Router:内部路由器

  2. ABR(Area Border Router):区域边界路由器

  3. Backbone Router(BR):骨干路由器

  4. ASBR(Autonomous System Boundary Router):自治系统边界路由器.

    虚链路(VirtualLink)以下2中情况需要使用到虚链路:

  1. 通过一个非骨干区域连接到一个骨干区域.

  2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域.

    虚链接是一个逻辑的隧道(Tunnel),配置虚链接的一些规则:

  1. 虚链接必须配置在2ABR之间.

  2. 虚链接所经过的区域叫Transit Area,它必须拥有完整的路由信息.

  3. Transit Area不能是Stub Area.

  4. 尽可能的避免使用虚链接,它增加了网络的复杂程度和加大了排错的难度.

    OSPF网络分为以下级别的层次:

    1. 骨干区域 (backbone or area 0)

    2. 非骨干区域 (nonbackbone areas)

  1. Stub区域(一般位于OSPF区域的边缘只与骨干区域相连)

  2. Totally Stub区域(一般位于OSPF区域的边缘只与骨干区域相连)

  3. NSSA区域(一般位于OSPF区域的边缘只与骨干区域相连)

  4. Totally NSSA区域(一般位于OSPF区域的边缘只与骨干区域相连)

在一个OSPF区域中只能有一个骨干区域,可以有多个非骨干区域,骨干区域的区域号为0为了避免回环的产生,各非骨干区域间是不可以交换LSA信息的,他们只有与骨干区域相连,通过骨干区域相互交换信息。非骨干区域和骨干区域之间相连的路由叫边界路由(ABRs-Area Border Routers),只有ABRs记载了接入各区域的所有路由信息。各非骨干区域内的非ABRs只记载了本区域内的路由表,若要与外部区域中的路由相连,只能通过本区域的ABRs,由ABRs连到骨干区域的BR,再由骨干区域的BR连到要到达的区域

  由于并不是每个路由器都需要外部网络的信息,为了减少LSA泛洪量和路由表条目,就创建了末梢区域,位于Stub边界的ABR将宣告一条默认路由到所有的Stub区域内的内部路由器.Stub区域限制:

  1. 所有位于stub area的路由器必须保持LSDB信息同步,并且它们会在它的Hello包中设置一个值为0E位(E-bit),因此这些路由器是不会接收E位为1Hello包,也就是说在stub area里没有配置成stub router的路由器将不能和其他配置成stub router的路由器建立邻接关系.

  2. 不能在stub area中配置虚链接(virtual link),并且虚链接不能穿越stub area.

  3. stub area里的路由器不可以是ASBR.

  4. stub area可以有多个ABR,但是由于默认路由的缘故,内部路由器无法判定哪个ABR才是到达ASBR的最佳选择.

  5. NSSA允许外部路由被宣告OSPF域中来,同时保留Stub Area的特征,因此NSSA里可以有ASBR,ASBR将使用type7-LSA来宣告外部路由,但经过ABR,Type7被转换为Type5.7LSA通过OSPF报头的一个P-bitTag,如果NSSA里的ABR收到P位设置为1NSSA External LSA,它将把LSA类型7转换为LSA类型5.并把它洪泛到其他区域中;如果收到的是P位设置为0NSSAExternal LSA,它将不会转换成类型5LSA,并且这个类型7LSA里的目标地址也不会被宣告到NSSA的外部NSSAIOS11.2后支持.

  6. totally stub area完全的stub区域,连类型3LSA也不接收

     

OSPF定义的5种网络类型:

  1. 点到点网络(point-to-point),由cisco提出的网络类型,自动发现邻居,不选举DR/BDRhello时间10s。比如T1线路、PPPHDLC,是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters.
  2. 广播型网络(broadcast),由cisco提出的网络类型,自动发现邻居,选举DR/BDRhello时间10s。比如以太网,Token RingFDDI,这样的网络上会选举一个DRBDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外发送的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters.
  3. 非广播型(NBMA)网络 (non-broadcast),由RFC提出的网络类型,手工配置邻居,选举DR/BDRhello时间30s。比如X.25,Frame Relay,和ATM,不具备广播的能力,因此邻居要人工来指定,在这样的网络上要选举DRBDR,OSPF包采用unicast的方式
  4. 点到多点网络 (point-to-multipoint),由RFC提出,自动发现邻居,不选举DR/BDRhello时间30s。是NBMA网络的一个特殊配置,可以看成是点到点链路的集合.在这样的网络上不选举DRBDR
  5. 点到多点非广播,由cisco提出的网络类型,手动配置邻居,不选举DR/BDRhello时间30s

 

 

 

实验一:点到点型网络配置单区域ospfMD5认证

CCNP路由实验之五 动态路由协议之 OSPF_第1张图片

R1配置:

R1#conf t

R1(config)#hostname R1

R1(config)#int lo0

R1(config-if)#ip add 1.1.1.1255.255.255.0

R1(config-if)#ex

R1(config)#int s1/0

R1(config-if)#ip add 192.168.12.1255.255.255.0

R1(config-if)#clock rate 64000 //串口连接配置时钟频率64000

R1(config-if)#ip ospf authenticationmessage-digest//激活接口下的OSPF认证,

R1(config-if)#ip ospfmessage-digest-key 1 md5 kkfloat//设置MD5认证的密码为kkfloat

R1(config-if)#no sh

R1(config-if)#ex                                                 

R1(config)#router ospf 1

R1(config-router)#network192.168.12.0 255.255.255.0 area 1

R1(config-router)#network 1.1.1.0255.255.255.0 area 1

R1(config-router)#area 1authentication message-digest//开启区域0认证,所有处于区域0的接口都需要配置同样的认证

R1(config-router)#ex

 

R2配置

R2#conf t

R2(config)#int lo0

R2(config-if)#ip add 2.2.2.2255.255.255.0

R2(config-if)#ex

R2(config)#int s1/0

R2(config-if)#ip add 192.168.12.2255.255.255.0

R2(config-if)#clock rate 64000

R2(config-if)#ip ospf authenticationmessage-digest

R2(config-if)#ip ospfmessage-digest-key 1 md5 kkfloat

R2(config-if)#ex

R2(config)#int s1/1

R2(config-if)#ip add 192.168.23.2255.255.255.0

R2(config-if)#clock rate 64000

R2(config-if)#ip ospf authenticationmessage-digest

R2(config-if)#ip ospfmessage-digest-key 1 md5 kkfloat

R2(config-if)#ex

R2(config)#router ospf 1

R2(config-router)#net 2.2.2.0255.255.255.0 area 1

R2(config-router)#net 192.168.12.0255.255.255.0 area 1

R2(config-router)#network192.168.23.0 255.255.255.0 area 1

R2(config-router)#router-id 2.2.2.2

R2(config-router)#area 1authentication message-digest

 

配置R3

R3#conf t

Enter configuration commands, oneper line. End with CNTL/Z.

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3255.255.255.0

R3(config-if)#no sh

R3(config-if)#ex

R3(config)#int s1/0

R3(config-if)#ip add 192.168.23.1255.255.255.0

R3(config-if)#clo

R3(config-if)#clock R

R3(config-if)#clock Rate 64000

R3(config-if)#ip ospf authenticationmessage-digest

R3(config-if)#ip ospfmessage-digest-key 1 md5 kkfloat

R3(config-if)#ex

R3(config)#router ospf 1

R3(config-router)#net 3.3.3.0255.255.255.0 area 1

R3(config-router)#net 192.168.23.0255.255.255.0 area 1

R3(config-router)#roouter-id 3.3.3.3

R3(config-router)#area 1authentication message-digest

检查各个路由器ospf学习到的路由信息,ospf的邻居信息,ospf的数据库。测试全网互通性。

Show ip route ospf

Show ip ospf nei

Show ip ospf database

debug ip ospfevents

通过实验看出在点到点网络中ospf不会选举DR/BDR,通过组播地址224.0.0.5发送hello包,自动发现邻居,建立邻接关系,并支持MD5密文认证。另外在帧中继环境中也有点到点模式,该模式通常用于点到点子接口上,每个点到点链路都是一个独立的IP子网,如同运行在点到点拓扑中一样。

总结该模式的特点:

1 通过点到点子接口的部分全互连逻辑拓扑或星型拓扑。

2 不需要手工配置邻居。

3 不选举DR/BDR

4 各个子接口属于不同的子网。

 

实验二:广播型网络配置单区域OSPF

CCNP路由实验之五 动态路由协议之 OSPF_第2张图片

R4配置

R4#conf t

R4(config)#int lo0

R4(config-if)#ip add

R4(config-if)#ip add4.4.4.4 255.255.255.0

R4(config-if)#int e0/0

R4(config-if)#ip add192.168.1.4 255.255.255.0

R4(config-if)#no sh

R4(config-if)#ex

R4(config)#router ospf 1

R4(config-router)#network4.4.4.0 255.255.255.0 a 1

R4(config-router)#network192.168.1.0 255.255.255.0 a 1

R4(config-router)#router-id4.4.4.4

 

R5配置:

R5#conf t

R5(config)#int lo0

R5(config-if)#ip add5.5.5.5 255.255.255.0

R5(config-if)#ex

R5(config)#int e0/0

R5(config-if)#ip add192.168.1.5 255.255.255.0

R5(config-if)#no sh

R5(config-if)#ex

R5(config)#router ospf 1

R5(config-router)#net5.5.5.0 255.255.255.0 area 1

R5(config-router)#net192.168.1.0 255.255.255.0 a 1

R5(config-router)#router-id5.5.5.5

R5(config-router)#

 

R6配置:

R6#conf t

R6(config)#int lo0

R6(config-if)#ip add6.6.6.6 255.255.255.0

R6(config-if)#ex

R6(config)#int e0/0

R6(config-if)#ip add192.168.1.6 255.255.255.0

R6(config-if)#no sh

R6(config-if)#ex

R6(config)#router os

R6(config)#router ospf 1

R6(config-router)#net6.6.6.0 255.255.255.0 a 1

R6(config-router)#net192.168.1.0 255.255.255.0 a 1

R6(config-router)#router-id6.6.6.6

 

R7配置:

R7#conf t

R7(config)#int lo0

R7(config-if)#ip add

R7(config-if)#ip add7.7.7.7 255.255.255.0

R7(config-if)#ex

R7(config)#int e0/0

R7(config-if)#ip add192.168.1.7 255.255.255.0

R7(config-if)#no sh

R7(config-if)#ex

R7(config)#router ospf 1

R7(config-router)#net7.7.7.0 255.255.255.0 a

R7(config-router)#net7.7.7.0 255.255.255.0 area 1

R7(config-router)#net192.168.1.0 255.255.255.0 a 1

 

检查各个路由器ospf学习到的路由信息,ospf的邻居信息,ospf的数据库。测试全网互通性。此时发现在广播型网络中选举了DR/BDR,并且自动发现邻居。而且在端口默认优先级1下,根据router-id大少决定了DRR7BDRR6DROTHERR4R5。此时R4R5只跟R7发送LSA包,他们是邻接关系;R6R4R5是邻居关系。R6R7通过组播地址224.0.0.6通信。R4R5通过组播地址224.0.0.5R7通信。注意并不是先启动ospf进程的路由器就是DR,而是有一个时间间隔让路由器来等待其他路由器,在这个时间间隔内,路由器相互监听hello包中的drbdr字段,并且服从优先级原则,这个时间间隔与dead interval时间相同都是40S。因为刚开机时是一台路由器接下一台这样配置的,所以最先启动的路由器就认为自己是DR了。而且OSPF没有DR,BDR的抢占机制,也就是说我们配置完成后,必须重启所有路由器或者重启所有路由器的ospf路由器协议

Show ip route ospf

Show ip ospf nei

Show ip ospf database

debug ip ospf events

此时我们还可以通过更改端口优先级,来更改谁是DRBDR,甚至不参与DRBDR选举。

 

实验三:NBMA非广播多路访问网络)配置单区域OSPF

CCNP路由实验之五 动态路由协议之 OSPF_第3张图片

  实验以帧中继网络中的NBMA非广播多路访问网络)为例,NBMA用于精确模型X.25帧中继环境,这些模型不具备内部广播和多点传送能力。帧中继是一种高性能的WAN协议,它运行在OSI参考模型的物理层和数据链路层。它是一种数据包交换技术,是X.25的简化版本。它省略了X.25的一些强健功能,如提供窗口技术和数据重发技术,而是依靠高层协议提供纠错功能,这是因为帧中继工作在更好的WAN设备上,这些设备较之X.25WAN设备具有更可靠的连接服务和更高的可靠性,它严格地对应于OSI参考模型的最低二层,而X.25还提供第三层的服务,所以,帧中继比X.25具有更高的性能和更有效的传输效率。 帧中继广域网的设备分为数据终端设备(DTE)和数据电路终端设备(DCE),Cisco路由器作为 DTE设备。帧中继技术提供面向连接的数据链路层的通信,在每对设备之间都存在一条定义好的通信链路,且该链路有一个链路识别码。这种服务通过帧中继虚电路实现,每个帧中继虚电路都以数据链路识别码(DLCI)标识自己。DLCI的值一般由帧中继服务提供商指定。帧中继即支持PVC也支持SVC。 帧中继本地管理接口(LMI)是对基本的帧中继标准的扩展。它是路由器和帧中继交换机之间信令标准,提供帧中继管理机制。它提供了许多管理复杂互联网络的特性,其中包括全局寻址、虚电路状态消息和多目发送等功能。

 

NBMA网络类型的hello-time默认时间为30sdead-time时间为120s。在NBMA设置里,OSPF一次只发送一个呼叫包(在路由器间周期性发送的建立和确认临近关系的包)而不是多广播式的发送给他们。呼叫计时器(它控制路由器每发送一个呼叫包需要隔多少时间)需要延迟1030秒,失效路由器计时器(它控制在决定临近路由器失效时应该等待多少时间)需要延迟40120秒。NBMA:一般和部分互联的网络结合使用,需要选举DR/BDR和人工指定邻居。在此注意,OSPF运行在物理接口上,默认的运行模式即NBMA模式,因此不需要明确使用Ip OSPF network non-broadcast

 

FR配置:

FR#conf t

FR(config)#frame-relayswitching//开启帧中继交换功能

FR(config)#int s0/1

FR(config-if)#encapsulationframe-relay ietf//配置接口帧中继封装模式

FR(config-if)#frame-relaylmi-type ansi//配置LMI类型

FR(config-if)#frame intf-typedce //帧中继接口缺省接口类型为 DTE DCE类型只有在设备用作帧中继交换或者模拟帧中继局方设备时才使用的

FR(config-if)#clock rate64000 //设置时钟频率,串口同步时间

FR(config-if)#frame-relayroute 102 interface s0/2 201//配置本地端口DLIC值及虚链路对应出口和对端DLIC

FR(config-if)#frame-relayroute 103 interface s0/3 301

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/2

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 201 int s0/1 102

FR(config-if)#frame-relayroute 203 int s0/3 302

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/3

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 301 int s0/1 103

FR(config-if)#frame-relayroute 302 int s0/2 203

FR(config-if)#no sh

FR(config-if)#exit

 

配置R1

R1#conf t

R1(config)#int lo0

R1(config-if)#ip add 1.1.1.1255.255.255.0

R1(co2nfig-if)#int s0/1

R1(config-if)#encapsulationframe-relay itef

R1(config-if)#frame-relaylmi-type ansi

R1(config-if)#ip add192.168.0.1 255.255.255.0

R1(config-if)#no frame-relayinverse-arp //关闭动态反向ARP映射

R1(config-if)#frame-relaymap ip 192.168.0.2 102 //手动添加对端IP与本地DLIC映射

R1(config-if)#frame-relaymap ip 192.168.0.3 103

R1(config-if)#no sh

R1(config-if)#exit

 

配置R2

R2#conf t

R2(config)#int lo0

R2(config-if)#ip add 2.2.2.2255.255.255.0

R2(config-if)#int s0/2

R2(config-if)#encapsulationframe-relay itef //设置帧中继封装类型

R2(config-if)#frame-relaylmi-type ansi //设置帧中继LMI类型

R2(config-if)#ip add192.168.0.2 255.255.255.0

R2(config-if)#no frame-relayinverse-arp//关闭动态反向ARP映射

 

R2(config-if)#frame-relaymap ip 192.168.0.1 201//手动添加对端IP与本地DLIC映射

R2(config-if)#frame-relaymap ip 192.168.0.3 203

R2(config-if)#no sh

R2(config-if)#exit

 

R3配置:

R3#conf t

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3255.255.255.0

R3(config-if)#int s0/3

R3(config-if)#encapsulationframe-relay itef //设置帧中继封装类型

R3(config-if)#frame-relaylmi-type ansi //设置帧中继LMI类型

R3(config-if)#ip add192.168.0.3 255.255.255.0

R3(config-if)#no frame-relayinverse-arp//关闭动态反向ARP映射

R3(config-if)#frame-relaymap ip 192.168.0.1 301//手动添加对端IP与本地DLIC映射

R3(config-if)#frame-relaymap ip 192.168.0.2 302

R3(config-if)#no sh

R3(config-if)#exit

 

查看各个路由器帧中继网络的映射,此时各个路由外部接口应该是互通的。但是却不能ping通内部的地址。此时我们使用平时的方法配置opsf动态路由协议看看情况如何:

R1(config)#router ospf 1

R1(config-router)#net1.1.1.0 255.255.255.0 area 1

R1(config-router)#router-id1.1.1.1

R1(config-router)#net192.168.0.0 255.255.255.0 area 1

 

R2(config)#router ospf 1

R2(config-router)#net2.2.2.0 255.255.255.0 a 1

R2(config-router)#net192.168.0.0 255.255.255.0 a 1

R2(config-router)#router-id2.2.2.2

 

R3(config)#router ospf 1

R3(config-router)#net3.3.3.0 255.255.255.0 a 1

R3(config-router)#net192.168.0.0 255.255.255.0 a 1

R3(config-router)#router-id3.3.3.3

完成配置后查看R1R2R3的路由表你会发现根本没有OSPF学习到的路由也没有邻居

sh ip route ospf

sh ip ospf neighbor

debug ip ospf events

原因是由于NBMA网络中允许存在多台Router,物理上链路共享,通过二层虚链路(VC)建立逻辑上的连接,此时网络不是没有广播的能力,而是广播针对每一条VC发送,这样就使得一台路由器在不是Full-MeshNBMA拓扑中,发送的广播或组播分组可能无法到达其他所有路由器,而OSPF路由协议是依靠组播去发现邻居和传送LSA包的。所以OSPF正常就要手动指定邻居:

R1(config)#router ospf 1

R1(config-router)#nei 192.168.0.2

R1(config-router)#nei 192.168.0.3

R1(config-router)#exit

R1(config)#exit

R1#clear ip ospf process

 

R2(config)#router ospf 1

R2(config-router)#nei 192.168.0.1

R2(config-router)#nei 192.168.0.3

R2(config-router)#exit

R2(config)#exit

R2#clear ip ospf process

 

R3(config)#router ospf 1

R3(config-router)#nei 192.168.0.1

R3(config-router)#nei 192.168.0.2

R3(config-router)#exit

R3(config)#exit

R3#clear ip ospf process

 

此时我们再查看R1R2R3路由表,和ospf邻居关系表和数据库,就正常了

sh ip route ospf

sh ip ospf neighbor

sh ip ospf database

debug ip ospf events

如此同时我们也发现,此NBMA网络选举了R3作为DRR2作为BDRR1作为DROTHER.路由器间使用单播地址而不是使用组播建立邻居关系和交换路由信息。

总结该模式的特点:此模式不推荐使用,一是配置复杂,而是需要选择DR,邻居建立慢。

    1. R之间使用PVC建立完全互连的逻辑拓扑。

    2. 邻居属于同一子网。

    3. 手工配置邻居

    4. R之间选举DR/BDR

    5. LSALSAck分别被发送到各个邻居路由器。

 

 

实验四:点到多点广播型网络配置单区域OSPF

同样以帧中继为例

CCNP路由实验之五 动态路由协议之 OSPF_第4张图片

FR配置:

FR#conf t

FR(config)#frame-relayswitching//开启帧中继交换功能

FR(config)#int s0/1

FR(config-if)#encapsulationframe-relay ietf//配置接口帧中继封装模式

FR(config-if)#frame-relaylmi-type ansi//配置LMI类型

FR(config-if)#frameintf-type dce //帧中继接口缺省接口类型为 DTE DCE类型只有在设备用作帧中继交换或者模拟帧中继局方设备时才使用的

FR(config-if)#clock rate64000 //设置时钟频率,串口同步时间

FR(config-if)#frame-relayroute 102 interface s0/2 201//配置本地端口DLIC值及虚链路对应出口和对端DLIC

FR(config-if)#frame-relayroute 103 interface s0/3 301

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/2

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 201 int s0/1 102

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/3

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 301 int s0/1 103

FR(config-if)#no sh

FR(config-if)#exit

 

R1配置

R1#conf t

R1(config)#ints0/1

R1(config-if)#encapsulationframe-relay ietf

R1(config-if)#frame-relaylmi-ty ansi

R1(config-if)#nosh

R1(config-if)#exit

R1(config)#ints0/1.12 multipoint

R1(config-subif)#ipadd 192.168.0.12 255.255.255.0

R1(config-subif)#frame-relaymap ip 192.168.0.2 102

R1(config-subif)#nosh

R1(config-subif)#exit

R1(config)#ints0/1.13 multipoint

R1(config-subif)#ipadd 192.168.0.13 255.255.255.0

R1(config-subif)#frame-relaymap ip 192.168.0.3 103

R1(config-subif)#nosh

R1(config-subif)#exit

R1(config)#int lo0

R1(config-if)#ipadd 1.1.1.1 255.255.255.0

 

R2配置:

R2#conf t

R2(config)#ints0/2

R2(config-if)#encapsulationframe-relay ietf

R2(config-if)#frame-relaylmi-type ansi

R2(config-if)#ipadd 192.168.0.2 255.255.255.0

R2(config-if)#frame-relaymap ip 192.168.0.12 201

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#int lo0

R2(config-if)#ipadd 2.2.2.2 255.255.255.0

 

R3配置:

R3#conf t

R3(config)#ints0/3

R3(config-if)#encapsulationframe-relay ietf

R3(config-if)#frame-relaylmi-type ansi

R3(config-if)#ipadd 192.168.0.3 255.255.255.0

R3(config-if)#frame-relaymap ip 192.168.0.13 103

R3(config-if)#nosh

R3(config-if)#exit

R3(config)#int lo0

R3(config-if)#ipadd 3.3.3.3 255.255.255.0

R3(config-if)#exit             

 

完成配置后R2可以PingR1可以互Ping外部接口地址, R3可以PingR1外部接口地址.但是都不能ping对方的内部地址。我们再按照平常的方法配置OSPF动态路由协议:

R1(config)#router ospf 1                  

R1(config-router)#net 1.1.1.0 255.255.255.0 a 1

R1(config-router)#net 192.168.0.0 255.255.255.0 a 1

 

R2(config)#router ospf 1

R2(config-router)#net 2.2.2.0 255.255.255.0 a 1

R2(config-router)#net 192.168.0.0 255.255.255.0 a 1

 

R3(config)#router ospf 1

R3(config-router)#net 3.3.3.0 255.255.255.0 a 1

R3(config-router)#net 192.168.0.0 255.255.255.0 a 1

完成配置后查看R1R2R3的路由表你会发现根本没有OSPF学习到的路由也没有邻居

sh ip route ospf

sh ip ospf neighbor

debug ip ospf events

因为我们忘记在子接口下明确定义ospf运行的模式,同时由于点到多点模式是模仿点到点模式的链路上的运行方式,路由器仍然使用组播,所以要用broadcast参数设置是在该接口上发送广播信息,使底层支持组播。

R1(config)#int s0/1.12

R1(config-subif)#ip ospf networkpoint-to-multipoint

R1(config-subif)#frame-relay map ip192.168.0.2 102 broadcast

R1(config)#int s0/1.13

R1(config-subif)#ip ospf net point-to-multipoint

R1(config-subif)#frame-relay map ip 192.168.0.3 103 broadcast

 

R2(config)#int s0/2

R2(config-if)#ip ospf network point-to-multipoint

R2(config-if)#frame-relay map ip 192.168.0.12 201 broadcast

 

 

R3(config)#int s0/3

R3(config-if)#ip ospf net point-to-multipoint

R3(config-if)#frame-relay map ip 192.168.0.13 301 broadcast

此时在查看各个路由器的路由表,ospf邻居表和数据库,应该就正常,当然全网互通也没有问题。

sh ip route ospf

sh ip ospf neighbor

debug ip ospf events

与此同时我们还会发现此网络不会选举DRBDR,邻居是自动发现的。路由器之间通过组播去交换信息。

总结模式的特点:

    1. 不需要完全互连的逻辑拓扑,可以是部分或者星型的拓扑。

    2. 不需要手工配置邻居。

    3. 邻居属于同一个子网。

    4. 不选举DR/BDR

    5. LSALSAck数据包分别被发送到各个路由器。

 

实验五:点到多点非广播单区域OSPF

CCNP路由实验之五 动态路由协议之 OSPF_第5张图片

拓扑结构和点到多点模式相同。点到多点非广播模式是Cisco定义的一种模式,该模式是对RFC点到多点模式的进行了扩展。RFC点到多点模式运行在底层支持广播和组播能力的点到多点虚电路,因此能动态发现邻居。但是有些点到多点底层不支持组播和广播,因此只能采用点到多点非广播模式。点到多点非广播模式和点到多点模式的指定没有太大的区别,只需要在指定运行模式的命令上附加Non-broadcast即可。但是路由器的工作模式却有本质的改变——用单播替代了组播完成信息的交换。由于不支持组播所以要手工指定邻居。

FR配置:

FR#conf t

FR(config)#frame-relayswitching//开启帧中继交换功能

FR(config)#int s0/1

FR(config-if)#encapsulationframe-relay ietf//配置接口帧中继封装模式

FR(config-if)#frame-relaylmi-type ansi//配置LMI类型

FR(config-if)#frameintf-type dce //帧中继接口缺省接口类型为 DTE DCE类型只有在设备用作帧中继交换或者模拟帧中继局方设备时才使用的

FR(config-if)#clock rate64000 //设置时钟频率,串口同步时间

FR(config-if)#frame-relayroute 102 interface s0/2 201//配置本地端口DLIC值及虚链路对应出口和对端DLIC

FR(config-if)#frame-relayroute 103 interface s0/3 301

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/2

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 201 int s0/1 102

FR(config-if)#no sh

FR(config-if)#exit

FR(config)#int s0/3

FR(config-if)#encapsulationframe-relay ietf

FR(config-if)#frame-relaylmi-type ansi

FR(config-if)#frameintf-type dce

FR(config-if)#clock rate64000

FR(config-if)#frame-relayroute 301 int s0/1 103

FR(config-if)#no sh

FR(config-if)#exit

 

R1配置

R1#conf t

R1(config)#ints0/1

R1(config-if)#encapsulationframe-relay ietf

R1(config-if)#frame-relaylmi-ty ansi

R1(config-if)#nosh

R1(config-if)#exit

R1(config)#ints0/1.12 multipoint

R1(config-subif)#ipadd 192.168.0.12 255.255.255.0

R1(config-if)# ip ospf network point-to-multipointnon-broadcast//指明网络为点到多点非广播

R1(config-subif)#frame-relaymap ip 192.168.0.2 102

R1(config-subif)#nosh

R1(config-subif)#exit

R1(config)#ints0/1.13 multipoint

R1(config-subif)#ipadd 192.168.0.13 255.255.255.0

R1(config-if)# ip ospf network point-to-multipointnon-broadcast//指明网络为点到多点非广播

R1(config-subif)#frame-relaymap ip 192.168.0.3 103

R1(config-subif)#nosh

R1(config-subif)#exit

R1(config)#int lo0

R1(config-if)#ipadd 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#router ospf 1                  

R1(config-router)#net 1.1.1.0 255.255.255.0 a 1

R1(config-router)#net 192.168.0.0 255.255.255.0 a 1

R1(config-router)#nei192.168.0.2//手动指定邻居

R1(config-router)#nei192.168.0.3//手动指定邻居

 

R2配置:

R2#conf t

R2(config)#ints0/2

R2(config-if)#encapsulationframe-relay ietf

R2(config-if)#frame-relaylmi-type ansi

R2(config-if)#ipadd 192.168.0.2 255.255.255.0

R2(config-if)# ip ospf network point-to-multipointnon-broadcast//指明网络为点到多点非广播

R2(config-if)#frame-relaymap ip 192.168.0.12 201

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#int lo0

R2(config-if)#ipadd 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#router ospf 1

R2(config-router)#net 2.2.2.0 255.255.255.0 a 1

R2(config-router)#net 192.168.0.0 255.255.255.0 a 1

R2(config-router)#nei 192.168.0.12//手动指定邻居

 

R3配置:

R3#conf t

R3(config)#ints0/3

R3(config-if)#encapsulationframe-relay ietf

R3(config-if)#frame-relaylmi-type ansi

R3(config-if)#ipadd 192.168.0.3 255.255.255.0

R3(config-if)#frame-relaymap ip 192.168.0.13 103

R3(config-if)# ip ospf network point-to-multipointnon-broadcast//指明网络为点到多点非广播

R3(config-if)#frame-relay map ip 192.168.0.13 301

R3(config-if)#nosh

R3(config-if)#exit

R3(config)#int lo0

R3(config-if)#ipadd 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#router ospf 1

R3(config-router)#net 3.3.3.0 255.255.255.0 a 1

R3(config-router)#net 192.168.0.0 255.255.255.0 a 1

R3(config-router)#nei 192.168.0.13//手动指定邻居

 

完成配置后,可以发现全网互通。没有选举DRBDR,不会自动发现邻居。各个路由器之间通过单播形式交换路由信息。

sh ip route ospf

sh ip ospf neighbor

debug ip ospf events

总结该模式的特点:

    1. 部分互连或者星型逻辑拓扑结构。

    2. 邻居属于同一个子网。

    3. 手工配置邻居。

    4. 不选举DR/BDR

 

 

实验六:OSPF多区域

CCNP路由实验之五 动态路由协议之 OSPF_第6张图片

R1配置:

R1#conf t

Enterconfiguration commands, one per line. End with CNTL/Z.

R1(config)#intf0/0

R1(config-if)#ipadd 192.168.12.1 255.255.255.0

R1(config-if)#nosh

R1(config-if)#exit

R1(config)#int lo0

R1(config-if)#ipadd 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#routerospf 1

R1(config-router)#net1.1.1.0 255.255.255.0 area 0

R1(config-router)#net192.168.12.0 255.255.255.0 area 0

R1(config-router)#router-id1.1.1.1

R1(config-router)#exit

 

R2配置:

R2#conf t

Enterconfiguration commands, one per line. End with CNTL/Z.

R2(config)#intf0/0

R2(config-if)#ipadd 192.168.12.2 255.255.255.0

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#ints1/0

R2(config-if)#ipadd 192.168.23.2 255.255.255.0

R2(config-if)#clockrate 64000

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#int lo0

R2(config-if)#ipadd 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#routerospf 1

R2(config-router)#net192.168.12.0 255.255.255.0 area 0

R2(config-router)#net2.2.2.0 255.255.255.0 area 0

R2(config-router)#net192.168.23.0 255.255.255.0 area 2

R2(config-router)#router-id2.2.2.2

R2(config-router)#exit

 

R3配置:

R3#conf t

R3(config)#ints0/1

R3(config-if)#ipadd 192.168.23.3 255.255.255.0

R3(config-if)#clockrate 64000

R3(config-if)#nosh

R3(config-if)#exit

R3(config)#int lo0

R3(config-if)#ipadd

R3(config-if)#exit

R3(config)#routerospf 1

R3(config-router)#net192.168.23.0 255.255.255.0 area 2

R3(config-router)#net3.3.3.0 255.255.255.0 area 2

R3(config-router)#router-id3.3.3.3

R3(config-router)#exit

 

查看R1R3OSPF路由,发现R1R3能学习到不同ospf域的路由条目,而R2就是他们的ABR

R1#sh ip rou ospf

    2.0.0.0/32 is subnetted, 1 subnets

O      2.2.2.2 [110/2] via 192.168.12.2,00:03:33, FastEthernet0/0//域内路由

    3.0.0.0/32 is subnetted, 1 subnets

O IA   3.3.3.3 [110/66] via 192.168.12.2,00:00:22, FastEthernet0/0//域间路由

O IA192.168.23.0/24 [110/65] via 192.168.12.2, 00:03:33, FastEthernet0/0//域间路由

查看R1R3ospf链路状态数据库

R1#sh ip ospf database

           OSPF Router with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 0)//类型1LSA

Link ID        ADV Router      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1         585         0x80000003 0x0036F0 2

2.2.2.2        2.2.2.2         352         0x80000004 0x0027F0 2

               Net Link States (Area 0) //类型2LSA

Link ID        ADV Router      Age         Seq#      Checksum

192.168.12.1   1.1.1.1         585         0x80000001 0x00C7EB

               Summary Net Link States (Area0) //类型3LSA

Link ID        ADV Router      Age         Seq#      Checksum

3.3.3.3        2.2.2.2         156         0x80000001 0x004F98

192.168.23.0   2.2.2.2         348         0x80000001 0x002054

 

类型1LSA:由域内每一台路由器产生,包含了直连链路的列表以及cost,每条链路由链路的IP前缀(网络号+子网掩码)来标识,发送者标识RouterID,仅在该区域内泛洪不会穿越ABR

类型2LSA:由广播型多路访问网络或NBMA网络中的DR产生,包含了连接到该链路的一组路由器列表,包含了链路的子网掩码,仅在该区域内泛洪,不会穿越ABR

类型3LSA:用于将本地区域信息扩散到其他区域描述链路的网络号和子网掩码。

多区域的优点:

  1. 减少路由表大少

  2. 限制LSA的扩散

  3. 加快OSPF的收敛

  4. 增加OSPF的稳定性

 

实验七:OSPF多区域之路由汇总、路由重分布、注入静态和默认路由

CCNP路由实验之五 动态路由协议之 OSPF_第7张图片

R1配置:

R1#conf t

R1(config)#int lo0

R1(config-if)#ip add 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#int l01

R1(config-if)#ip add 172.168.16.1 255.255.255.0

R1(config-if)#exit

R1(config)#int l02

R1(config-if)#ip add 172.168.17.1 255.255.255.0

R1(config-if)#exit

R1(config)#int l03

R1(config-if)#ip add 172.168.18.1 255.255.255.0

R1(config-if)#exit

R1(config)#int f0/0

R1(config-if)#ip add 192.168.12.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#router ospf 1

R1(config-router)#net 192.168.12.0 255.255.255.0 area 0

R1(config-router)#net 172.168.16.0 255.255.255.0 area 0

R1(config-router)#net 172.168.17.0 255.255.255.0 area 0

R1(config-router)#net 172.168.18.0 255.255.255.0 area 0

R1(config-router)#router-id 1.1.1.1

R1(config-router)#exit

 

R2配置:

R2#conf t

R2(config)#int lo0

R2(config-if)#ip add 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#int f0/0

R2(config-if)#ip add 192.168.12.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#int s1/0

R2(config-if)#clock rat

R2(config-if)#clock rate 64000

R2(config-if)#ip add 192.168.23.1 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#router ospf 1

R2(config-router)#router-id 2.2.2.2

R2(config-router)#net 2.2.2.0 255.255.255.0 area 0

R2(config-router)#net 192.168.12.0 255.255.255.0 area 0

R2(config-router)#net 192.168.23.0 255.255.255.0 area 2

R2(config-router)#exit

 

R3配置:

R3#conf t

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#int s1/0

R3(config-if)#clock rate 64000

R3(config-if)#ip add 192.168.23.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int e0/0

R3(config-if)#ip add 192.168.1.1 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int e0/1

R3(config-if)#ip add 192.168.0.1 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int lo1

R3(config-if)#ip add 11.11.11.11 255.255.255.0

R3(config-if)#exit

R3(config)#int lo2

R3(config-if)#ip add 12.12.12.12 255.255.255.0

R3(config-if)#exit

R3(config)#int lo3

R3(config-if)#ip add

R3(config-if)#ip add 13.13.13.13 255.255.255.0

R3(config-if)#exit

R3(config)#router ospf 1

R3(config-router)#router-id 3.3.3.3

R3(config-router)#net 192.168.23.0 255.255.255.0 area 2

R3(config-router)#net 3.3.3.0 255.255.255.0 area 2

R3(config-router)#exit

R3(config)#router rip

R3(config-router)#ver 2

R3(config-router)#no au

R3(config-router)#no auto-summary

R3(config-router)#net 11.11.11.0

R3(config-router)#net 12.12.12.0

R3(config-router)#net 13.13.13.0

R3(config-router)#exit

R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.2

R3(config)#ip route 100.100.100.0 255.255.255.0192.168.0.2

 

Internet配置:

Internet#conf t

Internet(config)#int e0/0

Internet(config-if)#ip add 192.168.1.2 255.255.255.0

Internet(config-if)#no sh

Internet(config-if)#exit

Internet(config)#int lo0

Internet(config-if)#ip add 202.10.0.1 255.255.255.0

Internet(config-if)#exit

Internet(config)#ip route 192.168.0.0 255.255.0.0192.168.1.1

 

Branch配置:

Branch#conf t

Branch(config)#int lo0

Branch(config-if)#ip add 192.168.0.2 255.255.255.0

Branch(config-if)#no sh

Branch(config-if)#exit

Branch(config)#int lo0

Branch(config-if)#ip add 100.100.100.100 255.255.255.0

Branch(config-if)#exit

Branch(config)#int e0/0

Branch(config-if)#ip add 192.168.0.2 255.255.255.0

Branch(config-if)#no sh

Branch(config-if)#exit

Branch(config)#ip route 192.168.0.0 255.255.0.0192.168.0.1

 

配置完成后R1R3的连通性是没有问题的,当然R3internetBranch也是正常的。查看R1R3OSPF路由发现,彼此的路由已经学习到,而R3学习到如下:

R3#sh ip rou ospf

O IA 192.168.12.0/24 [110/65] via 192.168.23.1, 00:20:57,Serial1/0

    2.0.0.0/32 issubnetted, 1 subnets

O IA   2.2.2.2[110/65] via 192.168.23.1, 00:20:57, Serial1/0

    172.168.0.0/32is subnetted, 3 subnets

OIA   172.168.17.1 [110/66] via192.168.23.1, 00:20:57, Serial1/0

OIA   172.168.16.1 [110/66] via 192.168.23.1,00:20:57, Serial1/0

OIA   172.168.18.1 [110/66] via192.168.23.1, 00:20:57, Serial1/0

我们对R3学习到的三条区域间路由进行汇总,减少路由表。此时配置R2ABR路由器然后观察R3路由表变化:

R2(config)#router ospf 1

R2(config-router)#area 0 range 172.168.16.0 255.255.252.0

 

R3#sh ip rou ospf

O IA 192.168.12.0/24 [110/65] via 192.168.23.1, 00:26:09,Serial1/0

    2.0.0.0/32 issubnetted, 1 subnets

O IA   2.2.2.2[110/65] via 192.168.23.1, 00:26:09, Serial1/0

    172.168.0.0/22 is subnetted, 1 subnets

OIA   172.168.16.0 [110/66] via192.168.23.1, 00:00:37, Serial1/0

根据如上配置,R1是不能连通R3上的RIP路由的,因此我们需要将RIP路由注入到OSPF中,然后再通告给R1.因此需要在R3ASBR路由器上进行路由重分布,然后观察R1的路由表变化和是否可以连通R3RIP路由

R3(config)#routerospf 1

R3(config-router)#redistributerip subnets //RIP路由重分布到OSPF1

R3(config-router)#exit

R3(config)#routerrip

R3(config-router)#redistributeospf 1//OSPF 1路由重分布到RIP

//外部路由汇总:R3(config-router)#summary-address网络号正掩码(在ASBR上配置)

 

R1#sh ip rou ospf

    2.0.0.0/32 is subnetted, 1 subnets

O      2.2.2.2 [110/2] via 192.168.12.2,00:39:52, FastEthernet0/0

    3.0.0.0/32 is subnetted, 1 subnets

O IA   3.3.3.3 [110/66] via 192.168.12.2,00:35:40, FastEthernet0/0

O IA192.168.23.0/24 [110/65] via 192.168.12.2, 00:39:52, FastEthernet0/0

    11.0.0.0/24 is subnetted, 1 subnets

OE2   11.11.11.0 [110/20] via 192.168.12.2,00:00:22, FastEthernet0/0

    12.0.0.0/24 is subnetted, 1 subnets

OE2   12.12.12.0 [110/20] via192.168.12.2, 00:00:22, FastEthernet0/0

    13.0.0.0/24 is subnetted, 1 subnets

OE2   13.13.13.0 [110/20] via192.168.12.2, 00:00:22, FastEthernet0/0

根据如上配置后,R1是不能到达internet路由器和Branch路由器的。因此我们还需要将R3这个边界路由器的默认路由和静态路由分别注入到OSPF中,然后查看R1的路由表变化:

R3(config)#router ospf 1

R3(config-router)#redistribute static subnets//R3的静态路由注入OSPFR3上用redistribute static subnets命令,会自动的向R1R2里注入一条静态路由,并且路由器会很智能的改变下一跳的地址

R3(config-router)#default-information originate// default-information originate发布默认路由,在R3上用default-informationoriginate命令,会自动的向R1R2里注入一条默认路由,并且路由器会很智能的改变下一跳的地址

R1#sh ip rou ospf

    2.0.0.0/32 issubnetted, 1 subnets

O      2.2.2.2 [110/2]via 192.168.12.2, 00:58:56, FastEthernet0/0

    100.0.0.0/24 is subnetted, 1 subnets

OE2   100.100.100.0 [110/20] via192.168.12.2, 00:06:06, FastEthernet0/0

    3.0.0.0/32 issubnetted, 1 subnets

O IA   3.3.3.3[110/66] via 192.168.12.2, 00:54:44, FastEthernet0/0

O IA 192.168.23.0/24 [110/65] via 192.168.12.2, 00:58:56,FastEthernet0/0

    11.0.0.0/24 issubnetted, 1 subnets

O E2   11.11.11.0[110/20] via 192.168.12.2, 00:19:25, FastEthernet0/0

    12.0.0.0/24 issubnetted, 1 subnets

O E2   12.12.12.0 [110/20] via 192.168.12.2,00:19:25, FastEthernet0/0

    13.0.0.0/24 issubnetted, 1 subnets

O E2   13.13.13.0[110/20] via 192.168.12.2, 00:19:25, FastEthernet0/0

O*E20.0.0.0/0 [110/1] via 192.168.12.2, 00:04:51, FastEthernet0/0

最后我们查看一下R1OSPF数据库链路表:

R1#sh ip ospf database

           OSPFRouter with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1        1976        0x80000004 0x00636E 4

2.2.2.2        2.2.2.2        1686        0x80000005 0x0025F1 2

               NetLink States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum

192.168.12.1   1.1.1.1        1976        0x80000002 0x00C5EC

               SummaryNet Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum

3.3.3.3        2.2.2.2        1443        0x80000002 0x004D99

192.168.23.0   2.2.2.2        1686        0x80000002 0x001E55

               Summary ASB Link States (Area 0) //类型4LSA

Link ID        ADVRouter      Age         Seq#      Checksum

3.3.3.3        2.2.2.2        1277        0x80000001 0x0037B0

               Type-5 AS External Link States//类型5LSA

Link ID        ADVRouter      Age        Seq#      Checksum Tag

0.0.0.0        3.3.3.3        402         0x80000001 0x00E0C5 1

11.11.11.0     3.3.3.3        1286        0x80000001 0x00FF73 0

12.12.12.0     3.3.3.3        1286        0x80000001 0x00DB94 0

13.13.13.0     3.3.3.3         1286        0x80000001 0x00B7B5 0

100.100.100.0  3.3.3.3        477         0x80000001 0x006FF7 0

 

类型4LSA:用于向其他区域描述某个ASBR,由每个区域的ABR产生,它会泛洪到整个AS中,仅包含ASBRROUTER ID,被用来查找ASBR

 

类型5LSA:用于描述到自治系统外部网络的路由,由ASBR产生,并泛洪到整个AS中,在它泛洪时通告者(ASBR)的ROUTER ID保持不变

 

 

实验八:OSPF特殊区域(stubtotally stubNSSATotally NSSA

CCNP路由实验之五 动态路由协议之 OSPF_第8张图片

R1配置:

R1#conf t

R1(config)#intlo0

R1(config-if)#ipadd 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#intlo1

R1(config-if)#ipadd 202.175.10.1 255.255.255.0//模拟直连路由重发布

R1(config-if)#exit

R1(config)#intf0/0

R1(config-if)#ipadd 192.168.12.1 255.255.255.0

R1(config-if)#nosh

R1(config-if)#exit

R1(config)#routerospf 1

R1(config-router)#router-id1.1.1.1

R1(config-router)#net1.1.1.1 255.255.255.0 area 2

R1(config-router)#net192.168.12.0 255.255.255.0 area 2

R1(config-router)#exit

 

R2配置:

R2#conf t

R2(config)#intlo0

R2(config-if)#ipadd 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#intf0/0

R2(config-if)#ipadd 192.168.12.2 255.255.255.0

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#ints1/0

R2(config-if)#clockrate 64000

R2(config-if)#ipadd 192.168.23.1 255.255.255.0

R2(config-if)#nosh

R2(config-if)#exit

R2(config)#routerospf 1

R2(config-router)#router-id2.2.2.2

R2(config-router)#net2.2.2.0 255.255.255.0 area 0

R2(config-router)#net192.168.23.0 255.255.255.0 area 0

R2(config-router)#net192.168.12.0 255.255.255.0 area 2

R2(config-router)#exit

 

R3配置:

R3#conf t

R3(config)#intlo0

R3(config-if)#ipadd 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#ints1/0

R3(config-if)#clockrate 64000

R3(config-if)#ipadd 192.168.23.2 255.255.255.0

R3(config-if)#nosh

R3(config-if)#exit

R3(config)#intlo1

R3(config-if)#ipadd 172.168.16.1 255.255.255.0

R3(config-if)#exit

R3(config)#intlo2

R3(config-if)#ipadd 172.168.17.1 255.255.255.0

R3(config-if)#exit

R3(config)#intlo3

R3(config-if)#ipadd 172.168.18.1 255.255.255.0

R3(config-if)#exit

R3(config)#routerrip

R3(config-router)#ver2

R3(config-router)#net172.168.16.0

R3(config-router)#net172.168.17.0

R3(config-router)#net172.168.18.0

R3(config-router)#noauto-summary

R3(config-router)#exit

R3(config)#routerospf 1

R3(config-router)#router-id3.3.3.3

R3(config-router)#net3.3.3.0 255.255.255.0 area 0

R3(config-router)#net192.168.23.0 255.255.255.0 area 0

R3(config-router)#redistributerip subnets//重分布RIP路由到OSPF

R3(config-router)#exit

 

配置完成后,查看网络连通性。查看R1OSPF路由表和OSPF链路数据库:

R1#sh iprou ospf

    2.0.0.0/32 is subnetted, 1 subnets

O IA   2.2.2.2 [110/2] via 192.168.12.2, 00:15:57,FastEthernet0/0

    3.0.0.0/32 is subnetted, 1 subnets

O IA   3.3.3.3 [110/66] via 192.168.12.2,00:10:10, FastEthernet0/0

    172.168.0.0/24 is subnetted, 3 subnets

O E2   172.168.16.0 [110/20] via 192.168.12.2,00:00:59, FastEthernet0/0

O E2   172.168.17.0 [110/20] via 192.168.12.2,00:00:59, FastEthernet0/0

O E2   172.168.18.0 [110/20] via 192.168.12.2,00:00:59, FastEthernet0/0

O IA192.168.23.0/24 [110/65] via 192.168.12.2, 00:11:58, FastEthernet0/0

 

R1#sh ipospf database

           OSPF Router with ID (1.1.1.1)(Process ID 1)

               Router Link States (Area 2) //类型1LSA

LinkID        ADV Router      Age         Seq#   Checksum Link count

1.1.1.1        1.1.1.1         1033        0x80000003 0x0036F0 2

2.2.2.2        2.2.2.2         1029        0x80000002 0x003EF4 1

               Net Link States (Area 2) //类型2LSA

LinkID        ADV Router      Age         Seq#      Checksum

192.168.12.1   1.1.1.1         1033        0x80000001 0x00C7EB

               Summary Net Link States (Area2) //类型3LSA

LinkID        ADV Router      Age         Seq#      Checksum

2.2.2.2        2.2.2.2         1038        0x80000001 0x00FA31

3.3.3.3        2.2.2.2         672         0x80000001 0x004F98

192.168.23.0   2.2.2.2         780         0x80000001 0x002054

               Summary ASB Link States (Area2)//类型4LSA

LinkID        ADV Router      Age         Seq#      Checksum

3.3.3.3        2.2.2.2         126         0x80000001 0x0037B0

               Type-5 AS External Link States//类型5LSA

LinkID        ADV Router      Age         Seq#      Checksum Tag

172.168.16.0   3.3.3.3         134         0x80000001 0x0030FE 0

172.168.17.0   3.3.3.3         133         0x80000001 0x002509 0

172.168.18.0   3.3.3.3         133         0x80000001 0x001A13 0

此时我们发现其实R1所属的Area 2并不需要知整个网络的路由,因为它已经是整个网络的末端。而且它到达其他网络时都需要经过R2也就是我们的ABR路由器。这时我们可以将Area 2配置成OSPF Stub区域OSPF Stub是一个末梢区域,当一个OSPF区域处于整个自治系统边界时,而又不含其他路由协议,这时就可以配置OSPF Stub区域。当配置OSPF Stub区域后,Stub区域中的路由器会增加一条至ABR的默认路由条目,当在ABR上配置了完全末梢区域后,末梢区域的其他路由器的路由条目除了直连的路由条目外,只有一条到达ABR的路由条目默认路由,不会学习其他区域的路由条目,到其他区域的数据包通过ABR转发。同时减少LSA通告,这样减少了末梢区域其他路由器的路由条目,提高路由器的性能。下面我们配置Area 2Stub区域,并检查R1的路由表变化和OSPF链路数据库的变化:

R1R2配置Stub,只要是属于area 2的都要配置为Stub

R1(config)#router ospf 1

R1(config-router)#area 2stub

 

R2(config)#router ospf 1

R2(config-router)#area 2stub

 

再次查看R1的路由表和链路状态数据库,此时我们发现类型4LSA,类型5LSA消失了,并且R2(ABR)路由器向区域发放了一条默认路由即将不知道的路由交给ABR路由器,用于到达AS外部网络。注意:末梢区域内的路由器都要配置stub,虚链路不能在一个stub区域配置,stub区域不能是ASBR路由器。不能穿越骨干区域,只能接收LSA1,LSA2,LSA3,并且他会产生一条缺省的LSA3的路由

R1#ship rou ospf

    2.0.0.0/32 is subnetted, 1 subnets

OIA   2.2.2.2 [110/2] via 192.168.12.2,01:29:36, FastEthernet0/0

    3.0.0.0/32 is subnetted, 1 subnets

OIA   3.3.3.3 [110/66] via 192.168.12.2,01:29:36, FastEthernet0/0

OIA 192.168.23.0/24 [110/65] via 192.168.12.2, 01:29:36, FastEthernet0/0

O*IA0.0.0.0/0 [110/2] via 192.168.12.2, 01:29:36, FastEthernet0/0//自动添加的默认路由

R1#ship ospf database

           OSPF Router with ID (1.1.1.1)(Process ID 1)

               Router Link States (Area 2) //类型1LSA

LinkID        ADV Router      Age        Seq#      Checksum Link count

1.1.1.1        1.1.1.1         1402        0x8000000A 0x005CC4 2

2.2.2.2        2.2.2.2         1530        0x80000007 0x005CD2 1

               Net Link States (Area 2)//类型2LSA

LinkID        ADV Router      Age        Seq#      Checksum

192.168.12.2   2.2.2.2         1530        0x80000003 0x00A905

               Summary Net Link States (Area2)//类型3LSA

LinkID        ADV Router      Age         Seq#      Checksum

0.0.0.0        2.2.2.2         1530        0x80000003 0x0071C2

2.2.2.2        2.2.2.2         1530        0x80000005 0x001119

3.3.3.3        2.2.2.2         1530        0x80000004 0x00677F

192.168.23.0   2.2.2.2         1280        0x80000005 0x00363C

 

当完成上面配置后,我们还可以将R1的路由表更精简,将区域间的O IA路由去掉并且减少类型3LSA,达到直接使用默认路由转发数据就可以了。要实现这种效果就要用到TotallyStub区域。注意Totally stubABR路由器上配置即可,然后查看R1的路由表变化,此时类型3LSA只剩下一条默认路由通告,且OSPF路由表也只剩下一默认路由指向ABR路由器。

R2(config)#router ospf 1

R2(config-router)#area 2 stub no-summary //配置totally Stub区域

 

R1#sh ip rou ospf

O*IA 0.0.0.0/0 [110/2] via 192.168.12.2, 00:02:28,FastEthernet0/0//自动默认路由指向ABR

R1#sh ip ospf database

           OSPF Router with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 2)

Link ID        ADV Router      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1         1167        0x8000000B 0x005AC5 2

2.2.2.2        2.2.2.2         1307        0x80000008 0x005AD3 1

               Net Link States (Area 2)

Link ID        ADV Router      Age         Seq#      Checksum

192.168.12.2   2.2.2.2         1307        0x80000004 0x00A706

               Summary Net Link States (Area2) //类型3LSA

Link ID        ADV Router      Age         Seq#      Checksum

0.0.0.0        2.2.2.2         431         0x80000005 0x006DC4

 

以上我们完成了StubTotally Stub的配置,但是如果我们还需要R1通过重发布来发布它的直连路由,这时R1就是一个ASBR路由器,并会产生LSA7。但是一旦这样,R3就不能是一个Stub Area。那么有什么办法呢?此时我们需要OSPFNSSA,它允许外部路由通告到OSPF,而同时保留其余部分的Stub Area特征,因此我们可以将Area 2设置成NSSA区域。

R1(config)#routerospf 1

R1(config-router)#noarea 2 stub//area2之前的stub配置去掉

R1(config-router)#area 2 nssa //area 2配置成nssa区域

R1(config-router)#redistributeconnected subnets//重分布R1Lo2直连网络到ospf

 

R2(config)#routerospf 1

R2(config-router)#noarea 2 stub//area2之前的stub配置去掉

R2(config-router)#area2 nssa//area 2配置成nssa区域

 

此时我们查看R1ospf路由表和ospf链路状态数据库变化,发现路由表多了区域间的OIA路由,并且指向R2ABR)的默认路由不见了(因为NSSA区域默认情况下,ABR是不会注入默认路由)同时在链路状态数据库中出现了新的类型7LSA用于通告直连路由,并且出现大量的类型3LSA

R1#sh ip rou ospf

    2.0.0.0/32 is subnetted, 1 subnets

O IA   2.2.2.2 [110/2] via 192.168.12.2, 00:00:46,FastEthernet0/0

    3.0.0.0/32 is subnetted, 1 subnets

O IA   3.3.3.3 [110/66] via 192.168.12.2,00:00:46, FastEthernet0/0

O IA 192.168.23.0/24[110/65] via 192.168.12.2, 00:00:46, FastEthernet0/0

R1#sh ip ospfdatabase

           OSPF Router with ID (1.1.1.1)(Process ID 1)

               Router Link States (Area 2)

Link ID        ADV Router      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1         61          0x80000012 0x00D935 2

2.2.2.2        2.2.2.2         181        0x8000000D 0x00DD41 1

               Net Link States (Area 2)

Link ID        ADV Router      Age         Seq#      Checksum

192.168.12.2   2.2.2.2         202         0x80000007 0x002979

 

               Summary Net Link States (Area2)//类型3LSA

Link ID        ADV Router      Age         Seq#      Checksum

2.2.2.2        2.2.2.2         210         0x80000002 0x009E86

3.3.3.3        2.2.2.2         210         0x80000002 0x00F2ED

192.168.23.0   2.2.2.2         210         0x80000002 0x00C3A9

               Type-7 AS External Link States (Area 2)//类型7LSA

Link ID        ADV Router      Age         Seq#      Checksum Tag

202.75.10.0    1.1.1.1         41          0x80000001 0x002549 0

 

根据这个结果我们发现,虽然已经将R1的直连路由通告出去了,但是R1的路由表和类型3LSA却变大了,我们还需要精简。这就需要使用OSPF中的 Totally NSSA区域了,只需要R2ABR)上配置即可,然后查看R1ospf路由表和链路状态数据库变化

R2(config)#router ospf 1

R2(config-router)#area 2 nssa no-summary//area 2配置成Totally NSSA区域

 

R1#sh ip rou ospf

O*IA 0.0.0.0/0 [110/2] via 192.168.12.2,00:03:28, FastEthernet0/0//自动添加一条默认路由

R1#sh ip ospf database

           OSPF Router with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 2)//类型1LSA

Link ID        ADV Router      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1         1561        0x80000012 0x00D935 2

2.2.2.2        2.2.2.2         1681        0x8000000D 0x00DD41 1

               Net Link States (Area 2)//类型2LSA

Link ID        ADV Router      Age         Seq#      Checksum

192.168.12.2   2.2.2.2        1702       0x80000007 0x002979

               Summary Net Link States (Area2)//类型3LSA减少

Link ID        ADV Router      Age         Seq#      Checksum

0.0.0.0        2.2.2.2         105         0x80000002 0x00FA32

               Type-7 AS External Link States(Area 2)//类型7LSA

Link ID        ADV Router      Age         Seq#      Checksum Tag

202.75.10.0    1.1.1.1         1541        0x80000001 0x002549 0

 

实验九:OSPFVirtual-link(虚拟链路)

CCNP路由实验之五 动态路由协议之 OSPF_第9张图片


众所周知OSPF的配置规则:普通区域必须与骨干区域直连,才能学习到路由。根据这个规则,Area0Area2是分割的,所以Area2学习不到Area0的路由。在这种情况下,我们需要使用虚拟链路(Virtual-link)的方法,使非直连的区域逻辑的认为自己与骨干相连,达到相互交换路由信息的效果。当然此方法仅仅是一种过度的方案,实际环境设计时不要使用。

R1配置:

R1#conf t

Enter configuration commands, one per line. End with CNTL/Z.

R1(config)#int lo0

R1(config-if)#ip add 1.1.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#int s0/0

R1(config-if)#clock rate 64000

R1(config-if)#ip add 192.168.12.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#router ospf 1

R1(config-router)#router-id 1.1.1.1

R1(config-router)#net 192.168.12.0 255.255.255.0 area 0

R1(config-router)#net 1.1.1.1 255.255.255.0 area 0

R1(config-router)#exit

 

R2配置:

R2#conf t

R2(config)#int lo0

R2(config-if)#ip add 2.2.2.2 255.255.255.0

R2(config-if)#exit

R2(config)#int s0/0

R2(config-if)#clock rate 64000

R2(config-if)#ip add 192.168.12.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#int s0/2

R2(config-if)#exit

R2(config)#int s0/1

R2(config-if)#clock rate 64000

R2(config-if)#ip add 192.168.23.1 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#router ospf 1

R2(config-router)#router-id 2.2.2.2

R2(config-router)#net 2.2.2.0 255.255.255.0 area 0

R2(config-router)#net 192.168.12.0 255.255.255.0 area 0

R2(config-router)#net 192.168.23.0 255.255.255.0 area 1

R2(config-router)#exit

 

R3配置:

R3#conf t

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#int s0/0

R3(config-if)#clock rate 64000

R3(config-if)#ip add 192.168.23.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int s0/1

R3(config-if)#clock rate 64000

R3(config-if)#ip add 192.168.34.1 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#router ospf 1

R3(config-router)#router-id 3.3.3.3

R3(config-router)#net 3.3.3.0 255.255.255.0 area 1

R3(config-router)#net 192.168.23.0 255.255.255.0 area 1

R3(config-router)#net 192.168.34.0 255.255.255.0 area 2

R3(config-router)#exit

 

R4配置:

R4#conf t

R4(config)#int lo0

R4(config-if)#ip add 4.4.4.4 255.255.255.0

R4(config-if)#exit

R4(config)#int s0/0

R4(config-if)#clock rate 64000

R4(config-if)#ip add 192.168.34.2 255.255.255.0

R4(config-if)#no sh

R4(config-if)#exit

R4(config)#router ospf 1

R4(config-router)#router-id 4.4.4.4

R4(config-router)#net 4.4.4.0 255.255.255.0 area 2

R4(config-router)#net 192.168.34.0 255.255.255.0 area 2

R4(config-router)#exit

 

查看R1R4OSPF路由表和链路状态数据库,你会发现彼此根本没有学习到对方的路由。

R1#sh ip rou ospf

    2.0.0.0/32 issubnetted, 1 subnets

O      2.2.2.2[110/65] via 192.168.12.2, 00:07:17, Serial0/0

    3.0.0.0/32 issubnetted, 1 subnets

O IA   3.3.3.3[110/129] via 192.168.12.2, 00:05:49, Serial0/0

O IA 192.168.23.0/24 [110/128] via 192.168.12.2,00:07:17, Serial0/0

R1#sh ip ospf database

           OSPFRouter with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1        593         0x80000004 0x00B0DF 3

2.2.2.2        2.2.2.2        451         0x80000003 0x005334 3

               SummaryNet Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum

3.3.3.3        2.2.2.2        358         0x80000001 0x004F98

192.168.23.0   2.2.2.2        447         0x80000001 0x002054

 

此时我们使用虚拟链路配置,建立它们的逻辑直连关系,在Area 0Area 2ABR路由器上进行如下配置,然后查看R1R4的变化,此时R1R4就能彼此交换路由信息了。

R2(config)#router ospf 1

R2(config-router)#area 1 virtual-link 3.3.3.3 //Area0ABR上指定对方的ABRRouter-id

R3(config)#router ospf 1

R3(config-router)#area 1 virtual-link 2.2.2.2 //Area2ABR上指定对方的ABRRouter-id

 

R1#sh ip rou ospf

    2.0.0.0/32 issubnetted, 1 subnets

O      2.2.2.2[110/65] via 192.168.12.2, 00:00:29, Serial0/0

    3.0.0.0/32 issubnetted, 1 subnets

O IA   3.3.3.3[110/129] via 192.168.12.2, 00:00:29, Serial0/0

    4.0.0.0/32 issubnetted, 1 subnets

OIA   4.4.4.4 [110/193] via 192.168.12.2,00:00:29, Serial0/0

O IA 192.168.23.0/24 [110/128] via 192.168.12.2,00:00:29, Serial0/0

O IA192.168.34.0/24 [110/192] via 192.168.12.2, 00:00:29, Serial0/0

R1#sh ip ospf database

           OSPFRouter with ID (1.1.1.1) (Process ID 1)

               Router Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum Link count

1.1.1.1        1.1.1.1        959         0x80000004 0x00B0DF 3

2.2.2.2        2.2.2.2        37          0x80000004 0x001394 4

3.3.3.3        3.3.3.3        2     (DNA) 0x80000002 0x0055F7 1

               SummaryNet Link States (Area 0)

Link ID        ADVRouter      Age         Seq#      Checksum

3.3.3.3        2.2.2.2        724         0x80000001 0x004F98

3.3.3.3        3.3.3.3        7     (DNA) 0x80000001 0x00AE75

4.4.4.4        3.3.3.3         7    (DNA) 0x80000001 0x0003DC

192.168.23.0   2.2.2.2        813         0x80000001 0x002054

192.168.23.0   3.3.3.3        7     (DNA) 0x80000001 0x00026E

192.168.34.0   3.3.3.3         7    (DNA) 0x80000001 0x0088DC

 

实验十:OSPF修改Cost值,改变选路

CCNP路由实验之五 动态路由协议之 OSPF_第10张图片

R1配置:

R1#conf t

R1(config)#int fa1/0

R1(config-if)#ip add 13.13.13.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config-if)#int s0/0

R1(config-if)#clock rate 64000

R1(config-if)#ip add 12.12.12.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#router ospf 1

R1(config-router)#net 12.12.12.0 255.255.255.0 area 0

R1(config-router)#net 13.13.13.0 255.255.255.0 area 0

R1(config-router)#exit

 

R2配置:

R2#conf t

R2(config)#int s0/0

R2(config-if)#clock rate 64000

R2(config-if)#ip add 12.12.12.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#int s0/1

R2(config-if)#ip add 23.23.23.1 255.255.255.0

R2(config-if)#clock rate 64000

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#router ospf 1

R2(config-router)#net 12.12.12.0 255.255.255.0 area 0

R2(config-router)#net 23.23.23.0 255.255.255.0 area 0

R2(config-router)#exit

 

R3配置:

R3#conf t

R3(config)#int f1/0

R3(config-if)#ip add 13.13.13.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int s0/1

R3(config-if)#clock rate 64000

R3(config-if)#ip add 23.23.23.2 255.255.255.0

R3(config-if)#no sh

R3(config-if)#exit

R3(config)#int lo0

R3(config-if)#ip add 3.3.3.3 255.255.255.0

R3(config-if)#exit

R3(config)#router ospf 1

R3(config-router)#net 3.3.3.0 255.255.255.0 area 0

R3(config-router)#net 13.13.13.0 255.255.255.0 area 0

R3(config-router)#net 23.23.23.0 255.255.255.0 area 0

R3(config-router)#exit

 

查看R1OSPF路由表,我们发现到达3.3.3.0网络直接走了R3cost值为2

R1#sh ip rou ospf

    3.0.0.0/32 issubnetted, 1 subnets

O      3.3.3.3 [110/2] via 13.13.13.2,00:00:35, FastEthernet1/0

    23.0.0.0/24 issubnetted, 1 subnets

O      23.23.23.0[110/65] via 13.13.13.2, 00:00:35, FastEthernet1/0

 

我们需要改变路径,让R1到达3.3.3.0网络,经过R2走。此时我们需要修改链路的COST值,再次查看R1OSPF路由表,发现已经选择了更低COSTR2走(500>129

R1(config)#int fa1/0

R1(config-if)#ip ospf cost 500//修改Cost的值为500

 

R1#sh ip route ospf

    3.0.0.0/32 is subnetted, 1 subnets

O      3.3.3.3 [110/129] via 12.12.12.2,00:00:18, Serial0/0

    23.0.0.0/24 issubnetted, 1 subnets

O      23.23.23.0[110/128] via 12.12.12.2, 00:00:18, Serial0/0

 

你可能感兴趣的:(Cisco技术)