码迷,mamicode.com
首页 > 其他好文 > 详细

2016-08-14-OSPFv2-2

时间:2016-12-07 14:36:36      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:路由器   数据库   规模   网络   手工   

2016-08-17-OSPF-2

帧中继环境

Hub-and-spoke,帧中继默认不转发组播报文。

首先让帧中继环境下能正常通信(DLCI映射表),然后让帧中继接口能产生组播hello或者单播hello;组播hello则再要让底层帧中继环境能转发组播报文,最后组播hello需要双方的hello时间一致、修改一方hello时间;单播不再阐述。

 

R(config-if)#encapsulateionframe-relay(配置封装格式,默认动态获取)

R(config-if)#frame-relaymap ip host 帧中继号broadcast(静态配置,broadcast参数表示可以支持转发组播报文)

ip ospf networkbroadcast  //修改接口网络类型

frame-relay mapip 192.168.1.3 203 broadcast  //DLCI封装表,去往IP地址192.168.1.3使用DLCI标签203;手动静态映射(帧中继路由)

no frame-relayinverse-arp(关闭DLCI动态映射学习,静态配置更加稳定)

show frame-relaymap  //查看映射表

 

帧中继没有建立邻居的原因

   OSPF路由器没有产生组播hello

   OSPF路由器产生组播hello,但是底层环境不能转发组播报文

   底层可以根据DLCI转发,可能是网络类型导致的hello时间间隔不匹配

Ⅰ组播报文不能实现,可以手动修改成单播指邻居

OSPF在帧中继环境中是希望建立邻居关系的。如果某一台路由器收到组播的hello包,则会记住邻居的源IP地址,会以hello的时间间隔发送单播报文给邻居,以维持邻居关系。(就是一方修改,另一方不修改;前提是OSPF头部匹配

 

 

★组播Hello包的TTL=1,而DBDTTL=1(除P2P是组播外,其他网络类型都是单播形式)。在虚链路的情况下,单播hello和单播DBDTTL=255;因为做了虚链路的两端路由器并不知道对方和我隔了多远,所以设置成255保证包可以到达对方。

Exstart状态的1%的情况,在帧中继环境下,一方DLCI值有误(例如:R1R2R1R3DLCI对调了,而R2R3没有错误),则R1组播发送hello包给R2的时候,会添加上DLCI;帧中继会查看识别DLCI值后转发给R3,由于R3又有去R2的路径,通过Hello包的(TTL-1)并转发给R2路由器。但是在建立邻居关系之后,DRBDR选举主从路由器的时候,会发送空的DBD包,然而会像转发hello包的情况下,会先发送给R2R2转发,但是DBDTTL=1,所以(TTL-1)之后默认TTL=0不发送出去,直接丢包;所以DRBDR一直建立不起主从路由器的关系,一直处于Exstart状态。

Exstart状态的99%的情况,双方之间的MTU不匹配,从路由器一方可能会处于Exchange状态,主路由器一方会处于Exstart状态;或者主从路由器都处于Exstart状态。(从路由器收到主路由器的空的DBD包的时候,会自动对比RID的大小;而此后发送的DBD包就带有LSA摘要了,所以从路由器默认发送了DBD包,认为自己处于Exchange状态。)

EXP5:测试Exstart1%的情况???(√)

 

 

DRBDR设置优先级为0表示放弃该身份,自动生效;如果是DRother设置优先级为255,则要重启OSPF进程。

 

OSPF的死亡时间默认是hello时间的4

       ip  ospf dead-interval  minimum  hello-multicast  20 //最小的OSPFhello时间,表示一秒发送20个报文(即hello时间为50ms

 

 

Forwarding address

用于防止次优路径(在5类和7LSA中出现)

FAASBR通告的外部LSA中的字段,它的作用是告诉OSPF域内的路由器如何能够更快捷地到达LSA 5所通告路由的下一跳地址。以免OSPF 内部路由器在广播网络上以ASBR为下一跳,再由ASBR自己转发到正确的下一跳,而产生额外的路由。简单来说,FA字段的作用类似于BGP协议中的“第三方下一跳”概念,主要在广播共享网络中起作用。FA字段可以为全0或者非0两种选择。

 

FR是如何影响OSPF的路由选择的?

1、计算外部路由时,首先检查通告TYPE 5 LSAASBR是否存在,否则忽略该LSA

2、检查TYPE 5 LSAFA地址是否为0。如为0,说明路由必须经过ASBR转发,那么优选ASBR metric最短的路径

3、如果FA0,那么优选FA地址 metric最短的路径

 

   一般情况下5LSAFA地址为0.0.0.0

 

   FA地址全为0时,去往外部路由条目直接找ASBR

a)    同个区域直接找,不同区域通过4LSAASBR位置;

