一Quagga简介
Quagga是一个路由软件套件,它提供了路由协议的TCP / IP的路由支持服务,如RIPv1,RIPv2的,RIPng,OSPFv2,OSPFv3,BGP - 4的,和BGP – 4。此外本软件除了支持IPv4路由协议外,还支持IPv6路由协议。Quagga是GNU Zebra(由Kunihiro Ishiguro开发)的一个分支。
二 Quagga基本结构
quagga主要由bgpd、ripd、ripngd、ospfd、ospf6d、vtysh等几个服务(这些服务的名称被建立之后,被挂上 Linux 使用时,通常在服务的名称之后会加上一个 d,这也就是daemon的命名规则),根据实际需要我们选用相应的服务。但quagga中Vtysh(也就是quagga的shell)是实现与每个daemon进行通信。
Quagga包含一个核心守护进程zebra,它作为Unix底层核心的一个抽象层,表示为linux上的一些Zserv API或Linux Quagga客户端的TCP流。这些Linux Quagga客户端实现路由协议并和zebra守护程序交换路由更新信息。其中Zserv客户端包括:
Ospfd(实现OSPFv2)ripd(实现RIPv1和RIPv2)ospf6d(实现OSPFv3(IPv6))
Ripngd(实现RIPv3(IPv6))Bgpd(实现BGP4+(包括对组播地址族和IPv6地址族的支持)
注:
【1】daemon
Unix 的术语,指一种在后台执行的程序。网络的服务器功能也多为后台程序,一种没有被显式激活,但处于休眠状态,
等待某种条件满足的程序。守护程序,无交互后台程序,UNIX端口监督程序;
【2】 Zebra
Zebra是一个开源的 TCP/IP 路由软件,同 Cisco Internet 网络操作系统(IOS)类似。它灵活而且具有强大的功能,可以处理路由信息协议(RIP)、开放式最短路径优先协议(OSPF)和(BGP)边界网关协议以及这些协议的所有变体。
zebra 守护进程是实际的路由管理者,控制着其他模块;而且用户主要通过它进行交互。我们最先需要配置 Zebra 守护进程。
启动某一服务则:
服务名 -d (例如:ripd -d)
三 buntu下quagga软件的安装
(一) 安装环境
A. 硬件环境:PC机
B. 软件环境:Windows xp 虚拟机 ubuntu10.04
安装路由软件quagga-0.99.
(二) quagga虚拟机与windows下共享文件
A. 在虚拟机安装好后,在windows下的某一一盘符(例如d)内建一个共 享文件夹,把guagga源文件拷到共享文件夹(例如命名为linuxshare)里并解压。
B. 在虚拟机主界面选择option选项中的sharefolders中,按照提示设置共享文件路径(例d:\linuxshare)。
(三) quagga配置
A. 打开终端并以root用户进入
B. 安装guagga时要用到g++,ubuntu10.04没有安装须下载安装此软件包
root@ubuntu:/# apt-get install g++
C. quagga解压代码放在/mnt/hgfs/linuxshare/
root@ubuntu:/# cd /mnt/hgfs/linuxshare/quagga-0.99.16
D. root@/mnt/hgfs/linuxshare/quagga-0.99.16#./configure --disable-ripd --disable-ripngd --disable-ospfd --disable-ospf6d --disable-watchquagga --disable-doc --enable-user=root --enable-group=root --enable-zebra --enable-vtysh
注:
①./configure是用来检测你的安装平台的目标特征的(比如它会检查是否有编辑器、函数库,CC或GCC等等),并根据配置信息生产相应的makefile,它是个shell脚本。
②./configure –h 输入此命令会一一列出当前配置环境所有配置选项
③此输入选项含义为, 启用相应服务程序,并对不用的服务程序进行关闭,其中--enable- user=root --enable-group=root 是限定quagg软件的使用权限。
④配置时易出现如下错误:
/usr/local/lib/libreadline.so: undefined reference to `PC'
/usr/local/lib/libreadline.so: undefined reference to `tgetflag'
/usr/local/lib/libreadline.so: undefined reference to `tgetent'
/usr/local/lib/libreadline.so: undefined reference to `UP'
/usr/local/lib/libreadline.so: undefined reference to `tputs'
/usr/local/lib/libreadline.so: undefined reference to `tgoto'
/usr/local/lib/libreadline.so: undefined reference to `tgetnum'
/usr/local/lib/libreadline.so: undefined reference to `BC'
/usr/local/lib/libreadline.so: undefined reference to `tgetstr'
checking for perl... /usr/bin/perl
checking for tputs in -ltermcap... no
checking for tputs in -ltinfo... no
checking for tputs in -lcurses... no
checking for tputs in -lncurses... no
checking for main in -lreadline... no
configure: error: vtysh needs libreadline but was not found and usable on your system
解决方法:
1 看readline软件包是否安装
2 是否安装ncurses安装包
3 是否安装libncurses5-dev 或libncursesw5-dev软件包
(二) quagga编译
root@/mnt/hgfs/linuxshare/quagga-0.99.16#make
注:
make是用编译命令,它从Makefile中读取信息(呼叫原始码、函数库、编辑器)进行编译。
(三) quagga安装
root@/mnt/hgfs/linuxshare/quagga-0.99.16#make install
注:
make install是安装命令,它也从Makefile中读取指令,安装到指定的位置。
(四) 启动quagga的核心守护进程
root@/mnt/hgfs/linuxshare/quagga-0.99.16# zebra –d
注:
a) 说明quagga相应服务程序已经运行,只要是虚拟机的不重启或卸载(make uninstall),他都会在后台运行。
b) 可能有以下错误:
①- zebra: error while loading shared libraries: libzebra.so.0: cannot open shared object file: No such file or directory
解决方法:
在/usr/local/lib下有
lrwxrwxrwx 1 root root 17 2010-06-21 01:52 libzebra.so -> libzebra.so.0.0.0
lrwxrwxrwx 1 root root 17 2010-06-21 01:52 libzebra.so.0 -> libzebra.so.0.0.0
-rwxr-xr-x 1 root root 778556 2010-06-21 01:52 libzebra.so.0.0.0
这可能是由于/lib库出现问题:则
root@ubuntu:/usr/local/lib# cp libzebra.* /lib
root@ubuntu:/usr/local/lib# rm libzebra.*
②Starting zebra.
vty_read_config: failed to open configuration file /usr/local/etc/zebra.conf: Permission denied can't open configuration file [/usr/local/etc/quagga/zebra.conf
解决方法:
可以看到/usr/local/etc/没有zebra.conf(它是存放zebra相关用户,密码信息等),但有 zebra.conf.sample
root@ubuntu:/usr/local/etc# cp zebra.conf.sample zebra.conf
(五) 执行quagga的shell程序
root@/mnt/hgfs/linuxshare/quagga-0.99.16# vtysh
接着进入guagga的shell界面:
Hello, this is Quagga (version 0.99.16).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
ubuntu#
注:
在相应quagga相应服务启动之后,输入vtysh作用就是通过相应界面,输入命令行控制后台执行的相应 操作。