用Zebra做OSPF实验 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    OSPF(开放最短路径优先)路由协议是一项链路状态型技术,是目前IGP中应用最广、性能最优的一个 协议,解决了RIP不能解决的大型、可扩展的网络需求而写的,适用于大规模的网络,

用Zebra做OSPF实验

    Zebra支持OSPFv2和OSPFv3(用于IPv6的OSPF,CISCO还未对其封装),由于条件所限,下面的OSPF实 验同样是在两台单网卡的RedHat7.2下做的。

    Zebra使用ospfd程序实现OSPF路由功能,但ospfd需要从zebra程序获得接口信息,所以zebra程序必须在 ospfd程序之前运行。ospfd不支持多个OSPF进程,我们不能指定OSPF进程号。

    初始化第一台机器:

    shell_1> cd /usr/local/etc

    shell_1> cp zebra.conf.sample zebra.conf

    shell_1> cp ospfd.conf.sample ospfd.conf

    shell_1> zebra -d

    进入zebra设置IP

    shell_1> telnet localhost 2601

    Password:

    Router> en

    Password:

    Router# conf t

    Router(config)# hostname r1

    r1(config)# int eth0

    r1(config-if)# ip address 192.168.5.121/24

    r1(config-if)# ctrl+z

    r1# copy run start

    进入第一台机器的ospf设置

    shell_1> ospfd -d

    shell_1> telnet localhost 2604

    Password:

    ospfd> en

    ospfd# conf t

    ospfd(config)# hostname r1_ospfd !改个名字好辨认

    r1_ospfd(config)# router ospf !启动ospf

    r1_ospfd(config-router)# ospf router-id 192.168.5.121 !设置router-id

    r1_ospfd(config-router)# network 192.168.5.0/24 area 0

    !最关键的,来标识路由器上哪些IP网络号是OSPF的一部分,对于每个网络,我们必须标识该网络所属 的区域。由于我们只有两台机器,当然只有一个网络,所以只需执行一个network命令就够了。

    对于我们的小网络,ospf就算配好了,下面来检验一下:

    r1_ospfd(config-router)# ctrl+z

    r1_ospfd# sh ip ospf route

    ============ OSPF network routing table ============

    N 192.168.5.0/24 [10] area: 0.0.0.0

    directly attached to eth0

    ============ OSPF router routing table =============

    ============ OSPF external routing table ===========

    r1_ospfd# sh ip ospf database

    OSPF Router with ID (192.168.5.121)

    Router Link States (Area 0.0.0.0)

    Link ID ADV Router Age Seq# CkSum Link count

    192.168.5.121 192.168.5.121 126 0x80000002 0x8584 1

    r1_ospfd# sh ip ospf int eth0

    eth0 is up, line protocol is up

    Internet Address 192.168.5.121/24, Area 0.0.0.0

    Router ID 192.168.5.121, Network Type BROADCAST, Cost: 10

    Transmit Delay is 1 sec, State DR, Priority 1

    Designated Router (ID) 192.168.5.121, Interface Address 192.168.5.121

    No backup designated router on this network

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

    Hello due in 00:00:07

    Neighbor Count is 0, Adjacent neighbor count is 0

    由于网络里没有其它的路由器,r1就把自己选为DR(指定路由器)了。Zebra对log处理可能有些问题,使 用log stdout不能显示各种debug信息,所以只能记录到文件,在shell下用tail命令查看。而且debug命令和 实际路由器也有不同。

    r1_ospfd# debug ospf event

    r1_ospfd(config)# log file /usr/local/etc/ospfd.log

    然后我们在shell下查看debug信息

    shell_1> tail -f /usr/local/etc/ospfd.log

    --------------------------------8<---------------------------------------

    2002/04/28 14:24:27 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    2002/04/28 14:24:37 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    2002/04/28 14:24:47 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    2002/04/28 14:24:57 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    2002/04/28 14:25:07 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    --------------------------------8<---------------------------------------

    我们错过了最开始的信息,看到路由器每隔10秒发送一个hello数据包,

