一种网络地址转换方法及芯片与流程

文档序号:16631641发布日期:2019-01-16 06:37阅读:524来源:国知局
一种网络地址转换方法及芯片与流程

本发明涉及通信技术领域,特别涉及一种网络地址转换方法及芯片。



背景技术:

当企业更换,或者新增互联网服务提供商(internetserviceprovider,isp),那么企业的内部网络需要重新配置。为了不重新配置企业内部的网络,可以在企业出口部署网络地址翻译设备,将企业内部使用的互联网协议6(internetprotocolversion6,ipv6)地址翻译为外部网络使用的ipv6地址。外部网络变化后,只需要更新网络地址翻译设备的配置即可,而企业内部的ipv6地址保持不变。

目前实现将企业内部使用的ipv6地址翻译为外部网络使用的ipv6地址是由路由器通过其处理器或者通过网络处理器(networkprocessor,np)实现。处理器或np实现方式虽然灵活,但其转发能力较低。处理器,例如x86cpu当前最大处理能力在100gbps以下,np当前最大处理能力是480gbps,均难以支持tbps级高带宽的使用场景。



技术实现要素:

本发明实施例提供一种网络地址转换方法及芯片,所述网络地址转换方法应用于可编程交换芯片,用于提高数据转发效率。

第一方面,提供了一种网络地址转换方法,所述网络地址转换方法应用于可编程交换芯片,所述方法包括:

为接收到的报文生成属性信息;

根据所述属性信息及属性信息与路由接口表的映射关系,确定所述报文的来源;

根据所述报文的来源以及与预设的转换规则,对所述报文的源互联网协议ip地址或者目的ip地址进行转换。

可选的,所述接口表包括内网接口表和外网接口表,根据所述属性信息及属性信息与路由接口表的映射关系,确定所述报文的来源,包括:

在所述内网接口表中查找所述属性信息;

若查找到所述属性信息,则确定所述报文来自内网;

否则在所述外网接口表中查找所述属性信息,若查找到所述属性信息,则确定所述报文来自外网。

可选的,根据所述报文的来源以及预设的转换规则,对所述报文的源互联网协议ip地址或者目的ip地址进行转换,包括:

若所述报文来自内网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将所述报文的源ip地址前缀转换为外网地址前缀;

对所述报文的地址中的子网部分进行补偿,获得新的源ip地址。

可选的,根据所述报文的来源以及与预设的转换规则,对所述报文的源互联网协议ip地址或者目的ip地址进行转换,包括:

若所述报文来自外网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将所述报文的目的ip地址前缀转换为内网地址前缀;

对所述报文的地址中的子网部分进行补偿,获得新的目的ip地址。

可选的,对所述报文的地址中的子网部分进行补偿,包括:

计算转换后的ip地址的前缀校验和与转换前的ip地址的前缀校验和之差,获得补偿值;

通过所述补偿值对所述报文的地址中的子网部分进行补偿。

第二方面,提供了一种网络地址转换芯片,所述网络地址转换芯片为可编程交换芯片,所述网络地址转换芯片包括:

生成单元,用于为接收到的报文生成属性信息;

确定单元,用于根据所述属性信息及属性信息与路由接口表的映射关系,确定所述报文的来源;

转换单元,用于根据所述报文的来源以及预设的转换规则,对所述报文的源ip地址或者目的ip地址进行转换。

可选的,所述接口表包括内网接口表和外网接口表,所述确定单元具体用于:

在所述内网接口表中查找所述属性信息;

若查找到所述属性信息,则确定所述报文来自内网;

否则在所述外网接口表中查找所述属性信息,若查找到所述属性信息,则确定所述报文来自外网。

可选的,所述转换单元具体用于:

若所述报文来自内网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将所述报文的源ip地址前缀转换为外网地址前缀;

对所述报文的地址中的子网部分进行补偿,获得新的源ip地址。

可选的,所述转换单元具体用于:

若所述报文来自外网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将所述报文的目的ip地址前缀转换为内网地址前缀;

对所述报文的地址中的子网部分进行补偿,获得新的目的ip地址。

可选的,所述转换单元具体用于:

计算转换后的ip地址的前缀校验和与转换前的ip地址的前缀校验和之差,获得补偿值;

通过所述补偿值对所述报文的地址中的子网部分进行补偿。

第三方面,提供一种网络地址转换芯片,所述网络地址转换芯片为可编程交换芯片,所述网络地址转换芯片包括:

至少一个处理器,以及

与所述至少一个处理器连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第一方面任一项所述的方法。

第四方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。

