一、概述

OSPF(Open Shortest Path First )是由IETF开发:链路状态路由协议 、使用的是Dijkstra算法、计算路由,优点有快速收敛,层次化多区域结构设计。多部署在中大型园区网,城域网,企业网中 , 目前的OSPF 版本v2 主要用在点分型十进制数,OSPFv3主要用于128位的ipv6协议中。

二、邻居发现

ospf通过Hello报文发现和维护邻居关系,只有达到了2-awy状态(双向的邻居关系)建立起来才算是邻居关系,OSPF会在所有路由器上启用的接口ospf协议,发送Hello报文。

在不同的网络中ospf发送的hello报文的间隔和目的地址时间会有不同。

	在广播和点到点网络中,hello是每10s发送一次.
	在NBMA和P2MP 网络中每30s发送一次
	
	在广播、点到点和点到多点网络中,ospf通过组播hello报文自动发现邻居、组播目的地址:224.0.0.5(所有ospf中路由器),
	而在NBMA网络中,需手工指定邻居
	
目前很多网络都是Ethernet,默认ospf网络类型是广播,
而ppp/Hdlc/FrameRelay(帧中继),点到点子口则会被看成是ospf p2p 网络类型!
但非广播FR(物理或多点类型子口)、X25、ATM等可以配置为OSPF NBMA或P2MP网络类型!

在建立邻居关系时路由必须对Hello报文中携带的“参数”达成一致,并进行检查对比。
Hello/Dead 发送时间间隔:时间一致才能建立邻居关系 Hello 间隔为10s 而Dead间隔默认是Hello 间隔的 4倍.

区域ID :相邻的路由器在同一区域才能建立邻居关系,检查OSPF头中的Area ID ,Area id 只出现在所有的ospf报文的头部中,并不是Hello中。

区域类型:区域类型要一致。 判断区域类型是否一致要参考Hello报文中的Option位,其中 E 和 N/P 置位代表的含义不同,不同的Option置位决定了不同的区域类型。

ospf双路由负载 ospf双链路_OSPF

认证类型和秘钥一致:只有验证码通过才能建立邻居关系,接口认证>区域认证
Router-ID无冲突:ospf Router-id是可以手工指定或系统自动 选定的,优先选择Loopback接口。直连路由器要建立邻居关系时彼此间的Router-ID一定要不一样

三、邻居的建立过程

OSPF 邻居建立过程
    1)三步握手
    2)Down --- Init---- 2-awy状态

ospf双路由负载 ospf双链路_泛洪_02

2-way Received :收到含有自己的Router-ID的Hello报文

状态变化:
 Down状态:邻居的初始状态。但初始时,邻居的 Router-id 2.2.2.2 还没有出现在OSPF邻居列表里。

Init状态:若该hello报文中的Active neighbor 字段中没有包含R1的router-id时,则R1状态会持续处于lnit。

2-way状态:R1再次收到hello报文时,此次的hello报文中的Active neighbor 字段中就会有自己的router-id:1.1.1.1,这时候路由器就进入了2-way状态。只有双方都进入了2-way时,才代表彼此间双向邻居建立起来。

四、领接关系建立过程

OSPF路由器在双向邻居关系建立完成后,开始建立领接关系。在广播和非广播网络中,领接关系发生
在DR / BDR选举之后,在其他网络类型中没有DR / BDR的选举过程。

==========
邻接关系建立过程-----状态机

ospf双路由负载 ospf双链路_ospf双路由负载_03


ospf双路由负载 ospf双链路_网络_04


ospf双路由负载 ospf双链路_OSPF_05

邻接关系是邻居路由器为完成LSDB同步而发生的LSA交互过程,也是邻居路由器初次通告LSA,快速同步的过程。同步完成之后路由器的最终成为Full状态,但不是OSPF网络中,每一对邻居路由器间都会形成邻接关系。在广播和非广播网络上,DRother路由器彼此会一直保持在tow-way状态。
     
	邻接关系状态迁移过程:
	   1) 信息交换初始状态(Exstart):在这个状态下,本地路由器和邻居路由器间互传空DD报文。
	          1-1)确定主/从关系
	          1-2)确定 DD 的初始序列号
	          1-3)  比较接口 MTU (可选) 
在Exstart 状态下,路由器互相发送空的DD报文中置 I  (Initialize), M (more) 及 
	MS  (Master / Slave )位。
	
	I 位:初始化位 仅有头两份DD报文中置该位,代表同步过程开始,
	
	M位:如果M位=0 , 则代表后续DD报文中,没有LSA summary要传。任何一方M位不为0 ,
		Master就要继续发送DD报文,Slave收到之后,不论是否还有LSA Summary要传递,一定回应DD报文
		
    MS:初始双方均认定自己是Master,所以M/S均置 位 。双方收到的DD,RouterID高的一方位Master,其后续DD报文中 M/S会一直置位。 Master会一直发送DD报文,Slave回应DD报文,Slave回应的DD报文是对Master发送的DD报文确认。此过程持续到双方的LSA都交换完成。
