OSPF(Open Shortest Path First)协议

一.OSPF基础

1.特性

OSPF是目前使用最广泛的IGP路由协议,属于链路状态路由协议,使用Dijkstra算法,也被称为SPF(Short Path First最短路径算法)。

IETF标准:OSPF可以被不同厂商的设备所支持

无环路由协议:执行的是SPF算法,不会产生路由环路

无类路由协议:支持VLSM(可变长子网掩码)和CIDR(无类别域间路由)

拥有不受限的跳计数:可以应用于大型网络

层次型:易拓展,路由器的负担不会随着网络规模的增大而急剧增加

区域化设计:减少路由更新的流量,降低内存、cpu和带宽的使用

快速收敛:使用触发式更新,路由可以快速收敛

支持验证:OSPF支持针对区域和链路的验证

2.OSPF术语

链路(link):当一个接口加入OSPF进程,它就被认为是一个ospf链路

链路状态(Link-State):链路的状态信息,包括接口的IP地址和子网掩码、接口网络类型、链路的花费、链路上的邻居

路由器ID(Router ID,简称RID):用于识别路由器的IP地址,可以手工指定;如果没有指定,则选择所有环回接口中最高的IP地址;若没有环回口使用,选择物理接口中最高的IP地址。

邻居(Neighbor):连接在一个公共的网络上的路由器(≥2)

邻接(Adjacent):2台路由器之间的关系,允许直接交换路由更新数据。OSPF只与建立了邻接关系的邻居共享路由信息。邻居和邻接没有直接关系。

区域(Area):通过划分区域实现分层设计

指定路由器(DR,Designated Router):OSPF路由器在多路访问的网络中需要DR,DR代表该多路访问网络中的所有路由器,每台路由器都把拓扑变化发送给DR和BDR,然后DR通知该多路访问网络中的其他路由器。

备用的指定路由器(BDR,Backup Designated Router):备用DR,DR离线时代替DR工作。

花费(cost):每条链路都有一个花费,OSPF的唯一度量值。根据链路的带宽计算而来,可以人为修改。

ABR(area border router):位于一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器。ABR被认为同时是OSPF主干和相连区域的成员。

ASBR(自治系统边界路由器,Autonomous System Border Router):一般是位于非OSPF区域和OSPF区域间互联的路由器。ASBR可以运行OSPF和另一路由选择协议(如RIP),把OSPF上的路由发布到其他路由协议上。ASBR必须处于非存根OSPF区域中。 在NSSA区域中,对7类LSA转换为5类LSA的路由器也是ASBR。所以说,ASBR不一定在2个协议之间,对于产生5类LSA的都是ASBR

3.基本配置

Router ospf 进程号

network IP子网 反掩码 area area-id

二.报文

1.报文格式

数据链路层头部+IP包头部+OSPF包头+OSPF数据

OSPF(Open Shortest Path First)协议_第1张图片

数据链路层头部:OSPF组播IP地址224.0.0.5(非DR和BDR使用的地址)和224.0.0.6(DR和BDR使用的地址),组播MAC地址对应01-00-5E-00-00-05/06

IP包头部:协议号89,源IP是发送路由器的IP,目的IP是组播地址224.0.0.5/6

OSPF包头:包括RID和区域号以及OSPF包类型

OSPF数据:每种OSPF包的具体内容

2.OSPF报头格式

OSPF用IP报文直接封装协议报文,协议号为89。OSPF分为5种报文:Hello报文、DBD报文、LSR报文、LSU报文和LSAck报文。

OSPF这五种报文具有相同的报文头格式,长度为24字节。

OSPF(Open Shortest Path First)协议_第2张图片

Version:OSPF版本号,当前为OSPFv2。OSPFv1实验版本,v3针对IPv6。

Type:包类型,1为Hello报文,2是DBD,3是LSR,4是LSU,5是LSAck

Packet length:报文长度

Router ID:路由器ID,每台路由器的唯一标识

Area ID:区域号,主区域为0

Checksum:校验和

Autype(Authentication Type):验证类型。0:不使用,1:明文,2:MD5

Authentication:验证相关信息,包括密码

重点讲Hello包和LSU的分类

①Hello包

Hello报文被用来建立和维护OSPF的邻接关系。OSPF的Hello报文的作用主要有:发现OSPF邻居,建立和维护邻接关系;在多路访问的网络中选择DR和BDR。

OSPF泛洪链路状态通告给其他路由器之前,需要先建立邻接关系。所有启用OSPF协议的接口上都发送Hello报文,以判断是否有其他ospf路由器运行在相同的链路上,一般以组播方式发送,组播IP:224.0.0.5。

②DBD(Database Description,数据库状态描述包)

DBD是发送路由器链路状态数据库的一个简短描述。