b)    NSSA区域的ABR上开启了FA地址抑制功能,则在7类转5LSA的时候FA地址也全为0;(只有在ABR上配置有效)

area 1 nssa translate type7 suppress-fa  //ABR配置FA地址抑制

 

   FA地址不为0时,去往外部路由条目找FA地址

a)    且要求FA地址可以通过O或者O IA或者是直连该条目被自己通告进OSPF)的路由可达

b)    如果FA地址不能通过O或者O IA 或者直连的路由可达,而是更为精确的可达性路径(比如通过静态去往FA地址,由于查找覆盖了O的条目),则属于该FA地址的所有5LSA都将只出现在数据库中但不会出现在路由表中;

c)    如果FA地址本身就不可达,那么外部条目O E1O E2也不会出现在路由表中;

d)    FA地址不全为0的条件:(FA=x.x.x.x,即数据不需要经过ASBR路由器转发

                                 i.         ASBR上,与外部相连的出接口必须通告进OSPF路由进程,也就是可以算作别的路由器O或者O IA的条目,即位于Network命令范围内;(√)

                               ii.         ASBR上,与外部网络相连的出接口不能设置为被动接口

 

//前两个规则是确保LSA能够被通告。

 

                              iii.         ASBR上,与外部相连的出接口的OSPF网络类型不能是P2P或者P2MP(因为点到点链路不会出现次优路径)。

//确保网络类型是BroadcastNBMA 的共享网络。

 

→注:5LSAFA地址一般是ASBR去往目标网段的下一跳地址

 

 

   7LSAFA地址一定不为0.0.0.0

技术分享

 

★当NSSA区域有多个的连接骨干区域的ABR路由器,只有RID更大的路由器会进行7LSA5LSARID小的路由器不会进行7类转5类。

技术分享

 

   NSSA区域有多个ABR时,会进行7LSA5LSA只会由最大的RID的路由器去转发,所以很有可能产生次优路径;为了避免这种情况,所以每个7LSA都会生成FA地址,地址一般为ASBR最后一个通告进OSPF的接口。那么一般推荐如果发现可能有次优路径的环境,会在ASBR上新加一个lookback口且最后通告OSPF用来作为7LSAFA地址。

→注:lookback最后一个通告的比物理接口通告的优先级更高。

Ⅰ有环回口,优先选择最后通告的回环口地址;

Ⅱ没有环回口,选择最后通告的活动的物理接口地址。

 

   特例:如果产生7LSAASBR满足产生5LSAFA地址规则,即连接外部路由的接口被通告进OSPF且没有被配置成被动接口,而且接口网络类型为多路访问,那么此时7LSAFA地址生成的方式和5LSA一致,为外部路由下一跳的地址

 

→注:7LSAFA地址一般是ASBR最后通告的OSPF接口地址;或者在满足5FA地址规则时,为ASBR去往目标网段的下一跳地址5FA地址产生规则比7LSA更优)。

 

 

前缀抑制功能

       路由器互联的前缀抑制。

router ospf 1这样的ospfv2进程内,如果配置了OSPF前缀抑制功能,能对本台设备产生的1LSAstub link是有影响的,会使自己点对点网络类型stub network)的接口网段1LSA内通告(而对lookback接口无影响),只会表示自己的点到点对端邻居的接口信息;但是prefix-suppressiontransit network不会产生影响。