不协商MTU,MTU默认是0.


     2)信息交换状态(Exchange):选举出Master后,Slave路由器想Master回送DD报文,其中包含LSDB中的LSA头列表,并使用Master的序列号。Master也把自己的LSA头列表用DD发送,序列号增加1,同时Slave收到后,会回应相同序列号的DD报文。 任何一侧只要还有未传递完的LSA头,Master就要产生DD报文由Slave确认回应。
  Exchange阶段是个可靠的DD交互,完成快速交换LSA头。

     3)信息加载状态 ( Loading): 在这个状态下,本地路由器将会向他的邻居路由器发送链路状态请求数据包LSReq , 以请求本地LSDB中没有的LSA,收到LSReq的报文,路由器会用包含完整的LSA来用LSU作为回应,请求方收到LSU后,如果无误,则LSAck确认该LSU。
	一份LSAck可同时为多份LSUpdate做确认。

     4)完全领接状态 ( Full ): 在Full状态下,邻居路由器之间已完成同步过程,建立起完全领接关系。

补充:影响邻居及领接关系建立的问题:

1)主ip网络和掩码:
		Hello报文中,携带有接口主ip网络的掩码,Hello 报文中通过掩码和报文的源ip地址,就可以知道邻居双方是否在同一个个主ip网络,主ip网络是接口配置的第一个ip地址,如果不同IP地址,同掩码,如果是点对点链路,则R1<---->R2,能建立起邻居关系。 如果是广播网络类型,则不能建立邻居关系。
  2)MTU 不一致
		OSPF 在 ExStart 状态下会检查邻居彼此的接口MTU , MTU决定了发送的OSPF报文大小,同时也决定了可接收的OSPF报文大小。
		  如果接收方收到MTU=1500Byte(字节)  超过了接收方的接收的DD, LSU , LSR 报文范围后,则会无法处理,从而停在  ExStart 、 Exchange 或 Loading 状态下。无法建立领接关系,这是在开启 MTU  填充检查功能开启的情况下,默认情况华为是不开启MTU检查,默认为0 ,
		 为了统一保证MTU一致,可在接口上设置发送DD报文的MTU填充不检查(默认:0 )

五、OSPF网络类型:

1)  OSPF 四种接口 链路 网络类型:
	1-1)  Point - to -point  networks 
	2-2)  Broadcast  networks
	3-3)  NonBroadcast  Multi-Access ( NBMA) networks
	4-4)  Point - to -Multipoint networks

网络类型的分类:

ospf双路由负载 ospf双链路_网络协议_06

Broadcast (广播):以太网等网络上的默认网络类型。他对网络的要求是接在网络上所有节点直接建立起全互联的邻居,同时并自动选举 DR 以及完成 和 DR 的同步。选举DR需要引入 Wait 时间 所以在广播网络类型上的邻居震荡时网络收敛时间较长。

Point-to-Point(点对点):点对点网络类型只工作在两个节点的环境中,彼此间不需要选举 DR ,建立邻居关系后直接开始LSDB同步,收敛时间快。通常在园区网中的核心层及汇聚层之间往往使用的是多个点对点

NBMA(非广播多路访问):在 ospf 中 FR / ATM 网络上默认是 NBMA 网络类型,NBMA 网络不能使用组播、广播的方式去发送单份的报文给其他节点,手动使用 peer 命令来相互指定邻居的接口 ip 以建立邻居关系。不能使用组播方式来自动发现邻居。NBMA和Broadcast中LSDB及拓扑计算的方式都是一样的,NBMA不适宜在不规整的非广播网络拓扑,原因是DR位置难于指定,需要手工指定DR及邻居。writ时间=120

Point-to-Multipoint networks (点到多点):点到多点的好处是它可以适用于任何不规整的网络拓扑,点到多点可以吧网络拓扑看成任意的点到点链路,同时不考虑 DR 的位置,因为 P2MP 不需要 DR.

 2)各种网络类型互联:
	ospf下不同的网络类型的接口间通过 Hello 报文 建立邻居关系 ,由于hello报文中没有网络类型的参数,不同接口网络类型的邻居间是可以正常建立邻居关系的,但需要调整Hello 和 Dead 间隔为一致才行 。默认NBMA 和P2MP 和hello时间都是 30 秒 , P2P 和 Broadcast 的 Hello时间都为 10 秒。

OSPF网络类型互联:

ospf双路由负载 ospf双链路_OSPF_07

六、数据库同步及泛洪机制

1、泛洪机制:

