一种基于sopc的nat的实现方法及装置的制造方法

文档序号:8945877阅读:695来源:国知局
一种基于sopc的nat的实现方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机网络领域,尤其涉及一种网络地址转换方法。
【背景技术】
[0002]NAT:Network Address Translat1n,网络地址转换。
[0003]SOPC:System-on-ProgrammabIe~Chip,即可编程片上系统。
[0004]ICMP:Internet Control Message Protocol,Internet 控制报文协议。它是 TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
[0005]CAM:Content Addressable Memory,内容可寻址存储器。
[0006]目前NAT的实现主要有三种方法,第一种是纯软件实现,载体通常为通用CPU;第二种是基于FPGA硬件实现;第三种是基于网络处理器(NP)实现。
[0007]通过纯软件实现的方法处理方式灵活,技术成熟,但缺点也很明显,处理速度比较慢,时延大,需要占用大量CPU时间,内存消耗大。
[0008]通过FPGA实现的方法处理速度快,时延小。如果仅用单纯逻辑实现,通常只能实现一些功能比较简单的NAT处理,且不及纯软件实现应用灵活、需要消耗大量逻辑资源。
[0009]通过NP实现的方法处理速度快,但价格昂贵,应用不够灵活。
[0010]综上所述,现有技术存在以下问题:
1、通过单纯逻辑进行NAT实现对功能复杂度有限制;
2、针对具体应用,现有通过FPGA或者NP的实现方式应用均不够灵活;
3、针对小型应用,现有的实现方式体积大,功耗高,成本高。

【发明内容】

