嵌入式设备支持IPv4/IPv6协议的并发通信方法

文档序号:7896580阅读:730来源:国知局
专利名称:嵌入式设备支持IPv4/IPv6协议的并发通信方法
技术领域
本发明提供了一种嵌入式设备支持IPv4/IPv6协议的并发通信方法,尤其涉及使 嵌入式设备同时支持IPv4协议和IPv6协议的并发机制,该机制能够广泛应用于嵌入式通 信设备对IPv4和IPv6的并发支持。
背景技术
随着嵌入式系统与网络的日益结合,嵌入式设备具备网络通信能力已成为必不可 少的需求。由于IPv4地址空间的严重不足,已不能满足数目庞大的嵌入式设备。因此嵌入 式设备能够支持下一代因特网的应用成为嵌入式领域重要的趋势之一。由于IPv4互联网 已具有相当规模和广泛的应用程序,因此从IPv4到IPv6仍需要一段过渡时期。而在这一 段过渡时期,需要解决IPv4与IPv6网络互联的问题。互联网工程任务组IETF成立了专门 的工作组NGTRANS来研究IPv4网络到IPv6网络的迁移问题,提出了三大类解决方法隧道 技术、双协议栈技术、网络地址转换和协议转换技术,而其中的双协议栈技术是所有的主机 和路由器既运行IPv4协议栈,又运行IPv6协议栈,而且这种技术被认为是解决IPv4网络 和IPv6网络互联最直接、最有效的方法。因此在过渡时期如果嵌入式设备应该能够支持双 协议栈将会有广阔的应用前。从技术实现的角度看,网络设备对双栈技术的支持有两种实现方式,一种方案是 重新设计一套完整的双栈协议来代替现有的IPv4协议栈;另一种方案是将已有的IPv6协 议栈与IPv4协议栈合并后获得双栈支持。第一种方案开发出的IPv4/IPv6双协议栈在代 码上具有更高的一致性,并且整体性较好。但是由于摒弃了原来IPv4协议栈的已有工作, 包括整体的框架、上层的应用程序和底层的移植代码,导致该方案实现的双协议栈在设计 代价和适用性上存在一定的不足,并且需要较长的时间去验证协议栈的功能和稳定性。第 二种方案充分利用了已有IPv4和IPv6协议栈的工作,这不仅能够以最小的代价使设备支 持IPv4和IPv6协议,而且由于继承了原IPv4协议栈,使得现有的大部分IPv4应用程序和 移植代码经过较小的修改后能大量适用于双协议栈。但是第二种方案会存在以下问题(1)架构的合并问题,由于IPv4和IPv6都采用 了标准的TCP/IP分层架构,因此合并后的双协议栈仍会包括应用层、传输层、网络层和链 路层(接口抽象层)。有两种合并方式,一种是两套代码以各自的文件存在于双栈中,因此 在双栈的每一层上都会有两套不同的代码。这种合并方式带来的问题是合并后的双协议栈 臃肿,代码重用度不高,而且代码管理困难。第二种合并方式就是提取IPv4和IPv6协议栈 中能够共用的部分以及两个协议栈特有的部分,并将该两部分代码合并到一个文件中,因 此在双栈的每一层上都只存在一套代码。这种合并方式虽然能够提高代码的重用度,并且 使双栈的代码量保持尽量的小,但事实上协议栈每层的情况是不一样的,因此这种合并方 式并不是最高效的,需要针对每层的情况进行分析。(2) IPv4和IPv6的并发问题,满足并发 性的双协议栈虽然在同一时刻只能运行IPv4和IPv6的一个,但是在同一时间段内应该能 够同时运行两个协议而不需要做切换工作。为了保证并发性,最需要解决的问题是双栈中采用何种地址形式。如果分别采用不同的地址形式,则必须采用前面提到的第一种合并方 式,因此会导致在每层都存在两套代码。另外一种解决方式是采用统一的地址格式,而IPv4 和IPv6代码能够无差别地使用该统一地址。开源协议栈UIP采用的是预编译指令的形式 来统一地址格式,即分别定义IPv4和IPv6预编译选项来指示是否开启了相应的协议栈功 能。如果开启了 IPv4功能,则将统一地址定义为IPv4地址;如果开启了 IPv6功能,则将统 一地址定义为IPv6地址。由于这两个预编译选项不能同时开启,而且在IPv4和IPv6之间 需要进行切换,因此这种统一地址格式不能并发支持IPv4和IPv6。目前存在一些关于IPv4和IPv6协议栈合并的方法以及合并后的双协议栈框架, 但是部分该类合并方法和协议栈框架采用第一种直接的合并方式在代码量上不能保证足 够的精简,因此不适应嵌入式设备;另一部分双协议栈框架虽然保证了代码的重用度,但是 不能在协议栈运行过程中并发地提供IPv4和IPv6通信,需要在运行时根据当前的环境进 行IPv4和IPv6协议的切换,因此动态性和适应性比较差。