1)OSPF不同于矢量路由协议,在于其路由是根据LSDB中得LSA计算出来得,所以LSDB的一致性及快速同步直接影响OSPF路由的收敛性能。
	2)Area,中所有OSPF路由器要有一个相同的LSDB,LSDB是LSA的集合,这些LSA在area内泛洪给每台路由器,泛洪过程是把路由器产生和学来    的LSA向所有其他邻居及路由器通告的过程。
	3)LSDB数据库包含所有的LSA,数据库中任何LSA的变化都会触发当前路由器通告给该变化给邻居路由器并泛洪至所属区域,为了确保数据库被及时更新且保证内容的一致性,OSPF泛洪使用LSU/LSACK 来保证泛洪的可靠性。
	4)ospf的update/lsack 可以携带多份lsa,通过在邻居之间泛洪lsu/lsack,最后通告给全网,在点对点网络中更新以组播方式224.0.0.5,在点到多点、Ma网络类型、vlink类型链路上则以单播方式泛洪给邻居。
	5)路由器在一个接口收到泛洪的LSA报文时,会继续向其他接口泛洪。
	6)nbma网络上DRother单播给DR\BDR,DR再单播给Drother.
	7) 泛洪过程是个可靠过程,有确认机制,每份泛洪的LSA都必须被确认,确认包括:隐含确认和显式确认,使用LSU做的确认时隐含确认(Implicitack),而使用LSACK 做的确认则是显式确认(Explicitack);作用:LSU的隐含确认可减少单独确认LSAck的过程。

2、泛洪行为:

当一份LSA被泛洪出去,当前路由器会记录再该接口的所有邻居数量并为之维护重传列表,没有收到显式或隐含确认的LSA会再5s 后单播重传(所有网络类型一致)
	路由器泛洪行为:
		每台路由器都有相似的工作行为以生成一致的LSDB。
			1)一个接口收到泛洪的LSA,存放LSDB后,再从其他接口重新泛洪出去。
			2)重新通告的LSA和收到的LSA,除Age增加1外,其他内容一致,如checksum
			3)LSA会泛洪至区域的边界
			4)每台接收路由器,先判断LSDB中是否已有该LSA,没有则存储转发,有则忽略。
			5)如果接收时没有判断是否已有该LSA或路由器没有停止转发,则会导致LSA在区域(area)内无休止地传递。

3、LSDB

LSDB中每份LSA都有唯一的身份证ID,由三个参数构成:
		1)LSA-type
		2)Link-state-id
		3)ADV routerID
		
	• 泛洪是可靠的、周期性30min或触发产生的LSA通告过程。
	• 泛洪是把LSA向区域中的每条链路的复制并通告的过程。
	• 全区域的泛洪会导致路由器收到多份相同的LSA, LSDB只会保存最新的LSA。
	• 路由器仅泛洪最新的LSA,相同Id,旧的LSA会被新的LSA覆盖。
	• 最新的LSA被所有路由器收到,泛洪就结束了。
	• 区域中会有周期产生新的LSA,所致的泛洪或触发产生新的LSA导致的泛洪行为
	   判断相同Id的新的LSA要依次比较以下内容:
			1)LSA序列号 (SequenceNumber)
			2)LSA 报文校验和 (Checksum)
			3)LSA 年龄(LSA Age)
	以上说明:
		Sequence number:
						有符号32位整数;采用线性递增的序列号,初始序列号从:0x80000001到最大值0x7FFFFFFF,
						序列号越大代表LSA越新,LSA会周期(30min)产生新的LSA序列号就会加1.
			
		Checksum:
						
					16位数,对刚刚收到的LSA做计算,Age字域不在计算内,即使LSA存放在LSDB中,路由器也会每5分钟重新计算一次。
		
		LSA Age:
					16位无符号整数;LSA的最大年龄位3600s,LSA在路由器间泛洪时每经过一跳年龄加1,在LSDB中存放存放时年龄也加1;
					若LSA的年龄达到3600s,路由器会从LSDB中清除该LSA. 2)在拓扑稳定的情况下,每份存放的LSDB中的LSA间隔30min都会被周期产生的新LSA刷新。
						
		泛洪机制会把LSA向区域中的每条链路通告,不论LSA从从哪条链路上泛洪到当前路由器,在路由器的LSDB中仅保存一份最新的LSA.若路由器收到多份相同Id的LSA,则依次比较序列号、checksum及LSA Age,来判定是否继续泛洪该LSA,还是终止泛洪。
			条件:
				1)收到LSA本地数据库没有,则接收该LSA并继续泛洪。
				2)收到LSA本地数据库有,但收到的LSA比自己当前的已有的LSA要新,则更新LSDB并泛洪新的LSA.
				3)收到LSA比自己已有的LSA要旧,则不接收该LSA
				4)收到LSA和自己一样新,则终止泛洪行为
				5) 收到LSA损坏,如checksum错误,则不接收该LSA
			如何判断LSA新旧的规则:
				1)序列号越大,LSA最新。
				2)序列号相同,checksum数值越大代表越新。
				3)序列号和checksum一致时,比较Age;
					若LSA的age为maxage (3600s) , 则该LSA被认定更新

4、OSPF报文结构