[0011]为了解决上述技术问题,本发明的目的是提供一种可灵活实现NAT处理、处理速度快、成本低、功耗低的NAT的实现方法。
[0012]为了解决上述技术问题,本发明的另一个目的是提供一种可灵活实现NAT处理、处理速度快、成本低、功耗低的NAT的实现装置。
[0013]本发明所采用的技术方案是:
一种基于SOPC的NAT的实现方法,其包括步骤:S1,对数据包进行信息提取;S2,将数据包存入缓冲区,同时将提取的信息提交给学习/处理模块;S3,学习/处理模块判断自己能否处理此信息,如果能处理,则进入步骤S4,否则将接收到的信息提交给处理器并进入步骤S5 ;S4,学习/处理模块根据以前学习的内容进行处理,然后将处理结果提交给NAT处理模块;S5,处理器对接收到信息进行处理,并将处理结果返回给学习/处理模块;S6,学习/处理模块学习处理器的结果,并将处理结果提交给NAT处理模块;S7,NAT处理模块、NAT逆处理模块根据接收的处理结果对缓冲区中的数据包进行处理。
[0014]优选的,步骤SI所述信息包括源MAC地址、以太网协议类型、IP协议类型、以太网源!P、以太网目的IP、ICMP标识符、ICMP序列号、源端口号、目的端口、IP包的16位标识、IP包的3位标志及13位片偏移、IP首部检验和、ICMP/TCP/UDP的检验和。
[0015]优选的,步骤S2中所述提交给学习/处理模块的信息包括源IP、目的IP、源端口号(TCP、UDP)、目的端口(TCP、UDP), IP包的16位标识、IP包的3位标志及13位片偏移及协议类型。
[0016]优选的,所述步骤S3具体包括子步骤:S31,首先通过数据包的3位标志及13位片偏移判断该数据包是否为IP分片包,如果是分片包,则不能处理此信息,否则进入步骤S32 ;S32,用信息中的源IP、源端口、目的IP、目的端口、协议类型进行CAM查询,如果存在有效项,则表示学习/处理模块能处理此信息并进入步骤S4,否则表示不能处理此信息并进入步骤S33 ;S33,将接收到的信息提交给处理器并进入步骤S5。
[0017]优选的,所述步骤S4具体为??从CAM的输出中获取匹配单元的地址,从存储模块中读出该地址单元的内容,作为处理结果返回给NAT处理模块,同时将对应的老化计数器清零。
[0018]优选的,步骤S5中所述的信息为私网数据或公网数据,所述步骤S5具体包括子步骤:S51,对私网数据进行处理,并将处理结果返回给学习/处理模块;或者S52,对公网数据进行处理,并将处理结果返回给学习/处理模块。
[0019]优选的,所述步骤S51具体包括子步骤:S511,用源端口号作为私网端口查找表的索引,从存储器中取出该序号的对应表项,判断表项的有效标识位是否有效,如果有效则进入步骤S512,否则转至步骤S519 ;S512,判断指针标识位是否有效,如果有效则转至步骤S517,否则转至步骤S513 ;S513,判断协议字段、源IP字段是否匹配,如果匹配则转至步骤S514,否则转至步骤S519 ; S514,用替换端口的内容对源端口进行替换,并判断外网网关有效标识位是否有效,如果有效则转至步骤S516,否则转至步骤S515 ;S515,数据包可直接送达或采用默认网关,转至步骤S518 ;S516,数据包需经过该外网网关转发,转至步骤S518 ;S517,通过IP指针找到IP查找表,历遍有效标识位有效的表项,如果存在协议字段、源IP字段匹配项,则转至步骤S514,否则转至步骤S519 ;S518,查表成功,转至步骤S5111 ;S519,若动态模式位置位,则随机分配一个未使用的公网IP、端口,并将相应信息添加到NAT配置表中,转至步骤S5111 ;S5110,查表失败,数据包丢弃,转至步骤S5111 ;S5111,将处理结果返回给学习/处理模块,转至步骤S511,开始下一次查表;所述步骤S52具体包括子步骤:S521,用目的端口号作为公网端口查找表的索引,从存储器中取出该序号的对应表项,判断表项的有效标识位是否有效,如果无效则转至步骤S5210,如果有效则转至步骤S522 ;S522,判断指针标识位是否有效,如果无效则转至步骤S523,如果有效则转至步骤S525 ;S523,判断协议字段、外网IP字段是否匹配,如果匹配则转至骤S524,否则转至步骤S5210 ;S524,用替换端口的内容、内网IP的内容对目的端口、目的IP进行替换,转至步骤S529 ;S525,通过IP指针找到IP查找表,历遍有效标识位有效的表项,如果存在协议字段、外网IP字段匹配,且当远程IP有效标识有效时,远程IP、远程端口也匹配的匹配项时则转至步骤S526,如果没有则转至步骤S5210 ;S526,判断内网IP有效标识是否有效,如果有效则转至步骤S527,否则转至步骤S528 ;S527,用IP查找表中的替换端口、内网IP对目的端口、目的IP进行替换,转至步骤S529 ;S528,用IP查找表中的替换端口、端口查找表中的内网IP对目的端口、目的IP进行替换,转至步骤S529 ;S529,查表成功,转至步骤S5211 ;S5210,查表失败,转至步骤S5211 ;S5211,将处理结果返回给学习/处理模块,转至步骤S521,开始下一次查表。
[0020]优选的,所述步骤S5还包括子步骤:S50,对接收到的信息进行IP分片包处理;所述步骤S50具体包括子步骤:S501,判断是否为IP分片包,如果是分片包则转至步骤S502 ;S502,判断是否为IP分片包的首包,如果是则转至步骤S503,否则转至步骤S504 ;S503,将首包按非分片包的处理方式进行处理,并将缓存中该分片包的其它分片也按该方式处理,转至步骤S505 ;S504,将分片包信息缓存,转至步骤S505 ;S505,转至步骤S501步,开始下一次处理。
[0021]优选的,所述步骤S7具体包括子步骤:S71,根据学习/处理模块输出的结果,结合提取模块的输出、数据缓冲模块中的数据包内容,实现私网到公网TCP、UDP数据包的源IP、源端口替换,即完成NAT处理;S72,根据学习/处理模块输出的结果,结合提取模块的输出、数据缓冲模块中的数据包内容,实现公网到私网TCP、UDP数据包的目的IP、目的端口替换,即完成NAT逆处理;S73,重新计算IP首部校验和、TCP校验和、UDP校验和。
[0022]一种基于SOPC的NAT的实现装置,其用于实施基于SOPC的NAT的实现方法,其包括:处理器模块,用于对学习/处理模块输出的数据包信息进行查表处理,并将处理结果返回给学习/处理模块;学习/处理模块,其分别与提取模块和处理器模块相连,主要有两个作用:一是接收提取模块的输出,检查学习内容中是否有符合项,如果有符合项则将存储的对应结果输出给NAT处理模块,如果没有符合项则将接收的数据直接提交给处理器模块,并记录该数据,以便在学习过程中与处理结果建立一一对应关系;二是学习处理器输出的数据包处理结果,即将数据包信息输入与数据包处理结果间建立一一对应的关系,以便对后续数据包中有相同输入条件的数据包直接进行处理,以减轻处理器模块的负荷,提高数据包的处理能力,然后将结果输出给NAT处理模块;提取模块,其与以太网接口模块相连,用于提取数据包信息;以太网接口,包括用于连接私网的私网以太网接口和用于连接公网的以太网接口 ;数据缓冲模块,其连接于提取模块和NAT处理模块或NAT逆处理模块之间,用于缓存数据包;NAT处理模块,其分别与提取模块、数据缓冲模块、学习/处理模块和以太网接口连接,其用于接收学习/处理模块的输出,并结合提取模块的输出、数据缓冲模块中的数据包内容,实现私网到公网的NAT处理;NAT逆处理模块,其分别与提取模块、数据缓冲模块、学习/处理模块和以太网接口连接,其用于接收学习/处理模块的输出,并结合提取模块的输出、数据缓冲模块中的数据包内容,实现公网到私网的NAT逆处理。
[0023]本发明的有益效果是:
本发明通过基于SOPC实现了 NAT处理,充分发挥处理器和逻辑处理各自的长处,合理分配各自的实现功能,并采用了学习/处理模块来弥补处理器模块处理能力的不足,采用先
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1