Section I. OSPF over Demand Circuit实现原理
 
在demand circuit链路上的OSPF包:
  • hello包,只在链路初始化时发送,用于同步LSDB,在LSDB同步完成后,hello包不再发送。
  • LSA洪泛,只在同步LSDB时发送,在完成后没有进一步的同期更新(30分钟refresh timer),除非有LSA的变更并产生一个新的LSA实例。
 
因为LSA不能周期性的更新,那LSA就有可能到达MaxAge(1小时,3600秒),所以在Circuit链路上必须去避免,实现方式是:
在Age字段的最高位为DoNotAge位,我们可以置位这个bit,当它存在于LSDB中时就不会逐渐增加了,但其在LSA洪泛过程中还是会根据InfTransDelay而不断增加的。
 
为了使全部OSPF节点能够识别这个DoNotAge位的capability,就要在我们的Hello/DD/LSA的Options字段中置位DC位(Demand Circuit)。这样两个OSPF节点在建立Adjacency时就会协商这个capability,如果area中有一个节点不能支持此特性,则DC位必须被清除,那我们的DoNotAge位也就不生效了。
如果同一area中的任意一个节点的LSDB中的LSA的DC Options位被清除了,则路由器清除LSDB中所有的DoNotAge的LSA,LSA发送源必须发送一个新的DoNotAge清除的LSA。
 
注:推荐将demand circuit配置于一个stub/nssa area,从而避免ABR或ASBR产生带有type3/4/5/7的LSA。
 

Section II. demand circuit链路问题

1>因为没有hello在demand circuit链路上进行neighbors的监控,如果有一端down掉了,对端也不知道。
解决方案:
neighbor probing:在有数据发送使demand circuit打开时,OSPF发送更新,并等待ACK确认,如果对端down掉了,则这时可以探测到此问题。
2>当两端节点都是正常的,但是link是不通的,因为没有hello交互,所以不能发现这种问题。
解决方案:
presumption of reachability:OSPF总是假定link是UP的,即使link在数据传输时不通了,OSPF会认为link的负载过大,直接将数据包丢弃,而不会认为link是down的,进而使OSPF邻居关系down掉。

注:ospf over demand circuit总不是一个好的解决方案,推荐在链路两端使用静态或是默认的路由。
 
 
Section III. flood reduction(洪泛抑制)

尽管ospf over demand circuit是一个不好的解决方案,但可以有一些措施使实现结果不会太坏,那就是flood reduction。
使用这个技术后,hello包如其它链接一样正常的周期性发送,但是LSA被标记DoNotAge位,这样LSA就不会周期刷新,除非:
LSA Options字段改变。
收到一个新的age字段为MaxAge的LSA。
LSA头中的length字段变化。
LSA的内容变更。
配置接口的flood reduction:
Router(config-if)# ip ospf flood-reduction