也会对本台设备产生的2LSA用来搭建网络拓扑)有影响,使得2LSA掩码长度变成32;虽然这个2LSA能够被传递出去,但是会用来进行路由计算,使得这个2LSA不可用。

 

→注:所以推测最终结果是:前缀抑制功能使得路由器的互联网段条目不被学习,但是由于这是一个链路状态路由协议,对于lookback接口这样的路由条目,还是能正确地计算出下一跳,以及能够正确的进行路由。

 

       如果要使用这个功能,需要相关设备都要开启。

→注:多路访问网络发送在1类的LSA只会表述自己的接口状态、用2LSA建立维持拓扑网络。P2P网络通过1LSA发送自己的接口状态和邻居关系,直接可以知道拓扑网络,可以不用2LSA来建立拓扑网络关系。

 

       prefix-suppression  //开启前缀抑制功能,较早的IOS不支持这项功能 

 

 

部署和排错OSPF建立邻接的过程

1、       是否产生和发送hello

a)    特殊的网络类型是不会产生组播hello

               i.         通告错误;

              ii.         物理接故障;

             iii.         被动接口(既不接收也不发送hello);

b)    底层不支持转发组播

               i.         使用单播建立邻居(可以单边做);

              ii.         过滤优先级为6的协议报文;

2、       是否接收hello

a)    被过滤了不会接收;

b)    参数不匹配也不会认为有效;

c)    Hello报文内容匹配(区域号,认证,RID等);

3、       是否只是停留在two-way

a)    优先级设置为0,都是DRother

4、       是否进入邻接关系

a)    判断接口优先级;

b)    DBD参数;

               i.         TTL=1

              ii.         MTU

5、       传递有内容的DBD

6、       查看本端口和对端设置是否存在链路故障

 

 

 

XXXGrateful Restart

9LSAnon-stop forwardingnsf

GRGracefulRestart,平滑重启)是一种在主备切换或协议重启时保证转发业务不中断的机制。

其核心在于:设备进行协议重启时,能够通知其周边设备,使到该设备的邻居关系和路由在一定时间内保持稳定。在协议重启完毕后,周边设备协助其进行信息(包括支持GR的相关协议所维护的各种拓扑、路由和会话信息)同步,在尽量短的时间内恢复到重启前的状态。在协议重启过程中不会产生路由振荡,报文转发路径也没有任何改变,整个系统可以实现不间断运行。

OSPF GR可以保证运行OSPF协议的路由器在进行主备切换或OSPF协议重启时,转发业务正常进行。

 

如何能使协议重启而不引起网络振荡和转发中断呢?

由于分布式设备的控制与转发是分开的,主控板负责整个设备的控制与管理,包括协议运行和路由计算,而接口板则负责数据转发。这样当发生主备倒换或协议重启时,数据转发仍然可以不中断进行。同时,如果在重启期间周边设备能维持邻居关系不变并保持路由稳定,并且在设备重启后能协助设备进行路由信息同步,在尽量短的时间内使得本设备的路由信息恢复到重启前的状态,那么就可以保持网络拓扑稳定,不引起网络路由振荡。

 

GR概念

1.    GR Restarter:发生协议重启事件且具有GR能力的设备。

2.    GR Helper:和GR Restarter具有邻居关系,协助完成GR流程的设备。

3.    GR SessionOSPF邻居建立时进行关于GR能力的协商,一般把GR能力协商过程称为GRSession。协商的内容包括双方是否都具备GR能力等。一旦GR能力协商通过,当协议重启时就可以进入GR流程。

 

→注:分布式设备可以充当GR restarterGR helper;而集中式设备只能充当GRhelper,协助GR restarter完成GR流程。

 

 

GRLSA

9Opaque LSA,即Grace LSA,用以在GR Restarter重启时,通知周边邻居进入GR Helper流程。

 

报文格式

Don’t  Age Flag1bit

LS  Age (15bit,单位seconds)

Options8bit

0x09

Link  State ID32bit

 

0x08

0

 

Advertising  Route32bit

 