③LSR(Link-State Request,链路状态请求包)

接受路由器可以发送LSR来请求发送路由器DBD中的某些条目详细信息。

④LSU(Link-State Update,链路状态更新包)

用来更新OSPF路由信息,回复LSR请求。LSU被分成多种类型的LSA(Link-State Advertisement)

⑤LSAck(Link-State Acknowledgement,链路状态确认)

当一个LSU被收到时,路由器发送LSAck进行确认

三.LSA类型

共11种类型LSA(链路状态通告),其中6类常用

1、路由器LSA (Router LSA)

由区域内所有路由器产生,并且只能在本个区域内泛洪广播。

这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。

2、网络LSA (Network LSA)

由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。

网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。

3、网络汇总LSA (Network Summary LSA)

由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。

在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。

如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。

4、ASBR汇总LSA (ASBR summary LSA)

也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。

5、自治系统外部LSA (Autonomous system external LSA)

由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。

自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。

7、NSSA外部LSA (NSSA External LSA)

由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。

在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。

四.选路

OSPF的四种路径类型:

1、O 域内路由

2、O IA 域间路由

3、E1的外部路由

4、E2的外部路由

外部路由重分布进OSPF有两种类型

·OE1: 重分布进OSPF的路由默认为E2,Cost=20,且传递过程中不改变COST。

·OE2: 如果改为E1类型,则在传输过程中会累加每个入接口的cost值

OSPF的选路原则:

1、域内路由优于域间路由

2、域间路由优于外部路由

3、OE1的路由优于OE2的路由

如果一台路由器收到两条相同的域间的路由,一条是area 0区域传过来的,一条是普通区域传过来的,则优选area 0区域传过来的。

如果有一台路由器从两个不同的ASBR收到相同的外部路由,OSPF在选择外部路由的时候,遵循的原则是:

[1] O E1优于O E2

[2] 在类型相同的情况下,Cost越小越优先

[3] 对OE2来说,在cost相同的情况下,选择到达ASBR最优的路径

OE2的路由传递时带有一个参数—forward metric,这个参数记录了OE2的路由所穿越链路的总COST值,如果一个路由器收到两条COST相同的OE2路由,将比较它们的forward metric来选出最优路由。

五.汇总

OSPF只支持手工汇总,OSPF支持两种形式的手工自动汇总:一种部署在ABR上,另一种则部署在ASBR上。

OSPF(Open Shortest Path First)协议_第3张图片

1.在ABR上执行路由汇总

在R3(ABR)上对Area2内的路由执行汇总:

R3(config)# router ospf 1

R3(config-router)# area 2 range 172.16.0.0 255.255.0.0

汇总后,在R3本地会产生一条特殊的路由,用来防环

O 172.16.0.0/16 is a summary, 00:00:06, Null0(R3接收到去往172.16.0.0/16数据包丢弃)

这条路由称为discard-route,可以用以下命令去掉:

router ospf 1

no discard-route internal

本汇总命令还可用来做路由的过滤:

router ospf 1

area 2 range 172.16.0.0 255.255.0.0 not-advertise 过滤掉172.16.0.0的网络及其所包含的子网

注意,这种汇总方式(area range)只能在ABR上配置,而且只能对ABR直接连接的区域中的Intra-Area路由(区域内部路由即“O”)执行汇总。R3执行汇总后,R1及R2的路由表中将出现172.16.0.0/16的汇总路由,而不会再学习到明细路由。如此一来,R1及R2的路由表就精简了,而且当它们需要访问R5下挂的那三个网段时,可以通过这条汇总路由到达。要强调的是,如果不是在R3,而是在R2上对R5下挂的网段进行汇总,则无法实现。因此此时R3作为ABR,已经将描述这些网段的3类LSA注入到了Area0,而在R2上,是无法对这些3类LSA进行路由汇总的。

2.在ASBR上执行路由汇总

在R1上对其自己重发布进OSPF的路由执行汇总:

router ospf 1

summary-address 10.1.0.0 255.255.0.0

完成上述配置后,R2、R3、R4及R5都会学习到一条10.1.0.0/16的汇总路由(使用Type-5 LSA描述),而不会再学习到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24这三条明细路由。

本地也会产生特殊路由来防环 O 10.1.0.0/16 is a summary, 00:00:04, Null0

用以下命令可以去掉:

router ospf 1

no discard-route external

六.认证

2种认证方法:明文,密文

3种认证范围:链路认证,区域认证,虚链路认证

具体配置方法(注意看Router后面跟的是接口还是OSPF进程)

七.网络类型

1.点到点(Point-to-Point)

2.点到多点(Point-to-Multipoint)

3.虚链路(Virtual Link)

4.广播(Broadcast)

5.非广播多路访问(NBMA)

你可能感兴趣的:(计算机网络)