原理概述(无聊的时刻)
为了弥补距离矢量路由协议的不足,IETF组织于20世纪80年代末开发了一种基于链路状态的内部网关协议——就是今天的主角OSPF,开放式最短路径优先。
OSPF作为基于链路状态的协议,具有收敛快,路由无环,扩展性好等优点,被快速接受并广泛使用。链路状态算法路由协议互通通告的是链路状态信息,每台路由器都将自己的链路状态信息(包含接口的IP地址和子网掩码,网络类型,该链路的开销等)发送给其他路由器,并在网络中泛洪,当每台路由器收集到网络内所有链路状态信息后,就能拥有整个网络的拓扑情况,然后根据整网拓扑情况运行SPF算法,得出所有网段的最短路径。
OSPF支持区域的划分,区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。一个网段只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪个区域。区域0为骨干区域,骨干区域负责在非骨干区域之间发布区域间的路由信息,在一个OSPF区域里只有一个骨干区域。
实验拓扑
IP配置(IP 地址的主机位为其设备编号,为了方便使用)
实验步骤
1:配置IP略
2:我这里先从R1上配置OSPF,OSPF后跟的是进程号,area后跟的是区域,0为骨干区域。
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]
3:用network命令指定运行OSPF的接口和所属的区域(注意这里子网掩码用的是反码)
[R1-ospf-1-area-0.0.0.0]network 172.16.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 172.16.20.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
4:检查配置
[R1]display ospf interface
OSPF Process 1 with Router ID 172.16.10.1
Interfaces
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
172.16.10.1 Broadcast DR 1 1 172.16.10.1 0.0.0.0
172.16.20.1 Broadcast DR 1 1 172.16.20.1 0.0.0.0
172.16.1.254 Broadcast DR 1 1 172.16.1.254 0.0.0.0
Router-ID可以手动配置,无回环接口,以真实接口最大ip为准的规则自行选举route-id。在此进程,有三个接口加入OSPF进程,Type为以太网默认的广播网络类型,State为该接口当前的状态,显示为DR状态,即表示为这三个接口在它们所在网段中都被选举为DR。
5:R2,R3配置同理
[R2-ospf-1-area-0.0.0.0]network 172.16.10.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 172.16.30.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 172.16.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 172.16.20.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 172.16.30.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 172.16.3.0 0.0.0.255
6:检查ospf邻居关系
[R1]display ospf peer
OSPF Process 1 with Router ID 172.16.10.1
Neighbors
Area 0.0.0.0 interface 172.16.10.1(GigabitEthernet0/0/0)'s neighbors
Router ID: 172.16.10.2 Address: 172.16.10.2
State: Full Mode:Nbr is Master Priority: 1
DR: 172.16.10.1 BDR: 172.16.10.2 MTU: 0
Dead timer due in 33 sec
Retrans timer interval: 5
Neighbor is up for 00:04:06
Authentication Sequence: [ 0 ]
Neighbors
Area 0.0.0.0 interface 172.16.20.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 172.16.20.3 Address: 172.16.20.3
State: Full Mode:Nbr is Master Priority: 1
DR: 172.16.20.1 BDR: 172.16.20.3 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 5
Neighbor is up for 00:02:40
Authentication Sequence: [ 0 ]
这条命令可以看到很多东西,Router-ID表示邻居的路由器标识,Address可以查看邻居的ospf接口ip地址,通过state可以查看目前与该路由器的ospf邻居状态,通过priority可以查看当前该邻居ospf接口的DR优先级等。
7:再查看一下R1的ospf路由表
[R1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 3 Routes : 4
OSPF routing table status : <Active>
Destinations : 3 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
172.16.2.0/24 OSPF 10 2 D 172.16.10.2 GigabitEthernet
0/0/0
172.16.3.0/24 OSPF 10 2 D 172.16.20.3 GigabitEthernet
0/0/1
172.16.30.0/24 OSPF 10 2 D 172.16.20.3 GigabitEthernet
0/0/1
OSPF 10 2 D 172.16.10.2 GigabitEthernet
0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
Destination/Mask标识了目的网段和前缀及子网掩码,proto标识了此路由信息是通过ospf协议获取的,pre标识了路由优先级,cost标识了开销值,nexthop标识了下一跳地址,interface标识了此前缀的出接口。
检查实验成功
PC>ping 172.16.3.1
Ping 172.16.3.1: 32 data bytes, Press Ctrl_C to break
From 172.16.3.1: bytes=32 seq=1 ttl=126 time=15 ms
From 172.16.3.1: bytes=32 seq=2 ttl=126 time=16 ms
From 172.16.3.1: bytes=32 seq=3 ttl=126 time=31 ms
From 172.16.3.1: bytes=32 seq=4 ttl=126 time=16 ms
From 172.16.3.1: bytes=32 seq=5 ttl=126 time=16 ms
--- 172.16.3.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 15/18/31 ms
没有问题