WindowsCE平台下源路由的实现方法

文档序号:7928440阅读:152来源:国知局
专利名称:Windows CE平台下源路由的实现方法
技术领域
本发明属于嵌入式移动平台Windows CE (以下简称WinCE)下建立无 线自组织网络(AdHoc网络)源路由协议提供方法,特别涉及Windows CE 平台下源路由的实现方法。
背景技术
操作系统自身开放程度的限制使我们不太可能对WinCE的核心协议栈 本身作修改,因此只能通过调用现有的函数接口和增加功能模块的方式来实 现Ad Hoc路由协议。在网络编程方面,WinCE支持NDIS(Network Driver Interface Specification)中间层驱动,可以用于网络数据包的过滤和修改;提供 Windows Sockets网络通信接口 ,可以用于部分收发包操作和对协议可用性的 测试;提供IPHelper函数接口,可以用于对IP路由表的操作。基于以上原因, 本方法主要描述了在NDIS层实现源路由的方法。
由于操作系统自身开放程度的限制,在网络协议编程方面,使用Linux 系统平台可以更直观地在其网络层编写或修改,使其具备路由功能。相对于 此,Windows平台并未为我们提供如此宽松的开发空间,WinCE下的路由协 议也相对较少。当前WinCE下已实现的有AODV、 DSDV等基于距离矢量 的路由协议。因为系统自身具备路由功能,此类协议可以简单地利用系统自 身的路由表实现转发操作。源路由的实现不仅需要此类技术的支持,还需要 通过数据包头部信息的获取及修改,实现路由功能。 发明内容本发明的目的在于克服上述现有技术不足,提供一种Windows CE平台 下源路由的实现方法,描述了在嵌入式操作系统WinCE上源路由的实现方法 及关键技术。使用了本方法的源路由协议不仅能使网络中的节点在一跳范围 内具有良好的通讯性能,而且具备多跳通信能力,并可以正确地建立路由和 实时地启动路由维护过程。本发明为其它Ad Hoc网络路由协议的编写提供 了一种实用框架。
本发明的技术方案是这样实现的包括以下步骤
&印/在PASSTHRU实例程序的基础上,在发送封包的函数 MiniPortSendPackets和接收封包的接口函数ProtocolReceivePacket中分别加 入发送过滤器和接收过滤器,将截获的网络封包送入源路由算法模块进行处 理,从而对处理的封包进行路由;
^印2发送过滤器用来判断上层发来的封包是否需要经过源路由算法模 块的处理,源路由算法模块首先使用队列缓存没有到达目的节点的路由的封 包,并为该封包发起一次路由发现过程;
S/印3若路由发现过程返回一条路径,则利用IPHelper的API接口函数 实时地更新位于TCP/IP协议栈的系统路由表,且同时为该封包创建源路由头 部,该头部位于UDP头部之后、数据字段之前,将此路径放入该源路由头部 path字段中,并设置一个指向该路径中每一跳的索引指针Index,在将头部各 个字段作相应的初始化之后,向下发送至微端口;
&卬¥接收过滤器负责分离下层发来的封包是否是源路由协议的控制包, 如果是协议的控制包则送入源路由算法模块进行处理,对于数据包,则根据 path和Index字段综合判定是否已经到达目的节点,或者根据包头中提供的所述的源路由算法模块负责发送、接收、分析和处理源路由协议的控制 包及数据包,控制包被定义为固定端口的UDP包,使用WinSocket的API 接口发送,对数据包的分析和处理主要集中于对其包头的操作之上。
本发明通过对WinCE的NDIS层的研究,利用自定义的数据包头部、相 应的控制包和NDIS层数据过滤的功能,完善了节点路由层的功能,为建立 基于WinCE的AdHoc网络提供支持。