1)报文类型
	     OSPF 共有 五种类型的协议报文。
		Hello 报文 :  周期性发送 ,用来发现和维护OSPF邻居关系
		DD (DataBase Description Packet)报文  : 描述了本地LSDB的摘要信息 , 用于两台路由器进行数据库同步 。  
		LSR  (Link State Request Packet)报文 :向对方请求所需的 LSA , 只有在双方成功开始交换DD报文后才会向对方发出 LSR 报文  
		LSU (Link State Update Packet) 报文 : 向对方发送其所需要的LSA 或者泛洪自己更新的LSA  
		LSACK (Link State Acknowledgment Packet)报文 :用于对收到的LSA 进行确认 。

七、 LSA 类型定义

IETF为 IPv4 定义了以下几种可用的 LSA 类型 : Type: 1 2 3 4 5 7     6是用与Mospf(组ospf)

Router-LSA ( Type 1)

, 以下简称 LSA-1 , 每个设备都会产生 , 描述了设备的链路状态和开销 , 仅在所属的区域内泛洪 。
• 作用:计算域内路由
• 产生:每台路由器都产生
• 内容:路由信息和拓扑信息
• 传递范围:所属区域 (本区域)
LSA-1报文内容:
每台路由器会为自己所处的每个区域产生一份Router LSA,该Router LSA 包含属于该区域的所有链路的链路状态信息。

[R2-ospf-1-area-0.0.0.0]display  ospf lsdb  router  self-originate      //查看一类LSA
					
						 OSPF Process 1 with Router ID 2.2.2.2
							         Area: 0.0.0.0      //区域0
							 Link State Database         //LSDB
					
					
					  Type      : Router      //Router代表为一类LSA
					  Ls id     : 2.2.2.2        //路由器的Router-ID
					  Adv rtr   : 2.2.2.2       // 产生该LSA的路由器Router-id
					  Ls age    : 133              //16位数,后15位表示LSA,最高位置为则代表在LSDB中年龄不老化过期 
					  Len       : 36 
					  Options   :  E             //如果置为N/P则代表可以 处理Type-7,P通告位,代表可以 7 转 5
					  seq#      : 80000004       //线性序列号,初始值为80000001递增,每次更新收到LSA增加1。
					  chksum    : 0x232e      //对整个LSA做checksum ,除了Age不做
					  Link count: 1               
					   * Link ID: 192.168.12.2     // Dr 的接口IP地址
					     Data   : 192.168.12.2       //自己接口的IP地址
					     Link Type: TransNet      //MA网络链路类型
					     Metric : 1            //开销值

ospf双路由负载 ospf双链路_网络协议_08

Link count: 2
						   * Link ID: 3.3.3.3        //对端邻居的router-id 
						     Data   : 192.168.13.1     //自己接口的IP地址
						     Link Type: P-2-P         //网络接口类型点对点
						     Metric : 1                    
						   * Link ID: 192.168.13.0      //网络号
						     Data   : 255.255.255.0      //  网络掩码
						     Link Type: Stub-Net       //网络接口类型叶子
						     Metric : 1 
						     Priority : Low
						 
						  Link count: 1
						   * Link ID: 1.1.1.1        //对端ABR虚拟的router-id
						     Data   : 192.168.13.3     //本地Vlink-IP地址
						     Link Type: Virtual      //虚拟点到点链路
						     Metric : 1
						
							
					Router LSA包含以下几项:
						LS Age:16 bit ,后15位数用来表示Age , LSA初始产生时 , Age 数值为0 , 
							最高位有特殊含义,置为则代表该LSA在LSDB中年龄不老化过期;
							若没有置位,则Age正常老化,即在LSDB中年龄老化。
				 
					是路由信息,其他三种都是描述拓扑信息
				       一类LSA不能够描述出网络的完整信息,这时候就需要LSA-2。

Network-LSA (Type 2)

, 以下简称 LSA2 , 由DR (Designated Router)产生,描述MA(多路访问)网络的链路状态 , 仅在所属的区域内泛洪 。
作用:计算域内路由 ,结合1类的lsa
产生:MA网络中由DR产生
内容:拓扑信息和网络信息
传递范围:所属区域内
[R2]display ospf lsdb network self-originate

