一、OSPF 概述

1、IGP (Interior Gateway Protocol),AS内部网关路由协议。
2、链路状态动态路由协议。
3、IP 协议号89。
4、分area。area由一些network range组成。area 0 为骨干区域。同一area内的router 链路状态数据库需要保持同步。
5、使用hello,Database Description,Link State Request,Link State Update,Link State Acknowledgment 这5中packet来发现和建立邻接关系,并交换LSA(Link State Advertisement),同步链路状态数据库。
6、使用5中LSA来描述area 内的拓扑结构,以及AS内其他area的路由,及AS内从外部AS学到的路由:1).Router links advertisements; 2).Network links advertisements; 3).Summary link advertisements; 4).ASBR-Summary link advertisements; 5).AS external link advertisements.
7、使用链路状态数据库存储LSA,并使用SPF(Shortest Path First)算法。以自己为根,计算出到目的网络的无环的最短路径树。


二、OSPF Packet

2.1 OSPF 报文公共header

OSPF报文详解_OSPF

2.1.1 作用

封装OSPF packet,表明packet的类型,来源,来源区域。也可以进行认证。

2.1.2 字段说明

Type:表明header下面跟的packet的类型(1-Hello;2-Database Description;3-Link State Request;4-Link State Update;5-Link State Acknowledgment)
Router ID:路由器在区域内的唯一标识,可用路由器上的interface IP.
Area ID: 发送该OSPF Packet的router interface 所属的area.


2.2 OSPF Hello Packet

OSPF报文详解_OSPF_02

作用:发现邻居,选举DR/BDR(multi-access network),建立双向通信关系。
字段说明:
Network Mask:发送接口的网络掩码。
HelloInt:Hello包周期发送时间间隔。
Options:可选能力字段,比如E位用来表示区域是否接收AS External link advertisement.
Rtr Pri: Router Priority在选举DR/BDR的时候使用。
DeadInt:收到邻居回复前的最大等待时间,超过改时间认为邻居Dead。
Designated Router:本router认为的该multi-access network里面的指定路由器
Backup Designated Router:本router认为的该multi-access network 里面的备用指定路由器。
Neighbor: 最近收到的hello packet 的 Router ID(发送路由器),如果在收到的hello packet里面看到自己的router ID 则和hello packet的发送路由器进入双向通信(2-way)状态。


2.3 OSPF Database Description Packet

OSPF报文详解_链路_03