本发明实施例中,通过可编程变换芯片实现网络地址转换,可编程变换芯片可以为接收的报文标识属性信息,通过在可编程变换芯片中内部存储的属性信息与路由接口表的映射关系查找属性信息对应的接口,从而获知报文入口,以进一步判断报文是来自内网还是外网,从而对报文的源ip地址或者目的ip地址进行转换。可编程变换芯片查找内部存储的映射关系,相较于处理器查找外部存储的表来说,查找速度更快,从而提高了数据转发效率。

附图说明

图1是本发明实施例提供的网络地址转换方法的流程示意图;

图2为本发明实施例提供的网络地址转换芯片的一种结构示意图;

图3为本发明实施例提供的网络地址转换芯片的一种结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

为便于理解本发明实施例提供的技术方案,这里先对本发明实施例使用的一些关键名词进行解释:

ipv6地址是128bit的接口标识符,其中应用最普遍的ipv6单播地址的结构主要包括三部分,分别是路由前缀(routingprefix)、子网(subnet)和接口id(interfaceid)。其中,路由前缀部分占48bit,子网部分占16bit,接口id占64bit。

通常,ipv6前缀(ipv6prefix)由ipv6地址(ipv6-address)加前缀长度(prefix-length)表示,即ipv6-address/prefix-lengt,例如如下的三种ipv6前缀表示:

2001:0db8:0000:cd30:0000:0000:0000:0000/60;

或者,2001:0db8::cd30:0:0:0:0/60;

或者,2001:0db8:0:cd30::/60,以上这三种ipv6前缀都是合法的。

nptv6(ipv6-to-ipv6networkprefixtranslation)是一种无状态的ipv6-to-ipv6网络前缀翻译方法。在边缘网络提供地址无关(addressindependence)特性。nptv6还有一个好处是传输层透明,即ipv6头部的地址修改,四层(例如,传输控制协议(transmissioncontrolprotocol,tcp))的校验码不需要重新计算。nptv6通过将一个ipv6前缀映射为另一个ipv6前缀实现地址翻译。实现nptv6功能的网络设备一般称作nptv6translator。最简单场景下,一个nptv6translator连接两条网络链路。一条称之为内网链路,即inside侧。另一条称之为外网链路,即outside侧。内网侧的设备使用本地地址,外网侧使用全局公网地址。

目前实现将企业内部使用的ipv6地址翻译为外部网络使用的ipv6地址是由路由器通过其处理器,或者通过网络处理器(networkprocessor,np)实现。处理器或np实现方式虽然灵活,但其转发能力较低。处理器,例如x86cpu当前最大处理能力在100gbps以下,np当前最大处理能力是480gbps,均难以支持tbps级高带宽的使用场景。

鉴于此,本发明实施例通过可编程变换芯片实现网络地址转换,可编程变换芯片可以为接收的报文标识属性信息,通过在可编程变换芯片中内部存储的属性信息与路由接口表的映射关系查找属性信息对应的接口,从而获知报文入口,以进一步判断报文是来自内网还是外网,从而对报文的源ip地址或者目的ip地址进行转换。可编程变换芯片查找内部存储的映射关系,相较于处理器查找外部存储的表来说,查找速度更快,从而提高了数据转发效率,以实现能够支持tbps级高带宽的使用场景。

下面结合说明书附图介绍本发明实施例提供的技术方案。

请参见图1,本发明实施例提供了一种网络地址转换方法,该方法可以有可编程交换芯片执行,用于将数据从内网设备转发到外网设备,或者将数据从外网设备转发到内网设备。该方法的流程描述如下:

s101、为接收到的报文生成属性信息;

s102、根据属性信息及属性信息与路由接口表的映射关系,确定报文的来源;

s103、根据报文的来源以及预设的转换规则,对报文的源ip地址或者目的ip地址进行转换。

当企业更换或者新增isp,为了不需要重新配置企业内部的网络,可以在企业出口部署网络地址翻译设备,将企业内部使用的ipv6地址翻译为外部网络使用的ipv6地址。在本发明实施例中,通过可编程变换芯片实现网络地址的转换。

可编程变换芯片部署在网络地址翻译设备中,位于内网和外网之间。当内网和外网之间有数据交互时,可编程变换芯片接收到报文时,可以为报文生成相应的属性信息,该属性信息可以指示报文入口,也就是指示接收到报文的芯片端口。该属性信息也可以包括报文发送时间等信息,或者其他可能的信息。