OSPF Process 1 with Router ID 2.2.2.2
							         Area: 0.0.0.0
							 Link State Database 
					
					
					  Type      : Network           // Network 代表为2类LSA
					  Ls id     : 192.168.12.2      // DR接口的IP地址
					  Adv rtr   : 2.2.2.2        //产生该LSA2的通告路由器router-id
					  Ls age    : 725     // 16位数,后15位表示LSA,最高位置为则代表在LSDB中年龄不老化过期 
					  Len       : 32  
					  Options   :  E    
					  seq#      : 80000004      //线性序列号,初始值为80000001递增,每次更新收到LSA增加1。
					  chksum    : 0x6b60       //对整个LSA做checksum ,除了Age不做
					  Net mask  : 255.255.255.0    //与LS-id,执行且运算出LSA2所代表的网络号
					  Priority  : Low
					     Attached Router    2.2.2.2 
					     Attached Router    1.1.1.1     //连接到本网络的所有邻居路由器的router-id;本区域传递。
					
				1)LSA2中既包含拓扑又包含网络两种信息,当网络变化时,即使物理拓扑没有改变,同样也会触发LSA2,并致每台路由器都重新发生SPF计算。
				2)LSA2的作用:
					LSA2 只由MA网络类型产生Dr的路由器,使用DR接口IP地址作为自己的LS id ,相比较LSA1 是由实节点产生并描述实节点周边的连接关系和网络,LSA2是由DR为虚节点产生,描述虚节点周边的连接关系和网络信息。
		**二、 DR 及 虚节点的作用**
			   DR的作用是:
					1)用于数据库同步
					2)代表网络虚节点产生LSA2
			   DR是MA网络上负责数据库同步的路由器,网络上所有路由器都和DR有邻接关系。
			      路由器优先级在1 - 255 之间都有资格成为DR.
			      每台路由器根据收到的HELLO,中是否已有路由器声称为DR
			      在wait时间后,开始选举DR,优先级高的路由器为DR,优先级相同则route-id大的路由器成为DR
			      DR 不能被抢占;一旦选举结束,即使有再高的优先级的路由器出现网络中也不能抢占DR和BDR,作用是为了网络的稳定及避免震荡
			      当DR选举完成后,如果当DR失效,则BDR成为DR,并重新选举BDR
			DR的选举机制:
				MA网络中,同时选举DR和BDR,MA网络中可以没有BDR,但不能没有DR。
				DRother与Drother之间只存在邻居关系
				Dr的选举是依靠Hello报文,在2-way之后,交互Hello报文完成DR/BDR的选举
						选举DR/BDR的算法集合:
							DR集合 :通过hello学习到所有Dr路由器
							BDR集合 :通过hello学习到所有BDr路由器
							DRother集合: 没有被选举为DR/BDR的路由器 
							
		三、SPF路由计算
			SPF计算路由: 
			   三步走:
				1)路由器根据LSDB中的LSA画出网络图(Graph),在这个Graph包含网络中所有的点和边,Graph需要LSA1中p2p、TansNet、Vlink类型及LSA2来描述拓扑。Graph:每台路由器都是以自己为点画拓扑的。
				2)路由器以自己为树根,对图执行SPF算法。画出一棵树由树根到每个节点的最短成本路径树;
				3)在树的节点上添加网络信息,并计算由树根到这些网络的成本及下一跳,并把计算结果存入路由表
			iSPF: Incremental SPF
				• 在路由计算方面优化网络中SPF计算过程,可降低计算负荷和收敛时间;ispf主要是以增量计算(只计算变化的部分);
				• 针对叶子节点的路由计算称为PRC;增量计算对比Full SPF极大提高了路由器的计算性能及有效降低CPU的负荷;
				• SPF通过全部的计算出最短路径树,并计算出路由信息,但是SPF不会保存计算出来的结果,这样当拓扑发生改变后,SPF只能重新计算全部一遍,这使得浪费时间及系统资源。
				• iSPF是拓扑计算的一种,它只处理网络拓扑信息,只负责计算出最短路径树,ispf直接反映网络拓扑的Graph ;而计算出来的最短路径树则保存在这个图中。当链路发生变化后ispf会判断出哪儿的网络拓扑出现问题,从而只计算出问题的网络拓扑部分,而不是全部网络拓扑。
				• 如果发生变化的是根节点的边,则ispf会进行全部重新计算。
			RPC:
				任何一条路由都是网络节点上的一片叶子节点,从根节点中,只要到树中任何的虚/实节点的最短路径确定了,到叶子节点的最短路径也就确定了,那么到节点发布的路由最短路径树也就确定了。因此RPC就是在ispf计算的最短路径树的基础上,再计算叶子节点的路由,当有路由信息发生改变时RPC直接判断出那条链路上的那个叶子发生变化,从而直接进行路由的计算和更新。
			ospf是链路状态路由协议,如果网络规模大,路由数量大,链路的抖动或路由的变化对网络的影响很大,ispf解决这个计算路由的问题,从而提高网络的收敛速度和降低网络的负荷。
		       路由计算:
				第一步:画有向图
				第二步:执行SPF计算
				第三步:添加叶子节点并计算路由
		       环路避免:
				1)骨干区域有且只有一个
				2)骨干区域不能被分割,一旦分割则使用vlink连接。
				3)为了避免环路,不允许非ABR产生LSA3

Network-Summary-LSA (Type 3)

, 以下简称 LSA-3 , 区域内某个网段的路由 由 ABR 产生LSA-3向其他区域通告。LSA-3 在区域间传递路由 ,但该LSA-3 泛洪仅在一个区域内
作用: 传递区域间路由信息
产生:ABR产生
传递范围:区域间---->只传递路由信息;
3类LSA传递路由区域间可能出现环路,为了避免区域间的环路,
OSPF规定不允许直接在两个非骨干区域之间发布路由信息。
LSA3特性:
1)边界路由器ABR为区域内的每条ospf路由各产生一份LSA3并向其他区域通告。
2)边界若有多个ABR,则每个ABR都产生LSA3来通告区域间路由。
3)区域间传递的是路由,LSA3是由每个区域ABR产生的,并只在该区域内泛洪LSA1。
4)ospf在区域边界具备矢量特性,只有出现在ABR路由表的路由才会通告给邻居区域。
5)计算路由时,路由器计算自己区域内到ABR成本加上LSA3传递区域间的成本,最终得到当前路由器到达目的网络的成本。
6)ABR路由器上路由表中的某条ospf路由不再可达,则ABR会立即产生一份Age为3600s的LSA3,并向区域内泛洪,作用于区域内撤销该网络

区域间路由计算:
				 Type      : Sum-Net           // Sum-net 代表为3类LSA
				  Ls id     : 192.168.13.0    //网络号
				  Adv rtr   : 1.1.1.1         //产生LSA3的路由器router-id
				  Ls age    : 750            
				  Len       : 28 
				  Options   :  E  
				  seq#      : 8000000a 
				  chksum    : 0x4d4
				  Net mask  : 255.255.255.0      //子网掩码
				  Tos 0  metric: 1      
				  Priority  : Low

		   ABR的定义及作用(RFC 3509):
				1)定义:至少有一个接口连接到骨干区域,这样的区域间路由器称为ABR.
				2)  定义: ABR处于区域边界间,限制LSA泛洪的的范围
				3)作用:为本区域通告描述其他区域的网络,且执行区域间路由通告、过滤、聚合
			避免区域间的环路规则LSA3-LSA4:
					1)规则1 :通过ABR1进入非骨干区域的LSA3路由,若ABR2在骨干区域有ospf邻居,则该LSA3路由不进ABR2路由表。
					2)规则2 :若ABR2在骨干区域没有邻居,仅有一个网络出现在骨干区域,则ABR1通告的LSA3路由可以进入其路由表。
					3)规则3 :没有出现在ABR路由表的路由是不会通告到其他区域这时边界上的矢量特性。
				LSA3只计算来自骨干区域的路由且能经过ABr,非骨干的路由不会计算且不接受的。
			V link : 只传递LSA
				vlink设计容易出现环路
				Vlink不能对区域0 路由做聚合

ASBR-Summary-LSA (Type 4)

,以下简称 LSA-4 ,由ABR产生,描述到ASBR的距离 , 通告给除ASBR所在区域的其他相关区域 , 该LSA-4的 泛洪范围仅在一个区域 ,ABR会在区域边界为其他区域产生LSA-4并继续泛洪。
display ospf lsdb asbr self-originate

OSPF Process 1 with Router ID 2.2.2.2
					         Area: 0.0.0.0
					 Link State Database 
			  Type      : Sum-Asbr     //type 4
			  Ls id     : 3.3.3.3                 //ASBR的router-id
			  Adv rtr   : 2.2.2.2              //ABR的rtr
			  Ls age    : 60     
			  Len       : 28 
			  Options   :  E                  //仅E-bit置位
			  seq#      : 80000001 
			  chksum    : 0xa0a6
			  Tos 0  metric: 1              //ABR到ASBR的成本
		
			LSA4的作用:在区域间计算到ASBR产生的外部路由的距离
			
			LSA4是ABR为非ASBR所在区域产生的

AS-external-LSA ( Type 5)

, 以下简称LSA-5 ,由ASBR产生,描述到AS外部的路由 , 可泛洪到所有区域 (除了 STUB 区域和 NSSA 区域)。
display ospf lsdb ase