作用:互相交换链路状态数据库里面的LSA信息。比较然后发现自己没有的或者比自己存储的LSA更新的。
字段说明:
Option:作用同Hello里面的。
I/M/MS:I(Init bit,设置为1表示发送的第一个DBD,M(More bit,表示后面还有DBD),MS(Master/Slave,置1表示Master,只有1个master,其他的为slave,在DBD交换过程中,Master先发包含LSA头部信息的DBD包,使用一个DD sequence number,slave 回复DBD包,使用相同的DD sequence number在传递LSA的同时对Master发送的DBD进行确认,以此实现可靠的信息交换)
Link State Advertisement Header: LSA数据包的header,header中包含足够的信息以唯一的确认一个SLA的实例。LSA Header下面会介绍


2.4 OSPF Link State Request

OSPF报文详解_IGP_04

作用:向邻居请求其数据库中自己没有的或者比自己更新的LSA。
字段说明:
LS type:LS 类型如之前介绍的5中LSA。
Link State ID:相应的LS type的LSA header里面包含的Link State ID字段内容。其具体的值在之后介绍LSA Header时介绍。
Advertisiong Router:通告该被请求LSA的Router。
以上三个字段可以唯一的确认要请求的LSA。


2.5 OSPF Link State Update

OSPF报文详解_IGP_05

作用:向邻居发送其请求的LSA(单播),在网络上泛洪LSA(多播,当网络有变动时,发送新的LSA),发送的Upadate packet需要neighbor使用 Ackownledged packet进行确认。如果未收到neighbor的确认,对改neighbor进行单播重传,以确保他们的数据库信息同步。
字段说明:
#advertisements:包含的LSA的数量。
link state advertisements:完整的LSA数据包。


2.6 OSPF Link State Acknowledgment

OSPF报文详解_OSPF_06

作用:对收到的Update packet进行确认。字段说明:
#A Link State Advertisement Header:收到的Update packet里面包含的LSA的header,发送回去表示具体的LSA已经收到。


三、 OSPF LSA 封装

上面介绍的5中OSPF packet 是用来建立并维持邻居关系并交换和保持链路状态数据库同步的。其交换和存储的正是下面要介绍的5中LSA。
1、Router links
2、Network links
3、Summary link(IP network)
4、Summary link(ASBR)
5、AS external link
下面通过介绍不同LSA的包的内容,来介绍一下OSPF是如何通过LSA来描述area 的拓扑,及area内包含的网段。并通过LSA来学习area 外部,AS外部的路由。


3.1 OSPF LSA Common Header

OSPF报文详解_链路_07

作用:通过LS type,Link State ID,Advertising Router, 来唯一的确认一个LSA,通过LS age,LS sequence number 用来唯一确认该LSA最新的实例。
字段说明:
LS age:LSA被生成以后到现在的时间。
Options:可选的能力支持,同Hello。
LS type:头部下面跟随的LSA的类型(1-Router links;2-Network links;3-Summary links(IP network);4-Summary link(ASBR);5-AS external link)
Link State ID:表示该LSA描述的网络环境(internet environment),根据不同的LS type,有不同的值,Router links 其值为router's OSPF Router ID; Network links其值为 IP interface address
of the Designated Router;Summary link(3)其值为IP network number;Summary link(4)其值为ASBR's Router ID;AS external link其值为IP network number.
Advertising Router:生成改LSA的router's router ID。
LS sequence number:LSA 序列号用来检测旧的或者重瞳的LSA。
LS checksum:整个LSA的一个校验值。
length:LSA的长度,包括头部。


3.2 Router link advertisement

OSPF报文详解_OSPF_08

作用:描述router上属于相应area的interface(or link)的state 和 cost。该Router的所有的属于一个area的link必须被包含在一个Router links advertisement里面。area里面的每个router生成。其link State ID为生成该LSA的路由器的Router ID.
字段说明:
E/B: E表明router是否是ASBR,B表明router是否是ABR
#links:改LSA中包含的LINK的数量。
Type:link的类型 1-Point-to-piont;2-transit network;3-stub network;4-Virtual link.
Link ID:定义该link连接的对象,针对不同的link type其值不同,P-2-P其值为Neighboring router's ID;Transit-network其值为IP address of Designated Router;Stub-network其值为IP network/sunet number;Virtrual Link 其值为Neighboring router's ID.
Link Data:其值也根据链路类型来确定:Stub-network其值为network mask;其他类型该值为router 关联接口的IP 地址。
TOS 0 metric: TOS(Type of Service在IP里面定义的服务类型)0 的metric 值。也就是cost。


3.3 Network link advertisement

OSPF报文详解_OSPF_09

作用:由transit-network(multi-access network)的Designated Router生成,描述所有连接到该multi-access network的router。其Link State ID 为DR's interface ip.
字段说明:
Network Mast:transit-network 的网络掩码。
Attached Router:附加(连接)在该multi-access network的路由器的router-id ,包括Designated Router 其自己的router ID.


3.4 Summary link advertisement

OSPF报文详解_链路_10

作用:由ABR(Area Border Router)生成,一个Summary links advertisement 只能包含一条属于本AS但是是area外的destination route。其lsa header里的Link State ID就是其要通告的destination route(IP network number)
字段说明:
Network Mast:Link State ID 里面IP network number 的网络掩码。IP network number+ Network Mask 形成该LSA传递的路由的具体的目标网络。
TOS/metric:该路由针对于不同的TOS的metric值。
TYPE-4
作用:由ABR生成告诉区域内的路由器通告AS external link advertisements 的ASBR(Autonomous System Boundary Router)的位置。其LSA header 里面Link State ID的值为 ASBR的 Router ID.
字段说明:
Network Mask: 在该类型的SLA里,该字段没有意义,必须置0.


3.5 AS External Link advertisement

OSPF报文详解_IGP_11

作用:由ASBR生成,一个AS external links advertisement 只能包含一条本AS外部的destination route。其lsa header里的Link State ID就是其要通告的destination route(IP network number)
字段说明:
Network Mast:Link State ID 里面IP network number 的网络掩码。IP network number+ Network Mask 形成该LSA传递的路由的具体的目标网络。
E:externel metric 类型。置1表示Type2 external metric(只使用外部初始的cost,改路由在AS内部传递其metric不随着内部路径成本的增加而增加)。置0表示Type 1 external metric(意思是路由的metric随着内部路径成本的增加而增加)
TOS/metric:该路由针对于不同的TOS的metric值。
Forwarding address:第三方转发地址。数据包应该被发送到该地址进行下一步的转发,而不是发送到ASBR上。如果改地址为0.0.0.0,则数据包路由到ASBR上,之后再进行下一步的转发。


四、OSPF 工作原理

OSPF是如何通过5中LSA来构建area 拓扑和学习路由的:
其实网络就是由点(路由器以及附着在路由上的stub network)和线(link/network)组成。
OSPF Router通过Router LSA学习到一下信息:1)、标识出来一个路由器(Router ID);2)router 上的stub network比如interface vlan,loopback interface;3)、和point-to-point link 网段连接的Router的 Router ID.
OSPF Router通过Network LSA学习到multi-access network 里面附着的Router。
在同一个区域内的所有OSPF Router的LSDB同步以后,Router 就可以计算出一张完成的区域内路由器连接拓扑图了。到该area内的目的网络的路由,OSPF Router 以自己为根根据不同链路的cost 最后计算出一条到该目的地网络的最短路径。
area 外部但是属于AS内部的目的网络路由,区域内的路由器通过ABR通告的summary LSA 来学习到(ABR就是一个AREA 的出口)
AS外部的路由,AS内部的路由器通过ASBR通告的 AS external LSA 来学习到。ASBR就是一个AS的出口。