Zebra基本配置

由 AMD-K6 在 08-27-2004 09:29 发表:

Zebra基本配置

> > 源码: >
> * * * >
> 前言
> > >
> > > Zebra是一个路由软件包,提供基于TCP/IP路由服务,支持RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4,
> > >
> > > 和 BGP-4+等众多路由协议。Zebra还支持BGP特性路由反射器(Route Reflector)。除了传统的 IPv4路由协议
> > >
> > > ,Zebra也支持IPv6路由协议。如果运行的SNMP守护进程(需要ucd-snmp)支持SMUX协 议,Zebra还能支持路由
> > >
> > > 协议MIBs。
> > >
> > > 由以上可见,Zebra的确是一个很不错的路由系统,但比起真正的路由器就简直是小儿科,所以网络高手 就当
> > >
> > > 这文章是小孩子过家家吧,而对于象我这样的初学者(特别是没有真实设备或足够设备进行实验) 也不失为一
> > >
> > > 个学习和熟悉路由配置、路由协议的好工具。我没有实际的配置经验,对路由的技术细节也 不是十分清晰,完
> > >
> > > 全是在扔破砖头。希望路由高手指正概念错误。
> > >
> > > 安装
> > >
> > > Zebra目前最新的版本是0.92a,它的安装非常简单,我们只需从http://www.zebra.org/下载zebra-
> > >
> > > 0.92a.tar.gz,然后执行以下命令安装(本文环境是RedHat7.2):
> > >
> > > shell> tar xzf zebra-0.92a.tar.gz
> > > shell> cd zebra-0.92a
> > > shell> ./configure
> > > shell> make
> > > shell> make install
> > >
> > > 这样Zebra就安装好了,安装的执行文件:
> > >
> > > shell> ls /usr/local/sbin
> > > bgpd ospfd ripd zebra
> > >
> > > 配置文件:
> > >
> > > shell> ls /usr/local/etc
> > > bgpd.conf.sample ospfd.conf.sample zebra.conf.sample
> > > bgpd.conf.sample2 ripd.conf.sample
> > >
> > > 运行
> > >
> > > 编译安装完Zebra后,可以看到有4个可执行文件和5个配置样本文件,我们就使用它的配置样本文件:
> > >
> > > shell> cd /usr/local/etc
> > > shell> cp zebra.conf.sample zebra.conf
> > >
> > > Zebra的各进程有各自的终端接口或VTY,如果我们需要给连接到它们的端口设置别名的话,在/etc/ services
> > >
> > > 文件添加如下内容:
> > >
> > > zebrasrv 2600/tcp # zebra service
> > > zebra 2601/tcp # zebra vty
> > > ripd 2602/tcp # RIPd vty
> > > ripngd 2603/tcp # RIPngd vty
> > > ospfd 2604/tcp # OSPFd vty
> > > bgpd 2605/tcp # BGPd vty
> > > ospf6d 2606/tcp # OSPF6d vty
> > >
> > > 然后就可以启动Zebra了:
> > >
> > > shell> zebra -d
> > >
> > > 这样,Zebra就以守护进程启动了,其它的参数请参考zebra -h。
> > >
> > > 基本路由配置命令
> > >
> > > 直接用telnet连接:
> > >
> > > shell> telnet localhost 2601
> > > Trying 127.0.0.1...
> > > Connected to localhost.
> > > Escape character is '^]'.
> > >
> > > Hello, this is zebra (version 0.92a).
> > > Copyright 1996-2001 Kunihiro Ishiguro.
> > >
> > >
> > > User Access Verification
> > >
> > > Password:
> > >
> > > Zebra会提示输入口令,我们通过/usr/local/etc/zebra.conf可以看到口令是zebra,enable口令也是zebra。
> > >
> > > 输 入口令zebra,得到路由器用户模式提示符:
> > >
> > > Router>
> > >
> > > 进入特权模式:
> > >
> > > Router> en
> > > Password:
> > > Router#
> > >
> > > 输入一个问号,看看Zebra提供了多少路由命令:
> > >
> > > Router# ?
> > > configure Configuration from vty interface
> > > copy Copy configuration
> > > debug Debugging functions (see also 'undebug')
> > > disable Turn off privileged mode command
> > > end End current mode and change to enable mode.
> > > exit Exit current mode and down to previous mode
> > > help Description of the interactive help system
> > > list Print command list
> > > no Negate a command or set its defaults
> > > quit Exit current mode and down to previous mode
> > > show Show running system information
> > > terminal Set terminal line parameters
> > > who Display who is on vty
> > > write Write running configuration to memory, network, or terminal
> > >
> > > 提供的命令很少,实际路由器好多命令都没有,我们只能用有限的命令投入到无限的实验中去。
> > >
> > > Router# sh run
> > >
> > > Current configuration:
> > > !
> > > hostname Router
> > > password zebra
> > > enable password zebra
> > > !
> > > interface lo
> > > !
> > > interface eth0
> > > !
> > > line vty
> > > !
> > > end
> > >
> > > Zebra把操作系统的网络接口当做路由器的接口,所以在做比较复杂的路由实验,会需要比较多的网卡。
> > >
> > > 进入全局模式,尽可能把实际可用的配置命令都实验一遍:
> > >
> > > Router# conf t
> > > Router(config)#
> > >
> > > 自己取一个路由器名字:
> > >
> > > Router(config)# hostname r1
> > > r1(config)#
> > >
> > > Zebra比较简单,登陆口令不是在line下修改,而是直接在全局模式下用password修改
> > >
> > > r1(config)# password {password}
> > >
> > > Zebra不支持enable secret {password}这种MD5加密口令,只能使用enable password {password}来修改
> > >
> > > enable口令:
> > >
> > > r1# conf t
> > > r1(config)# enable password {password}
> > >
> > > 在路由器配置中加密所有的口令:
> > >
> > > r1(config)# service password-encryption
> > >
> > > 回到特权模式:
> > >
> > > r1(config)# exit
> > > r1# sh run
> > >
> > > Current configuration:
> > > !
> > > hostname r1
> > > password 8 alA5.vcyMAwXQ
> > > enable password 8 ksbxOFN8xcFMc
> > > service password-encryption
> > > !
> > > interface lo
> > > !
> > > interface eth0
> > > !
> > > line vty
> > > !
> > > end
> > >
> > > 我们看到刚才的明文密码都进行加密了,给我们的实验机也提高安全性。Zebra有一点比较恶心,如果我 们先
> > >
> > > 设置了service password-encryption,然后再修改口令,sh run就发现口令又都是明文的了,但是由 于有
> > >
> > > service password-encryption,所以就无法登陆了。
> > >
> > > 去掉会话超时,免得10分钟没有动作,就把我们给踢了。但是在实际的路由器配置中,为安全起见我们 最好还
> > >
> > > 是设上会话超时。
> > >
> > > r1# conf t
> > > r1(config)# line vty
> > > r1(config-line)# exec-timeout 0 0
> > >
> > > 设置日志记录,Zebra可以把日志记录到标准输出、syslog、以及指定输出文件:
> > >
> > > r1(config-line)# exit
> > > r1(config)# log stdout
> > > r1(config)# no log stdout
> > > r1(config)# log syslog
> > > r1(config)# no log syslog
> > > r1(config)# log file /usr/local/etc/zebra.log
> > >
> > > 配置接口IP地址:
> > >
> > > r1(config)# int lo
> > > r1(config-if)# ip address 127.0.0.1/8
> > > r1(config-if)# exit
> > > r1(config)# int eth0
> > > r1(config-if)# ip address 192.168.5.121/24
> > >
> > > Zebra比较奇怪,不能使用ip address 192.168.5.121 255.255.255.0这种形式设置IP。测试一下,就设置成
> > >
> > > 和Linux中使用的一样。
> > >
> > > 保存我们刚才的配置:
> > >
> > > r1(config-if)# exit
> > > r1(config)# exit
> > > r1# copy run start
> > > Configuration saved to /usr/local/etc/zebra.conf
> > > r1#
> > >
> > >
> > > 2、用Zebra做简单的RIP实验
> > >
> > > RIP是应用较早、使用较普遍的IGP,适用于小型同类网络,是典型的距离向量(distance-vector)协 议。RIP通
> > >
> > > 过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hop count)作为尺度来衡量
> > >
> > > 路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同 目标有二个不等速或不同带宽
> > >
> > > 的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支 持的跳数为15,即在源和目的网间所
> > >
> > > 要经过的最多路由器的数目为15,跳数16表示不可达。RIPv2支持 验证、密钥管理、路由汇总、无类域间路由
> > >
> > > (CIDR)和变长子网掩码(VLSMs)。
> > >
> > > Zebra支持RIPv2,使用ripd程序实现RIP路由功能,但ripd程序需要在zebra程序读取接口信息,所以zebra 一
> > >
> > > 定要在ripd之前启动。由于条件所限,下面的RIP实验是在两台单网卡的RedHat7.2下做的,所以只是 最简单的
> > >
> > > 演示。
> > >
> > > 按照上面基本配置的方法初始化第一台机器:
> > >
> > > shell_1> cd /usr/local/etc
> > > shell_1> cp zebra.conf.sample zebra.conf
> > > shell_1> cp ripd.conf.sample ripd.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
> > >
> > > 进入第一台机器的rip设置
> > >
> > > shell_1> ripd -d
> > > shell_1> telnet localhost 2602
> > > Password:
> > > ripd> en
> > > ripd# conf t
> > > ripd(config)# hostname r1_ripd !改个名字好辨认
> > > r1_ripd(config)# router rip !启动rip
> > > r1_ripd(config-router)# network 192.168.5.0/24 !RIPv1是有类别路由协议,RIPv2是无类别路由协议,
> > >
> > > Zebra 默认支持RIPv2,指定网络需要子网掩码。
> > >
> > > r1的RIP简单配置这样就可用了,下面来检验一下:
> > >
> > > r1_ripd# sh ip protocols
> > > Routing Protocol is "rip"
> > > Sending updates every 30 seconds with +/-50%, next due in 3 seconds
> > > Timeout after 180 seconds, garbage collect after 120 seconds
> > > Outgoing update filter list for all interface is not set
> > > Incoming update filter list for all interface is not set
> > > Default redistribution metric is 1
> > > Redistributing:
> > > Default version control: send version 2, receive version 2
> > > Interface Send Recv Key-chain
> > > eth0 2 2
> > > Routing for Networks:
> > > 192.168.5.0/24
> > > Routing Information Sources:
> > > Gateway BadPackets BadRoutes Distance Last Update
> > > Distance: (default is 120)
> > >
> > > 我们看到RIP已经起来了,是RIPv2。
> > >
> > > r1_ripd# sh ip rip
> > > Codes: R - RIP, C - connected, O - OSPF, B - BGP
> > >
> > > Network Next Hop Metric From Time
> > >
> > > 由于就两个接口直连,没有其它网络,所以sh ip rip看不到什么。
> > >
> > > Zebra对log处理可能有些问题,使用log stdout不能显示各种debug信息,所以只能记录到文件,在shell下 用
> > >
> > > tail命令查看。
> > >
> > > r1_ripd# debug rip events
> > > r1_ripd# debug rip packet
> > > r1_ripd(config)# log file /usr/local/etc/ripd.log
> > >
> > > 然后我们在shell下查看debug信息
> > >
> > > shell_1> tail -f /usr/local/etc/ripd.log
> > > --------------------------------8<---------------------------------------
> > > 2002/04/28 22:17:44 RIP: update timer fire!
> > > 2002/04/28 22:17:44 RIP: SEND UPDATE to eth0 ifindex 2
> > > 2002/04/28 22:17:44 RIP: multicast announce on eth0
> > > 2002/04/28 22:17:44 RIP: update routes on interface eth0 ifindex 2
> > > 2002/04/28 22:18:23 RIP: update timer fire!
> > > 2002/04/28 22:18:23 RIP: SEND UPDATE to eth0 ifindex 2
> > > 2002/04/28 22:18:23 RIP: multicast announce on eth0
> > > 2002/04/28 22:18:23 RIP: update routes on interface eth0 ifindex 2
> > > 2002/04/28 22:19:04 RIP: update timer fire!
> > > 2002/04/28 22:19:04 RIP: SEND UPDATE to eth0 ifindex 2
> > > 2002/04/28 22:19:04 RIP: multicast announce on eth0
> > > 2002/04/28 22:19:04 RIP: update routes on interface eth0 ifindex 2
> > > --------------------------------8<---------------------------------------
> > >
> > > RIP每隔30秒发送一次更新,在sh ip prot可以看到Sending updates every 30 seconds with +/-50%
> > >
> > > 第二台机器的设置
> > >
> > > 前面的初始化和第一台一样,不过这里名字设成r2便于辨认,IP设成了192.168.5.123/24。
> > >
> > > 进入第二台机器的rip设置
> > >
> > > shell_2> ripd -d
> > > shell_2> telnet localhost 2602
> > > Password:
> > > ripd> en
> > > ripd# conf t
> > > ripd(config)# hostname r2_ripd
> > > r2_ripd(config)# router rip
> > > r2_ripd(config-router)# network 192.168.5.0/24
> > >
> > > 执行完network命令,我们看到第一台机器的tail -f /usr/local/etc/ripd.log输出下面的信息:
> > >
> > > --------------------------------8<---------------------------------------
> > > 2002/04/28 22:19:15 RIP: RECV packet from 192.168.5.123 port 520 on eth0
> > > 2002/04/28 22:19:15 RIP: RECV REQUEST version 2 packet size 24
> > > 2002/04/28 22:19:15 RIP: 0.0.0.0/0 -> 0.0.0.0 family 0 tag 0 metric 16
> > > 2002/04/28 22:19:15 RIP: update routes to neighbor 192.168.5.123
> > > 2002/04/28 22:19:35 RIP: update timer fire!
> > > 2002/04/28 22:19:35 RIP: SEND UPDATE to eth0 ifindex 2
> > > 2002/04/28 22:19:35 RIP: multicast announce on eth0
> > > 2002/04/28 22:19:35 RIP: update routes on interface eth0 ifindex 2
> > > --------------------------------8<---------------------------------------
> > >
> > > r1通过UDP广播接收到192.168.5.123的更新包,并且把192.168.5.123设为neighbor。
> > >
> > > 保存一下配置
> > >
> > > r1_ripd# copy run start
> > > Configuration saved to /usr/local/etc/ripd.conf
> > > r2_ripd# copy run start
> > > Configuration saved to /usr/local/etc/ripd.conf
> > >
> > > Zebra还支持很多RIP功能,如果Filtering RIP Routes, RIP route-map, RIP Authentication等,有条件有时
> > >
> > > 间 的话可以做更复杂的实验。
> > >
> > > 3、用Zebra做OSPF实验
> > >
> > > OSPF(开放最短路径优先)路由协议是一项链路状态型技术,是目前IGP中应用最广、性能最优的一个 协议,
> > >
> > > 解决了RIP不能解决的大型、可扩展的网络需求而写的,适用于大规模的网络。
> > >
> > > 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数据包。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<---------------------------------------
> > > 2002/04/28 16:25:53 OSPF: make_hello: options: 2, int: eth0:192.168.5.121
> > > 2002/04/28 16:25:57 OSPF: Packet 192.168.5.123 [Hello:RECV]: Options ||-|-|-|-|E|*
> > > 2002/04/28 16:26:03 OSPF: make_hello: options: 2, int: eth0:192.168.5.121
> > > 2002/04/28 16:26:13 OSPF: make_hello: options: 2, int: eth0:192.168.5.121
> > > 2002/04/28 16:26:23 OSPF: make_hello: options: 2, int: eth0:192.168.5.121
> > > 2002/04/28 16:26:33 OSPF: make_hello: options: 2, int: eth0:192.168.5.121
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): Start
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): looked through areas
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): bb_configured: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): bb_act_attached: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): areas_configured: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): areas_act_attached: 1
> > > 2002/04/28 16:26:37 OSPF: nsm_change_status(): scheduling new router-LSA origination
> > > 2002/04/28 16:26:37 OSPF: DR-Election[1nd]: Backup 0.0.0.0
> > > 2002/04/28 16:26:37 OSPF: DR-Election[1nd]: DR 192.168.5.121
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): Start
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): looked through areas
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): bb_configured: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): bb_act_attached: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): areas_configured: 1
> > > 2002/04/28 16:26:37 OSPF: ospf_check_abr_status(): areas_act_attached: 1
> > > 2002/04/28 16:26:37 OSPF: Timer[router-LSA]: (router-LSA Refresh expire)
> > > 2002/04/28 16:26:37 OSPF: counting fully adjacent virtual neighbors in area 0.0.0.0
> > > 2002/04/28 16:26:37 OSPF: there are 0 of them
> > > 2002/04/28 16:26:37 OSPF: SPF: calculation timer scheduled
> > > 2002/04/28 16:26:37 OSPF: SPF: calculation timer delay = 5
> > > 2002/04/28 16:26:37 OSPF: ospf_flood_through_interface(): considering int eth0:192.168.5.121
> > > 2002/04/28 16:26:37 OSPF: ospf_flood_through_interface(): considering nbr 192.168.5.121
> > > 2002/04/28 16:26:42 OSPF: SPF: Timer (SPF calculation expire)
> > > 2002/04/28 16:26:42 OSPF: ospf_spf_calculate: Start
> > > 2002/04/28 16:26:42 OSPF: ospf_spf_calculate: running Dijkstra for area 0.0.0.0
> > > 2002/04/28 16:26:42 OSPF: SPF Result: 0 [R] 192.168.5.121
> > > 2002/04/28 16:26:42 OSPF: ========== OSPF routing table ==========
> > > 2002/04/28 16:26:42 OSPF: ========================================
> > > 2002/04/28 16:26:42 OSPF: ospf_process_stub():processing stubs for area 0.0.0.0
> > > 2002/04/28 16:26:42 OSPF: ospf_process_stub():processing router LSA, id: 192.168.5.121
> > > 2002/04/28 16:26:42 OSPF: ospf_process_stub(): we have 1 links to process
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): Start
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): processing route to 192.168.5.0/24
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): calculated cost is 0 + 10 = 10
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): installing new route
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): this network is on this router
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): the interface is eth0:192.168.5.121
> > > 2002/04/28 16:26:42 OSPF: ospf_intra_add_stub(): Stop
> > > 2002/04/28 16:26:42 OSPF: children of V:
> > > 2002/04/28 16:26:42 OSPF: ospf_spf_calculate: Stop
> > > 2002/04/28 16:26:42 OSPF: ospf_ia_routing():start
> > > 2002/04/28 16:26:42 OSPF: ospf_ia_routing():not ABR, considering all areas
> > > 2002/04/28 16:26:42 OSPF: Pruning unreachable networks
> > > 2002/04/28 16:26:42 OSPF: Pruning unreachable routers
> > > 2002/04/28 16:26:42 OSPF: Route: Router Routing Table free
> > > 2002/04/28 16:26:42 OSPF: SPF: calculation complete
> > > --------------------------------8<---------------------------------------
> > >
> > > 我们看到r1生成一个LSA包,通知其它路由器,由于网络里只有自己了,又选自己为DR。r2也是一样。 我们再
> > >
> > > 插上网线,查看ospfd.log:
> > >
> > > --------------------------------8<---------------------------------------
> > > 2002/04/28 16:52:08 OSPF: Packet 192.168.5.123 [Hello:RECV]: Options ||-|-|-|-|E|*
> > > 2002/04/28 16:52:08 OSPF: NSM[eth0:192.168.5.121:0.0.0.0]: start
> > > 2002/04/28 16:52:08 OSPF: DR-Election[1st]: Backup 192.168.5.123
> > > 2002/04/28 16:52:08 OSPF: DR-Election[1st]: DR 192.168.5.121
> > > 2002/04/28 16:52:08 OSPF: DR-Election[1st]: Backup 0.0.0.0
> > > 2002/04/28 16:52:08 OSPF: DR-Election[1st]: DR 192.168.5.123
> > > 2002/04/28 16:52:08 OSPF: DR-Election[2nd]: Backup 192.168.5.121
> > > 2002/04/28 16:52:08 OSPF: DR-Election[2nd]: DR 192.168.5.123
> > > --------------------------------8<---------------------------------------
> > >
> > > 由于拔了网线,r1和r2都把自己选为DR,一个网络只能有一个DR,所以恢复连接后它们重新进行了DR选 举,由
> > >
> > > 于192.168.5.123的router id大,所以它被选为DR。
> > >
> > > 保存一下配置
> > >
> > > r1_ospfd# copy run start
> > > Configuration saved to /usr/local/etc/ospfd.conf
> > > r2_ospfd# copy run start
> > > Configuration saved to /usr/local/etc/ospfd.conf
> > >
> > > 以上只是演示了最简单的OSPF的配置,而OSPF在大型网络才广泛的使用,配置也复杂多很多。即使是 Zebra,
> > >
> > > 也还可用做复杂的多的OSPF实验。
> > >
> > > 4、用Zebra做BGP实验
> > >
> > > RIP和OSPF都是内部网关协议(IGP),BGP属于外部网关协议(EGP)。BGP广泛用于Internet以连接 ISP,并将
> > >
> > > 企业与ISP互连。
> > >
> > > 当BGP的影响被完全了解,并

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus