AODV路由协议进阶内核设计和修改

网络 网络管理
下面我们来讲解一下有关于AODV路由协议的进阶内容——AODV-UCSB的相关内容。那么我们首先设定了一个环境,然后列出了需要决定的事件和设计的要求。

对于AODV路由协议,有很多的优点,不少运营商都会使用这个协议来进行网络管理。相信想要成为网管的你也一定高度重视这个协议。那么,在之前我们已经对AODV路由协议的基本概况进行了讲解,现在我们再来了解一下更深一步的内容。介绍AODV-UCSB,它是脱离内核,在用户层面的守护进程来实现尽可能多的逻辑功能。这是路由协议的普遍设计方法,因为在内核中的代码具有不同的优先级,在内核空间一个单一的错误能导致整个操作操作系统的崩溃。

对于AODV路由协议守护进程功能的实现,它必须决定什么时候去激发AODV路由事件。自从在链路中断很少发生和分组丢失不被报道的固定网中使用IP分组以来,绝大部分触发不是稳定有效的。所以,这些触发时间必须被推断和经过其他途径与路由守护进程进行通信。

必须被决定的事件

(1)什么时候发起路由请求

(2)在路由寻路期间什么时候怎么缓存数据分组

(3)如果一个有效路由不存在时什么时候产生RERR

(4)在守护进程重起期间什么时候产生RERR。

接着讨论不同的设计方法。首先,我们应该知道怎么去决定这些时间和在哪里实现AODV路由协议的逻辑。我们描述了各种解决方法的优缺点,和我们证明为什么我们选择一个带有一个小的内核模块的用户层的守护进程。此外,我们讨论监视邻居连同性的重要性和它怎么来实现。

设计的可能性

这里有很多方法来实现AODV路由协议去推断所需要的AODV事件。获得事件的可能机会有:

(1)snooping探听

(2)kernel modification内核修改

(3)Nerfilter

在下面,每个可能性都被描述,并给出他们的优点和缺点。#p#

snooping

决定所需要的事件的一个可能性就是去杂乱的探听所有的输入和输出的分组[8]。执行探听的代码设计在内核中和对用户层程序是有效的。这个探听的特征可以用来决定在第3部分检测到的事件。例如,当一个节点不知道在一跳的MAC层地址时一个ARP包被创建。由这个推论,如果一个ARP包被一个未知目的地接收到并且由本地主机发起的,那么一个路由寻找将被发起。一个类似的行为,通过监视进出的所有包,来决定所有其他的AODV路由协议事件。

这个解决方案的最重要的优点是它不需要任何代码运行在内核空间中。所以这个解决方案需要简单的安装和执行。它的两个主要的缺点是加了不必要的头部(overhead)和依赖于ARP。例如某个路由发现的需要是有ARP请求来指出的。自从路由寻找被出去的ARP包发起,这些出去的包被加了不必须的头部,并且浪费了带宽。依赖于ARP也带来了很多问题。如果路由表和ARP缓存变的不同步了,那么路由协议不能实现正确的实现功能是可能发生的。例如,如果一个ARP缓存包含一个到特殊的未知的目的地的入口,因为它没有被路由守护进程所知道,所以这个ARP包没有为这个目的地而创建。结果是,路由寻找没有被发起。对于正确的操作,这个路由协议必须在IP路由表的外部监听和控制ARP缓存,因为它们两的不同可能导致路由协议的不正确执行。

kernel modification内核修改

另外一种决定AODV事件的可能性是去修改内核。代码可以放置在内核中去沟通在section3中所列举的事件与用户层的AODV守护进程。例如,为了发起一个路由寻找,代码加到内核中的路由寻找失败发生的地方。由内核中的这个代码设定,如果一个路由查找失败发生,那么在用户层的守护进程中一个方法被呼叫。AODV路由协议守护进程的结构和必需的支持逻辑。

这种解决方法的优点是这些事件可以被明确的决定并且没有任何浪费的加在头部前的数据。它主要的缺点是用户的安装和通用性。必要的内核修改的安装需要一个完整的内核重编辑。这个对于需用用户来说是非常难的过程。并且,内核的修改经常是不兼容的在一个修改的版本和另外一个内核之间。最后,理解linux内核和网络协议组要求检查重要的很多的为申明的复杂的代码。

Netfilter

Netfilter是在linux协议组中在许多挂钩点的一组过滤子系统,section2.3所描述的一样。Netfilter通过用户自定义的代码来重定向包流,这些代码能为用户层守护进程检测,遗失,丢弃,修改或者排队这些包。用Netfilter和在section3.1.1中描述的探听的方法是很相似的;然而,它没有不必要的加在头前面的数据或则依赖ARP的缺点。

比较其他的可能性,这个解决方法有很多优点。这些优点包括没有不必要的通信,具有很高的通用性,很方便的安装和用户层的守护进程能决定在section3中要求的事件。

在另外一方面,这个解决方法的缺点是它需要一个内核模块。然而,一个内核模块相比内核修改而言是很简单的。仅仅只要编辑一个内核模块,而不需要去编辑整个内核。并且内核模块能在任何时候装载和卸载。最后,一个内核模块比内核修改具有更高的通用性,因为它依赖Netfilter接口。这种接口不随内核的更改而改变。

自从Netfilter通过检查策略使其具有最少和最小的重要性缺陷,我们在我们最后的应用结构中利用了它。我们的应用利用了Netfilter的挂接来重定向了包,接受从本机(NF_IP_LOCAL_OUT),从别的机器(NF_IP_PRE_ROUTING),还有所有的被发送到其他机器(NF_IN_POST_ROUTING)的包。这些挂接函数被kAODV内核模块使用。Ip_queue模块是用来在用户层守护进程中对这些包进行排队。这些AODV路由协议守护进程用libipq来对每个包做控制决定。

责任编辑:佟健 来源: IT专家网
相关推荐

2010-06-18 15:09:08

AODV协议

2010-06-21 14:58:35

AODV路由协议

2010-06-24 16:44:29

AODV路由协议

2010-06-21 14:29:43

AODV路由协议

2010-06-19 13:24:02

AODV路由协议

2010-06-18 14:00:16

AODV路由协议

2010-06-21 13:07:14

2010-06-21 13:52:20

AODV路由协议

2010-07-13 14:47:08

AODV路由协议

2010-06-18 13:37:02

AODV协议

2010-06-17 17:27:35

路由协议

2010-08-13 09:25:52

路由协议AODV

2010-06-18 14:24:47

AODV协议

2010-07-05 10:46:47

RIP路由协议

2011-05-23 13:26:31

2009-12-15 13:35:14

路由协议分析仪

2010-06-11 16:50:27

路由选择协议

2010-06-25 15:07:10

BGP路由协议

2010-07-13 10:46:52

OSPF路由协议

2010-06-21 17:33:38

IS-IS路由协议
点赞
收藏

51CTO技术栈公众号