计算机网络知识点——9.网络层之OSPF协议

链路状态(link state)路由算法:

利用最短路径算法(例如:Dijkstra最短路径算法)求出一个节点(源节点)到所有其它节点的最短路径。

(Dijkstra算法可参考如下:点击打开链接 点击打开链接

利用这些最短路径上的下一个节点作为下一跳得到源节点的转发表(路由表)。


OSPF协议(open short path first)采用链路状态路由算法,他可能是在大型企业使用最广泛的内部网关协议(IGP)。

OSPF协议的简单描述:

  1. 周期性的收集链路状态,并扩散给AS中的所有路由器;
  2. 用收到的链路状态建立整个AS的拓扑结构图;
  3. 利用Dijkstra算法计算到AS表中所有网络的最短路径;
  4. 利用这些了路径上的下一跳建立路由表。

问:一个OSPF路由器通常使用什么算法来求到所有目的地的最短路径?
答:Dijkstra算法

把网络转变成图:

链路状态通告(Link State Advertisement)

  • N1和N2是多路访问网络,例如:以太网
  • N3为点到点网络,例如:ppp

 

对于每个中转网,要选举一个直连路由器作为其指定路由器(designated router, DR)
 如果图中点到点网络没有配置IP地址,则不要节点N3 

例:下图的OSPF网络中,R1~R5的router LSA是什么?

链路类型取值:
1 Point-to-point network
2 Link to transit network

3 Link to stub network

从R1:

到(to:) 开销(metric) 链路类型(link type)
N1 6 3
N2 10 2

从R2:

开销 链路类型
N5 5 1
N2 10 2
R5 5 1

从R3:

开销 链路类型
N2 10 2
N3 3 3

从R4:

开销 链路类型
N2 10 2
N4 5 3
N6 6 1
R5 6 1

从R5:

开销 链路类型
N5 4 1
R2 4 1
N6 7 1
R4 7 1

N2的Network LSA是什么?

从N2:

开销
R1 0
R2 0
R3 0
R4 0

R5的路由表是什么?

目的 开销 下一跳
N1 20 R2
N2 14 R2
N3 17 R2
N4 12 R4
N5 4 -
N6 7 -

OSPF协议的详细描述:

  1. 发现邻居:OSPF路由器每10sHello Inverval)向邻居发送Hello分组。如果40s(Dead Interval,4 times hello interval)都收不到邻居发来的Hello分组,则把到邻居的链路标记为失效。多路访问网络采用多播(224.0.0.5,all OSPF routers)发送Hello分组。一个Hello分组包含优先权、已知的邻居(收到过Hello)、DR和BDR。
  2. 完全相邻:在发现邻居之后,OSPF路由器将与邻居交换链路状态数据库中的LSA,请求得到更新的或者没有的LSA。在与邻居的链路状态数据库变得完全一样时,他们就处于完全相邻状态(fully adjacency)。
  3. 生成LSA:每30分钟或链路变化时,每个OSPF路由器会生成router LSA,中转网的DR会生成network LSA。
  4. 扩散LSA:产生的LSA立即封装为Update分组,被可靠地扩散出去(需要认证)。每次产生的LSA的序号会加1.序列号越大表示越新。若通过收到多个LSA,由发出此LSA的路由器ID(发通告路由器),链路状态和序列号唯一确定。通过序号,也可以防止扩散形成回路,第二次1收到来自相同的发通告路由器、相同LSA类型和相同序号的LSA将丢弃它。
  5. 收集LSA:路由器收集到LSA之后,用新LSA替换链路状态数据库中旧LSA。如果一个LSA在60分钟(max age)没有被更新,它将从链路状态数据库移除。
  6. 计算最短路径:当链路状态数据库被改变时,OSPF路由器将利用Dijkstra算法计算到所有网络的最短路径。
  7. 建立路由表:利用得到的最短路径产生路由表。

OSPF开销:


开销的实际计算方法: reference-bandwidth/bandwidth (Mbps)
开销必须为大于 0 的整数, reference-bandwidth 的默认值为 100

 修改reference-bandwidth的方法:#ospf auto-cost reference-bandwidth 1000

数据库同步:


DROther把所有DD多播(224.0.0.6)DRBDRDR单播确认, DR把新的DD多播(224.0.0.5)给该网络的所有OSPF路由器。对于无DR网络, OSPF路由器直接多播(224.0.0.5)DDLSU给所有OSPF路由器。

路由器ID:

  • OSPF协议采用路由器ID(Router ID,RID)标识每一个路由器
  • 路由器ID由以下方法得到:
  1. 使用直接配置的RID#router-id id 
  2. 所有所动环回接口中最大的IP地址
  3. 所有活动物理接口中最大的IP地址
  • 除非路由器重启、所选接口故障或关闭或IP地址改变、重新执行了router-id命令, RID将保持不变。

LSA定时器:

  • 10(Hello Interval)向邻居发送一次Hello4倍的hello interval(Dead Interval40)没有收到邻居的Hello就认为邻居失效。
  • 30分钟会产生新的LSA,最小间隔时间为5秒。
  • 每个LSA都有年龄字段(age),发给邻居时被设置为0,在链路状态数据库中age会不断增长,增长到Max Age(默认为60分钟)LSA被标记为失效。失效的LSA会被扩散到整个AS,令AS的所有路由器把该LSA从链路状态数据库中移除。
  • 存储在链路状态数据库中的LSA10分钟会被计算校验和,如果有错将被删除。
  • 接收来自邻居的LSA的最小间隔时间为1秒。
  • 计算最短路径的最小间隔时间为10秒。

问:如果一个OSPF路由器的链路没有变化,它每隔多长时间会扩散它的LSA?
A.60分钟
B.30分钟
C.30秒
D.60秒

答:B

OSPF分组格式:


OSPF分组类型:

1--Hello Packet
2--Database Description Packet
3--Link State Request Packet
4--Link State Update Packet

5--Link-State Acknowledge Packet

224.0.0.5 -- All OSPF Router

224.0.0.6 -- OSPF DR or BDR

OSPF可以分区,至少要有一个区,即主干区(0.0.0.0

LS Update分组:


  • 发出通告路由器ID为产生本分组的路由器ID
  • 链路状态ID用于区分不同的。 Router LSA的链路状态ID与发出通告路由器ID相同,Network LSA的链路状态ID为网络号。
  •  LS类型:

1--Router LSA  

2--Network LSA

3--Network Summary LSA 

4--ASBR Summary LSA(E1E2)

5--AS-External LSA

6--Group Membership LSA

7--NSSA External LSA(N1N2)

* type1~4都被限制在本区扩散。

Router LSA:

10.1.1.1的router LSA:


  • V位:本路由器为虚链路的一个端点。
  • E位:本路由器为一个ASBR
  •  B位:本路由器为一个ABR
  • 长度: OSPF主体的长度,即LSA头的长度加上LSA主体的长度。

Network LSA:


网络10.4.7.0/24Network LSA :


OSPF的特点:

  • 所有的OSPF消息都要认证(防止恶意入侵)
  • 路由表中允许多个相同开销的路径存在(RIP只允许存在一条路径),可以实现负载均衡。
  • 对于每条链路,允许同时有多个(TOS)开销。
  • 多播OSPF (MOSPF)使用与OSPF相同的链路状态数据库(思科路由器不支持) 
  • 在大型路由选择域中 OSPF 可以 分区  
  • RIP 收敛快而且更安静
  • 实现起来 更复杂 ,需要 更多的计算开销


















猜你喜欢

转载自blog.csdn.net/n1neding/article/details/80796374