guagga入门-lib库介绍

无论是zebra也好还是动态路由的进程也好其都是一个单线程的程序;都能完成以下几个事情
1。一个tcp服务器
2。一个cli命令处理程序;
3。能够监听socket事件(读/写/关闭)
一个线程能完成如此复杂的事情,这个与guagga程序良好的框架设计有关系;
所有的库都在lib目录下
thread库
其实说是thread其实这并不是真正操作系统上的thread的概念,它是事件驱动模型中的一个事件的概念。一个fd对应的事件,其实对应起来就是一个thread。也就是说zebra项目中的thread其实是fd事件的描述;有多少个fd就应该对应有多少个thread。代码在thread.c中;有时间讲详细讲解thread的具体用法;这个thread的实现与libevent的实现其实是类似的。
cli库
cli的库包含几个部分,一个是cli部分的远程回调注册的框架程序,另外一个是cli命令对应终端程序的抽象,注册+回调框架在command.c中。vty的抽象在vty.c代码中;简单讲就是通过实现写好的cli注册命令,关联了命令字符串与其处理回调的关系。vty处理输入输出的信息,代码不用关系是telnet上来的请求,还是unix上来的请求;
zclient库
之前说过无论是ospf 还是ripd都是zebra的client程序,client与server之间交互的常用API已经全部定义到zclient库了,主要定义了zebra通知消息给ospf 以及ospf请求内容到server的一些常用方法。具体后续有时间详细说明;
kernel网络抽象库rtnetlink
因为guagga是路由的套件,自然少不了内核路由的一些接口在rt_netlink.c代码中,写好了常用的netlink消息以及其处理的回调函数,以及一些常用接口的API,例如接口up down的通知回调,例如添加删除路由的API接口等等。所有跟内核网络相关的接口都可以在这里面找到;
数据结构的库
也可以在其中可以找到例如c语言的vector list等等,都已经在里面实现好了。









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ospfd ospf6d bgpd 和Zebra。 其中,Zebra守护进程用来更新内核的路由表,而其他的守护进程负责进行相应路由选择协议的路由更新。 Quagga的好处 就路由器而论,虽然有各种硬件可用,但是费用较高。所以想到用一个运行Linux系统构件的功能丰富的路由器作为代替。Quagga路由守护程序已经使这一切变为现实。因为Quagga支持Ipv4、Ipv6和其他各式各样的协议,所以能够满足通常所有的路由需要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值