实现基于驱动层的移动adhoc网络标签路由和分组交换方法

文档序号:7747127阅读:157来源:国知局
专利名称:实现基于驱动层的移动ad hoc网络标签路由和分组交换方法
技术领域
本发明涉及移动ad hoc网络的技术实现,特别针对802. llb/g驱动层通过标签路 由实现数据交换方法。
背景技术
Ad hoc网络是由一组带有无线收发装置的移动终端组成的多跳临时性网络,每个 移动终端同时具有主机和路由器的功能。Ad hoc网络具有无中心控制节点、无组织性、网络 拓扑动态变化等特性。由于Ad hoc网络中所有节点都具有移动性,并且可以动态地保持与 其他节点的联系,具有能够临时组网的优点。因此,ad hoc网络经常应用于军事领域、防震 救灾、应急通信等领域。IEEE 802. 11协议是在无线局域网领域内的第一个国际上被认 可的协议。利用 802. 11,移动用户能够获得同Ethernet—样的性能、网络吞吐率、可用性。802. 11协议主要 工作在ISO协议的最低两层上,加入了高速数字传输的特性和连接的稳定性。sk_buffer结构是Iinux TCP/IP协议栈中,用于管理Data Buffer的结构。Sk_ buffer在数据包的发送和接收中起着重要的作用。每一个发送或者接收的packet的处理 都需要用到该数据结构。net_device结构处于网络驱动层的非常核心的位置,net_device结构保存与网 络设备相关的所有信息。每一个网络设备都对应一个这样的结构,包括真实设备(例如以 太网卡)和虚拟设备(比如bonding或VLAN)。与sk_buff类似,net_device结构比较大, 而且包含了很多特性相关的参数,这些参数在不同的协议层中使用。出于这个原因,net_ device结构的组织会有一些改变,用于优化协议栈的性能。

发明内容
本发明的目的是实现基于802. llb/g驱动层移动的ad hoc网络,包括在驱动层实 现标签路由和分组转发,扩大802. llb/g网络传输范围,并且提高了 ad hoc网络中移动节 点之间传输速率和服务质量,减小了 ad hoc网络多跳传输的时延,增加了网络的吞吐量。一种基于802. llb/g驱动层的移动ad hoc网络标签路由和数据交换方法,包括以一个字节长度的数据来唯一地标识使用本发明的ad hoc网络的节点。不同的 节点必须由不同的标签来标识。a)在移动ad hoc网络中,源节点需要与指定的目的节点进行分组交换时,源节点 的TCP/IP协议层根据需要发送的数据包产生ARP请求包,经过802. llb/g驱动层处理,在 ARP包的尾部添加包含有目的地址标签的自定义域,得到路由请求包,再将路由请求包发送 给中间节点;自定义域是被定义数据包之后的私有类型,对于802. llb/g MAC层而言是被视为 Data域的一部分而存在。自定义域包含了类型,ID号,目的地址标签,源标签,中间路由节点标签,跳数计数,长度共7个子域。本发明中移动ad hoc网络中的节点以按需的方式进行路由查找和数据交换。当 源节点需要发送数据包时,由TCP/IP协议上层产生ARP请求包,经过802. llb/g驱动层处 理sk_bufTer结构里data的数据,从而在ARP包的尾部添加自定义域,转换为路由请求包 (MRRQ)格式,通过net_deVice结构里的发送函数接口给中间节点。b)接收到路由请求包的中间节点在802. llb/g驱动层匹配自身标签与路由请求 包中目的地址标签;若两个标签值相等,则认为当前中间节点是目的节点,将数据包交给目的节点的 TCP/IP协议层,由TCP/IP协议层产生ARP回复包,根据获得的反向路由链表,经过驱动层处 理,回复源节点;否则将本节点标签存放在路由请求包的自定义域中,继续广播直至到达目的节点;c)根据源节点与目的节点之间的路由,源节点与目的节点在ad hoc网络中进行 分组交换。利用本发明方法,移动ad hoc网络中任意两点可以获得路由信息,并将到达目的 节点的路由信息缓存驱动程序层中。发送的数据包在驱动程序层进行处理,在数据包的尾 部添加自定义域,通过net_deViCe结构里的发送函数接口发送数据包。分组交换时当中间节点在硬件层转发单播数据包时,多次尝试均无法将数据发送 至下一跳节点,即当中间节点A发现无法到达下一跳的中间节点B时(中间节点A和中间 节点B指任意两个相邻的中间节点),根据中间节点B的标签值,中间节点A删除自身路由 表中含有中间节点B的路由,删除中间节点A的ARP缓存中目的节点IP地址和物理地址的 映射关系冲间节点A发送路由损坏消息(MBRKN)通知源节点,源节点接收到路由损坏消息 之后,释放包含有中间节点A和中间节点B的路由链表,删除源节点的ARP缓存中目的节点 IP地址和物理地址的映射关系,再根据步骤a)和步骤b)的操作重新获得源节点与目的节 点之间的路由,进行分组交换。中间节点A多次发送路由损坏消息时,通过时间戳来控制相邻两次发送的最小时 间间隔。本发明基于802. llb/g驱动层的移动ad hoc网络标签路由和数据交换方法,在驱 动层实现标签路由和分组转发,扩大802. llb/g网络传输范围,并且提高了 ad hoc网络中 移动节点之间传输速率和服务质量,减小了 adhoc网络多跳传输的时延,增加了网络的吞 吐量。使节点之间能够更加高效地通信,减小了节点移动对网络通信造成的影响。


