姓名
xiaoyu888
OSPF 基本概念单与区域配置 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

完成日期
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 08.2.21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O
S
P
F 的基本概念
1 OSPF Open Shortest Path First )开放式最短路优先协议,是基于开放标准的链路状态路由选择协议.具有更适用于规模较大的网络环境.
2 :内部网关路由协议( IGP ),用于在单一自治系统( Autonomous   System-AS )内决 策路由[自治系统< AS >――执行统一路由策略的一组网络设备组合(运行相同路由协议的路由器相连组成的区域)];外部网关路由协议( EGP ),用于多个自治系统之间的执行路由.
3 OSPF 的区域:本区域只维护本区域的完整链路状态协议,划区域的目的是:优化网络环境在一个自治系统的区 ID 绝对不一样
4 OSPFOSPF 是链路状态路由协议,链路状态路由协议中的路由器明白 OSPF 网络内的链路状态信息 OSPF 是链路状态路由协议,链路状态路由协议中的路由器了解 OSPF 网络内的链路状态信息。

5 :链路状态路由协议中,直连的路由器之间建立邻接关系,互相“交流”链路信息,来“画”出完整的网络结构
6 Router IDRouter ID :是在 OSPF 区域内唯一标识一台路由器的 IP 地址
Router ID 选取规则: a :首先,路由器选取它所有 loopback 接口上数值最高的 IP 地址
b :如果没有 loopback 接口,就在所有物理端口中选取一个数值最高的 IP 地址
7 :链路状态路由协议中的数据库类型
邻居列表

列出每台路由器全部已经建立邻接关系的邻居路由器
链路状态数据库( LSDB

列出网络中其他路由器的信息,由此显示了全网的网络拓扑
路由表

列出通过 SPF 算法计算出的到达每个相连网络的最佳路径
8 OSPF 邻接关系的建立;邻居的三要素( a c d b 为可选的一条):
a Area-id :两个路由器必须在共同的网段上,它们的端口必须属于该网段上的同一个区域,且属于同一个子网
b :验证( Authentication OSPF ):同一区域路由器必须交换相同的验证密码,才能成为邻居 (可选的部分
c Hello Interval Dead Interval OSPF 协议需要两个邻居路由器的这些时间间隔相同,否则就不能成为邻居路由器。
d stub 区域标记:两个路由器可以在 Hello 报文中通过协商 Stub 区域的标记来成为邻居。
9 OSPF 的网络类型:    
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
Hello 时间是 10s

网络类型
举例
广播
以太网
组播地址 224.0.0.5

点到点
PPP HDLC
Hello 时间是 30s 303333030 30s30s
点到多点
多个点到点链路的集合
非广播多路访问 NBMA (非广播多址访问)
帧中继、 X.25

 

  邻接关系的建立过程:
RA

RB

Down

Down

Init

2-way

2-way

Full

Hello(neighbor= “” )

Hello(neighbor= RA )

Hello(neighbor= RB )

Hello(neighbor= “” )

Init

DBD Seq

DBD Seq

ExStart

ExStart

DBD

DBD

ExChange

ExChange

LSR

Loading

LSU

LSR

LSU

Loading

Full

<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
     1 ): RA 发送一Hello 报文,在开始,RA 没有任何邻居,所以这个报文的邻居字段是空的。

    2 ): RB 接受到RA的HELLO 报文,RB会为A 创建一个邻居数据结构,并将A 的状态设为init 状态(初始状态)。

    3 ): 同理,RB 也会进行同样的运动,发送HELLO 报文,neighbor 字段也是空的,A 接受到这个HELLo 报文,会进行同样的处理。

    4 ): 这时,路由器会对对方的HELLO 报文做出HELLO 报文的响应,在这个报文的其中,会在邻居的字段中这置对方的路由器ID (我们以B A 的响应为例)就会设置有A 的路由器ID 。进入2-way 状态。在这时和会根据RouterID 选举DR BDR

    5 ): 当路由器A 接收到含有自己的路由器ID HELLO 报文,A 就会将为B创建一个邻居数据库,并把B的状态设置为Exstart 状态,路由器A 会一个空的数据库描述报文(没有包含LSA的的摘要),在这个报文中,会将数据库描述报文的序列号设置为x ,同时设置初始位用于标示这个报文是路由器A 进行本次Exchange 的最初的DBD 报文。

    6 ): 路由器B 收到A DBD 报文,就会将A 的状态转换位Exstart ,同时RB 响应RA ,并设置这个DBD 的序列号位y

    7 ): RA 收到 RB DBD 报文,就会将 RB 的状态转换为 Exchange ,路由器 A 产生一个 DBD 报文,使用 RB 的序列号 y ,同时该报文将会传送 RA LSA 头部。

    8 ): 路由器B 收到A 的报文DBD ,将A 的状态转换为Exchange ,它也会DBD 报文(包含RB 自己的LSA 头部),并却使序列号变为y+1.

    9 ): RA 收到RB 的报文后,RA 会发送一个相同序列号的确认报文。延续该过程,RB 发送以一个单一的DBD报文,等待RA 的确认(序列号相同)。然后RB再发送一个DBD 报文,直到RB 发出包含最后一个LSA摘要的DBD报文。

    10 ): RA 收到上述报文后,并确认是最后的LSA,就会认为ExChange 已经完成,RA 的链路状态请求列表中还存在LSA条目,因此它会装换为loading 状态。

    11 ): 路由器RB 收到最后以个DBD 时,B A 的状态转为FULL 状态,因为它没有LSA条目了

   12 RA 发送链路状态请求报文,RB 通过链路状态更新报文发送RA 的LSA的通告,延续该过程,直到RA的请求列表为空,达到FULL 状态,整个过程结束!