可编程变换芯片为接收到的报文生成属性信息后,可以以属性信息作为关键词判断报文的来源,也就是报文是来自内网,还是外网,或者是来自内网的哪个接口,来自外网的哪个接口。具体地,可编程变换芯片事先可以对内网(inside)接口、外网(outside)接口进行配置。例如,可编程变换芯片可以将报文入口与芯片端口映射,并将报文入口与inside接口映射,以及将报文入口与outside接口映射。其中,一个inside接口可以对应多个报文入口,一个outside接口也可以对应多个报文入口。可编程变换芯片事先也可以建立inside接口表以及outside接口表。其中,inside接口表包括所有的inside接口,同样地,outside接口表包括所有的outside接口。

可编程变换芯片可以将属性信息与路由接口表的映射关系存储在内部缓存,以根据属性信息以及属性信息与路由接口表的映射关系,确定报文的来源。由于可编程变换芯片是从内部缓存查映射关系,相较于处理器从外部存储器查表的方式来说,查找速度较快。具体地,可编程变换芯片根据属性信息,也可以认为是以属性信息为关键词查找inside接口表,如果可以查到,则可以认为报文来自内网。如果查不到,那么报文可能来自外网。可编程变换芯片可以以属性信息为关键词查找outside接口表,如果可以查到,则可以认为报文来自外网。

可编程变换芯片确定了报文的来源之后,可以对报文的源ip地址或者目的ip地址进行转换,以保证内部的ip地址保持不变。

具体地,可编程变换芯片可以对报文进行解析,获取报文的源ip地址,目的ip地址,并将源ip地址中的前缀、子网和接口id这三部分分别提取出来。当然可编程变换芯片可以在确定报文来源之前对报文进行解析,这里不作限定。

可编程变换芯片可以根据预设的转换规则,对报文的源ip地址或目的ip地址进行转换。预设的转换规则可以是预设的内网地址前缀与外网地址前缀的映射关系,外网地址前缀是由运营商分配的,而内网地址前缀则是用户自身可以配置的,配置了内网地址前缀之后,可以建立内网地址前缀和外网地址前缀的映射关系,即转换规则。如果可编程变换芯片确定报文来自内网,则根据转换规则,将报文的源ip地址前缀转换为外网地址前缀。如果可编程变换芯片确定报文来自外网,则可以根据转换规则,将报文的目的ip地址前缀转换为内网地址前缀。

例如,转换规则指示的是当内网地址前缀是fd01:0203:0405时,外网地址前缀可以是2001:0db8:0001。那么如果报文是从内网发往外网,报文的源ipv6地址为fd01:0203:0405::/48,则可以将源ipv6地址前缀修改为2001:0db8:0001::/48。同样地,如果报文是从外网发往内网,报文的目的ip地址前缀为2001:0db8:0001::/48,则可以将源ipv6地址前缀修改为fd01:0203:0405::/48。

ipv6报文头部中源ip地址或目的ip地址的修改会影响传输层的校验和,以tcp为例,tcp在计算校验和时,会使用报文头中的部分信息(包括ipv6地址)生成的伪头部。要维持四层校验和不变,ipv6地址前缀修改后,要通过ipv6地址中的其他部分做补偿,以维持伪头部的校验和不变,从而确保传输层的校验和不变。

在本发明实施例中,对报文的地址中的子网部分进行补偿,修正前缀变化引起的校验和变化,达到四层校验和不变的目的。具体地,可编程变换芯片可以将转换后的前缀校验和与转换前的前缀校验和之差,作为补偿值,通过该补偿值对报文的地址中的子网部分进行补偿。

例如,针对内网中的某个节点,其ipv6地址是fd01:0203:0405:0001::1234,作前缀替换,替换后的ipv6地址是2001:0db8:0001:0001::1234。ipv6地址前缀fd01:0203:0405的二进制反码校验和是0xfcf5。ipv6地址前缀2001:0db8:0001的二进制反码校验和是0xd245。校验和差值为0xd245-0xfcf5=0xd54f。校验和差值在subnet部分补偿。内网节点的subnet是0x0001,补偿后的subnet为0x0001+0xd54f=0xd550。因此翻译后的外网地址是2001:0db8:0001:d550::1234。

对于应答报文,目的ipv6地址是2001:0db8:0001:d550::1234,前缀变换后,替换前缀变为fd01:0203:0405:d550::1234。此时前缀的校验和差值为0xfcf5-0xd245=0x2ab0。在subnet部分补偿,补偿后的subnet为0xd550+0x2ab0=0x0001。因此翻译后的内网地址是fd01:0203:0405:0001::1234。

可编程变换芯片针对报文的源ip地址进行前缀转换,并在子网部分进行补偿之后,与原来的接口id组成新的源ip地址。同样地,针对报文的目的ip地址进行前缀转换,并在子网部分进行补偿之后,与原来的接口id也组成新的目的ip地址,实现了网络地址的翻译。

