嵌入式平台,软路由器-OSPF移植总结
来源:互联网 发布:股票模拟练习软件 编辑:程序博客网 时间:2024/03/29 16:01
OSPF移植总结
北京华环电子 任晓亮
1. ospf协议介绍
Quagga软件原名是Zebra是由一个日本开发团队编写的一个以GNU版权方式发布的软件。Quagga项目开始与1996年,当前版本是0.98.4版 可以使用Quagga将linux机器打造成一台功能完备的路由器。
Quagga支持的路由协议
Quagga能够同时支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP-4和 BGP-4+等诸多TCP/IP协议。其中:
RIPv1、RIPv2、OSPFv2适用于Ipv4的自治域系统内部网络路由协议。
BGP-4是用于Ipv4的自治域系统之间的外部网络路由协议。
RIPng、OSPFv3、BGP-4+主要扩展对Ipv6的支持。
Quagga的特性
模块化设计:Quagga基于模块化方案的设计,即对每一个路由协议使用单独的守护进程。
运行速度快:因为使用了模块化的设计,使得Quagga的运行速度比一般的路由选择程序要快。
可靠性高:在所有软件模块都失败的情况下,路由器可以继续保持连接并且daemons也会继续运行。故障诊断不必离线的状态下被诊断和更正
支持Ipv6:Quagga不仅支持Ipv4,还支持Ipv6。
Quagga的运行机制
由于Quagga采用模块化的设计,因此Quagga运行时要运行多个守护进程,包括ripd ripngd ospfdospf6d bgpd 和Zebra。
其中,Zebra守护进程用来更新内核的路由表,而其他的守护进程负责进行相应路由选择协议的路由更新。
2,源码下载地址
http://download.chinaunix.net/download/0009000/8746.shtml
ncurses-5.9.tar.gz
readline-6.3.tar.gz //支持库,命令行操作库,路由配置的时候需要在登陆路由器
quagga-0.99.23.tar.gz //路由源码
quagga编译配置:
renxl@icserver:~/work/nios-kernel/software_cross/zebra/quagga/quagga-0.99.23$
./configure--enable-user=root --enable-group=root --enable-vty-group=root--prefix=/home/renxl/work/nios-kernel/software_cross/zebra/quagga/quagga-0.99.23/release/--host=nios2-linux-gnu CC=nios2-linux-gnu-gcc
./configure--host=nios2-linux-gnu CC=nios2-linux-gnu-gcc --enable-user=root--enable-group=root --prefix=$PWD/_build
Readline编译配置:
在nios平台交叉编译libreadline库
一、配置
./configure--enable-shared --prefix=/home/renxl/work/nios-kernel/software_cross/zebra/quagga/readline-6.3/release/--host=nios2-unknown-linux CC=nios2-linux-gnu-gcc CFLAGS=-static--enable-static --build=nios2-linux --cache-file=nios2-linux.cache
报错:
checkingfor wcwidth broken with unicode combining characters... configure: error: in`/home/fangshuai/work/zebra/libs/readline-6.3':
configure:error: cannot run test program while cross compiling
原因:
configure脚本验证编译工具是通过编译并运行一个测试程序。由于是交叉编译,当然是运行不了的。
解决方法:
打开configure文件找到报错的地方如下:
01
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
02
$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; }
03
if ${bash_cv_wcwidth_broken+:} false; then :
04
$as_echo_n "(cached) " >&6
05
else
06
if test "$cross_compiling" = yes; then :
07
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
08
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
09
as_fn_error $? "cannot run test program while cross compiling
10
See \`config.log' for more details" "$LINENO" 5; }
可见变量bash_cv_wcwidth_broken,我们可以利用cache文件将该变量置真:
echobash_cv_wcwidth_broken=yes > nioslinux.cache
重新执行configure:
二、编译:make
三、导出编译成果:makeinstall
四、测试验证:
将编译出的动态库与静态库拷贝到交叉编译工具目录下,将include下的readline目录拷贝到交叉编译工具的include目录下。
随便写个程序,test.c
编译下试试:nios2-linux-gnu-gcc test.c -o test -lreadline
恭喜你编译不过是不是 - -!
是的,还需要ncurses,
试下:nios2-linux-gnu-gcc test.c -o test -lreadline -lncurses
还是编不过对不,还得交叉编译ncurses。下一篇再说
3. 内核配置
Kernel/Library/DefaultsSelection --->
[*] Customize Kernel Settings->
[*] Networking support --->
--- Networking support
Networking options --->
4. 打开内核转发功能
在启动脚本里加入下面一行:
echo1 >/proc/sys/net/ipv4/ip_forward
5. 启动脚本
start()
{
echo "start zebradaemon..."
zebra -d -f/etc/quagga/zebra.conf -i /etc/quagga/zebra.pid -z /tmp/quagga -k -P 2601 -r -uroot -g root
echo "start ospfddaemon..."
ospfd -d -f/etc/quagga/ospfd.conf -i /etc/quagga/ospfd.pid -z /tmp/quagga -P 2604 -u root-g root -a
}
启动参数:
-f 配置文件,-i 进程pid , -z 网络通信接口,-p 服务登陆端口号
- 嵌入式平台,软路由器-OSPF移植总结
- apache嵌入式平台移植
- 嵌入式平台-Pptpd移植
- mini_httpd-1.19移植到嵌入式平台的总结
- 嵌入式linux移植总结
- 嵌入式系统平台移植步骤
- 嵌入式平台系统移植经验总结
- GAR路由器OSPF实验
- OSPF动态设置路由器
- ospf总结
- ospf总结
- 嵌入式linux平台的NFS移植
- 移植sqlite3到嵌入式平台上
- 嵌入式linux平台的NFS移植
- 嵌入式linux平台的NFS移植
- 嵌入式Linux平台USB驱动程序的移植
- Kinect移植到嵌入式ARM平台上面
- 移植MySQL到嵌入式ARM平台
- Zookeeper伪分布式集群环境搭建过程
- VIM Python编译安装
- Node.js的本质
- linux ping域名很慢的其中一个原因
- LeetCode 256. Paint House
- 嵌入式平台,软路由器-OSPF移植总结
- ubuntu配置java开发环境和安装AndroidStudio
- 从http到https简介,tomcat和nginx的https配置,单向认证和双向认证简介,对称加密和非对称加密简介,RSA算法简介
- php应该遵循什么样的编码规范?PHP符合PSR编程规范示例
- Linux命令——ls命令用来显示目录中文件的名字
- 1-Openwrt clone and bulid
- tools:text和android:text
- Java中的关键字
- AIX下 Oracle Database 11.2使用FCoE时的认证情况.