10 :指定路由器( DR ):
一个网段上的其他路由器都和指定路由器( DR )构成邻接关系 ,而不是它们互相之间构成邻接关系
备份指定路由器( Backup Designated Router BDR

通过 Hello 报文选择 DR BDR 来代表 OSPF 网段
其他的路由器 (DRothers) 只和 DR BDR 路由器之间形成邻接关系

DR BDR 的选择 :通过组播发送 Hello 报文( DRothers 地址是 224.0.0.5 DR BDR 的组播地址是 224.0.0.6
具有最高 OSPF 优先级的路由器会被选为 DR
如果 OSPF 优先级相同,则具有最高 Router ID 的路由器会被选为 DR
只有接口类型为广播接口和 NBMA 口类型 选择 DR BDR

DR BDR

 

建立开始

 

信息交流

11 OSPF包的类型:

包类型

描述

Hello (三种情况有包)

用于邻居路由器之间建立和维护邻接关系

数据库描述包DBD

描述每台OSPF路由器的链路状态数据库

的内容

链路状态请求包LSR

请求链路状态数据库的部分内容

链路状态更新包LSU

传送链路状态数据通告LSA给邻居路由器

链路状态确认包LSAck

确认邻居发过来的LSA已经收到

 OSPF Hello协议:

          当路由器上启动OSPF进程时,每台路由器都会间隔一定的时间发送Hello

Hello 包通过组播地址224.0.0.5发送

OSPF 路由器使用Hello包发起建立邻接关系并监视这种关系的存在和消失

C

在广播网或者点对点网上,Hello的发送间隔是10秒;在NBMA网络上,Hello的发送间隔是30

它用来在一个广播网络或非广播多址的网络上选取指定路由器和备份指定路由器

OSPF 的实验

 

 

 

 

 

实验拓扑图
S1/1

Loopback 0 3.3.3 .3
192.168.20.2/24

Loopback 0 1.1.1 .1

S1/1

192.168.10.2/24

S1/0

A

Loopback 0 2.2.2 .2

192.168.10.1/24

192.168.20.1/24

C

B

S1/0

 

 

实验原理
链路状态数据库

最短路径树

Djkstra 算法

建立邻接关系

学习链路状态信息

路由表

    首选路由器会保存 3 张表:邻居列表、 LSDB (链路状态数据库)、路由表。在开始,要建立邻接关系(过程如上面的蓝色字体),建立邻接关系后,就会学习链路状态信息,建立链路状态数据库,在这时还没有完,会通过 Djkstra 算法(最短路径算法 SPF 算法)算出最短路径树,这时根据最短路径树得出路由表。这时就根据路由表来转发信息。

实验步骤
路由器 A 的配置 :
RouterA >enable                                       进入特权模式
RouterA#interface loopback 0                                进入还回口
RouterA(config-if)#ip  address 1.1.1.1 255.255.255.0            设置 IP 地址
RouterA(config-if)#no shutdown               开启
RouterA(config-if)#exit                   退出
RouterA(config)#interface serial 1/0              进入串口 1/0
RouterA(config-if)#ip address 192.168.10.1 255.255.255.0     设置 IP 地址
RouterA(config-if)#no shutdown               开启
RouterA(config-if)#exit                   退出
RouterA(config)#router ospf 1                启动 OSPF 路由进程
RouterA(config-router)#network 192.168.10.0 0.0.0.255 area 1    指定 OSPF 协议运行的接口所在区域
RouterA(config-router)#exit                                 退出
RouterA(config)#^Z                                      Ctrl+Z 退出
RouterA#ping 192.168.20.2                                检测网络连通性
Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 200/250/360 ms

RouterA#show ip protocols                                  查看路由器运行的协议
Routing Protocol is "ospf 1"

  Outgoing update filter list for all interfaces is not set

  Incoming update filter list for all interfaces is not set

  Router ID 1.1.1.1

  Number of areas in this router is 1. 1 normal 0 stub 0 nssa

  Maximum path: 4

  Routing for Networks:

    192.168.10.0 0.0.0.255 area 1

    192.168.20.0 0.0.0.255 area 1

  Routing Information Sources:

    Gateway         Distance      Last Update

    2.2.2.2              110      00:00:17

  Distance: (default is 110)

 

 

RouterB (config)#interface loopback 0                   进入还回口
RouterB(config-if)#ip address 2.2.2.2 255.255.255.0           配置 IP
RouterB(config-if)#no shutdown                            开启
RouterB(config-if)#exit                                  退出
RouterB(config)#interface serial 1/1                         进入 S1/1 接口
RouterB(config-if)#ip address 192.168.10.2 255.255.255.0      配置 IP
RouterB(config-if)#no shutdown              开启
RouterB(config-if)#exit                  退出
RouterB(config)#interface serial 1/0             进入S 1/0 接口
RouterB(config-if)#ip address 192.168.20.1 255.255.255.0      配置 IP
RouterB(config-if)#no shutdown                           开启
RouterB(config-if)#exit                                  退出
RouterB(config)#router ospf 1                             启用 OSPF 进程
RouterB(config-router)#network 192.168.10.0 0.0.0.255 area 1   指定 OSPF 协议运行的接口所在区域
RouterB(config-router)#network 192.168.20.0 0.0.0.255 area 1    指定 OSPF 协议运行的接口所在区域
RouterB(config-router)#exit                                退出
RouterB(config)#exit                                      退出
RouterB#show ip ospf neighbor                            查看邻居列表
Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3 .3           0   FULL/  -        00:00:29    192.168.20.2    Serial1/0

1.1.1 .1           0   FULL/  -        00:00:38    192.168.10.1    Serial1/1

RouterB#show ip ospf interface serial 1/1                    查看运行 OSPF 的状态
Serial1/1 is up, line protocol is up

  Internet Address 192.168.10.2/24, Area 1

  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_POINT, Cost: 64

  Transmit Delay is 1 sec, State POINT_TO_POINT,

  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

    oob-resync timeout 40

    Hello due in 00:00:00

  Index 1/1, flood queue length 0

  Next 0x0(0)/0x0(0)

  Last flood scan length is 1, maximum is 1

  Last flood scan time is 0 msec, maximum is 0 msec

  Neighbor Count is 1, Adjacent neighbor count is 1

    Adjacent with neighbor 1.1.1.1

  Suppress hello for 0 neighbor(s)

 

 

 

RouterC (config)#interface loopback 0                    进入还回口
RouterC(config-if)#ip address 3.3.3.3 255.255.255.0           配置 IP
RouterC(config-if)#no shutdown                            开启
RouterC(config)#interface serial 1/1                        进入 S1/1 接口
RouterC(config-if)#ip address 192.168.20.2 255.255.255.0      配置 IP
RouterC(config-if)#no shutdown                            开启
RouterC(config-if)#exit                                  退出
RouterC(config)#router ospf 1                             启用 OSPF 进程
RouterC(config-router)#network 192.168.20.0 0.0.0.255 area 1    指定 OSPF 协议运行的接口所在区域
RouterC(config-router)#end                               退出
RouterC#ping 192.168.10.1                               检测网络的连通几性
Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/241/416 ms

实验注意
1 :启用 OSPF 时需在配置进程号,标示运行的进程。进程号的范围是 1 65535 之间。
2 :指定 OSPF 协议运行的接口所在区域时要使用网络号,反向掩码,区域号。(使用
正向掩码也可以)。
3 :骨干网络的区域 ID 0

 

 

 

特殊的命令
1 show ip protocols                       查看运行 OSPF 的路由协议
2 ospf auto-cost reference-bandwidth  X      更改路由器接口的参考带宽
3 ip ospf cost  Y                         修改路由器接口的成本
4 ip ospf priority Z                        修改多点访问的接口优先级
5 debug ip ospf adj                        查看 LSA 泛洪过程
6 show ip ospf database                     查看链路状态数据库
7 show ip route                           查看路由表
8 show ip ospf                            查看 OSPF 的配置
9 show ip ospf interface 接口                查看 OSPF 接口数据结构
10 network 0.0.0.0 255.255.255.255 area 1     通告所有接口
11 shwo ip ospf process-id                  显示指定进程的信息

 

实验结论
RouterC ping 192.168.10.1
Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/241/416 ms

实验完成