本发明实施例中,可编程变换芯片可以通过编程实现网络地址的转化,例如利用p4(programmingprotocol-independentpacketprocessors)语言定义可编程芯片的流水线,利用可编程变换芯片进行nptv6地址翻译。本发明实施例让数据转发平面也具有可编程能力,打破了硬件设备对数据转发平面的限制,让数据包的解析和转发流程也能通过编程控制,从而提高数据转发效率。

综上,本发明实施例通过可编程变换芯片实现网络地址转换,可编程变换芯片可以为接收的报文标识属性信息,通过在可编程变换芯片中内部存储的属性信息与接口表的映射关系查找属性信息对应的接口,从而获知报文入口,以进一步判断报文是来自内网还是外网,从而对报文的源ip地址或者目的ip地址进行转换。可编程变换芯片查找内部存储的映射关系,相较于处理器查找外部存储的表来说,查找速度更快。本发明实施例可以通过p4语言对可编程变换芯片编程,通过编程控制数据包的解析和转发流程,打破了硬件设备对数据转发平面的限制,从而提高了数据转发效率。

下面结合说明书附图介绍本发明实施例提供的设备。

请参见图2,基于图1所示的实施例的同一发明构思,本发明一实施例提供一种网络地址转换芯片,网络地址转换芯片为可编程交换芯片,用于进行网络地址转换。该网络地址转换芯片包括生成单元201、确定单元202和转换单元203。其中:生成单元201用于为接收到的报文生成属性信息。确定单元202用于根据属性信息及属性信息与路由接口表的映射关系,确定报文的来源。转换单元203用于根据报文的来源以及预设的转换规则对报文的源ip地址或目的ip地址进行转换。

可选的,接口表包括内网接口表和外网接口表,确定单元202具体用于:

在内网接口表中查找属性信息;

若查找到属性信息,则确定报文来自内网;

否则在外网接口表中查找属性信息,若查找到属性信息,则确定报文来自外网。

可选的,转换单元203具体用于:

若报文来自内网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将报文的源ip地址前缀转换为外网地址前缀;

对报文的地址中的子网部分进行补偿,获得新的源ip地址。

可选的,转换单元203具体用于:

若报文来自外网,则根据预设的内网地址前缀与外网地址前缀的映射关系,将报文的目的ip地址前缀转换为内网地址前缀;

对报文的地址中的子网部分进行补偿,获得新的目的ip地址。

可选的,转换单元203具体用于:

计算转换后的ip地址的前缀校验和与转换前的ip地址的前缀校验和之差,获得补偿值;

通过补偿值对报文的地址中的子网部分进行补偿。

该网络地址转换芯片可以用于执行本发明实施例提供的网络地址转换方法,因此,对于该网络地址转换芯片的各功能模块所能够实现的功能等可参考本发明提供的网络地址转换方法的实施例描述,不多赘述。

请参见图3,基于同一发明构思,本发明一实施例提供一种网络地址转换芯片,该网络地址转换芯片,该网络地址转换芯片可以包括:至少一个处理器301,处理器301用于执行存储器中存储的计算机程序时实现本发明实施例提供的如图1所示的网络地址转换方法的步骤:为接收到的报文生成属性信息;根据属性信息及属性信息与路由接口表的映射关系,确定报文的来源;根据报文的来源以及与来源对应的转换规则,对报文的源互联网协议ip地址或者目的ip地址进行转换。

可选的,处理器301具体可以是中央处理器、特定应用集成电路(英文:applicationspecificintegratedcircuit,简称:asic),可以是一个或多个用于控制程序执行的集成电路。

可选的,该网络地址转换芯片还包括与至少一个处理器连接的存储器302,存储器302可以包括只读存储器(英文:readonlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)和磁盘存储器。存储器302用于存储处理器301运行时所需的数据,即存储有可被至少一个处理器301执行的指令,至少一个处理器301通过执行存储器302存储的指令,执行如图1所示的方法。其中,存储器302的数量为一个或多个。其中,存储器302在图3中一并示出,但需要知道的是存储器302不是必选的功能模块,因此在图3中以虚线示出。

其中,生成单元201、确定单元202和转换单元203所对应的实体设备均可以是前述的处理器301。该网络地址转换芯片可以用于执行图1所示的实施例所提供的方法。因此关于该设备中各功能模块所能够实现的功能,可参考图1所示的实施例中的相应描述,不多赘述。

本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行如图1所述的方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(universalserialbusflashdisk)、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1