电脑资料

用Zebra做OSPF实验》(https://www.unjs.com)。hello数据包通过多目组播地址 224.0.0.5被发送出去,如果我们打开debug ospf packet all就能很清楚的看到。

    第二台机器的设置

    前面的初始化和第一台一样,不过这里名字设成r2便于辨认,IP设成了192.168.5.123/24。

    进入第二台机器的ospf设置

    shell_2> ospfd -d

    shell_2> telnet localhost 2604

    Password:

    ospfd> en

    ospfd# conf t

    ospfd(config)# hostname r2_ospfd

    r2_ospfd(config)# router ospf

    r2_ospfd(config-router)# ospf router-id 192.168.5.123

    r2_ospfd(config-router)# network 192.168.5.0/24 area 0

    执行完network命令,我们看到第一台机器的tail -f /usr/local/etc/ospfd.log输出下面的信息:

    --------------------------------8<---------------------------------------

    2002/04/28 14:25:51 OSPF: Packet 192.168.5.123 [Hello:RECV]: Options *|*|-|-|-|-|E|*

    2002/04/28 14:25:51 OSPF: NSM[eth0:192.168.5.121:0.0.0.0]: start

    2002/04/28 14:25:52 OSPF: make_hello: options: 2, int: eth0:192.168.5.121

    2002/04/28 14:25:52 OSPF: couldn't find any VL to associate the packet with

    2002/04/28 14:25:52 OSPF: DR-Election[1st]: Backup 192.168.5.123

    2002/04/28 14:25:52 OSPF: DR-Election[1st]: DR 192.168.5.121

    2002/04/28 14:25:52 OSPF: Packet[DD]: Negotiation done (Slave).

    --------------------------------8<---------------------------------------

    r1收到r2(192.168.5.123)发过来的hello数据包,交换信息后选举DR,由于本身192.168.5.121是DR了,所以 只选举了BDR就好了。这时在r1上就能看到r2了。

    r1_ospfd# sh ip ospf neig

    Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL

    192.168.5.123 1 Full/Backup 00:00:37 192.168.5.123 eth0:192.168.5.121 0 0 0

    检验其它信息

    r1_ospfd# sh ip ospf database

    OSPF Router with ID (192.168.5.121)

    Router Link States (Area 0.0.0.0)

    Link ID ADV Router Age Seq# CkSum Link count

    192.168.5.121 192.168.5.121 1259 0x80000008 0x534e 1

    192.168.5.123 192.168.5.123 1265 0x80000006 0x534a 1

    Net Link States (Area 0.0.0.0)

    Link ID ADV Router Age Seq# CkSum

    192.168.5.123 192.168.5.123 1265 0x80000001 0x5a5a

    r1_ospfd# sh ip ospf int eth0

    eth0 is up, line protocol is up

    Internet Address 192.168.5.121/24, Area 0.0.0.0

    Router ID 192.168.5.121, Network Type BROADCAST, Cost: 10

    Transmit Delay is 1 sec, State DR, Priority 1

    Designated Router (ID) 192.168.5.121, Interface Address 192.168.5.121

    Backup Designated Router (ID) 192.168.5.123, Interface Address 192.168.5.123

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

    Hello due in 00:00:01

    Neighbor Count is 1, Adjacent neighbor count is 1

    和前面的输出信息相比,发生了很多变化,两台路由器已经相互识别了。OSPF不象RIP一样,每隔30秒 给所有的邻居广播一次完整的路由表,而是通过IP多目组播地址224.0.0.5每隔10秒发送一个很小的hello 数据包来维护邻居关系,当链路发生变化的时候,才重新计算。

    拔掉两台机器连接的网线,看ospfd.log的记录:

    --------------------------------8<--------------------------------------- 

最新文章