专利名称:用于ipv4应用的4-到-6网络堆栈的制作方法
用于IPV4应用的4-到-6网络堆栈背景在计算设备之间的通信通常通过网络发生。在分组交换网络中,每个网络设备被分配因特网协议(IP)地址以标识该网络中的特定设备。用于IP地址的主要标准是因特网协议版本四(IPv4)。IPv4地址的长度为32位(4字节),这将可使用的IPv4地址的可能数目限制到4,294,967,296 (2~32)。随着寻求网络连接的客户设备的数目持续增长,可用的IPv4地址的数目持续减小且将最终达到零。这个问题被称为IPv4地址耗尽。因特网协议版本6 (IPv6)是继IPv4之后已开发的因特网协议版本。IPv6具有比IPv4大得多的地址空间。这是因为使用了 128位的地址。IPv6地址空间支持2~128个地址。
发明内容
本发明的实施例涉及当进行来自IPv4兼容应用或到IPv4兼容应用的通信时利用IPv6寻址来对网络端点进行全局唯一标识的系统、方法和计算机存储介质。来自IPv4端点和/或定向到IPv4端点的IPv4数据分组被封装在IPv6数据分组中。IPv6兼容地址被标识用于IPv6数据分组的目的地。IPv6地址是包括IPv4标识符的全局唯一标识符,该IPv4标识符代表被封装的IPv4分组的IPv4地址。IPv6数据分组被传递到由IPv6地址标识的目的地。4-到-6堆栈可在目的地前截取传入的IPv6数据分组以剥离IPv6报头信息,从而揭示IPv4数据分组。提供本发明内容以便以简化形式介绍在以下具体实施方式
中进一步描述的对概念的选择。本发明内容既不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用作帮助确定要求保护的主题的范围。
以下将参考所附附图详细描述本发明的各说明性实施例,附图通过引用结合于此,并且其中图I描绘了适于实现本发明的各实施例的示例性计算设备;图2示出了根据本发明各实施例的示例性IPv4数据分组;图3示出了根据本发明各实施例的示例性IPv6数据分组;图4示出了根据本发明各实施例的示例性的来自4-到-6堆栈的IPv6数据分组;图5描绘了根据本发明的示例性实施例的IPv6地址;图6描绘了根据本发明各实施例的示例性系统的框图;图7描绘了根据本发明各实施例的示例性通信及处理流程;图8描绘了代表根据本发明各实施例的示例性方法的框图,该示例性方法利用IPv6寻址进行来自IPv4兼容应用的通信;和图9描绘了代表根据本发明各实施例的示例性方法的框图,该示例性方法利用IPv6寻址进行到IPv4兼容应用的通信。
具体实施例方式本文中用细节来描述本发明各实施例的主题以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。相反,发明人已设想所要求保护的主题还可结合其它当前或未来技术以其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组
口 ο本发明的实施例涉及当进行来自IPv4兼容应用或到IPv4兼容应用的通信时利用IPv6寻址的系统、方法和计算机存储介质。来自IPv4端点和/或定向到IPv4端点的IPv4数据分组被封装在IPv6数据分组中。IPv6兼容地址被标识用于IPv6数据分组的目的地。IPv6地址是包括IPv4标识符的全局唯一标识符,该IPv4标识符代表被封装的IPv4分组的IPv4地址。IPv6数据分组被传递到由IPv6地址标识的目的地。4-到-6堆栈可在目的地前截取传入的IPv6数据分组以剥离IPv6报头信息,从而揭示IPv4数据分组。类似地, 4-到-6堆栈可截取由源(例如,IPv4应用)产生的传出的IPv4数据分组,以在将其转发到目的地(例如,(IPv4应用,IPv6应用))前将其封装在IPv6报头中。唯一的IPv6标识符和对应的非全局唯一的IPv4标识符通过动态名称服务器和组标识符互相关联,所述组标识符为在通信端点(例如,源、目的地)中所有IPv6标识符所共有的字段。因此,在一方面,本发明提供了一种利用IPv6寻址来进行来自IPv4兼容应用的通信的方法。该方法包括接收从第一 IPv4应用传递的IPv4数据分组,其中使用IPv4地址将所述数据分组定向至目的地。此外,该方法包括将IPv4数据分组封装在IPv6数据分组中,其中使用IPv6地址将所述IPv6数据分组定向至目的地。另外,IPv6地址包括IPv4地址和组标识符。所述方法还包括使用IPv6地址将IPv6数据分组传递到目的地。在另一方面,本发明提供了其上具有计算机可执行指令的计算机存储介质,该计算机可执行指令在由具有处理器和存储器的计算系统执行时,使得该计算系统执行一种方法。所述方法包括接收IPv6数据分组,其中该IPv6数据分组包括数据净荷和目的地的全局唯一 IPv6地址,该IPv6地址为128位的标识符。全局唯一 IPv6地址的128位标识符的预定数字是与IPv4地址兼容的IPv4标识符。所述方法还包括至少部分基于全局唯一 IPv6地址的Ipv4标识符来确定目的地的目的地IPv4地址。所述方法还包括使用目的地IPv4地址将数据净荷传递到目的地。本发明的第三方面提供了一种利用IPv6寻址来进行来自IPv4兼容应用的通信的系统。该系统包括可经由因特网访问的名称服务器。所述系统还包括与该名称服务器相关联的名称解析表。该名称解析表维持与目的地相关联的标识符的映射。该标识符的映射在全局唯一 IPv6地址、虚拟网络IPv4地址和组标识符之间。所述系统还包括IPv4计算机应用,其功能为通过使用私有网络IPv4地址将IPv4数据分组传递到目的地。所述系统还包括与该IPv4计算机应用相关联的虚拟网络接口卡(NIC)。该虚拟NIC便于将IPv4数据分组从计算机应用传递到目的地。所述系统还包括与虚拟NIC进行通信的4-到-6堆栈。该4-到-6堆栈将IPv4数据分组封装在IPv6数据分组中,该IPv6数据分组包括目的地的全局唯一 IPv6地址。该4-到-6堆栈利用所述名称解析表中的私有网络IPv4地址和全局唯一 IPv6地址之间的映射来标识全局唯一 IPv6地址。
在简要描述了本发明的各实施例的概览后,以下描述适于实现本发明的各实施例的示例性操作环境。大体上参考附图,并且首先具体参考图I,示出了适用于实现本发明的各实施例的示例性操作环境,并将其概括指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将计算设备100解释为对所示出的任一模块/组件或其组合有任何依赖性或要求。各实施例可以在计算机代码或机器可使用指令的一般上下文中描述,包括由计算机或诸如个人数据助理或其他手持式设备等其他机器执行的诸如程序模块等的计算机可执行指令。一般而言,包括例程、程序、对象、模块、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。各实施例可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。各实施例也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110 :存储器 112、一个或多个处理器114、一个或多个呈现模块116、输入/输出(I/O)端口 118、I/O模块120、和说明性电源122。总线110表示可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。尽管为了清楚起见图I的各框用线条示出,但是在实际上,各模块的描绘并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现模块认为是I/O模块。而且,处理器具有存储器。本发明人认识到,这是本领域的特性,并且重申,图I的图示只是例示可结合一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,因为它们全部都被认为是在图I的范围之内的并且被称为“计算机”或“计算设备”。计算设备100通常包括各种计算机可读介质。作为示例而非限制,计算机可读介质可以包括随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器(EEPROM);闪存或其他存储器技术;CDR0M、数字多功能盘(DVD)或其他光或全息介质;磁带盒、磁带、磁盘存储或其他磁存储设备;或可用于对所需信息进行编码并且可由计算设备100访问的任何其他介质。存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的、不可移动的、或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O模块120等各种实体读取数据的一个或多个处理器。呈现模块116向用户或其他设备呈现数据指示。示例性呈现模块包括显示设备、扬声器、打印模块、振动模块等等。I/O端口 118允许计算设备100在逻辑上耦合至包括I/O模块120的其他设备,其中某些设备可以是内置的。说明性模块包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。图2示出了根据本发明各实施例的示例性IPv4数据分组200。IPv4数据分组200包括IPv4目的地地址202、IPv4源地址204和数据净荷206。不管IPv4地址是与目的地相关联还是与源相关联,该IPv4地址总是32位(4字节)标识符。结果,IPv4目的地地址和IPv4源地址204各自通过使用32位的信息来标识在联网环境中可访问的特定位置(例如,应用、设备)。历史上,每个IPv4地址是一个全局唯一标识符,其作用为从相同网络(例如,私有网络、因特网)可访问的其它位置特别标识出指定的位置。因特网的发展已造成IPv4地址消耗到对于因特网为唯一的可用IPv4地址的耗尽为不可避免的程度。因此,经由因特网的IPv4数据分组200的通信依赖于用于标识目的地位置的IPv4目的地地址202中的唯一标识符。IPv4目的地地址202通过32位的标识符来标识IPv4数据分组200的目的地。类似地,当填充IPv4源地址204时,唯一标识符是期望的。IPv4源地址204通过32位的标识符来标识IPv4数据分组200的源。在示例性实施例中,由IPv4源地址204标识的IPv4数据分组200的源是结合操作系统进行操作的计算应用。该计算应用可被编码以使用IPv4寻址(B卩,使用IPv4约定对数据分组进行寻址)。在本发明的示例性实施例中,所述计算应用并未被编码以使用IPv6。当计算应用不支持IPv6寻址时,IPv6固有的优点无法由该计算应用获得。例如,IPv6采用128位的地址(16字节的地址),这允许比IPv4的32位的地址的数目更多的全局唯一地址标识符。因为IPv4和IPv6之间的某些固有差异(例如,IPv4分组和IPv6分组的报头是显著不同的),这两个协议不可互操作。·
数据净荷206是IPv4数据分组200的一部分,该部分包括要从源被传递到目的地的实质内容。在示例性实施例中,IPv4目的地地址202和IPv4源地址204是与IPv4数据分组200相关联的报头的两个部分。图3描绘了根据本发明示例性实施例的示例性IPv6数据分组300。IPv6数据分组300包括IPv6目的地地址302、IPv6源地址304和数据净荷306。数据净荷306是IPv6数据分组300的一部分,该部分通常包括要从源被传递到目的地的实质内容。IPv6目的地地址是IPv6数据分组300的期望接收方的IPv6兼容标识符。IPv6源地址304是IPv6数据分组300的“源”的兼容标识符。如将理解地,分组的“源”可不标识该分组的原始源或产生源,而相反,该“源”可以标识沿着该分组所传播的路径的点(例如,路由器),回复将被定向至该点。因此,可以理解,如本文所使用的术语“源”可指响应可被定向至其的点,而不是数据分组的始发点。IPv6目的地地址302和IPv6源地址304是构成IPv6数据分组300的报头的部分。IPv6目的地地址302和IPv6源地址304中的每一个都是根据IPv6约定的128位的地址(16字节地址)。图4描绘了根据本发明各实施例的示例性IPv6分组400 (B卩,IPv6数据分组)。在实施例中,IPv6分组400部分地由4-到-6堆栈产生。如将在本文中作更详细讨论地,4-到-6堆栈将IPv4分组封装在IPv6分组中。IPv 6分组400包括目的地402、源404和净荷406。如前面参考图3中的IPv6数据分组300讨论地,目的地402代表IPv 6分组400的期望接收方的位置。如前面讨论地,源404标识IPv6分组400源自的始发位置(例如,产生位置、沿着通信路径的点)。净荷406是封装的IPv4数据分组。例如,参考图2所讨论的IPv4数据分组200可由IPv4应用产生,该IPv4应用不能对遵从IPv6的通信进行寻址。因此,如在图4所描绘地,IPv4可被封装在IPv6分组400中作为净荷406。如稍后将更详细讨论地,IPv6分组400的净荷406不仅包括IPv4分组的净荷,而且净荷406还可包括通常与IPv4分组的报头相关联的信息(例如,IPv4目的地地址、IPv4源地址)。目的地402包括IPv6目的地地址408。在示例性实施例中,IPv6目的地地址408以类似于将在下文中参考图5进行讨论的方式格式化。源404包括IPv6源地址410。在示例性实施例中,IPv6源地址410以类似于将在下文中参考图5进行讨论的方式格式化。净荷406包括IPv4目的地地址412、IPv4源地址414和数据净荷416。在图4中描绘的IPv6分组根据本发明的示例性实施例,其中4-到-6堆栈将源自具有IPv4能力的应用的IPv4分组封装在IPv6兼容分组中。因此,为便于在目的地使用IPv4分组,在实施例中,维持IPv4分组报头的内容并将该内容在IPv6分组内传输作为净荷406的一部分。例如,原始IPv4分组可(如前面参考图2所讨论地)包括IPv4目的地地址和IPv4源地址,它们在IPv6净荷406中分别被描绘为IPv4目的地地址412和IPv4源地址414。在本发明的示例性实施例中,准备产生IPv4分组的IPv4兼容应用可针对所期望目的地的IPv4地址执行名称服务器(NS)请求。在该示例中,所述目的地将被称为应用B,而所述始发应用将被称为应用A。如将参考图6作更详细描述地,NS可以是动态的NS。在该示例中,对所述请求的NS响应随后在被所述应用接收之前被4-到-6堆栈截取。该4-到-6堆栈可随后启动虚拟网络接口卡,该虚拟网络接口卡将向所述应用提供对传出分组的传入 响应。另外,由NS或4-到-6堆栈(或相关联的名称解析表)提供的信息可随后向应用A提供用于对应用B的所期望目的地进行寻址的IPv4地址。因此,在该示例中,应用A随后产生具有由IPv4地址描述的目的地的分组,该IPv4地址由NS或4-到-6堆栈提供。然而,如将在稍后作更详细讨论地,在该示例中,由NS或4-到-6堆栈提供的IPv4地址并非是全局唯一的。IPv4地址在组内是唯一的,该组至少部分被定义为由应用A和应用B构成的组。换言之,在该示例中提供的IPv4地址在整个因特网上并非是唯一的,但其在参与由应用A和应用B构成的组的端点中是唯一的。可在NS中维持这样的组关联。继续该示例,由应用A产生的IPv4分组被4-到_6堆栈截取。被截取的IPv4分组封装在IPv6分组中,从而可实现IPv6兼容报头。可以理解,当在本文中讨论时,IPv6报头可以是完整的IPv6报头或缩短的IPv6兼容报头。IPv6报头可包括目的地(例如,图4的目的地402)和源(例如,图4的源404)。在该示例中,目的地IPv6地址由名称解析表提供,该名称解析表使IPv4地址、IPv6地址和组标识符互相映射以方便本示例的各方面。因此,在本示例中,封装IPv6分组包括与应用B相对应的IPv6目的地地址。一旦由应用A产生的IPv4分组被封装在IPv6分组内,则依靠IPv6报头来在采用可由IPv6实现的优点的同时协调分组到应用B的通信。IPv6分组也可随后包含由应用A产生的IPv4报头作为数据净荷的一部分。在示例性实施例中,IPv6报头一到达与应用B相一致的4-到-6堆栈,就被从数据净荷剥离/移除以暴露由应用A产生的原始IPv4数据分组。剥离后的IPv6分组(现为IPv4分组)随后被传递给应用B。应用B和应用A可以在不知道被传送的分组在一部分旅程中作为IPv6分组来传递的情况下进行操作。因此,应用A和应用B可以是传统应用,它们不被更新或者以其它方式被修改以方便IPv6的使用。图5描绘了根据本发明的示例性实施例的IPv6地址500。IPv6地址包括标准的128位;然而,该128位的分配对于当前实施例是唯一的。例如,128位中最高有效的Y(即,预定数Y)个位被用作组织标识符502。类似地,在该示例中,128位中最低有效的X (S卩,预定数X)个位被用于合并IPv4兼容地址506。另外,在该示例中,128位中中间有效的Z个位被用作组标识符504。
组织标识符标识组织。例如,组织可以是云计算平台,诸如华盛顿州雷蒙德市的微软公司的AZURE。组织可以是实体(例如,商业、政府、大学、城市、州)。组织并不局限于以上所提出的那些分类。组标识符标识组织内的“组”。例如,组可包括在云计算平台内运行服务的承租人。组可以是组合工作以完成组织内的责任的资源的集合(例如,处理器和计算机可读存储器的集合)。IPv4兼容地址是符合IPv4要求的标识符。在示例性实施例中,IPv4兼容地址符合IPv4的要求,但IPv4兼容地址不是全局唯一的,而是在由相关联的组标识符标识的组内是唯一的。因此,构想了网络(例如,因特网)可访问的多个端点可具有相同的IPv4兼容地址506 (即,因此不是全局唯一的),但IPv4兼容地址在共享组标识符504的端点中是唯一的。典型的IPv4地址包括32个位(例如,4字节)。结果,在示例性实施例中,IPv4兼容地址506使用IPv6地址500的128位中的最低有效的32个位。换言之,IPv4兼容地址506消耗最低有效的32 (例如,X位)个位。此外,在该示例中,组织标识符502使用128位中最高有效的64 (S卩,Y位)个位。因此,在该示例中,组标识符504使用128位中作为中间有效位的剩余32个位(B卩,Z位)位。可以理解,构想在Y、Z和X位中使用位的其它组合。例如,可减少最高有效的Y个位而增加中间有效的Z个位。但是,可以理解,在示例性实施例中 Y+Z+X=128 位。图6描绘了根据本发明各实施例的示例性系统600的框图。系统600包括端点A602、端点B 604、网络606和名称服务器(如前面所表示的NS) 608。应当理解,本文所描述的这一安排和其他安排仅作为示例来阐明。附加于或替代于所示的安排和元素,可使用其他安排和元素(例如,设备、端点、网络、应用、表、堆栈等),并且可完全省略某些元素。此外,本文所描述的许多元素是可以实现为分立或分布式组件或结合其他组件的、以及以任何合适的组合和在任何合适的位置的功能实体。本文被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行存储在存储器中的指令的处理器来执行。图6中所示的组件中的每一个都可以是任何类型的计算设备,诸如例如参考图I描述的计算设备100。应理解,可在本发明的范围内的系统600内采用任意数量的端点、网络、名称服务器、源和目的地。另外,在系统600内还可包括其他未示出的组件。 网络606是能够支持IPv6通信的网络。构想网络606可只部分地支持IPv6。例如,可利用传统的IPv4兼容联网设备来处理通过网络606对某些通信的路由。当至少部分地使用IPv4兼容设备时,构想与本文所讨论的特征相组合地使用诸如IPv6隧道之类的公知隧道技术。图6的组件可以经由网络606彼此通信,网络606可包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。 在示例性实施例中,NS 608是为使用网络606的组件/设备提供名称解析服务的名称服务器。例如,名称服务器608可以是广泛用于当前联网环境中的动态NS (DNS)0然而,不像传统的DNS,NS 608包括名称解析表610。除了其它特征,名称解析表610也维持端点的IPv6地址(例如,图5的IPv6地址500)、IPv4兼容地址和组标识符的映射。构想可以实现一个或多个NS 608以为经由网络606可访问的每个端点维持至少这三个记录。因为参考本发明的实施例所描述的IPv6地址可以包括IPv4兼容地址和组标识符,所以构想在示例性实施例中只维持IPv6地址。组标识符和/或IPv4兼容地址可从IPv6地址进行标识。例如,可审阅IPv6地址中最低有效的X个位以标识相关的IPv4兼容地址。类似地,可审阅中间有效的Z个位以标识组标识符。此外,还构想本发明的各个实施例在名称解析表中维持端点的IPv4兼容地址、组标识符和组织标识符。可组合使用这三个记录以如本文所讨论地标识IPv6地址。可实现各种记录的任何组合以标识给定端点的IPv6地址、IPv4地址和组标识符。可用信息以几种不同的方式来填充名称解析表610。例如,端点可提供所述信息。网络管理者也可提供所述信息。可通过调查通过网络606的数据分组来标识所述信息。可通过与端点相关联的一个或多个服务(例如,4-到-6堆栈)来标识所述信息。本地名称解析表高速缓存可将信息动态地更新到NS处的名称解析表。
端点A 602包括IPv4兼容应用612、虚拟网络接口卡614、4_到-6堆栈616和名称解析表高速缓存A 618。端点B 604包括IPv4兼容应用620、虚拟网络接口卡622、4_到-6堆栈624和名称解析表高速缓存B 626。如前面所讨论地,诸如IPv4兼容应用612或620之类的IPv4兼容应用是采用IPv4标准对通信进行寻址的应用。因此,在示例性实施例中,IPv4兼容应用不能采用IPv6寻址对通信(例如,数据分组)进行寻址。因此,在该示例中,IPv4兼容应用无法固有地采用IPv6。在示例性实施例中,诸如IPv4兼容应用612之类的应用是端点,数据分组从该端点(例如,源)发送或被发送至该端点(例如,目的地)。在示例性实施例中,IPv4兼容应用612是在云计算环境中操作的服务。4-到-6堆栈616是提供本发明各实施例特征的固件、硬件和/或软件实现。例如,4-到-6堆栈616可截取来自NS 608的目的地是IPv4兼容应用612的名称解析响应。一旦截取了所述响应(或在其它实施例中的请求),4_到-6堆栈616可提供目的地的IPv4地址。在示例性实施例中,4-到-6堆栈616是由操作系统使用的插件。在另一个示例性实施例中,4-到-6堆栈616是操作系统填补(shim)。通过采用与操作系统相关的4-到-6堆栈,该4-到-6堆栈只需要被配置为与该操作系统相关,而不是与每一个应用单独相关。然而,构想该4-到-6堆栈也通过单独的应用来实现。此外,构想该4-到-6堆栈被结合在网络路由设备内。另外,4-到-6堆栈616可调用用作IPv4兼容应用612的接口的虚拟网络接口卡614。此外,4-到-6堆栈可与名称解析表高速缓存A 618结合来工作,以填充、维持、更新和/或同步信息。例如,在实施例中,名称解析表高速缓存A618是可通过名称解析表610访问的信息的本地高速缓存。在示例性实施例中,IPv4兼容应用620、虚拟网络接口卡622、4-到_6堆栈624和名称解析表高速缓存B 626与前面参考端点A 602讨论的那些类似名称的组件相当。因此,可以采用任何数量的组件来实现本发明的各实施例的范围内的所需功能。尽管为了清楚起见用线条示出了图6的各组件,但是在实际上,各组件的描绘并不是那样清楚,并且按比喻的说法,线条更精确地将是灰色的或模糊的。此外,虽然图6的某些组件被描述成各单独的框,但是该描绘在性质上和数量上是示例性的,且不应该解释为限制。
下文中参考图7来描述采用图6中所讨论组件的本发明的示例性实施例。图7描绘了根据本发明各实施例的示例性通信及处理流程700。流程700至少部分地在源IPv4兼容应用702、4-到-6堆栈704、网络706、4-到-6堆栈708和目的地IPv4兼容应用710之中。以下围绕并涉及图7的讨论仅仅是示例性的并且针对本发明的各个实施例,但可以理解本文可以构想另外的实施例。在示例性实施例中,使用动态NS来为端点注册全局唯一名称,诸如随后与唯一IPv6地址和组标识符相关联的公共完全合格域名。在该示例中,且如前面所讨论地,所述组标识符可以是组标识符和组织标识符,它们一起作为一个整体或一个组合消耗128位IPv6地址中最高有效的96个位。继续本示例,一旦将全局唯一名称与IPv6地址相关,4-到-6堆栈就被添加在端点的呼叫路径内。如图7中所示,IPv4兼容应用(例如,源)可打算经由网络706将数据分组传递到 目的地(目的地IPv4兼容应用710)。为了完成本示例中的数据分组的通信,源IPv4兼容应用702向NS发起(未示出)针对目的地IPv4兼容应用710的名称服务器解析请求。NS随后向源IPv4兼容应用702返回(未示出)针对目的地IPv4兼容应用710的IPv4地址和IPv6地址两者。如果返回的IPv6地址中最低有效的32个位对应于返回的IPv4地址,则可以确定该IPv4兼容应用能够使用4-到-6堆栈。继续图7,4-到-6堆栈704可在名称解析表(高速缓存或原始的)中输入针对目的地IPv4兼容应用710的组标识符。可输入的附加信息包括针对目的地IPv4兼容应用710的IPv6地址和/或虚拟IPv4地址(IPv6地址中最低有效的32个位)。如前面所讨论地,虚拟IPv4地址在由组标识符标识的组内是唯一的,但虚拟IPv4地址可能不是全局唯一的。唯一的虚拟IPv4和/或IPv6地址可从地址服务器(未示出)获得。例如,当源IPv4兼容应用702请求目的地IPv4兼容应用710的解析时,指向地址服务器的指针可包括在由NS提供的名称解析中。在该示例中,地址服务器可提供可类似地由DHCP服务器提供的功能。作为虚拟唯一 IPv4命名分配的结果,源IPv4兼容应用702和目的地IPv4兼容应用710属于虚拟覆盖网络中,该虚拟覆盖网络在虚拟级通信处提供对等级的IPv4语义,这因此支持了传统的IPv4应用。继续在图7所示的示例,源IPv4兼容应用702产生数据分组作为IPv4712并将该IPv4712以递送为意图地传递至目的地IPv4兼容应用710。4-到-6堆栈704截取数据分组通信并执行封装714处理。封装714处理将IPv4712放置在IPv6数据分组内(例如,作为IPv6分组的净荷)。在示例性实施例中,由源IPv4兼容应用702使用与源IPv4兼容应用702相关联的虚拟NIC,以与目的地IPv4兼容应用710进行通信。4-到-6堆栈704标识来自虚拟NIC的通信从而标识目的地。目的地具有IPv6地址,该IPv6地址包括虚拟NIC的组标识符(可包括组织标识符)和在所传递的数据分组的报头中指示的IPv4目的地地址。可使用组标识符和IPv4目的地地址以产生IPv6地址。该IPv6、IPv4和组标识符之间的相关性可维持在名称解析表高速缓存或其它储存库中。从4-到-6堆栈704,被封装的IPv4通信作为IPv6716/IPv6718通信经网络706被发送。IPv6718通信被与目的地IPv4兼容应用710相关联的4-到-6堆栈708截取。执行提取720处理以剥离IPv6报头信息,从而揭示IPv4数据分组。IPv4数据分组作为IPv4722通信被传递给目的地IPv4兼容应用710。可以理解,虚拟NIC可与目的地IPv4兼容应用710相关联以方便在与公共IPv4虚拟网络相关联的源IPv4兼容应用702和目的地IPv4兼容应用710之间传递IPv4消息。4-到-6堆栈708可利用几种检测技术来标识那些包括封装的IPv4数据分组的数据分组。构想IPv6分组报头包括“流程标签”或其它标记机制。另外,构想对伴随数据分组的IPv6源地址执行分析。如果源IPv6地址的Y和Z个最高有效位(例如,96位)对应于IPv4兼容应用的Y和Z个最高有效位,则能作出推论,通信来自与目的地IPv4兼容应用710相同组(且因此可能来自相同的虚拟网络)内的端点。基于以上的示例和其它本文所提供的实施例,可以理解,不像之前实现IPv6的策略,根据本发明各实施例,一个或多个端点应用并非非得是IPv6兼容的。例如,6-到-4(RFC 3056)允许IPv6站点在IPv4网络上互相通信而不需要显式隧道设置,但端点必须为IPv6兼容的。类似地,IPv6隧道代理(RFC 3053)允许IPv6主机经由通过IPv6隧道代理
的IPv4隧道而互相连接,但端点仍旧必须为IPv6兼容的。另外,当端点在IPv4网络地址转换器(NAT)之后时,Teredo针对单播IPv6通信提供地址分配和主机-到-主机隧道,但同样地端点必须为IPv6兼容的。此外,站内自动隧道寻址协议(ISATAP) (RFC 4214)也要求应用在端点是IPv6兼容的。另外,对由本发明各实施例解决的问题的之前策略可能要求使用全局唯一 IPv4(例如,无状态IP/ICMP转换RFC 2765)。此外,另一个之前策略可要求IPv6端点的应用级网关对IPv4端点进行寻址(例如,NAT-PT和NAPT-PTRFC 4966)。在本发明的示例性实施例中,没有利用应用级网关来在实现IPv6的至少某些优点的同时在一个或多个IPv4应用之间进行通信。图8描绘了代表根据本发明各实施例的示例性方法800的框图,该示例性方法利用IPv6寻址进行来自IPv4兼容应用的通信。块802描绘了接收从源IPv4应用传递的IPv4数据分组。在示例性实施例中,利用IPv4地址将数据分组定向至目的地。IPv4数据分组的接收可能是由与IPv4兼容应用相关联的4-到-6堆栈进行的数据的截取。在块804,IPv4数据分组被封装为IPv6数据分组。如前面讨论地,封装处理可包括向IPv4分组添加IPv6报头,以使IPv4分组成为IPv6分组的数据净荷。在示例性实施例中,IPv6分组利用IPv6地址来标识目的地,该IPv6地址包括来自IPv4数据分组的IPv4地址和组标识符(其可包括组标识符和/或组织的标识符)。在块806,封装IPv 4分组的IPv6分组使用IPv6地址被传递到目的地。可以理解,封装数据分组(例如,在IPv6分组内的IPv4分组)的处理可包括所有或部分的封装的分组。例如,在示例性实施例中,可从IPv4分组移除报头信息以减小IPv6分组内的数据净荷的大小。一旦到达目的地,可从一个或多个源(例如,名称解析表、IPv6寻址约定推论)确定所移除的IPv4报头信息。图9描绘了代表根据本发明各实施例的示例性方法900的框图,该示例性方法利用IPv6寻址进行到IPv4兼容应用的通信。在块902,接收IPv6数据分组。在示例性实施例中,IPv6数据分组包括数据净荷和目的地的全局唯一 IPv6地址。在示例性实施例中,数据净荷是封装的IPv4数据分组的全部或部分。在该示例中,目的地的IPv6地址是包括IPv4兼容标识符的128位的标识符。例如,最低有效的32个位(4字节)可对应于IPv4地址的32个位。
在块904,至少部分基于包括在IPv6地址中的IPv4兼容标识符来确定目的地 IPv4地址。在该示例中,所确定的IPv4地址并非是全局唯一的,而相反对于目的地所相关联的私有网络是唯一的。
在块906,从IPv6数据分组移除IPv6报头。换言之,在示例性实施例中,IPv4数据分组从用作通信分组的IPv6数据分组解封装(例如,提取)。因此,从IPv6分组提取IPv4 分组使IPv4分组为目的地端点所使用。例如,在示例性实施例中,通过移除IPv6报头从 IPv6分组提取IPv4分组的IPv4报头和数据净荷。对IPv6报头的移除可包括遵从IPv4放置IPv4数据分组,用于最终转送至标识的目的地。
在块908,来自IPv6数据分组的数据净荷(其可以是IPv4数据分组)通过使用在块904标识的IPv4地址被传递到目的地。如前面所讨论地,IPv4数据分组可被传递到与包括在IPv6地址中的组标识符相关联和/或与由IPv4地址标识的目的地相关联的虚拟 NIC。虚拟NIC可由4-到-6堆栈在一接收传入数据分组、一接收传出数据分组和/或一标识能够从4-到-6堆栈受益的端点后制订。此外,构想虚拟NIC与使用相同虚拟IPv4地址的应用的组相关联,但这些应用在每个应用所监听(例如,监视、经其传递)的端口上彼此不同。例如,共享公共虚拟IPv4的应用组中的每个应用(例如非全局唯一 IPv4地址)在层 4堆栈(诸如TCP或UDP )中使用唯一的端口号。
在不背离本发明的精神和范围的情况下,所描绘的各组件的许多不同安排以及未示出的组件都是可能的。已带着说明性而非限制性的意图描述了本发明的各实施例。不背离其范围的各替换实施例对本领域的技术人员将是显而易见的。技术人员可以开发实现上述改进的各替换手段而不背离本发明的范围。
将理解,特定的特征和子组合是有用的,并且可以使用而无需参考其他特征和子组合并且被认为是在权利要求书的范围之内的。并非需要以所描述的特定次序来执行在各附图中所列出的所有步骤。
权利要求
1.一种利用IPv6寻址来进行来自IPv4兼容应用的通信的方法,所述方法包括 接收从第一 IPv4应用传递的IPv4数据分组,其中使用IPv4地址将所述数据分组定向至目的地; 将所述IPv4数据分组封装在IPv6数据分组中,其中使用IPv6地址将所述IPv6数据分组定向至所述目的地; 所述IPv6地址包括所述IPv4地址和组标识符;以及 使用所述IPv6地址将所述IPv6数据分组传递到所述目的地。
2.如权利要求I所述的方法,其特征在于,所述接收IPv4数据分组是由4-到-6堆栈进行的对所述IPv4数据分组的截取。
3.如权利要求I所述的方法,其特征在于,所述第一IPv4应用或所述目的地不支持IPv6寻址。
4.如权利要求I所述的方法,其特征在于,所述目的地是第二IPv4应用。
5.如权利要求I所述的方法,其特征在于,所述IPv4地址是私有网络中的唯一标识符。
6.如权利要求I所述的方法,其特征在于,所述封装由与操作系统或网络路由设备相关联的4-到-6堆栈执行。
7.如权利要求I所述的方法,其特征在于,所述IPv6地址包括使用4字节的所述组标识符、使用4字节的所述IPv4地址和使用8字节的组织标识符。
8.如权利要求I所述的方法,其特征在于,所述IPv6地址的最低有效的4个字节代表所述IPv4地址。
9.如权利要求I所述的方法,其特征在于,所述第一IPv4应用和所述目的地具有共同的组标识符。
10.一个或多个其上包括计算机可执行指令的计算机存储介质,所述计算机可执行指令在由具有处理器和存储器的计算系统执行时,使得所述计算系统执行一种方法,所述方法包括 接收IPv6数据分组,其中所述IPv6数据分组包括数据净荷和目的地的全局唯一 IPv6地址,所述IPv6地址为128位的标识符; 所述全局唯一 IPv6地址的128位标识符的预定数字是与IPv4地址兼容的IPv4标识符; 至少部分基于所述全局唯一 IPv6地址的IPv4标识符来确定所述目的地的目的地IPv4地址; 使用所述目的地IPv4地址将所述数据净荷传递到所述目的地。
11.如权利要求10所述的方法,其特征在于,所述IPv6数据分组进一步包括所述目的地和所述数据净荷的源所相关联的组标识符。
12.如权利要求10所述的方法,其特征在于,所述目的地IPv4地址是所述IPv4标识符。
13.如权利要求10所述的方法,其特征在于,所述目的地IPv4地址使用所述IPv6地址从名称服务器解析请求确定。
14.如权利要求10所述的方法,其特征在于,还包括从所述IPv6数据分组移除IPv6报头,从而留下包括所述数据净荷的IPv4兼容的数据分组。
15.一种利用IPv6寻址来进行来自IPv4兼容应用的通信的系统,所述系统包括 可经由因特网访问的名称服务器; 与所述名称服务器相关联的名称解析表,所述名称解析表维持与目的地相关联的标识符的映射; 所述标识符的映射在全局唯一 IPv6地址、私有网络IPv4地址和组标识符之间; IPv4计算机应用,其功能为通过使用虚拟网络IPv4地址将IPv4数据分组传递到所述目的地; 与所述IPv4计算机应用相关联的虚拟网络接口卡(NIC),所述虚拟NIC便于将所述IPv4数据分组从所述计算机应用传递到所述目的地; 与所述虚拟NIC进行通信的4-到-6堆栈,所述4-到-6堆栈将所述IPv4数据分组封装在IPv6数据分组中,该IPv6数据分组包括所述目的地的全局唯一 IPv6地址;以及所述4-到-6堆栈利用所述名称解析表中的所述私有网络IPv4地址和所述全局唯一IPv6地址之间的映射来标识所述全局唯一 IPv6地址。
全文摘要
本发明涉及当进行来自IPv4兼容应用或到IPv4兼容应用的通信时利用IPv6寻址来对网络端点进行全局唯一标识的系统、方法和计算机存储介质。来自IPv4端点和/或定向到IPv4端点的IPv4数据分组被封装在IPv6数据分组中。IPv6兼容地址被标识用于IPv6数据分组的目的地。IPv6地址是包括IPv4标识符的全局唯一标识符,该IPv4标识符代表被封装的IPv4分组的IPv4地址。IPv6数据分组被传递到由IPv6地址标识的目的地。4-到-6堆栈可在目的地前截取传入的IPv6数据分组以剥离IPv6报头信息从而揭示IPv4数据分组。
文档编号H04L29/12GK102948121SQ201180029518
公开日2013年2月27日 申请日期2011年5月25日 优先权日2010年6月17日
发明者H·阿尔卡特比 申请人:微软公司