发明内容
为弥补现有技术的不足,本发明首先提出了一种新式的双栈地址形式。它作为一 个整体同时包含了 IPv4地址信息和IPv6地址信息,而通过另外一个成员标志位来指示该 双栈地址在协议栈运行时是作为IPv4地址或者IPv6地址。这种地址形式克服了部分双栈 通过预编译选项来互斥地将双栈地址指向IPv4地址或者IPv6地址而带来的IPv4和IPv6 功能不能同时开启的缺点,从而使得对IPv4和IPv6的并发支持成为可能。紧接着本发明 提出了一种以该双协议栈地址为基础的并发机制以及双协议栈架构,使得合并后的双协议 栈能够在运行过程中不需要切换的情况下就能不间断地并发地支持IPv4和IPv6通信。本 发明提出的双协议栈框架在网络层上由于IPv4和IPv6的较大差异,在网络上各自保留了 IPv4和IPv6模块;而在应用接口层、传输层和接口抽象层上提供了统一的模块,而IPv4和 IPv6协议共用该些模块。这样的架构不仅能保证以高效的方式和精简的代码量支持双协 议,而且由于双协议栈架构在应用程序接口和网络接口抽象提供了与原IPv4协议栈类似 的统一接口,因此能够充分利用已有的关于IPv4协议的应用程序和移植代码,增加了协议 栈的适用性和可重用性。为实现上述目的,本发明采用如下技术方案嵌入式设备支持IPv4/IPv6协议的并发通信方法,该方法的实现步骤如下Stepl 当链路层接收到设备网络接口传递上来的报文后,判断报文头部的字段的 值并将报文传递到网络层;Step2:网络层接收到报文后,首先需要判断该报文是否需要继续递交到传输层, 如需要继续传输,则将IP报头中的目标地址和源地址填充成双栈地址形式并递交到传输 层;如不需要继续传输,则进行相应的处理;Step3 传输层根据IP报头中的版本字段,将报文递交到应用程序接口层,应用程 序接口层将接收到的报文发送到用户层;St印4 当应用程序接口层有数据需要向传输层发送时,根据指定的协议类型,将 目的地址填充成双栈地址,并设置相应的标识字段,发送到传输层;St印5 传输层将接收到的数据放入相应连接列表中,同时根据目标双栈地址的标识字段分别将数据报文和目的地址传递到IPv4或者IPv6的网络层接口 ;Step6:网络层收到报文后,根据接收到的双栈地址中的标识字段,重新映射回 IPv4或者IPv6地址,并将数据和报文信息传输到相应的链路层接口 ;St印7 相应的链路层收到IP报文后,将按各自的方式进行链路层报头填充,当数 据报文填充成链路层报文格式后,调用统一的链路层接口进行发包;StepS 网络设备接口层接收到链路层发出的数据后,将数据从网络设备接口发 出ο所述St印2或St印4中,双栈地址是一个结构体,它包括两个成员一个标识字段, 该值等于4或6的时候分别指示该双栈地址包含的是IPv4地址或者IPv6地址;另一个成 员是一个联合体,它包含了本双栈地址所携带的地址信息,包括一个IPv4地址和一个IPv6 地址结构体。所述stepl中,所述报文头部的类型字段的值为4或6,如果类型字段的值为4,则 将报文递交给网络层的IPv4接口,否则将报文递交给网络层的IPv6接口。所述st印2中,相应的处理为在IPv4中,如果是ARP报文则将报文递交给ARP模 块处理而不需要继续往传输层传递;而在IPv6中,如果是邻居发现ND报文或者是ICMPv6 报文,则将报文递交给相应的模块处理。所述IPv6地址结构体不仅包含了一个IPv6地址,还包含了一个区域ID,该区域 ID被赋值为接口所在内存地址的前32位。本发明提供了一种能够克服其他双协议栈IPv4和IPv6功能不能同时开启的缺 点,并且能够在协议栈运行过程不需要切换的情况下并发地支持IPv4和IPv6协议的方法, 主要涉及以下关键点1) 一种双协议栈中的统一地址形式,其特点包括双栈地址是一个结构体,它包括两个成员一个标识字段,该值等于4或6的时候 分别指示该双栈地址包含的是IPv4地址或者IPv6地址;另一个成员是一个联合体,它包含 了本双栈地址所携带的地址信息,包括一个IPv4地址和一个结构体形式的IPv6地址。该 结构体形式的IPv6地址并不是一个纯粹的IPv6地址,它还包含了一个32位的区域ID,目 的是为了传递链路本地地址对应的区域ID。在协议栈运行时,将根据应用程序指定的协议类型或者接收到的报文类型而将普 通的IPv4或者IPv6地址填充成这种形式的双栈地址,并设定相应的标识字段。即如果应 用环境是IPv4协议类型,则对双栈地址中的IPv4地址进行赋值,并将IPv6地址置0以及 将标识字段设为4来指示当前该双栈地址包含的是IPv4地址;相反,如果应用环境是IPv6 协议类型,则对双栈地址中的IPv6地址进行赋值,而将IPv4地址置0并将标识字段设为6。 填充完毕的双栈地址将在双协议栈的应用程序接口层和传输层使用。由于双栈地址同时包 含了 IPv4地址和IPv6地址信息,当在不同的协议类型下使用时,不需要像μ IP那样通过 预编译选项来指定统一地址互斥地指向IPv4地址或者IPv6地址来进行地址切换。当确定 要在双重协议类型的环境运行时,该地址形式允许同时打开IPv4和IPv6功能,从而能够提 供不间断的双协议服务。该双栈地址不仅统一了双协议栈中应用程序接口和传输层的地址形式,使得能够 在该两层运行一套代码,保证了代码量的精简;而更重要的是这种地址形式克服了部分双栈IPv4和IPv6功能不能同时开启的缺点,从而使得对IPv4和IPv6的并发支持成为可能。 因此它是整个解决方案中最重要的基础。2)以双栈地址为基础的双协议并发过程,具体包括以双栈地址为基础的并发机制,能够并发地运行IPv4和IPv6协议。这里的并发不 是指在同一时刻能够进行IPv4和IPv6通信,而是指在一时间段内双协议栈既能支持IPv4 通信又能支持IPv6通信而不需要做任何切换工作。比如在某一时刻双协议栈处理并发送 了一条IPv6报文,而在下一时刻双协议栈接收并处理了一条IPv4报文。在输出方向上,当应用程序发起数据传送请求时,除了给出发送数据、目的地址 外,还需要指定协议类型,并将这些信息传递到应用程序接口。由应用程序接口根据指定的 协议类型,将目的地址填充成双栈地址,并设置相应的标识字段。因此应用程序只需要指定 协议类型,而无需做任何配置过程即可使用双协议栈进行数据发送。数据到达传输层时,传 输层协议的输出函数会判断双栈地址中标识字段的值,并根据该值将数据递交到网络层的 IPv4模块或者IPv6模块。网络层上IPv4协议和IPv6协议将各自采用相应的IP地址形 式,因此此时需要双栈地址重新映射回相应的IPv4和IPv6地址。由于IPv4协议和IPv6 协议在链路层上的报文格式是统一的,因此数据包被封装成链路报文后将从统一的链路发 包函数发出。在输入方向上,当IPv4和IPv6协议的链路层报文从统一的链路层输入函数分别 到达网络层的IPv4或者IPv6模块时,IPv4和IPv6的网络层输入函数将数据包和IP报头 递交给传输层输入函数,而由该输入函数根据报头中的类型字段将地址填充成双栈地址, 并设置相应的标识字段。之后再由传输层的处理函数根据目标双栈地址在连接链表中进行 匹配,从而将数据包递交给相应连接的应用程序接口。在以上输入输出过程中,并没有出现互斥的数据格式而导致需要在IPv4和IPv6 功能之间进行切换,而且在使用双栈地址后,IPv4和IPv6报文能够无差别地在各层的公共 模块进行处理,能够不需要进行任何设置就能对到达的IPv4、IPv6报文和应用程序发起的 不同协议类型的数据发送请求进行处理,从而实现了 IPv4和IPv6的并发支持。3)支持IPv4和IPv6并发的双协议栈架构,具体包括在链路层上,主要涉及接口结构体中预先定义的表征接口属性部分以及为具体移 植预留的收发包接口函数。虽然IPv4和IPv6协议栈分别维护了不同的接口结构体,但是 两个协议栈包含了部分相同的接口结构体成员。因此提取两个接口结构体中的相同接口属 性成员,并保留各自协议特有的属性部分。在输出流上,由于IPv4和IPv6各自采用不同参 数的输出接口函数,因此完全保留各自的输出接口函数。由于IPv4和IPv6的链路层报文 格式是相同的,所以采用相同的链路发包函数。因此在链路层上,供网络层输出函数调用的 输出接口函数分别有IPv4和IPv6两套,但是最终的链路层发包函数只保留一个。在输入 流上,由于收到的IPv4和IPv6链路层报文除了版本字段外并无区别,因此保留统一的输入 接口函数。因此在双栈的链路层将只保留唯一的接口结构体,而在该接口体中包含IPv4、 IPv6特有及共有的部分。在网络层上,IPv4和IPv6定义了两套完全不同的协议,包括不同的地址解析协 议、不同的报文控制协议以及地址配置过程。如果按照链路层的方式将网络层的两部分代 码合并到一个文件中,一方面会导致代码不好管理,另一方面由于没有很多的共性部分,代码的重用度并不会得到很大的提高。因此在双协议栈的网络层各自保留原IPv4协议栈和 IPv6协议栈的网络层部分,包括地址格式、路由列表、邻居缓存列表等数据格式。在传输层上,常用的传输层协议包括传输控制协议TCP和用户报文协议UDP,而且 IPv4/TCP、IPv4/UDP与IPv6/TCP、IPv6/UDP并没有实质性的区别,而唯一较大的区别就是 地址形式的不同。因此如果能够统一传输层的地址形式,就可以合并IPv4和IPv6协议栈 的传输层,节省了大部分重复的代码。而解决方式就是在双栈中采用本发明提出的统一双 栈地址,包括传输层各类处理函数的地址参数类型、协议控制块中的地址成员等涉及地址 的部分,都将使用该双栈地址。因此在双协议栈的传输层上,将提供IPv4和IPv6协议共用 的模块,包括传输层协议模块、高层校验函数以及传输层接口函数。在应用层接口上,与传输层类似,IPv4和IPv6的该部分代码的区别也是地址形式 的不同。因此采用统一的双栈地址后,双协议栈可以只保留统一的应用程序接口,一方面根 据应用程序指定的协议类型进行地址填充,从而为应用程序无差别地提供IPv4和IPv6通 信;另一方面与同样采用双栈地址的传输层相互衔接。因此合并后的双栈架构如图1所示,除了网络层包括IPv4和IPv6两部分,其他三 层都只提供了 IPv4和IPv6共用的统一模块。有益效果本发明提供了一种能够克服其他双协议栈IPv4和IPv6功能不能同 时开启的缺点,并且能够在协议栈运行过程不需要切换的情况下并发地支持IPv4和IPv6 协议的通信方法。本发明提出的双栈架构不仅能以高效的方式和精简的代码量将IPv4和 IPv6协议栈合并,而且能够并发地支持IPv4和IPv6通信。另外这种双栈框架提供了与原 IPv4协议栈统一的应用程序接口和底层网络接口,因此可以充分利用大量IPv4的已有工 作。


