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

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

Info

Publication number
CN102006338A
CN102006338A CN2010106017703A CN201010601770A CN102006338A CN 102006338 A CN102006338 A CN 102006338A CN 2010106017703 A CN2010106017703 A CN 2010106017703A CN 201010601770 A CN201010601770 A CN 201010601770A CN 102006338 A CN102006338 A CN 102006338A
Authority
CN
China
Prior art keywords
ipv4
ipv6
address
stack
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010106017703A
Other languages
English (en)
Other versions
CN102006338B (zh
Inventor
贾智平
李新
陈健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN2010106017703A priority Critical patent/CN102006338B/zh
Publication of CN102006338A publication Critical patent/CN102006338A/zh
Application granted granted Critical
Publication of CN102006338B publication Critical patent/CN102006338B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种嵌入式设备支持IPv4/IPv6协议的并发通信方法,属于嵌入式互联网领域。所述双栈机制解决了如何通过合并协议栈而获得双协议栈的问题,发明主要包括两部分:一是提出了一种IPv4/IPv6双协议栈框架,根据TCP/IP协议每层的不同情况分别采用了不同的合并方式,最终得到的双栈架构能够以高效的方式和精简的代码量支持IPv4/IPv6双协议;二是提出了一种新型的双栈地址以及以此为基础的双栈并发机制,双栈地址不仅解决了双协议栈中的地址统一问题,而且以此地址为基础的并发机制克服了部分双协议栈不能同时开启IPv4和IPv6功能的不足,从而能够在不需要切换的情况下并发地支持IPv4和IPv6协议。

Description

嵌入式设备支持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协议的并发通信方法,该方法的实现步骤如下:
Step1:当链路层接收到设备网络接口传递上来的报文后,判断报文头部的字段的值并将报文传递到网络层;
Step2:网络层接收到报文后,首先需要判断该报文是否需要继续递交到传输层,如需要继续传输,则将IP报头中的目标地址和源地址填充成双栈地址形式并递交到传输层;如不需要继续传输,则进行相应的处理;
Step3:传输层根据IP报头中的版本字段,将报文递交到应用程序接口层,应用程序接口层将接收到的报文发送到用户层;
Step4:当应用程序接口层有数据需要向传输层发送时,根据指定的协议类型,将目的地址填充成双栈地址,并设置相应的标识字段,发送到传输层;
Step5:传输层将接收到的数据放入相应连接列表中,同时根据目标双栈地址的标识字段分别将数据报文和目的地址传递到IPv4或者IPv6的网络层接口;
Step6:网络层收到报文后,根据接收到的双栈地址中的标识字段,重新映射回IPv4或者IPv6地址,并将数据和报文信息传输到相应的链路层接口;
Step7:相应的链路层收到IP报文后,将按各自的方式进行链路层报头填充,当数据报文填充成链路层报文格式后,调用统一的链路层接口进行发包;
Step8:网络设备接口层接收到链路层发出的数据后,将数据从网络设备接口发出。
所述step2或step4中,双栈地址是一个结构体,它包括两个成员:一个标识字段,该值等于4或6的时候分别指示该双栈地址包含的是IPv4地址或者IPv6地址;另一个成员是一个联合体,它包含了本双栈地址所携带的地址信息,包括一个IPv4地址和一个IPv6地址结构体。
所述step1中,所述报文头部的类型字段的值为4或6,如果类型字段的值为4,则将报文递交给网络层的IPv4接口,否则将报文递交给网络层的IPv6接口。
所述step2中,相应的处理为:在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、地址配置ADDRCONF、因特网控制报文协议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和10KB的RAM,而我们的测试结果显示应用该双栈框架和双栈地址技术后的双协议栈内存消耗为42KB的ROM和13KB的RAM。虽然在内存消耗上略有所上升,但是该双协议栈相对LwIP扩充了IPv4协议的支持,这也表明了本发明提出的双协议栈框架和双栈地址技术确实能保证协议栈精简的代码量和高效的运行过程。另外测试结果还显示了低配置嵌入式设备在配备本双协议栈后的数据传输速率为300KB/s,满足了大部分嵌入式应用的速度要求。另外,测试通过的双协议栈还在远程抄表终端进行实验,通过IPv4或者IPv6网络来实时地传送采集的电力数据,实验结果表明最终的效果达到了电力应用的要求。
综上所述,本发明提出的双协议栈地址和双栈架构实现了预期的目标。

Claims (5)

1.嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,该方法的实现步骤如下:
Step1:当链路层接收到设备网络接口传递上来的报文后,判断报文头部的字段的值并将报文传递到网络层;
Step2:网络层接收到报文后,首先需要判断该报文是否需要继续递交到传输层,如需要继续传输,则将IP报头中的目标地址和源地址填充成双栈地址形式并递交到传输层;如不需要继续传输,则进行相应的处理;
Step3:传输层根据IP报头中的版本字段,将报文递交到应用程序接口层,应用程序接口层将接收到的报文发送到用户层;
Step4:当应用程序接口层有数据需要向传输层发送时,根据指定的协议类型,将目的地址填充成双栈地址,并设置相应的标识字段,发送到传输层;
Step5:传输层将接收到的数据放入相应连接列表中,同时根据目标双栈地址的标识字段分别将数据报文和目的地址传递到IPv4或者IPv6的网络层接口;
Step6:网络层收到报文后,根据接收到的双栈地址中的标识字段,重新映射回IPv4或者IPv6地址,并将数据和报文信息传输到相应的链路层接口;
Step7:相应的链路层收到IP报文后,将按各自的方式进行链路层报头填充,当数据报文填充成链路层报文格式后,调用统一的链路层接口进行发包;
Step8:网络设备接口层接收到链路层发出的数据后,将数据从网络设备接口发出。
2.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,所述step2或step4中,双栈地址是一个结构体,它包括两个成员:一个标识字段,该值等于4或6的时候分别指示该双栈地址包含的是IPv4地址或者IPv6地址;另一个成员是一个联合体,它包含了本双栈地址所携带的地址信息,包括一个IPv4地址和一个IPv6地址结构体。
3.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,所述step1中,所述报文头部的类型字段的值为4或6,如果类型字段的值为4,则将报文递交给网络层的IPv4接口,否则将报文递交给网络层的IPv6接口。
4.如权利要求1所述的嵌入式设备支持IPv4/IPv6协议的并发通信方法,其特征是,所述step2中,相应的处理为:在IPv4中,如果是ARP报文则将报文递交给ARP模块处理而不需要继续往传输层传递;而在IPv6中,如果是邻居发现ND报文或者是ICMPv6报文,则将报文递交给相应的模块处理。
5.如权利要求2所述的嵌入式设备支持IPV4/IPv6协议的并发通信方法,其特征是,所述IPv6地址结构体不仅包含了一个IPv6地址,还包含了一个区域ID,该区域ID被赋值为接口所在内存地址的前32位。
CN2010106017703A 2010-12-23 2010-12-23 嵌入式设备支持IPv4/IPv6协议的并发通信方法 Expired - Fee Related CN102006338B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010106017703A CN102006338B (zh) 2010-12-23 2010-12-23 嵌入式设备支持IPv4/IPv6协议的并发通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010106017703A CN102006338B (zh) 2010-12-23 2010-12-23 嵌入式设备支持IPv4/IPv6协议的并发通信方法

Publications (2)

Publication Number Publication Date
CN102006338A true CN102006338A (zh) 2011-04-06
CN102006338B CN102006338B (zh) 2013-01-09

Family

ID=43813406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010106017703A Expired - Fee Related CN102006338B (zh) 2010-12-23 2010-12-23 嵌入式设备支持IPv4/IPv6协议的并发通信方法

Country Status (1)

Country Link
CN (1) CN102006338B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102611750A (zh) * 2012-03-15 2012-07-25 中兴通讯股份有限公司 一种双协议栈接入的方法和系统
CN102724068A (zh) * 2012-04-05 2012-10-10 杭州安恒信息技术有限公司 一种在IPv6混合网络中进行审计日志资产识别的方法
CN102938940A (zh) * 2012-11-02 2013-02-20 中兴通讯股份有限公司 一种无线数据终端及其支持IPv4/IPv6双栈的方法
CN103517334A (zh) * 2012-06-29 2014-01-15 中国电信股份有限公司 应用处理芯片、智能手机系统及网络接入方法
CN104702614A (zh) * 2015-03-19 2015-06-10 西电通用电气自动化有限公司 一种双协议栈双网口mms通信系统及方法
CN106464672A (zh) * 2014-02-23 2017-02-22 瑞典爱立信有限公司 用于桥接的住宅网关配置的IPoE双栈订户
CN107147655A (zh) * 2017-05-25 2017-09-08 北京中电普华信息技术有限公司 一种网络双协议栈并行处理模型及其处理方法
CN110086689A (zh) * 2019-04-22 2019-08-02 杭州迪普科技股份有限公司 一种双栈bfd检测方法以及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003084185A1 (en) * 2002-03-27 2003-10-09 British Telecommunications Public Limited Company System for selecting a connectivity mechanism
CN1523849A (zh) * 2003-02-18 2004-08-25 ���ǵ�����ʽ���� 利用双协议栈将IPv4转换为IPv6的设备及其方法
CN1783869A (zh) * 2004-11-29 2006-06-07 中兴通讯股份有限公司 在TCP/IPv4协议栈中增加IPv6支持的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003084185A1 (en) * 2002-03-27 2003-10-09 British Telecommunications Public Limited Company System for selecting a connectivity mechanism
CN1523849A (zh) * 2003-02-18 2004-08-25 ���ǵ�����ʽ���� 利用双协议栈将IPv4转换为IPv6的设备及其方法
CN1783869A (zh) * 2004-11-29 2006-06-07 中兴通讯股份有限公司 在TCP/IPv4协议栈中增加IPv6支持的方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102611750A (zh) * 2012-03-15 2012-07-25 中兴通讯股份有限公司 一种双协议栈接入的方法和系统
CN102724068A (zh) * 2012-04-05 2012-10-10 杭州安恒信息技术有限公司 一种在IPv6混合网络中进行审计日志资产识别的方法
CN103517334A (zh) * 2012-06-29 2014-01-15 中国电信股份有限公司 应用处理芯片、智能手机系统及网络接入方法
CN103517334B (zh) * 2012-06-29 2018-10-09 中国电信股份有限公司 应用处理芯片、智能手机系统及网络接入方法
US9537980B2 (en) 2012-11-02 2017-01-03 Zte Corporation Wireless data terminal and IPv4/IPv6 dual stack support method therefor
WO2013178160A1 (zh) * 2012-11-02 2013-12-05 中兴通讯股份有限公司 无线数据终端及其支持IPv4/IPv6双栈的方法
CN102938940A (zh) * 2012-11-02 2013-02-20 中兴通讯股份有限公司 一种无线数据终端及其支持IPv4/IPv6双栈的方法
CN106464672A (zh) * 2014-02-23 2017-02-22 瑞典爱立信有限公司 用于桥接的住宅网关配置的IPoE双栈订户
CN106464672B (zh) * 2014-02-23 2019-09-17 瑞典爱立信有限公司 用于桥接的住宅网关配置的IPoE双栈订户
CN104702614A (zh) * 2015-03-19 2015-06-10 西电通用电气自动化有限公司 一种双协议栈双网口mms通信系统及方法
CN104702614B (zh) * 2015-03-19 2018-07-10 西电通用电气自动化有限公司 一种双协议栈双网口制造报文规范通信系统及方法
CN107147655A (zh) * 2017-05-25 2017-09-08 北京中电普华信息技术有限公司 一种网络双协议栈并行处理模型及其处理方法
CN110086689A (zh) * 2019-04-22 2019-08-02 杭州迪普科技股份有限公司 一种双栈bfd检测方法以及系统

Also Published As

Publication number Publication date
CN102006338B (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
CN102006338B (zh) 嵌入式设备支持IPv4/IPv6协议的并发通信方法
CN104869065B (zh) 数据报文处理方法及装置
CN102577330B (zh) 用于在网络环境中提供转换机制的装置、逻辑和方法
CN100469038C (zh) 用于隧穿分组的isatap路由器及其方法
CN102347993B (zh) 一种网络通信的方法和设备
CN102148773A (zh) 一种IPv6协议和IPv4协议转换的方法及系统
CN104734963A (zh) 一种基于SDN的IPv4和IPv6网络互连方法
CN102938736B (zh) 一种实现IPv4报文穿越IPv6网络的方法和设备
CN104270475B (zh) 基于NAT64实现IPv4网络与IPv6网络互通的系统及方法
CN102355479B (zh) 一种多nat网关流量转发的方法和设备
CN100484083C (zh) 一种地址转换方法及实现该方法的混合地址转换路由器
CN105850102A (zh) 服务链的控制
CN101827039B (zh) 一种负载分担的方法和设备
CN102255982A (zh) 一种IPv4/IPv6转换网关以及转换方法
CN101316272A (zh) 构建因特网协议版本4和6混合网络的多协议层翻译方法
CN104579810A (zh) 软件定义网络流量采样方法和系统
CN100471163C (zh) 在IPv6中用主机间隧道支持IPv4应用程序的方法
CN103118145A (zh) 基于DNS的IPv4-over-IPv6多隧道自动建立方法
CN102025604A (zh) 一种承载网络及数据传输方法
CN102394828A (zh) 一种跨vpn访问时的报文传输方法和设备
CN102098353B (zh) 基于分布式哈希表DHT实现IPv4和IPv6互通的系统和方法
CN116488958A (zh) 网关处理方法、虚拟接入网关、虚拟业务网关及相关设备
CN106331211A (zh) 一种实现IPv6地址访问IPv4资源的方法和系统
CN102546845B (zh) 业务访问方法、装置及系统
CN101841481A (zh) 虚拟专用网络路由转发实例的实现方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130109

Termination date: 20131223