LSA  Sequence Number64bit

 

Checksum16bit

 

Length16bit

TLVs

 






TLVs

               i.         Grace Period TLVType取值为1,长度为4字节,表示邻居设备进入GR Helper处理流程的最长保持时间。如果超过这段时间GR Restarter还没有完成GR处理流程,则周边邻居不再担任GR Helper角色。

→注:该TLVGrace LSA必须携带的。

              ii.         Graceful Restart Reason TLVType取值为2,长度为1字节,告知邻居设备GRRestarter重启原因Value取值为0表示原因未知,取值为1表示软件重启,取值为2表示软件重新加载(升级),取值为3表示GR Restarter进行主备倒换。

→注:Grace LSA中必须携带该TLV

             iii.         IP Interface Address TLVType取值为3,长度为4字节,用来告知发送Grace LSA的接口的IP地址,在网络上需要用IP地址来唯一标识一台重启设备。

 

 

OSPF GR运行过程

IETF标准

技术分享

       具体流程如下:

(1) Router A重启之前向Router B发送Grace LSA

(2) Router B收到Router A发出的Grace LSA后,会维持Router A邻居关系不变

(3) Router A Router B进行Hello报文与DD报文交互和LSDB同步。由于GR过程中不能生成LSA,所以在LSDB同步过程中,如果Router ARouter B收到自己产生的LSA,直接存储下来并置上Stale标志;

(4)完成LSDB的同步之后,Router A发送Grace LSAGrace Period TLVType值为0)通知Router B结束GR流程。Router A进入正常OSPF流程,然后Router A重新生成LSA,并删除那些置了Stale标志而又没有被重新生成的LSA

(5) Router A在恢复所有路由信息后重新进行路由计算,重新刷新FIB表。

 

IETF标准

IETF标准GR主要是通过下面两个能力扩展来支持OSPF GR

1.    Link-Local SignalingLLSOSPF本地链路通告扩展,用来标识当前路由器和其他路由器进行一些可选信息的通信。

2.    Out-of-band LSDB ResynchronizationOOB:带外的LSDB重新同步,完成无邻接关系变化的LSDB重新同步。

 

技术分享

       具体流程:

(1) Router A重启后向Router B发送LRRS都置位的Hello报文,向Router B通告自己只是暂时断开马上就会恢复正常,并且自己具备OOB能力;

(2) Router B收到Hello报文后,也会向Router A回复一个LR仍保持置位但是RS位已经清除的Hello报文,向Router A通告自己已经知道它是要短暂离开,并且自己也具备OOB能力;

(3) Router ARouter B发送R置位的DD报文,向Router B发起LSDB同步请求,在LSDB同步期间,Router B不会Router A从自己的邻居列表中删除,在自己生成的Router LSANetwork LSA)中,与Router A的邻居关系仍然为Full。由于GR过程中不能生成LSA,所以在LSDB同步过程中,如果Router ARouter B收到自己产生的LSA,直接存储下来并置上Stale标志。

(4)完成LSDB的同步之后,Router A结束GR流程,进入正常OSPF流程,然后Router A重新生成LSA,并删除那些置了State标志而又没有被重新生成的LSARouter B在和Router A的邻居关系重新达到Full状态后退出GR流程,进入正常OSPF流程。

(5) Router A在恢复所有路由信息后重新进行路由计算,重新刷新FIB表。

 

 

配置命令

       Router(config-router)#nsfcisco helper  //开启优雅重启功能(链路的两端配置才有效)

 

       ▲根据不同厂商设备不一样,配置的命令会有所差异。有的是graceful restartenable什么之类的。

       Cisco NSF is supported by the BGP, EIGRP, OSPF, and IS-IS protocols for routing andby Cisco Express Forwarding (CEF) for forwarding。能使用快速转发机制的路由协议都应该可以配置优雅重启,需要一个主设备和多台辅助设备。


2016-08-14-OSPFv2-2

标签:路由器   数据库   规模   网络   手工   

原文地址:http://12385411.blog.51cto.com/12375411/1880299

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!