图1双协议栈架构;图2双栈地址结构示意图;图3双协议栈的并发机制(输入方向);图4双协议栈的并发机制(输出方向);
具体实施例方式下面结合附图对本发明提出的双栈架构和以双栈地址为基础的并发机制作进一 步的详细描述图1显示了本发明所提出的双协议栈框架。双协议栈的网络层包含了 IPv4和IPv6 两部分,而这两部分又分别由多个协议特有的模块组成。IPv4部分包括了地址解析协议 ARP、因特网控制报文协议ICMPv4以及基本的IPv4协议三部分,而IPv6部分包括了邻居发 现协议ND、地址配置ADDRC0NF、因特网控制报文协议ICMPv6以及基本的IPv6协议。而双 协议栈的其他三层,都是IPv4和IPv6协议所共享的。IPv4和IPv6数据报文在这三层中是 被统一处理的。图2显示了本发明提出的双协议栈地址形式,它的第一成员是一个类型标识字 段,该值等于4或6的时候分别指示该地址是IPv4地址或者IPv6地址。该结构体的另外成员是一个包含IPv4和IPv6地址信息的联合体,它的成员包括了一个IPv4地址和一个结 构体形式的IPv6地址。该结构体形式的IPv6地址不仅包含了一个真正的IPv6地址,还包 含了一个区域ID。定义一个区域ID是因为IPv6中的地址有链路地址和全局地址范围之 分,而链路本地地址只在本地接口的范围内保证唯一,单凭一个链路本地IPv6地址是无法 唯一标识一个接口的,因此相关RFC定义了一个32位的区域ID来唯一标识一个接口,并规 定如果目标地址为链路本地IPv6地址,则需同时指定发送接口的区域ID。在本发明中,该 区域ID被赋值为接口所在内存地址的前32位,该赋值方式不仅能够满足了唯一性的要求, 而且简化了后续源地址选择过程,因为可以直接从区域ID还原出发送接口。如果目标地址 是全局的IPv6地址,则将区域ID置为0,从而方便双栈地址的比较。在双协议栈的应用接 口层和传输层,所有的地址都将以这种双栈地址出现。另外要求在应用层到传输层以及网 络层到传输层,都需要将普通形式的IP地址填充成双栈地址。图3显示了使用双栈地址后,在输入方向上IPv4和IPv6协议的并发过程1).并发过程从统一的输入链路层函数无差别地接收物理接口传递上来的IPv4 和IPv6报文开始;当链路层的输入函数收到一条报文后,它将判断报文头部的类型字段的 值;如果类型字段值为4,则将报文递交给网络层的IPv4输入函数,否则将报文递交给网络 层的IPv6输入函数;2).网络层的输入函数接收到报文后,首先需要判断该报文是否需要继续递交到 传输层;在IPv4中,如果是ARP报文则将报文递交给ARP模块处理而不需要继续往传输层 传递;而在IPv6中,如果是邻居发现ND报文或者是ICMPv6报文,则将报文递交给相应的模 块处理;在其他情况下,IPv4和IPv6的输入函数将报文以及IP报头递交到传输层协议的 输入函数,如TCP输入函数;3).传输层的输入函数在将报文递交给传输层其他处理函数之前,需要根据IP报 头中的版本字段,将IP报头中的目标地址和源地址填充成双栈地址形式;输入函数将IPv4 和IPv6报文递交给统一的处理函数,处理函数根据目的双栈地址和源双栈地址依次匹配 连接列表,从而将该报文递交到相应的应用程序接口 ;4).由于链路层能够无差别地接收IPv4和IPv6报文,并分别沿着不同的网络层函 数到达传输层,而在传输层上和应用程序接口层上,双栈地址克服了统一地址只能互斥地 指向IPv4或者IPv6地址的限制,能够保证收到的IPv4报文和IPv6报文在该两层上被统 一的处理而不需要做任何预编译选项的设置。以上过程显示了在输入方向上,使用本发明提出的协议栈架构和双栈地址后,双 协议栈能够并发地接收并处理IPv4和IPv6报文。图4显示了使用双栈地址后,在输出方向上IPv4和IPv6协议的并发过程1).并发过程从统一的应用程序接口接收应用程序的通信数据开始;用户提供通 信数据和目标地址外,还需要指定通信使用IPv4或者IPv6协议;应用程序接口接收到数据 和协议类型后,根据类型值将目标地址填充双栈地址,并调用传输层接口函数;2).传输层处理函数将相应连接放入连接列表中后,将数据和目标地址传递给传 输层输出函数;该函数根据目标双栈地址的标识字段分别将数据报文和目的地址传递到 IPv4或者IPv6的网络层输出函数;3).网络层收到报文后,IPv4和IPv6输出函数根据接收到的双栈地址中的标识字段,重新映射回IPv4或者IPv6地址,然后按各自的处理过程对报文进行IP头部添加、地址 解析等过程;由于在链路层分别为IPv4和IPv6分别定义了不同的输出函数接口,因此网络 层IPv4和IPv6输出函数会调用不同的链路层输出接口函数;4). IPv4和IPv6的链路层输出接口函数收到IP报文后,将按各自的方式进行链路 层报头填充;当数据报文填充成链路层报文格式后,由于IPv4和IPv6的链路层报文格式是 相同的,因此将调用统一的链路层发包函数进行发包;5).类似于输入过程,双栈地址能够保证IPv4报文和IPv6报文在应用程序接口层 和传输层上被统一的处理而不需要做任何预编译选项的设置;而在网络层和链路层上,分 别沿着两条路径到达统一的链路发包函数,将IPv4和IPv6报文无差别地从物理接口发出。以上过程显示了在输出方向上,使用本发明提出的协议栈架构和双栈地址后,双 协议栈能够并发地发送IPv4和IPv6报文。本发明解决的问题是如何保证合并后的双协议栈能够在不需要任何设置和切换 的情况下并发支持IPv4和IPv6协议。它提出了一种能够有效合并IPv4和IPv6协议栈的 双栈框架和以统一双栈地址格式为基础的并发机制,不仅能以高效的方式和精简的的代码 量将IPv4和IPv6协议栈合并而使设备支持双协议,而且能够支持设备同时打开IPv4和 IPv6功能,支持无间断地并发IPv4和IPv6通信。另外这种双栈框架和并发机制在上层提 供了统一的应用程序接口,并且该接口经过适当的修改后就能适用于原IPv4和IPv6协议 栈的应用程序。而在底层提供了统一的网络接口抽象,包含了原来IPv4和IPv6协议栈的 网络接口部分,因此针对原单协议栈的移植代码经过适当修改后能适用于本双栈。这种双 栈形式极大地利用了已有的工作,并保证了协议栈的效率。该双协议栈框架和双栈地址技术已在自主开发的轻型嵌入式IPv4/IPv6双协议 栈进行实验,并且分别在PC和美国德州仪器公司的开发板LM3S8962上测试通过。目前应用 较为广泛的一款TCP/IP协议栈LwIP作为一个单IPv6协议栈,它的内存消耗量大概为40KB 的ROM和IOKB的RAM,而我们的测试结果显示应用该双栈框架和双栈地址技术后的双协议 栈内存消耗为42KB的ROM和13KB的RAM。虽然在内存消耗上略有所上升,但是该双协议栈 相对LwIP扩充了 IPv4协议的支持,这也表明了本发明提出的双协议栈框架和双栈地址技 术确实能保证协议栈精简的代码量和高效的运行过程。另外测试结果还显示了低配置嵌入 式设备在配备本双协议栈后的数据传输速率为300KB/S,满足了大部分嵌入式应用的速度 要求。另外,测试通过的双协议栈还在远程抄表终端进行实验,通过IPv4或者IPv6网络来 实时地传送采集的电力数据,实验结果表明最终的效果达到了电力应用的要求。综上所述,本发明提出的双协议栈地址和双栈架构实现了预期的目标。
权利要求
1.嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,该方法的实现步骤如下Stepl 当链路层接收到设备网络接口传递上来的报文后,判断报文头部的字段的值并 将报文传递到网络层;Step2 网络层接收到报文后,首先需要判断该报文是否需要继续递交到传输层,如需 要继续传输,则将IP报头中的目标地址和源地址填充成双栈地址形式并递交到传输层;如 不需要继续传输,则进行相应的处理;Step3 传输层根据IP报头中的版本字段,将报文递交到应用程序接口层,应用程序接 口层将接收到的报文发送到用户层;Step4 当应用程序接口层有数据需要向传输层发送时,根据指定的协议类型,将目的 地址填充成双栈地址,并设置相应的标识字段,发送到传输层;St印5 传输层将接收到的数据放入相应连接列表中,同时根据目标双栈地址的标识字 段分别将数据报文和目的地址传递到IPv4或者IPv6的网络层接口 ;St印6 网络层收到报文后,根据接收到的双栈地址中的标识字段,重新映射回IPv4或 者IPv6地址,并将数据和报文信息传输到相应的链路层接口 ;St印7 相应的链路层收到IP报文后,将按各自的方式进行链路层报头填充,当数据报 文填充成链路层报文格式后,调用统一的链路层接口进行发包;StepS 网络设备接口层接收到链路层发出的数据后,将数据从网络设备接口发出。
2.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是, 所述step2或st印4中,双栈地址是一个结构体,它包括两个成员一个标识字段,该值等于 4或6的时候分别指示该双栈地址包含的是IPv4地址或者IPv6地址;另一个成员是一个 联合体,它包含了本双栈地址所携带的地址信息,包括一个IPv4地址和一个IPv6地址结构 体。
3.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,所 述stepl中,所述报文头部的类型字段的值为4或6,如果类型字段的值为4,则将报文递交 给网络层的IPv4接口,否则将报文递交给网络层的IPv6接口。
4.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,所 述st印2中,相应的处理为在IPv4中,如果是ARP报文则将报文递交给ARP模块处理而不 需要继续往传输层传递;而在IPv6中,如果是邻居发现ND报文或者是ICMPv6报文,则将报 文递交给相应的模块处理。
5.如权利要求2所述的嵌入式设备支持IPV4/IPv6协议的并发通信方法,其特征是,所 述IPv6地址结构体不仅包含了一个IPv6地址,还包含了一个区域ID,该区域ID被赋值为 接口所在内存地址的前32位。
全文摘要
本发明公开了一种嵌入式设备支持IPv4/IPv6协议的并发通信方法,属于嵌入式互联网领域。所述双栈机制解决了如何通过合并协议栈而获得双协议栈的问题,发明主要包括两部分一是提出了一种IPv4/IPv6双协议栈框架,根据TCP/IP协议每层的不同情况分别采用了不同的合并方式,最终得到的双栈架构能够以高效的方式和精简的代码量支持IPv4/IPv6双协议;二是提出了一种新型的双栈地址以及以此为基础的双栈并发机制,双栈地址不仅解决了双协议栈中的地址统一问题,而且以此地址为基础的并发机制克服了部分双协议栈不能同时开启IPv4和IPv6功能的不足,从而能够在不需要切换的情况下并发地支持IPv4和IPv6协议。
文档编号H04L12/56GK102006338SQ201010601770
公开日2011年4月6日 申请日期2010年12月23日 优先权日2010年12月23日
发明者李新, 贾智平, 陈健 申请人:山东大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1