报文处理方法和装置与流程

文档序号:11156986阅读:267来源:国知局
报文处理方法和装置与制造工艺
本申请涉及通信
技术领域
,尤其涉及一种报文处理方法和装置。
背景技术
:随着互联网技术的迅猛发展,IPv4由于其局限的地址空间越来越难满足业务需求,IPv6应运而生。现如今越来越多的网络环境中既有IPv4报文,也有IPv6报文,因此防火墙等网络设备通常需要同时支持两种协议。技术实现要素:有鉴于此,本申请提供一种报文处理方法和装置,以解决相关技术中网络设备FPGA模块资源浪费的问题。具体地,本申请是通过如下技术方案实现的:第一方面,本申请提供一种报文处理方法,所述方法应用于网络设备,所述网络设备包括FPGA模块,所述方法包括:FPGA模块在接收到报文时,确定所述报文的协议类别;FPGA模块在确定所述报文为IPv4报文时,基于IPv4报文对应的第一类索引表查找该IPv4报文的业务处理策略;FPGA模块在确定所述报文为IPv6报文时,基于IPv6报文对应的第二类索引表查找该IPv6报文的业务处理策略;FPGA模块根据查找到的业务处理策略对对应的报文进行业务处理;其中,所述第一类索引表与所述第二类索引表的存储位置不同。第二方面,本申请提供一种报文处理装置,所述装置应用于网络设备,所述网络设备包括FPGA模块,所述FPGA模块被配置为:在接收到报文时,确定所述报文的协议类别;在确定所述报文为IPv4报文时,基于IPv4报文对应的第一类索引表查找该IPv4报文的业务处理策略;在确定所述报文为IPv6报文时,基于IPv6报文对应的第二类索引表查找该IPv6报文的业务处理策略;根据查找到的业务处理策略对对应的报文进行业务处理;其中,所述第一类索引表与所述第二类索引表的存储位置不同。分析上述技术方案可知,网络设备的FPGA模块在接收到IPv4报文或IPv6报文时,可以基于接收到的报文对应的索引表查找该报文的业务处理策略,并根据查找到的业务处理策略对该报文进行业务处理。网络设备的FPGA模块只需运行一套程序,便可以实现IPv4策略查找功能和IPv6策略查找功能,从而可以节省网络设备FPGA模块资源。附图说明图1是相关技术中FPGA模块的策略查找方法的示意图;图2是本申请一示例性实施例示出的一种报文处理方法的流程图;图3是本申请FPGA模块的策略查找方法的示意图;图4是本申请一示例性实施例示出的另一种报文处理方法的流程图;图5是本申请一示例性实施例示出的一种报文处理装置所在设备的硬件结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。策略查找功能是网络设备的基本功能之一,可用于查找接收到的报文所对应的业务处理策略,网络设备可以根据查找到的业务处理策略对该报文进行业务处理,例如:包过滤、网络地址转换等。相关技术中,网络设备通常采用FPGA模块实现上述策略查找功能,请参考图1,FPGA模块的IPv4策略查找功能和IPv6策略查找功能分别对应两套独立的程序。网络设备在接收到IPv4报文时,可以运行IPv4策略查找功能对应的程序以查找该IPv4报文的业务处理策略,而IPv6策略查找功能对应的程序则被闲置;同样的,网络设备在接收到IPv6报文时,可以运行IPv6策略查找功能对应的程序以查找该IPv6报文的业务处理策略,而IPv4策略查找功能对应的程序则被闲置,采用上述方式会造成FPGA模块资源浪费。请参考图2,为本申请一示例性实施例示出的一种报文处理方法的流程图,该方法可以应用于网络设备,该网络设备包括FPGA模块,所述方法包括以下步骤:步骤201:FPGA模块在接收到报文时,确定所述报文的协议类别。在本实施例中,网络设备的FPGA模块在接收到报文时,可以先判断该报文是IPv4报文还是IPv6报文。例如,FPGA模块可以根据接收到的报文中version(版本号)字段的值,判断该报文是IPv4报文还是IPv6报文,当该字段的值为4时,FPGA模块可以确定该报文为IPv4报文;当该字段的值为6时,FPGA模块可以确定该报文为IPv6报文。步骤202:FPGA模块在确定所述报文为IPv4报文时,基于IPv4报文对应的第一类索引表查找该IPv4报文的业务处理策略。在本实施例中,FPGA模块在确定接收到的报文为IPv4报文时,可以基于IPv4报文对应的第一类索引表查找该IPv4报文的业务处理策略。步骤203:FPGA模块在确定所述报文为IPv6报文时,基于IPv6报文对应的第二类索引表查找该IPv6报文的业务处理策略。在本实施例中,FPGA模块在确定接收到的报文为IPv6报文时,可以基于IPv6报文对应的第二类索引表查找该IPv6报文的业务处理策略。需要说明的是,所述第一类索引表与所述第二类索引表在系统内存中的存储位置不同。步骤204:FPGA模块根据查找到的业务处理策略对对应的报文进行业务处理。在本实施例中,FPGA模块在查找到业务处理策略后,可以根据该业务处理策略对对应的报文进行业务处理,包括:对所述报文进行包过滤处理,或者对所述报文进行网络地址转换等。结合图2所示的实施例,请参考图3,本申请FPGA模块在实现策略查找功能时,可先在接收到报文时确定该报文的协议类型,再基于该报文对应的索引表查找该报文的业务处理策略。其中,协议类型不同的报文对应的索引表的存储位置不同。后续FPGA模块可以根据查找到的业务处理策略对该报文进行业务处理。与相关技术相比,FPGA模块只需运行一套程序,便可以实现IPv4策略查找功能和IPv6策略查找功能,从而可以节省网络设备FPGA模块资源。结合前述步骤202和203,请参考图4,网络设备的FPGA模块可以采用以下步骤基于索引表查找业务处理策略:步骤401:根据预设的划分规则将接收到的报文的IP地址划分为一个或多个数组。在本实施例中,FPGA模块可以根据预设的划分规则对接收到的报文的IP地址进行划分,将所述IP地址划分为一个或多个数组。所述划分规则可以由用户自行设置。所述IP地址通常为该报文的源IP地址。步骤402:按照地址位由高位到低位的顺序,依次为所述数组编号。在本实施例中,FPGA模块在对所述报文的IP地址进行划分后,可以按照地址位由高位到低位的顺序,依次为所述数组编号。步骤403:提取第i个数组,并基于所述第i个数组在对应报文协议类别的i级索引表中进行查找。在本实施例中,如果接收到的报文为IPv4报文,则FPGA模块可以在提取出第i个数组后,基于该第i个数组在第一类索引表中的i级索引表中进行查找。如果接收到的报文为IPv6报文,则FPGA模块可以在提取出第i个数组后,基于该第i个数组在第二类索引表的i级索引表中进行查找。其中,i的初始值为1。需要说明的是,各报文协议类别所对应的一级索引表是固定的,所述i级索引表由第i-1个数组在第i-1级索引表中确定,而并不是某一张固定的索引表。比如:IPv4报文的二级索引表是在IPv4报文对应的一级索引表中基于该IPv4报文的第1个数组查询确定,换言之,不同IPv4报文的二级索引表通常不同。步骤404:当在所述i级索引表中查找到所述第i个数组对应的i+1级索引表时,将i更新为i+1,继续执行步骤403。在本实施例中,基于前述步骤403的查找结果,如果FPGA模块在所述i级索引表中查找到所述第i个数组对应的i+1级索引表,则可以继续提取第i+1个数组,并基于第i+1个数组在对应报文协议类别的所述i+1级索引表中进行查找;如果在所述i+1级索引表中查找到所述第i+1个数组对应的i+2级索引表,则可以继续提取第i+2个数组,并基于第i+2个数组在对应报文协议类别的所述i+2级索引表中进行查找;以此类推。步骤405:当在所述i级索引表中查找到所述第i个数组对应的业务处理策略时,结束本次查找。在本实施例中,基于前述步骤403的查找结果,如果FPGA模块在所述i级索引表中查找到所述第i个数组对应的业务处理策略,则可以结束本次查找,并基于查找到的业务处理策略对对应报文进行业务处理。举例来说,假设用户设置的划分规则为按照8比特位(后续将“比特位”简称为“位”)的长度将IP地址进行数组划分,即每个数组长度为8位。IPv4报文的IP地址的长度为32位,根据该划分规则可以将IPv4报文的IP地址划分为4个数组,而IPv6报文的IP地址的长度为128位,根据该划分规则可以将IPv6报文的IP地址划分为16个数组。以IPv4报文为例,假设FPGA模块接收到的某IPv4报文的源IP地址为00111100101110101100001000000001(60.186.194.1),则根据所述划分规则可以将该源IP地址划分为00111100、10111010、11000010、00000001共4个数组。按照地址位由高位到低位的顺序,请参考表1,可以将数组00111100编号为1,将数组10111010编号为2,将数组11000010编号为3,将数组00000001编号为4。数组00111100101110101100001000000001编号1234表1FPGA模块可以先提取第1个数组,即数组00111100,并基于该数组在第一类索引表中的一级索引表中进行查找。下表2为所述一级索引表的一种示例:表2在本例中,表2中存储的是第1个数组与二级索引表的内存地址之间的对应关系,由上述对应关系可以看出,不同的数组对应的二级索引表可能相同,比如:数组00000001与数组00111100对应的二级索引表相同,均为存储在内存地址5中的索引表。不同的数组对应的二级索引表也可能不同,比如:数组00000000对应的二级索引表为存储在内存地址1中的索引表,而数组11111110对应的索引表为存储在内存地址15中的索引表。结合表2,FPGA模块可以在该一级索引表中查找到数组00111100对应的二级索引表存储在内存地址5中,则FPGA模块可以再提取第2个数组,即数组10111010,并基于该数组在内存地址5中的二级索引表中继续进行查找。在另一个例子中,假设FPGA模块接收到的某IPv4报文的源IP地址为00111101101110101100001000000001(61.186.194.1),则根据所述划分规则,划分出的第1个数组为00111101。FPGA模块可以先提取数组00111101,并基于该数组在一级索引表中进行查找。结合表2,FPGA模块可以在该一级索引表中查找到数组00111101对应的业务处理策略为网络地址转换,则FPGA模块可以结束本次查找,并对该IPv4报文进行网络地址转换,无需再提取第2个数组进行后续查找。由上述实施例可见,虽然IPv4报文和IPv6报文的IP地址长度不同,但对于接收到的IPv4报文和IPv6报文,FPGA模块都可以将所述报文的IP地址划分为一个或多个数组,并基于各数组依次查找对应的索引表,直至查找到所述报文对应的业务处理策略,后续可以基于查找到的业务处理策略对所述报文进行业务处理。采用这样的方式,FPGA模块只需运行一套程序即可实现IPv4策略查找功能和IPv6策略查找功能,从而可以节省网络设备FPGA模块资源。与前述报文处理方法的实施例相对应,本申请还提供了报文处理装置的实施例。请参考图5,为本申请一示例性实施例示出的一种报文处理装置所在设备的硬件结构图,该报文处理装置可以应用于网络设备,所述网络设备包括FPGA模块,所述FPGA模块被配置为:在接收到报文时,确定所述报文的协议类别;在确定所述报文为IPv4报文时,基于IPv4报文对应的第一类索引表查找该IPv4报文的业务处理策略;在确定所述报文为IPv6报文时,基于IPv6报文对应的第二类索引表查找该IPv6报文的业务处理策略;根据查找到的业务处理策略对对应的报文进行业务处理;其中,所述第一类索引表与所述第二类索引表的存储位置不同。在一个可选的实施例中,FPGA模块基于索引表查找业务处理策略的过程可以包括:根据预设的划分规则将接收到的报文的IP地址划分为一个或多个数组;按照地址位由高位到低位的顺序,依次为所述数组编号;提取第i个数组,并基于所述第i个数组在对应报文协议类别的i级索引表中进行查找;当在所述i级索引表中查找到所述第i个数组对应的i+1级索引表时,将i更新为i+1,继续执行提取第i个数组的步骤;当在所述i级索引表中查找到所述第i个数组对应的业务处理策略时,结束本次查找;其中,i的初始值为1。在另一个可选的实施例中,所述IP地址包括:源IP地址。在另一个可选的实施例中,所述业务处理包括:包过滤、网络地址转换。上述网络设备的FPGA模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1