具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了转发IP分组方法及设备,可以降低CGN的开销。图1为本发明实施例提供的技术方案的一种应用场景的组网结构图。
图1的组网结构图包括六台网络设备,分别是第一终端、第二终端、第一用户边缘设备(Customer Edge,CE)、第二用户边缘设备、运营商级网络地址翻译设备以及应用服务器(Application Server,AS)。六台网络设备的连接关系如下:运营商级网络地址翻译设备与应用服务器通过公网连接。运营商级网络地址翻译设备与第一用户边缘设备通过第一私网连接。运营商级网络地址翻译设备与第二用户边缘设备通过第二私网连接。第一终端与第一用户边缘设备通过第一局域网连接。第二终端与第二用户边缘设备通过第二局域网连接。举例来说,第一终端和第二终端可以是个人电脑、个人数字助理或者机顶盒;应用服务器可以是网页服务器、文件服务器或者视频服务器。
本发明一个实施例提供了一种转发IP分组的方法,可以用于图1所示的组网结构中。参见图2,图2是本发明实施例提供的转发IP分组的方法的流程图,该方法包括:
202、CE从用户侧接收第一IP分组,所述第一IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第一端口。
第一IP分组的发送主体为CE的用户侧的网络设备。举例来说,CE的用户侧的网络设备可以是个人电脑、个人数字助理或者机顶盒。参见图1,CE的用户侧的网络设备可以是第一终端或者第二终端。
第一IP分组对应的协议可以是IPv4或者IPv6。当第一IP分组对应的协议是IPv4时,第一IP头的格式与IPv4的规定一致。当第一IP分组对应的协议是IPv6时,第一IP头的格式与IPv6的规定一致。
第一IP分组包含IP头、传输层协议头以及净荷。其中IP头中包含源IP地址。传输层协议头对应传输控制协议以及网际协议族的传输层。例如,传输层协议头可以对应传输控制协议(Transmission Control Protocol,TCP)。传输层协议头也可以对应用户数据报协议(User Datagram Protocol,UDP)。传输层协议头中包含传输控制协议以及网际协议族的传输层的源端口。当传输层协议头对应TCP时,传输层协议头中包含的源端口为TCP源端口。当传输层协议头对应UDP时,传输层协议头中包含的源端口为UDP源端口。
204、所述CE对所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第二端口。
CE用于对第一IP分组执行源端口翻译操作,并转发源端口翻译后的IP分组。源端口翻译是指CE接收到IP分组后,使用新的源端口替换接收到的IP分组中的源端口,从而生成新的IP分组。
第二IP分组包含传输层协议头。传输层协议头包含的源端口为第二端口。CE计算得到第二端口后,CE可以保存第一端口与第二端口的对应关系。
可选的,CE可以对第一IP分组执行IP地址翻译操作,也可以不对第一IP分组执行IP地址翻译操作。如果CE的用户侧的网络规划与CE的网络侧的网络规划一致,CE可以不执行源IP地址翻译。
206、所述CE向CGN转发所述第二IP分组,以使所述CGN对所述第二IP分组执行地址翻译,生成第三IP分组,所述第三IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
CGN位于CE的网络侧。CGN用于对第二IP分组执行源IP地址翻译操作,并转发源IP地址翻译后的IP分组。源IP地址翻译是指CGN接收到IP分组后,使用新的源IP地址替换接收到的IP分组中的源IP地址,从而生成新的IP分组。举例来说,可以根据预先设定的算法计算新的源IP地址。另外,源IP地址翻译可以是无状态地址翻译,也可以是有状态地址翻译。
第三IP分组中的源IP地址为公网地址。因此,第三IP分组中的源IP地址可以被公网正确识别。
第三IP分组中包含的传输层协议头与第二IP分组中的传输层协议头相同。也就是说,CGN根据第二IP分组生成第三IP分组时,没有对第二IP分组执行源端口翻译,降低了CGN的开销。
另外,如果CGN对第二IP分组执行源端口翻译,还可能触发CGN产生其他开销。例如,在第二IP分组中的传输层协议头对应TCP的场景下,第二IP分组中的传输层协议头还包含校验和(Checksum)字段。如果CGN将第二IP分组中的传输层协议头中的源端口替换为其他源端口,CGN不仅需要执行源端口计算,还需要根据替换后的源端口计算传输层协议头中的校验和字段。因此,相对于现有技术,本实施例提供的技术方案降低了CGN的开销。
可选的,本实施例提供的方法还可以包括:所述第二端口为集合中的元素,所述集合的元素为传输控制协议以及网际协议族的传输层的源端口,所述集合是所述CE通过主动获取协议、被动获取协议或者手工配置方式获得的。
举例来说,CE执行源端口翻译操作时,CE可以根据集合为第一端口确定新的源端口。
手工配置方式具体实现时,可以是运营商的工程师登录CE后,通过网页(Web Page)方式或者命令行方式对集合进行配置。
可选的,所述集合可以包括一个或者多个子集合。所述子集合可以包括一个端口或者端口段。
所述端口段存在多种标识方式。本发明不限定所述端口段的标识方式。举例来说,端口段可以用首端口以及尾端口的方式进行标识。例如,端口段对应的端口范围是:0至1000。另外,端口段可以用首端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:首端口:4096,端口总数:1000。另外,端口段可以用尾端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:尾端口:5096,端口总数:1000。
可选的,本实施例提供的方法还可以包括:所述主动获取协议为动态主机配置协议第四版(Dynamic Host Configuration Protocol version 4,DHCPv4)、动态主机配置协议第六版(Dynamic Host Configuration Protocol version 6,DHCPv6)或者邻居发现协议(Neighbor Discovery Protocol,NDP),所述被动获取协议为宽带论坛技术报告第069号(BroadBand Forum Technical Report069,BBF TR-069)、简单网络管理协议(Simple Network Management Protocol,SNMP)或者端口控制协议(Port Control Protocol,PCP)。
举例来说,CE可以通过扩展的NDP获取集合。当前的NDP中尚不能实现集合的配置,需要对NDP进行扩展。对NDP进行扩展时,可以为NDP中的路由通告(Router Advertisement,RA)消息增加新的选项(Option),从而实现通过NDP获取集合。
可选的,本实施例提供的方法中,所述CE从所述用户侧接收所述第一IP分组之后,以及所述生成所述第二IP分组之前,所述方法还可以包括:
所述CE对所述第一IP分组中的源IP地址执行地址翻译,所述第一IP分组包含的源IP地址为所述CE的用户侧的私网地址,所述第二IP分组包含的源IP地址为所述CE的网络侧的私网地址。
可选的,本实施例提供的方法中,所述第一IP分组包含网际协议第四版IPv4头,所述IPv4头包含源IPv4地址,所述源IPv4地址为私网地址。
所述CE对所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成所述第二IP分组包括:所述CE执行端口翻译以及IPv6头封装,生成所述第二IP分组,所述第二IP分组中包含第一IPv6头,所述第一IPv6头中包含源IPv6地址。
所述CE向所述CGN转发所述第二IP分组,以使所述CGN对所述第二IP分组执行地址翻译,生成第三IP分组包括:所述CE向所述CGN转发所述第二IP分组,以使所述CGN执行地址翻译以及IPv6头解封装,生成所述第三IP分组,所述第三IP分组包含源公网IPv4地址。
所述CE执行端口翻译以及IPv6头封装,生成所述第二IP分组。举例来说,可以先针对第一IP分组执行端口翻译,得到包含新端口的IP分组。然后,针对包含新端口的IP分组执行IPv6头封装,生成所述第二IP分组。举例来说,也可以先针对第一IP分组执行IPv6头封装,得到包含IPv6头的IP分组。然后,针对包含IPv6头的IP分组执行端口翻译,生成所述第二IP分组。本实施例不限定端口翻译和IPv6头封装的执行顺序。
所述CGN执行地址翻译以及IPv6头解封装,生成所述第三IP分组。举例来说,可以先针对第二IP分组执行IPv6头解封装,得到不包含IPv6头的IP分组。然后,针对不包含IPv6头的IP分组执行地址翻译,得到第三IP分组。第三IP分组包含新地址。也可以先针对第二IP分组执行地址翻译,得到包含新地址的IP分组。然后,针对包含新地址的IP分组执行IPv6头解封装,得到第三IP分组。第三IP分组不包含IPv6头。本实施例不限定地址翻译以及IPv6头解封装的执行顺序。
可选的,本实施例提供的方法中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i以及IPv6_base分别为所述源IPv6地址以及源IPv6地址池的首地址,所述源IPv6地址池包含所述源IPv6地址;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6地址池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
可选的,本实施例提供的方法中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i为所述源IPv6地址的前缀;IPv6_base为源IPv6前缀池的首前缀,所述源IPv6前缀池包含所述源IPv6地址的前缀;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6前缀池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
本发明另一个实施例提供了一种转发IP分组的方法。参见图3,图3是本发明实施例提供的转发IP分组的方法的流程图,该方法包括:
302、CGN接收CE转发的第二IP分组,所述第二IP分组通过如下途径获得:
所述CE从用户侧接收第一IP分组,所述第一IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第一端口,所述CE对所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成所述第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第二端口。
第一IP分组的发送主体为CE的用户侧的网络设备。举例来说,CE的用户侧的网络设备可以是个人电脑、个人数字助理或者机顶盒。参见图1,CE的用户侧的网络设备可以是第一终端或者第二终端。
第一IP分组对应的协议可以是IPv4或者IPv6。当第一IP分组对应的协议是IPv4时,第一IP头的格式与IPv4的规定一致。当第一IP分组对应的协议是IPv6时,第一IP头的格式与IPv6的规定一致。
第一IP分组包含IP头、传输层协议头以及净荷。其中IP头中包含源IP地址。传输层协议头对应传输控制协议以及网际协议族的传输层。例如,传输层协议头可以对应TCP。传输层协议头也可以对应UDP。传输层协议头中包含传输控制协议以及网际协议族的传输层的源端口。当传输层协议头对应TCP时,传输层协议头中包含的源端口为TCP源端口。当传输层协议头对应UDP时,传输层协议头中包含的源端口为UDP源端口。
CE用于对第一IP分组执行源端口翻译操作,并转发源端口翻译后的IP分组。源端口翻译是指CE接收到IP分组后,使用新的源端口替换接收到的IP分组中的源端口,从而生成新的IP分组。
第二IP分组包含传输层协议头。传输层协议头包含的源端口为第二端口。CE计算得到第二端口后,CE可以保存第一端口与第二端口的对应关系。
可选的,CE可以对第一IP分组执行IP地址翻译操作,也可以不对第一IP分组执行IP地址翻译操作。如果CE的用户侧的网络规划与CE的网络侧的网络规划一致,CE可以不执行源IP地址翻译。
304、所述CGN对所述第二IP分组执行地址翻译,生成第三IP分组,所述第三IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
CGN位于CE的网络侧。CGN用于对第二IP分组执行源IP地址翻译操作,并转发源IP地址翻译后的IP分组。源IP地址翻译是指CGN接收到IP分组后,使用新的源IP地址替换接收到的IP分组中的源IP地址,从而生成新的IP分组。举例来说,可以是根据预先设定的算法计算新的源IP地址。另外,源IP地址翻译可以是无状态地址翻译,也可以是有状态地址翻译。
第三IP分组中的源IP地址为公网地址。因此,第三IP分组中的源IP地址可以被公网正确识别。
第三IP分组中包含的传输层协议头与第二IP分组中的传输层协议头相同。也就是说,CGN根据第二IP分组生成第三IP分组时,没有对第二IP分组执行源端口翻译,降低了CGN的开销。
另外,如果CGN对第二IP分组执行源端口翻译,还可能触发CGN产生其他开销。例如,在第二IP分组中的传输层协议头对应TCP的场景下,第二IP分组中的传输层协议头还包含校验和字段。如果CGN将第二IP分组中的传输层协议头中的源端口替换为其他源端口,CGN不仅需要执行源端口计算,还需要根据替换后的源端口计算传输层协议头中的校验和字段。因此,相对于现有技术,本实施例提供的技术方案降低了CGN的开销。
可选的,本实施例提供的方法中,所述第二端口为集合中的元素,所述集合的元素为传输控制协议以及网际协议族的传输层的源端口,所述集合是所述CE通过主动获取协议、被动获取协议或者手工配置方式获得的。
举例来说,CE执行源端口翻译操作时,CE可以根据集合为第一端口确定新的源端口。
手工配置方式具体实现时,可以是运营商的工程师登录CE后,通过网页方式或者命令行方式对集合进行配置。
可选的,本实施例提供的方法中,所述集合可以包括一个或者多个子集合。所述子集合可以包括一个端口或者端口段。
所述端口段存在多种标识方式。本发明不限定所述端口段的标识方式。举例来说,端口段可以用首端口以及尾端口的方式进行标识。例如,端口段对应的端口范围是:0至1000。另外,端口段可以用首端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:首端口:4096,端口总数:1000。另外,端口段可以用尾端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:尾端口:5096,端口总数:1000。
可选的,本实施例提供的方法中,所述主动获取协议为DHCPv4、DHCPv6或者NDP,所述被动获取协议为BBF TR-069、SNMP或者PCP。
举例来说,CE可以通过扩展的NDP获取集合。当前的NDP中尚不能实现集合的配置,需要对NDP进行扩展。对NDP进行扩展时,可以为NDP中的RA消息增加新的选项,从而实现通过NDP获取集合。
可选的,本实施例提供的方法中,所述第一IP分组包含网际协议第四版IPv4头,所述IPv4头包含源IPv4地址,所述源IPv4地址为私网地址。
所述CE对所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成所述第二IP分组包括:所述CE执行所述端口翻译以及IPv6头封装,生成所述第二IP分组,所述第二IP分组中包含第一IPv6头,所述第一IPv6头中包含源IPv6地址;
所述CGN对所述第二IP分组执行地址翻译,生成所述第三IP分组包括:所述CGN执行所述地址翻译以及IPv6头解封装,生成所述第三IP分组,所述第三IP分组包含源公网IPv4地址。
所述CE执行端口翻译以及IPv6头封装,生成所述第二IP分组。举例来说,可以先针对第一IP分组执行端口翻译,得到包含新端口的IP分组。然后,针对包含新端口的IP分组执行IPv6头封装,生成所述第二IP分组。举例来说,也可以先针对第一IP分组执行IPv6头封装,得到包含IPv6头的IP分组。然后,针对包含IPv6头的IP分组执行端口翻译,生成所述第二IP分组。本实施例不限定端口翻译和IPv6头封装的执行顺序。
所述CGN执行地址翻译以及IPv6头解封装,生成所述第三IP分组。举例来说,可以先针对第二IP分组执行IPv6头解封装,得到不包含IPv6头的IP分组。然后,针对不包含IPv6头的IP分组执行地址翻译,得到第三IP分组。第三IP分组包含新地址。也可以先针对第二IP分组执行地址翻译,得到包含新地址的IP分组。然后,针对包含新地址的IP分组执行IPv6头解封装,得到第三IP分组。第三IP分组不包含IPv6头。本实施例不限定地址翻译以及IPv6头解封装的执行顺序。
可选的,本实施例提供的方法中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i以及IPv6_base分别为所述源IPv6地址以及源IPv6地址池的首地址,所述源IPv6地址池包含所述源IPv6地址;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6地址池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
可选的,本实施例提供的方法中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i为所述源IPv6地址的前缀;IPv6_base为源IPv6前缀池的首前缀,所述源IPv6前缀池包含所述源IPv6地址的前缀;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6前缀池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
本发明又一个实施例提供了一种CE。参见图4,图4是本发明实施例提供的一种CE的结构示意图,该CE包括:
接收单元402,用于从用户侧接收第一IP分组,所述第一IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第一端口。
举例来说,接收单元402可以通过CE的接收器实现。
第一IP分组的发送主体为CE的用户侧的网络设备。举例来说,CE的用户侧的网络设备可以是个人电脑、个人数字助理或者机顶盒。参见图1,CE的用户侧的网络设备可以是第一终端或者第二终端。
第一IP分组对应的协议可以是IPv4或者IPv6。当第一IP分组对应的协议是IPv4时,第一IP头的格式与IPv4的规定一致。当第一IP分组对应的协议是IPv6时,第一IP头的格式与IPv6的规定一致。
第一IP分组包含IP头、传输层协议头以及净荷。其中IP头中包含源IP地址。传输层协议头对应传输控制协议以及网际协议族的传输层。例如,传输层协议头可以对应TCP。传输层协议头也可以对应UDP。传输层协议头中包含传输控制协议以及网际协议族的传输层的源端口。当传输层协议头对应TCP时,传输层协议头中包含的源端口为TCP源端口。当传输层协议头对应UDP时,传输层协议头中包含的源端口为UDP源端口。
翻译单元404,用于对所述接收单元接收的所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第二端口。
举例来说,翻译单元404可以通过CE的CPU实现。
CE用于对第一IP分组执行源端口翻译操作,并转发源端口翻译后的IP分组。源端口翻译是指CE接收到IP分组后,使用新的源端口替换接收到的IP分组中的源端口,从而生成新的IP分组。
第二IP分组包含传输层协议头。传输层协议头包含的源端口为第二端口。CE计算得到第二端口后,CE可以保存第一端口与第二端口的对应关系。
可选的,CE可以对第一IP分组执行IP地址翻译操作,也可以不对第一IP分组执行IP地址翻译操作。如果CE的用户侧的网络规划与CE的网络侧的网络规划一致,CE可以不执行源IP地址翻译。
转发单元406,用于向CGN转发所述翻译单元生成的所述第二IP分组,以使所述CGN对所述第二IP分组执行地址翻译,生成第三IP分组,所述第三IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
举例来说,转发单元406可以通过CE的发送器实现。
CGN位于CE的网络侧。CGN用于对第二IP分组执行源IP地址翻译操作,并转发源IP地址翻译后的IP分组。源IP地址翻译是指CGN接收到IP分组后,使用新的源IP地址替换接收到的IP分组中的源IP地址,从而生成新的IP分组。举例来说,可以根据预先设定的算法计算新的源IP地址。另外,源IP地址翻译可以是无状态地址翻译,也可以是有状态地址翻译。
第三IP分组中的源IP地址为公网地址。因此,第三IP分组中的源IP地址可以被公网正确识别。
第三IP分组中包含的传输层协议头与第二IP分组中的传输层协议头相同。也就是说,CGN根据第二IP分组生成第三IP分组时,没有对第二IP分组执行源端口翻译,降低了CGN的开销。
另外,如果CGN对第二IP分组执行源端口翻译,还可能触发CGN产生其他开销。例如,在第二IP分组中的传输层协议头对应TCP的场景下,第二IP分组中的传输层协议头还包含校验和字段。如果CGN将第二IP分组中的传输层协议头中的源端口替换为其他源端口,CGN不仅需要执行源端口计算,还需要根据替换后的源端口计算传输层协议头中的校验和字段。因此,相对于现有技术,本实施例提供的技术方案降低了CGN的开销。
可选的,所述第一端口为集合中的元素,所述集合的元素为传输控制协议以及网际协议族的传输层的源端口,所述集合是所述CE通过主动获取协议、被动获取协议或者手工配置方式获得的。
举例来说,CE执行源端口翻译操作时,CE可以根据集合为第一端口确定新的源端口。
手工配置方式具体实现时,可以是运营商的工程师登录CE后,通过网页方式或者命令行方式对集合进行配置。
可选的,本实施例提供的设备中,所述集合可以包括一个或者多个子集合。所述子集合可以包括一个端口或者端口段。
所述端口段存在多种标识方式。本发明不限定所述端口段的标识方式。举例来说,端口段可以用首端口以及尾端口的方式进行标识。例如,端口段对应的端口范围是:0至1000。另外,端口段可以用首端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:首端口:4096,端口总数:1000。另外,端口段可以用尾端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:尾端口:5096,端口总数:1000。
可选的,所述主动获取协议为动态主机配置协议第四版DHCPv4、动态主机配置协议第六版DHCPv6或者NDP,所述被动获取协议为BBF TR-069、SNMP或者PCP。
举例来说,CE可以通过扩展的NDP获取集合。当前的NDP中尚不能实现集合的配置,需要对NDP进行扩展。对NDP进行扩展时,可以为NDP中的RA消息增加新的选项,从而实现通过NDP获取集合。
可选的,本实施例提供的设备中,所述翻译单元404可以包括:
第一翻译单元,用于对所述接收单元接收的所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译;和
生成单元,用于根据所述第一翻译单元的执行结果生成所述第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
可选的,本实施例提供的设备中,所述翻译单元404可以包括:
第一翻译单元,用于对所述接收单元接收的所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译;
第二翻译单元,用于对所述接收单元接收的所述第一IP分组中的源IP地址执行地址翻译,所述第一IP分组包含的源IP地址为所述CE的用户侧的私网地址,所述第二IP分组包含的源IP地址为所述CE的网络侧的私网地址;
生成单元,用于根据所述第一翻译单元的执行结果以及所述第二翻译单元的执行结果生成所述第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
可选的,本实施例提供的设备中,所述翻译单元404具体用于执行所述端口翻译以及IPv6头封装,生成所述第二IP分组,所述第二IP分组中包含第一IPv6头,所述第一IPv6头中包含源IPv6地址,所述第一IP分组包含网际协议第四版IPv4头,所述IPv4头包含源IPv4地址,所述源IPv4地址为私网地址;
所述转发单元406用于向所述CGN转发所述第二IP分组,以使所述CGN执行所述地址翻译以及IPv6头解封装,生成所述第三IP分组,所述第三IP分组包含源公网IPv4地址。
所述CE执行端口翻译以及IPv6头封装,生成所述第二IP分组。举例来说,可以先针对第一IP分组执行端口翻译,得到包含新端口的IP分组。然后,针对包含新端口的IP分组执行IPv6头封装,生成所述第二IP分组。举例来说,也可以先针对第一IP分组执行IPv6头封装,得到包含IPv6头的IP分组。然后,针对包含IPv6头的IP分组执行端口翻译,生成所述第二IP分组。本实施例不限定端口翻译和IPv6头封装的执行顺序。
所述CGN执行地址翻译以及IPv6头解封装,生成所述第三IP分组。举例来说,可以先针对第二IP分组执行IPv6头解封装,得到不包含IPv6头的IP分组。然后,针对不包含IPv6头的IP分组执行地址翻译,得到第三IP分组。第三IP分组包含新地址。也可以先针对第二IP分组执行地址翻译,得到包含新地址的IP分组。然后,针对包含新地址的IP分组执行IPv6头解封装,得到第三IP分组。第三IP分组不包含IPv6头。本实施例不限定地址翻译以及IPv6头解封装的执行顺序。
可选的,本实施例提供的设备中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i以及IPv6_base分别为所述源IPv6地址以及源IPv6地址池的首地址,所述源IPv6地址池包含所述源IPv6地址;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6地址池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
可选的,本实施例提供的设备中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i为所述源IPv6地址的前缀;IPv6_base为源IPv6前缀池的首前缀,所述源IPv6前缀池包含所述源IPv6地址的前缀;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6前缀池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
本发明另一个实施例提供了一种CGN,可以用于图1所示的组网结构中。参见图5,图5是本发明实施例提供的一种CGN的结构示意图。所述CGN包括:
接收单元502,用于接收CE转发的第二IP分组,所述第二IP分组通过如下途径获得:
所述CE从用户侧接收第一IP分组,所述第一IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第一端口,所述CE对所述第一IP分组中的传输控制协议以及网际协议族的传输层的源端口执行端口翻译,生成所述第二IP分组,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为第二端口。
举例来说,接收单元502可以通过CGN的接收器实现。
第一IP分组的发送主体为CE的用户侧的网络设备。举例来说,CE的用户侧的网络设备可以是个人电脑、个人数字助理或者机顶盒。参见图1,CE的用户侧的网络设备可以是第一终端或者第二终端。
第一IP分组对应的协议可以是IPv4或者IPv6。当第一IP分组对应的协议是IPv4时,第一IP头的格式与IPv4的规定一致。当第一IP分组对应的协议是IPv6时,第一IP头的格式与IPv6的规定一致。
第一IP分组包含IP头、传输层协议头以及净荷。其中IP头中包含源IP地址。传输层协议头对应传输控制协议以及网际协议族的传输层。例如,传输层协议头可以对应TCP。传输层协议头也可以对应UDP。传输层协议头中包含传输控制协议以及网际协议族的传输层的源端口。当传输层协议头对应TCP时,传输层协议头中包含的源端口为TCP源端口。当传输层协议头对应UDP时,传输层协议头中包含的源端口为UDP源端口。
CE用于对第一IP分组执行源端口翻译操作,并转发源端口翻译后的IP分组。源端口翻译是指CE接收到IP分组后,使用新的源端口替换接收到的IP分组中的源端口,从而生成新的IP分组。
第二IP分组包含传输层协议头。传输层协议头包含的源端口为第二端口。CE计算得到第二端口后,CE可以保存第一端口与第二端口的对应关系。
可选的,CE可以对第一IP分组执行IP地址翻译操作,也可以不对第一IP分组执行IP地址翻译操作。如果CE的用户侧的网络规划与CE的网络侧的网络规划一致,CE可以不执行源IP地址翻译。
翻译单元504,用于对所述第二IP分组执行地址翻译,生成第三IP分组,所述第三IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口。
举例来说,翻译单元504可以通过CGN的CPU实现。
CGN位于CE的网络侧。CGN用于对第二IP分组执行源IP地址翻译操作,并转发源IP地址翻译后的IP分组。源IP地址翻译是指CGN接收到IP分组后,使用新的源IP地址替换接收到的IP分组中的源IP地址,从而生成新的IP分组。举例来说,可以根据预先设定的算法计算新的源IP地址。另外,源IP地址翻译可以是无状态地址翻译,也可以是有状态地址翻译。
第三IP分组中的源IP地址为公网地址。因此,第三IP分组中的源IP地址可以被公网正确识别。
第三IP分组中包含的传输层协议头与第二IP分组中的传输层协议头相同。也就是说,CGN根据第二IP分组生成第三IP分组时,没有对第二IP分组执行源端口翻译,降低了CGN的开销。
另外,如果CGN对第二IP分组执行源端口翻译,还可能触发CGN产生其他开销。例如,在第二IP分组中的传输层协议头对应TCP的场景下,第二IP分组中的传输层协议头还包含校验和字段。如果CGN将第二IP分组中的传输层协议头中的源端口替换为其他源端口,CGN不仅需要执行源端口计算,还需要根据替换后的源端口计算传输层协议头中的校验和字段。因此,相对于现有技术,本实施例提供的技术方案降低了CGN的开销。
可选的,所述第一端口为集合中的元素,所述集合的元素为传输控制协议以及网际协议族的传输层的源端口,所述集合是所述CE通过主动获取协议、被动获取协议或者手工配置方式获得的。
举例来说,CE执行源端口翻译操作时,CE可以根据集合为第一端口确定新的源端口。
手工配置方式具体实现时,可以是运营商的工程师登录CE后,通过网页方式或者命令行方式对集合进行配置。
可选的,所述集合可以包括一个或者多个子集合。所述子集合可以包括一个端口或者端口段。
举例来说,所述端口段存在多种标识方式。本发明不限定所述端口段的标识方式。举例来说,端口段可以用首端口以及尾端口的方式进行标识。例如,端口段对应的端口范围是:0至1000。另外,端口段可以用首端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:首端口:4096,端口总数:1000。另外,端口段可以用尾端口以及端口总数的方式进行标识。例如,端口段对应的端口范围是:尾端口:5096,端口总数:1000。
可选的,所述主动获取协议为动态主机配置协议第四版DHCPv4、动态主机配置协议第六版DHCPv6或者NDP,所述被动获取协议为BBF TR-069、SNMP或者PCP。
举例来说,CE可以通过扩展的NDP获取集合。当前的NDP中尚不能实现集合的配置,需要对NDP进行扩展。对NDP进行扩展时,可以为NDP中的RA消息增加新的选项,从而实现通过NDP获取集合。
可选的,本实施例提供的设备中,所述接收单元502具体用于接收所述CE转发的所述第二网际协议IP分组,所述第二IP分组通过如下途径获得:所述CE从用户侧接收所述第一IP分组,所述第一IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第一端口,所述CE执行所述端口翻译以及IPv6头封装,生成所述第二IP分组,所述第二IP分组中包含第一IPv6头,所述第一IPv6头中包含源IPv6地址,所述第一IP分组包含网际协议第四版IPv4头,所述IPv4头包含源IPv4地址,所述源IPv4地址为私网地址,所述第二IP分组包含的传输控制协议以及网际协议族的传输层的源端口为所述第二端口;
所述翻译单元504还用于执行IPv6头解封装,所述第三IP分组包含源公网IPv4地址。
所述CE执行端口翻译以及IPv6头封装,生成所述第二IP分组。举例来说,可以先针对第一IP分组执行端口翻译,得到包含新端口的IP分组。然后,针对包含新端口的IP分组执行IPv6头封装,生成所述第二IP分组。举例来说,也可以先针对第一IP分组执行IPv6头封装,得到包含IPv6头的IP分组。然后,针对包含IPv6头的IP分组执行端口翻译,生成所述第二IP分组。本实施例不限定端口翻译和IPv6头封装的执行顺序。
所述CGN执行地址翻译以及IPv6头解封装,生成所述第三IP分组。举例来说,可以先针对第二IP分组执行IPv6头解封装,得到不包含IPv6头的IP分组。然后,针对不包含IPv6头的IP分组执行地址翻译,得到第三IP分组。第三IP分组包含新地址。也可以先针对第二IP分组执行地址翻译,得到包含新地址的IP分组。然后,针对包含新地址的IP分组执行IPv6头解封装,得到第三IP分组。第三IP分组不包含IPv6头。本实施例不限定地址翻译以及IPv6头解封装的执行顺序。
可选的,本实施例提供的设备中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i以及IPv6_base分别为所述源IPv6地址以及源IPv6地址池的首地址,所述源IPv6地址池包含所述源IPv6地址;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6地址池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
可选的,本实施例提供的设备中,
所述地址翻译包括计算所述源公网IPv4地址,所述源公网IPv4地址等于下述表达式的值:
Public IPv4_base+floor[(IPv6_i-IPv6_base)/P];
其中,Public IPv4_base为公网IPv4地址池的首地址,所述公网IPv4地址池包含所述源公网IPv4地址;floor用于执行取整运算;IPv6_i为所述源IPv6地址的前缀;IPv6_base为源IPv6前缀池的首前缀,所述源IPv6前缀池包含所述源IPv6地址的前缀;P为所述源公网IPv4地址的复用率,所述源公网IPv4地址被多个CE复用,所述多个CE的数量为P,所述多个CE包括所述CE。
所述公网IPv4地址池用于执行地址翻译,从而使得所述第三IP分组中携带所述源公网IPv4地址。
所述源IPv6前缀池用于执行IPv6头封装,从而使得所述第二IP分组中携带第一IPv6头,所述第一IPv6头中包含所述源IPv6地址。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文缩写为ROM,英文全称为Read-Only Memory)、随机存取存储器(英文缩写为RAM,英文全称为Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。