图1为本发明的整体设计框架图2为本发明的发送过滤器流程图3为本发明的接收过滤器流程图。
下面结合附图对本发明的内容作进一步详细说明。 .
具体实施例方式
参照图1所示,在这里详细说明本发明的工作流程。
Ste/ J在NDIS层的入口函数DriverEntry中为句柄SendPacketsHandler 和句柄ReceivePacketHandler分别定义发包与收包入口函数 MiniportSendPackets禾P ProtocolReceivePacket。在这两个函数中分别加入发送 过滤器OutputHook和接收过滤器InputHook,以便将截获的网络封包送入源 路由算法模块进行处理,从而对处理的封包进行路由;
5tep2在NDIS层捕获由网络层传递下来的封包,发送过滤器主要用来判 断此封包是否需要经过源路由算法模块的处理,发送过滤器将未经源路由协 议处理的封包送入源路由算法模块进行处理,源路由算法模块首先使用队列缓存没有到达目的节点的路由的封包,并为该封包发起一次路由发现过程, 在路由发现及路由维护的过程中所涉及的控制包,均是固定端口的UDP包;
&印3待源路由算法模块路由发现过程结束,实时地更新位于TCP/IP协 议栈的系统路由表,使源路由的路由表和TCP/IP系统路由保持一致,其目的 在于利用系统路由表转发目的节点不是自己的封包,从而实现多跳路由的功 能;并向封包添加源路由头部,并从队列中取出该封包并发往目的节点;若 路由发现返回路径,则为该封包创建源路由头部,该头部位于UDP头部之后、 数据字段之前,将此路径放入该源路由头部path字段中,并设置一个指向该 路径中每一跳的索引指针Index,在将头部各个字段作相应的初始化之后, 向下发送至微端口;
Ste/^在NDIS层捕获由微端口传递上来的封包,接收过滤器主要负责分 离下层发来的封包是否是源路由协议的控制包,如果此包是固定端口的UDP 包,则被判定位控制包,并将送入源路由算法模块进行处理;对于数据包可 以参照图3完成向上传递、丢弃或者转发工作;
参照图2所示,在这里详细说明发送过滤器的工作流程。
从上层传递下来的封包首先进入发送过滤器,首先获得其以太网及IP头 部,若此时适配器及Ad Hoc网络已初始化完毕,且此包不是广播包,则可 以准备发送此包,若目的节点可达并此时源路由算法模块知道到达目的节点 的路径,则将其发送出去,否则将这个封包缓存起来并发起一次路由发现过 程,以等待源路由算法模块找到这条路径,缓存的封包将在路由发现成功后 被发送出去。
参照图3所示,在这里详细说明接收过滤器的工作流程。接收过滤器主要负责分离下层发上来的封包是否是源路由协议的控制
包,如果此包是固定端口的UDP包,则被判定为控制包,并将其送入源路由 算法模块进行处理;对于数据包,则首先判断本节点是否在path字段中,若 在path字段中并且自己是目的节点,则此封包已到达,为其分配线程并等待 系统处理;若在path字段中但自己不是目的节点,且为Index所指节点,则 按照path字段,修改Index为Index+1的同时,将此封包发送到新的Index 所指节点,完成转发工作。
权利要求
1、一种Windows CE平台下源路由的实现方法,其特征在于,包括以下步骤Step1在PASSTHRU实例程序的基础上,在发送封包的函数MiniPortSendPackets和接收封包的接口函数Protoco1ReceivePacket中分别加入发送过滤器和接收过滤器,将截获的网络封包送入源路由算法模块进行处理,从而对处理的封包进行路由;Step2发送过滤器用来判断上层发来的封包是否需要经过源路由算法模块的处理,源路由算法模块首先使用队列缓存没有到达目的节点的路由的封包,并为该封包发起一次路由发现过程;Step3若路由发现过程返回一条路径,则利用IPHelper的API接口函数实时地更新位于TCP/IP协议栈的系统路由表,且同时为该封包创建源路由头部,该头部位于UDP头部之后、数据字段之前,将此路径放入该源路由头部path字段中,并设置一个指向该路径中每一跳的索引指针Index,在将头部各个字段作相应的初始化之后,向下发送至微端口;Step4接收过滤器负责分离下层发来的封包是否是源路由协议的控制包,如果是协议的控制包则送入源路由算法模块进行处理,对于数据包,则根据path和Index字段综合判定是否已经到达目的节点,或者根据包头中提供的路由转发该数据包;
2、 根据权利要求1所述的Windows CE平台下源路由的实现方法,其特 征在于,源路由算法模块负责发送、接收、分析和处理源路由协议的控制包 及数据包,控制包被定义为固定端口的UDP包,使用WinSocket的API接口发送,对数据包的分析和处理主要集中于对其包头的操作之上。
全文摘要
本发明公开了一种Windows CE平台下源路由的实现方法,为其它Ad Hoc网络源路由协议的编写提供了一种通用框架。通过在NDIS层设置过滤器接口,截获向上(TCP/IP层)和向下(微端口、物理层)发送的数据包,根据路由规则,并配合控制包、数据包头部的信息对数据包进行一系列操作,而达到源路由的目的。本发明的源路由协议不仅能使网络中的节点在一跳范围内具有良好的通讯性能,而且具备多跳通信能力,并可以正确地建立路由和实时地启动路由维护过程。
文档编号H04W40/02GK101459945SQ20081023650
公开日2009年6月17日 申请日期2008年12月26日 优先权日2008年12月26日
发明者旭 亢, 叶安华, 杨新宇, 鹏 赵, 黄钺峰 申请人:西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1