图1为本发明方法中协议层次和数据流向关系图;图2为本发明方法中自定义域格式示意图;图3为本发明方法中路由链式缓存示意图;图4为本发明方法中数据包发送处理流程图;图5为本发明方法中数据包接收处理流程图;图6为本发明方法中数据包发送失败路由修复流程图。
具体实施例方式在Iinux环境下,设计开发满足在移动ad hoc网络下使用的无线网卡驱动,驱动 层包含了自定义的自定义协议和802. llb/g MAC部分。参见图1,自定义协议层位置处于IP协议层和MAC协议层之间。自IP协议层传递 下来的数据包采用IEEE802. 3标准格式封装,经过自定义协议层才处理,添加了自定义域 之后交给MAC协议层。需要上传至IP协议层的数据包,在自定义协议层处理,删除自定义 域之后以IEEE802. 3标准格式上传给IP协议层。以一个字节长度的数据来唯一地标识使用自定义协议的ad hoc网络的节点。不 同的节点必须由不同的标签来标识,使用自定义协议的ad hoc网络不存在两个节点具有同 一数值的标签的情况。与此同时,标签的取值与本节IP地址,物理地址都有一定的转换关 系,例如以一定的表维护它们之间的对应关系,或者以某种特定的规律进行转换。为方便阐 述和实现,暂时确定节点标签的值为本节点IP地址右8位的值,同时规定此时本节点的物 理地址左40位被0x0000000000替换,右8位被本节点标签的值替换。例如对应关系如表 5 所示,如果本节点IP地址为192. 168. 0. 63,则标签值为63,物理地址被替换为00 00 00 00:00:3F(0x00000000003F)。自定义域是被定义数据包之后的私有类型,对于802. llb/g MAC层而言是被视为 Data域的一部分而存在。参见图2,自定义域包含了类型,ID号,目的地址标签,源标签,中 间路由节点标签,跳数计数,长度共7个子域。自定义协议中通用的自定义域帧格式所示, 但在针对不同类型的分组,不是每个子域都是必需的。中间路由节点标签域的数目并是不 固定的。MRRQ类型子域取值为0x00 ;MRRP类型子域取值为0x02 ;MDT类型子域取值为0x04 ; MBRKN类型子域取值为0x06。参见图3,在驱动层以链式存储的方式缓存了到目的节点的路由信息和最近一段 时间内经过本节点的数据包的自定义域的路由信息。本发明方法实施过程如下数据包传输参见图4,传输是指将数据包通过网络连接发送出去的行为。在驱动层中,无论何 时内核要传输一个数据包,它都会调用net_device结构体中的hard_start_transmit函数 将数据放入外发队列。内核处理的每个数据包位于sk_buff结构中。hard_start_transmit函数包括对数据包处理的两个步骤数据包尾部自定义域 的添加和802. 11帧头的建立。其中802. 11帧头建立部分完全符合了 IEEE标准的规定,此 处不做过多阐述。自定义域的添加使节点能够在移动的ad hoc网络中使用。发送的数据包都要调用harcLstarttransmit函数根据数据包不同的类型进行 处理。1.根据类型域判定如果是ARP请求包,首先搜索是否有到目的节点的链式存储的 路由。如果没有路由则添加自定义域,类型则为MRRQ,进行全网泛洪式的广播,直到以一跳 或者多跳的方式到达目的节点。如果有路由则添加自定义域,类型为MRRP,单播以一跳或者 多跳的方式到达目的节点。2.根据类型域判定如果是ARP回复包,添加自定义域,类型为MRRP,查找路由表获得路由,单播以一跳或者多跳的方式到达目的节点。如果获取路由失败,则丢弃该ARP回复 包。3.根据类型域判定如果是IP数据包,添加自定义域,类型为MDT,查找路由表获得 路由,单播以一跳或者多跳的方式到达目的节点。如果获取路由失败则,丢弃该ARP回复 包。数据包接收参见图5,从移动ad hoc网络中接收数据包,在原子上下文中分配一个sk_buff并 netif_rX函数传递给上层处理,驱动层采用中断的方式接收数据。 根据自定义域中类型子域的值来判定是MRRQ,MRRP,还是MDT。1.若是MRRQ,则仅保留首次接收的MRRQ,记录下自定义相应 的目的地址和ID号 避免重复接收的情况发生。如果本节点为目的节点,则除去自定义域,将数据传递给上层处 理,同时提取中间路由域缓存为到目的节点的路由信息。如果本节点非目的节点,则继续广 播给邻居节点。2.若是MRRP,根据中间路由域,目的节点域的值与自身标签判定,如果本节点是 中间节点,则将数据包单播至下一个节点,如果本节点是目的节点,则将ARP数据传递给上 层处理,同时提取中间路由域缓存为到目的节点的路由信息。3.若是MDT,根据中间路由域,目的节点域的值与自身标签判定,如果本节点是中 间节点,则将数据包单播至下一个节点,如果本节点是目的节点,则将IP数据包传递给上
层处理。4.若是MBRKN,根据中间路由域,目的节点域的值与自身标签判定,如果本节点是 中间节点,则将路由损坏消息单播至下一个节点,如果本节点是目的节点,进入路由修复模 块。数据包发送失败和路由修复参见图6,当某个节点(例如节点A)通过4次重新发送近似认为本数据包发送失 败,此数据包无法按照自定义域中的路由正常到达源节点时。一定时间内超过10次同一目 的地址数据包的失败发送就进入了路由修复处理模块。1.根据无法到邻居节点(例如节点B)的标签值,节点A查找自身路由表,删除自 身路由表中含有通过此邻居节点的路由,删除本地ARP缓存中目的节点IP地址和物理地址 的映射关系。之后查找缓存最近经过数据的路由子域表,获得通过此邻居节点的路由,发送 MBRKN消息来通知上游源节点拆除已经失效的路由。2.源节点接受到MBRKN消息之后,释放包含此两点(即指节点A和节点B)的路由 链表,以及删除ARP缓存中目的节点IP地址和物理地址的映射关系。3.通过时间戳对路由修复此项操作做时间上限定,防止过于频繁地更新路由表的 操作以及发送路由失败消息。此后再重新获得源节点与目的节点之间的路由,进行分组交换。
权利要求
一种实现基于驱动层的移动ad hoc网络标签路由和分组交换方法,其特征在于a)在移动ad hoc网络中,源节点需要与指定的目的节点进行分组交换时,源节点的TCP/IP协议层根据需要发送的数据包产生ARP请求包,经过802.11b/g驱动层处理,在ARP包的尾部添加包含有目的地址标签的自定义域,得到路由请求包,再将路由请求包发送给中间节点;b)接收到路由请求包的中间节点在802.11b/g驱动层匹配自身标签与路由请求包中目的地址标签;若两个标签值相等,则认为当前中间节点是目的节点,将数据包交给目的节点的TCP/IP协议层,由TCP/IP协议层产生ARP回复包,根据获得的反向路由链表,经过驱动层处理,回复源节点;否则将本节点标签存放在路由请求包的自定义域中,继续广播直至到达目的节点;c)根据源节点与目的节点之间的路由,源节点与目的节点在ad hoc网络中进行分组交换。
2.如权利要求1所述的移动adhoc网络标签路由和分组交换方法,其特征在于源节 点与目的节点在ad hoc网络中进行分组交换时,当中间节点A发现无法到达下一跳的中间 节点B时,根据中间节点B的标签值,中间节点A删除自身路由表中含有中间节点B的路由, 删除中间节点A的ARP缓存中目的节点IP地址和物理地址的映射关系;中间节点A发送路 由损坏消息通知源节点,源节点接收到路由损坏消息之后,释放包含有中间节点A和中间 节点B的路由链表,删除源节点的ARP缓存中目的节点IP地址和物理地址的映射关系,再 根据步骤a)和步骤b)的操作重新获得源节点与目的节点之间的路由,进行分组交换。
3.如权利要求1所述的移动adhoc网络标签路由和分组交换方法,其特征在于中间 节点A多次发送路由损坏消息时,通过时间戳来控制相邻两次发送的最小时间间隔。
全文摘要
本发明公开了一种实现基于802.11b/g驱动层的移动ad hoc网络标签路由和分组交换方法,a)源节点的TCP/IP协议层根据需要发送的数据包产生ARP请求包,在ARP包的尾部添加包含有目的地址标签的自定义域,得到路由请求包发送给中间节点;b)接收到路由请求包的中间节点在802.11b/g驱动层匹配自身标签与路由请求包中目的地址标签,直至到达目的节点;c)根据源节点与目的节点之间的路由,源节点与目的节点在ad hoc网络中进行分组交换。本发明方法可以实现802.11b/g网络多跳的数据传输,扩大了数据传输范围,在驱动层实现移动ad hoc网络提高了ad hoc网络中移动节点之间传输速率和服务质量。
文档编号H04W80/00GK101835236SQ20101015580
公开日2010年9月15日 申请日期2010年4月23日 优先权日2010年4月23日
发明者于强, 余燕平, 刁世斌, 刘云峰, 徐元欣, 梁书成, 王传刚, 王洋, 章翠枝, 陈淑敏, 麻敏觉 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1