OSPF Process 1 with Router ID 3.3.3.3
					 Link State Database
			  Type      : External                      //Type-5
			  Ls id     : 192.168.34.0               //引入外部路由的网络号
			  Adv rtr   : 3.3.3.3                      //产生LSA5的路由器router-id
			  Ls age    : 563                      //16位数,后15位表示LSA,最高位置为则代表在LSDB中年龄不老化过期 
			  Len       : 36          
			  Options   :  E                            
			  seq#      : 80000001 
			  chksum    : 0x7bbd
			  Net mask  : 255.255.255.0            //引入外部路由的掩码
			  TOS 0  Metric: 1                      //ASBR到外部网络的成本
			  E type    : 2                                    //默认是E Type2 ;Type2只考虑外部成本、Type1考虑内外成本之和
			  Forwarding Address : 0.0.0.0      //如果是0.0.0.0访问外部网络转发给ASBR,不是非0,报文转发给非0地址
			  Tag       : 1                 //用于标记外部路由的标签,默认值是 1 .
			  Priority  : Low          
		  LSA5的作用:
			LSA5区别于LSA3/LSA4,  LSA5只负责通告ospf路由域外的其他协议路由,如rip,bgp… ; 引入到ospf后,这些外部路由靠LSA5将其泛洪到
				ospf路由域中;
			LSA5具有其他LSA所没有的泛洪范围;LSA5能泛洪到所有Area,除了特殊区域外,ASBR产生;在区域间泛洪至ABR,泛洪期间只有Age会增加,其他的没有变化
			LSA5的作用除了向路由域中路由器通告外部路由外,还告知其他路由器如何访问外部网络,根据LSA5中的FA地址是经过ASBR还是经过非0的路由器地址。
		 FA地址的作用:
			FA地址只出现在LSA5/LSA7,FA地址是数据报文转发访问外部网络的过程;
			若FA地址=0,LSA5先判断如何到ASBR路由器,如果ASBR在其他区域,则依赖于LSA4来决定如何到达ASBR;
			如果ASBR在区域内,则依赖于LSA1-2 来计算到ASBR的路径。
			若FA != 0 ,则要根据ospf路由表来查看其中是否有FA对应的路由,依次来判断路由的可达性,若不可达,则该外部路由不进ip路由表
			ASBR的接口上如果满足以下四个规则,则ASBR上外部路由的下一跳地址就是该外部路由LSA5的FA地址;否则外部路由的FA地址为0;
			规则一:外部路由的下一跳地址所在网段的接口没有设置成静默接口
			规则二:下一跳地址接口网络类型不能是p2p
			规则三:下一跳地址接口网络类型不能是p2mp
			规则四:外部路由的下一跳地址所在网段的接口发布进ospf
			      FA总结:
					FA地址为0 ,外部路由能否进入ospf路由表,要依赖于产生LSA5的ASBR是否可达;
					FA=0,访问外部路由的数据包转发给ASBR。
						LSA5:
							FA=0,区域内根据LSA1-2计算路由,区域间根据LSA4计算路由;
					FA!=0,访问外部路由的数据包转发给该FA地址。
						LSA5:
							FA!=0,区域内根据LSA1-2计算路由,区域间根据LSA3计算路由;
					FA不等于0的4条规则中,只有任何一条不满足,FA就等于0。
		LSA5的泛洪:
			LSA5可以在区域间泛洪,这与LSA3-4有所不同;
			在骨干区域分割或普通区域不链接骨干区域的场景下,LSA5依然可以不经过vlink,直接Transit区域流入其他区域,
			与LSA1-2-3-4,需要vlink传递到其他区域的方式不同,其原因是LSA5和其他类型的LSA泛洪范围不一致;
			结论:LSA5依赖于LSA4或LSA3来计算ospf路由域内的访问路径

NSSA LSA (Type 7)

, 以下简称LSA-7 ,由ASBR产生 ,描述到AS外部的路由,仅在NSSA区域内泛洪。
NSSA区域:
1、ospf规定stub区域不可以引入外部路由,这样可避免大量的外部路由对stub区域的路由器造成带宽和存储资源消耗。
2、如即要引入外部路由,又要避免外部路由带来的资源消耗时stub区域就不够满足此场景,解决方案是:NSSA区域;
3、NSSA区域和stub区域有着许多相似的地方,两者差别在于,NSSA区域能够将外部路由引入并传播到整个ospf路由域中,
同时也不会学习来自ospf其他区域的外部路由。

NSSA ABR=ASBR:
					NSSA区域连接骨干区域,其区域边界路由器是ABR,同时也是ASBR.
						华为的NSSA区域边界路由器ABR默认会向7类lsa泛洪默认路由。
				NSSA区域边界路由的ABR特性:
					• ABR在Area1和Area0 间传递区域间路由。
					• LSA7(置P位)可执行ABR 7 转5过程后,产生lsa5泛洪到Area0及其他区域。只有ABR的router-id大的执行7转5
					• 默认情况下,向NSSA区域通告LSA7的默认路由
					• 如果区域类型是Totally NSSA ,ABR也可以向NSSA区域产生LSA3的默认路由
				LSA7的作用:
					• Type7 LSA 是为了支持NSSA区域而新增的一种LSA类型,作用是用于通告引入外部路由信息;
					• Type7 LSA由NSSA区域的自治域边界路由器(ASBR)产生,扩散范围仅限于ASBR所在的NSSA区域。
					• NSSA区域边界路由器(ABR)收到Type7 LSA 时会有选择地将其转换为Type5 LSA,以便将外部路由信息通告到ospf其他区域
					• LSA5/4不会流入NSSA区域,所以Area1的ABR会各自注入LSA7默认路由到Area1 ,这样区域内路由器可以通过默认路由访问外部网络
					• LSA7的FA,一定要为非0,作用是用于区域间选路
				关于FA说明:
					FA的构成:
						需要强调的一点是LSA7的FA地址和LSA5的FA内容上有如下区别:
							LSA5的FA可以是0或非0两种情况;
							LSA7的FA一定为非0.
							LSA7的FA值如下;
								1)在NSSA区域边界路由器上引入外部路由,产生LSA7,其FA地址为0; 协议规定
									FA=0的LSA7的路由是不会被通告到骨干区域;
								2)FA不为0的情况。在NSSA中,ASBR引入外部路由,都是非0 ;
									LSA5的四条规则同样使用LSA7.
										• 满足4条规则,FA!=0,地址是ASBR上外部路由的下一跳地址。
										• 不满足某条规则,FA!=0,地址是ASBR上某个接口的IP地址,优先环回口地址,其次物理接口地址。
				LSA7转换翻译:
					在Area1中LSA7作用和LSA5一致,有相同的格式,包括外部路由及掩码、Forwarding-address Tag 、 cost 、 cost-type.
						LSA7与LSA5的不同之处;
							• LSA7仅在NSSA区域里泛洪;
							• LSA7的FA为非0; 如果为0 ,则不会被ABR转换为LSA5
							• 外部路由在NSSA区域里使用LSA7来传递,在其他区域用LSA5来传递,ABR负责做7/5翻译。
							• LSA7中选项位P-bit , 用于告知翻译路由器该Type7 LSA是否需要翻译转换。
							• 缺省情况下,转换路由器是NSSA区域中router-id最大的区域边界路由器。
							• 只有P-bit置位并且FA不为0的Type-7 LSA才能转换为Type 5 LSA。
							• 若在ABR上引入外部路由,产生Type 7 LSA不会置P-bit的,所以不会被通告到area0
				
				NSSA区域路由器:
					• Nssa translator-always    可以指定7转5转换器
						该命令可以同时指定两台路由器,也可以固定指定一台路由器,可防止转换器变动
							而引起LSA重新泛洪。
					• Nssa Suppress-forwarding-address   可以指定在7/5翻译时,修改默认FA地址为0 
					• Nssa default-route-advertise    可以指定ABR或任何Nssa区域中路由器产生LSA7默认路由
			总结:
				OSPF中区域area内无环,在区域间若是LSA3路由,则可以靠水平分割规则来避免环路,但如果是LSA5/7,则要靠FA地址来避免环路,由于FA地址在LSA7中传递过程中修改,丢失源路径信息,因此导致环路。

选路规则以及路由控制

1)OSPF的选路规则有两个(RFC1583 /  RFC2328)两者机制不同;华为默认选择RFC1583作为默认的选路规则;
					为了使得全网一致,可在OSPF域中使用RFC2328的设备配置 undo rfc1583 compatible ,使其使用RFC2328作为选路规则。
				2)RFC1583和RFC2328的区别在于计算外部路由时规则不一致;如果使用不同的路由选路规则,则可能导致路由环路。所以为了避免环路则得使选路的规则要一致。
			
			RFC1583兼容规则:
				RFC1583的兼容特性  ----> 主要是指路由器对收到的LSA5如何去做计算路由的,如何在多条外部路由中选择最佳路径。
				     选路规则:
						•  ospf区域内路由优于区域间;
						• ospf区域间路由优于外部路由;
						• Ospf外部路由中的Metric-type 1的路由优于Metric-type2的路由。
						• 同为type1的外部路由,优先内部成本和外部成本之和后,成本最小的,如果内外成本一致,负载分担。
						• 同为Type2的外部路由,优先外部成本小的,外部成本一样,选内部成本小的,内外都相同,负载分担。
				说明:
					ospf外部路由的cost类型有两种:type1 / type2  ; 华为默认type2
						两种cost类型,体现出计算外部路由的选路不同,还在路由表中的外部路由的cost也不同。
						两种cost类型的特性计算,type1,路由表使用的是内外部cost之和;type2,路由表使用外部路由的cost。
			
			OSPF矢量特性:
				ospf区域内不具备矢量特性,只在边界ABR/ASBR上具备矢量特性。
					矢量特性:是指在边界路由器哈桑,LSA的产生依赖路由表里相应路由是否存在,如果路由不存在,则不会产生相应的LSA。
					如何导致不产生LSA:通过过滤ABR/ASBR路由表里的路由,就可以控制向某些区域通告路由。且矢量特性仅发生在ABR/ASBR上。
						过滤的可以使用在任何路由设备上:filter-policy 2000 import  。OSPF路由控制:
				命令	作用:
				Filter-policy import	在任何路由器上,对进路由表的路由做过滤
				Filter-policy export	在ASBR上,对引入路由做过滤
				Filter export	ABR上对离开area的LSA3路由过滤
				Filter import	ABR上对进入area的LSA3路由过滤
				Filter-LSA-out	接口下,对泛洪的全部LSA或LSA3/5/7做过滤
				ABR-summary not-advertise	ABR上对聚合路由范围内所有明细路由过滤
				ASBR-summary not-advertise	ASBR上对聚合路由范围内所有明细路由过滤

.