一种报文转发方法、装置及网络设备的制作方法

文档序号:7744921阅读:100来源:国知局
专利名称:一种报文转发方法、装置及网络设备的制作方法
技术领域
本发明涉及网络数据通讯领域,尤其涉及一种报文转发方法、装置及网络设备。
背景技术
防火墙的报文过滤功能并非仅仅以某个单个报文为目标,根据规则允许或阻止其 通过;而是跟踪完整的数据交互过程,在一定的上下文环境中,审核数据交互过程双方每个 往来报文的合法性。防火墙一般通过“流”来记录数据交互过程的上下文环境。以传输控制协议(Transmission Control Protocol, TCP)报文为例同步(SYN, synchronize)报文是一次数据交互的开始,防火墙收到SYN报文后,创建一个流记录。在这 种状况下,只允许SYN报文的响应端响应一个SYNACK报文,或SYN报文的发起端重发SYN报 文;如果收到SYN报文发起端的非SYN报文,或收到SYN报文响应端的非同步确认(SYNACK) 报文,都认为非法。如果防火墙收到一个非SYN报文,并且没有任何一条“流”记录与该报 文匹配,也就是说不存在该非SYN报文的上下文环境,则认为该非SYN报文非法。其他类型 报文,如结束(FIN)报文、确认(ACK)报文等,也是通过上下文环境,决定取舍。目前,防火墙以“链表数组”的形式组织和管理流,这个“链表数组”通常称为“流 表”。还是以TCP报文为例,防火墙一般通过五元组标识一个TCP流,这五元组由源IP、 目的IP、协议类型,源端口和目的端口五部分信息组成。每收到一个TCP报文,防火墙从报头提取出源IP、目的IP、协议类型,源端口和目 的端口,将五元组经过哈希(HASH)运算,得到的HASH结果(假设为X),作为“流表”的索 引。在“流表”的索引值为X位置上,是一条“流”记录链表,反过来说,该链表的每个 节点是一个“流”记录,每个“流”的五元组的HASH运算结果都等于X。防火墙把该TCP报文的五元组与链表上的每个节点所记录的五元组逐个匹配,如 果能够匹配表示该报文所属的“流”已存在;否则,防火墙在确定该TCP报文符合创建新连 接的条件后,将创建一个“流”,添加到在“流表”的索引值为X位置的“流”链表上,以记录 该报文所属的连接的上下文环境。导致防火墙新创建一个“流”记录的报文,通常称为“首 报文”。透明模式的防火墙类似网桥,防火墙的各个接口成对配成“桥组”,每个桥组有且 只有两个成员接口,网络报文从一个接口(即接收接口,以下称“入接口”)被防火墙接收, 如果通过防火墙审查,允许转发,则该报文一定从与“入接口,,同属一个桥组的另一个接口 (即发送出口,以下称“出接口”)离开防火墙;反之,如果报文从“出接口”进,如果没有被 防火墙甄别为非法而被丢弃的话,则一定会从“入接口 ”出。创建流记录的过程中,透明模式防火墙需要在桥组表中找到接收“首报文”的“入 接口,,所属的桥组,接着获得与“入接口,,同属于一个桥组的“出接口 ”,“入接口,,与流的发起端(也就是“首报文”的发起端)对应,“出接口”与流的响应端(也就是“首报文”的响
应端)对应,保存在流记录中。当收到属于该流的后续报文,防火墙确认报文合法后,如果报文来源是“发起端”, 则从“出接口”离开防火墙;如果报文来源是“响应端”,则从“入接口”离开防火墙。通过把“入接口”和“出接口”与发起端和响应端对应,记录在“流”中,流创建后, 防火墙无需再为了确定报文离开防火墙的路径,而查询桥组表,减少这项查询操作,有助于 提高报文转发率。发明人发现,现有技术中,透明模式的防火墙桥接的两个物理子网经该防火墙转 发报文时,如果不论报文发送的方向如何,报文的内容一样,换言之,报文中包含的五元组 一样,但是从该防火墙桥接的两个接口分别接收的,就会引发错误转发的问题,下面举一个 实例进行说明假设透明模式防火墙桥接两个物理子网(子网Net_A和子网Net_ B),子网Net_A 接在防火墙的接口 Intf_Ai,子网Net_B接在防火墙的接口 Intf_B上。两个子网的PC机的IP都是动态配置的,网络中唯一的一台动态主机配置协议 (DHCP, Dynamic Host Configuration Protocol)服务器放置在子网 Net_A。位于子网Net_A的主机PC_A在启动的时候发出DHCP-discover广播报文(源IP 地址为0. 0. 0. 0、目的IP地址为255. 255. 255. 255、源端口为68、目的端口为67、协议类型 为UDP协议)PKT_1,请求DHCP服务器为其分配ΙΡ,因为ΡΚΤ_1是广播报文,所以子网Net_ A的所有设备,包括防火墙在内,都会收到PKT_1。防火墙收到ΡΚΤ_1后,经过遍历存储的流表,没有与任何现存的流记录匹配,而 且ΡΚΤ_1也没有违背用户设定的流创建的限制策略,于是防火墙以ΡΚΤ_1作为首报文,创 建一条流记录“入接口” Intf_A、对应发起端0. 0. 0.0 ;“出接口” Intf_B、对应响应端 255. 255. 255. 255。并把 PKT_1 转发到子网 Net_B。随后,位于子网Net_B的主机PC_B也启动了,也发出了 DHCP-discover广播报文 PKT_2,因为所有的DHCP-discover广播报文的内容完全相同,所以PKT_1和ΡΚΤ_2的包含
的五元组也一模一样。防火墙收到ΡΚΤ_2后,提取其五元组(源IP地址、目的IP地址、源端口、目的端口 和协议类型)信息,遍历存储的流表,发现与ΡΚΤ_1所属的流记录匹配,因为流记录中响应 端255. 255. 255. 255对应的接口是Intf_B,因此防火墙就把PKT_2从Intf_B转发出去。这样,PKT_2就相当于被防火墙挡回来,不能到达位于子网Net_A中的DHCP服务 器,造成了 PC_B无法分配到IP。

发明内容
本发明实施例提供了一种报文转发方法、装置及网络设备,用以实现透明模式的 防火墙对从组成桥组的两个不同接口接收的、具有相同五元组信息的报文的正确转发。本发明实施例提供的一种报文转发方法,包括确定接收报文的第一接口 ;从接收的所述报文中提取五元组信息;将所述五元组信息与流表中的流记录的五元组信息进行匹配;如果匹配成功,比较所述第一接口与匹配的第一流记录中报文发起端对应的接收接口是否一致,若一致,则 从所述第一流记录中报文响应端对应的发送接口转发该报文;若不一致,则在流表中建立 第二流记录,在所述第二流记录中将与所述第一接口组成桥组的第二接口作为报文响应端 对应的发送接口,从所述第二接口转发该报文。本发明实施例提供的一种报文转发装置,包括确定单元,用于确定接收报文的第一接口 ;提取单元,用于从接收的所述报文中提取五元组信息;匹配单元,用于将所述五元组信息与流表中的流记录的五元组信息进行匹配;比较单元,用于当匹配单元匹配成功时,比较所述第一接口与匹配的第一流记录 中报文发起端对应的接收接口是否一致;流记录创建单元,用于当所述比较单元的比较结果为不一致时,在流表中创建第 二流记录,在所述第二流记录中将与所述第一接口组成桥组的第二接口作为报文响应端对 应的发送接口;转发单元,用于当所述比较单元的比较结果为一致时,从所述第一流记录中报文 响应端对应的发送接口转发该报文;或者当所述比较单元的比较结果为不一致时,从第二 流记录中的所述第二接口转发该报文。本发明实施例提供的一种网络设备,包含有上述报文转发装置。本发明实施例的有益效果包括本发明实施例提供的报文转发方法、装置及网络设备,在分别从组成桥组的一对 接口接收具有相同五元组信息的报文的情况下,当报文的五元组信息与流表中已创建的流 记录的五元组信息匹配、但接收接口与该流记录中报文发送端对应的接口不一致时,为该 报文重新创建第二流记录,并从后建立的第二流记录中记录的与第一接口组成桥组的第二 接口转发,避免了现有技术中出现的当接收报文的第一接口与匹配的流记录中报文发送端 对应的接收接口不一致时,也按照该匹配的流记录中报文响应端的发送接口发送该报文, 导致出现从第一接口接收的报文再从第一接口转发回去的问题,从而实现了透明模式的防 火墙对于从组成桥组的两个不同接口接收的、具有相同五元组信息的报文的正确转发。


图1为本发明实施例提供的报文转发方法的流程图;图2为本发明实施例提供的具体实例的网络连接示意图;图3为本发明实施例提供的报文转发装置的结构示意图。
具体实施例方式下面结合附图,对本发明提供的一种报文转发方法、装置及网络设备的具体实施 方式进行详细的说明。本发明实施例提供的报文转发方法,如图1所示,包括下述步骤S101、确定防火墙接收报文的第一接口 ;S102、防火墙从接收的该报文中提取五元组信息。S103、防火墙将五元组信息与流表中的流记录的五元组信息进行匹配;如果匹配成功,则执行步骤S104 ;如果匹配不成功,则执行步骤S108 ;S104、防火墙进一步比较该防火墙接收该报文的第一接口与匹配的第一流记录中 报文发起端的接收接口是否一致,若一致,则执行步骤S105,若不一致,则执行步骤S106 ;S105、从第一流记录中记录的报文发送接口转发该报文;S106、在流表中建立第二流记录,在该第二流记录中将与第一接口组成桥组的第 二接口作为报文响应端对应的发送接口 ;然后执行S107 ;S107、从第二接口转发该报文。S108、按照现有透明模式的防火墙创建流记录的方法创建一条新的流记录。上述步骤SlOl中,防火墙从接收到的报文中提取五元组信息的方法与现有技术 相同,即提取报文的源IP地址、目的IP地址、源端口、目的端口以及协议类型的五项信息。上述步骤S103中,防火墙遍历其存储的流表中的各条流记录,将接收的报文的五 元组信息,与流表中各条流记录的五元组信息进行比较,如果存在某条流记录中的五元组 信息与提取出的五元组信息一致,则认为匹配成功,如果接收的报文的五元组信息,与流表 中每一条流记录中的五元组信息都不相同,则认为匹配不成功。在本发明实施例中,与现有技术中透明模式的防火墙的工作模式不同之处在于, 在五元组信息匹配成功时,还需要执行上述步骤S104。上述步骤S104中,按照现有流表中每个流记录,除了记录该报文的五元组信息, 还包含了该防火墙中与该报文发起端与接收接口(或称入接口)的对应关系和与该报文响 应端和发送接口(或称出接口)的对应关系,只有在防火墙当前实际接收报文的接口,与流 表中五元组与之匹配的那个流记录中记录的报文发起端对应的接收接口一致时,才认为该 报文完全与该条流记录完全匹配,在完全匹配的情况下,才允许报文从该流记录中记录的 报文响应端的发送接口发送出去。在五元组信息都无法与流表中的流记录匹配,或者在五元组与流表中的流记录匹 配成功,但是该防火墙实际接收该报文的接口和与之匹配的流记录中报文发起端对应的接 收接口不一致,也认为该报文无法与流表中的流记录完全匹配,需要以该报文作为首报文, 建立一条新的流记录即第二流记录,在该流记录中,不仅包含五元组信息,还包含有报文发 送端与第一接口的对应关系信息以及报文响应端与第二接口的对应关系信息,第一接口和 第二接口是该防火墙的一对桥组接口,是预先就配对完成的。上述步骤S106中,在流表中建立第二流记录,即在流表中创建一条新的包含有该 报文的五元组信息、将第一接口作为报文发起端的接收接口即报文发起端与第一接口的对 应关系信息,以及将与第一接口组成桥组的第二接口作为报文响应端的发送接口即报文响 应端与第二接口的对应关系信息的记录,该新的记录作为第二流记录。上述步骤S106和S108创建流记录时,较佳地,使用数据链表的形式创建流记录。为了更清楚地说明本发明实施例提供的报文转发方法,下面以背景技术中提到的 DHCP报文的转发的具体实例对本发明实施例提供的报文转发方法进行详细说明。如图2所示,透明模式的防火墙连接子网A和子网B,子网A连接在防火墙的接口A上,子网B连接在防火墙的接口 B上,网络中只有一台DHCP服务器放置在子网A中。当 然,该防火墙并不仅仅连接了这一对子网,它还有可能连接有其他成对的子网,本发明实施 例仅以其中一对子网进行说明。
位于子网A的主机PC_A1在启动后向DHCP服务器发送动态主机配置协议发现 (DHCP Discover)的广播报文,该广播报文的五元组信息为源IP地址为0. 0. 0. 0、目的IP 地址为255. 255. 255. 255、源端口为68、目的端口为67、协议类型为UDP协议,防火墙接收到 该广播报文后,遍历存储的流表,发现没有任何已有的流记录的五元组信息与之匹配,防火 墙以该广播报文为首报文,创建一条流记录(以下称为第一流记录),该第一流记录中,除 了记录该广播报文的五元组信息,还记录该广播报文的发起端(IP地址0.0. 0.0)与接口 A 的对应关系信息,以及该广播报文的响应端(IP地址为255. 255. 255. 255)与接口 B的对应 关系信息,然后将该广播报文从接口 B发送出去。如果在防火墙完成主机PC_A1的DHCP discover广播报文转发的过程后,再次出 现子网A中的一个主机PC_A2向该DHCP服务器发送DHCP Discover广播报文,按照本发明 实施例提供的上述技术方案,由于每个DHCP Discover广播报文的内容都是一样的,提取主 机PC_A2发送的广播报文中五元组信息,可以与流表存储的已有的第一流记录相匹配,并 且,以由于防火墙实际是从接口 A接收的该DHCP discover广播报文,与该第一流记录中记 录的报文发起端对应的接收接口一致,因此,可以通过该第一流记录记录的该报文响应端 对应的接口 B转发该DHCP discover广播报文。
如果在防火墙完成主机PC_A1的DHCP discover广播报文转发的过程后,再次出 现子网B中的一个主机PC_B1向该DHCP服务器发送DHCP Discover广播报文,按照本发明 实施例提供的上述技术方案,由于每个DHCP Discover广播报文的内容都是一样的,提取主 机PC_A2发送的广播报文中五元组信息,可以与流表存储的已有的第一流记录相匹配,但 是,将防火墙实际接收该广播报文的接口 B,与第一流记录中记录的报文发送端对应的接口 A进行比较时,发现两者不一致,则以该广播报文为首报文,在流表中重新创建一个新的流 记录(以下称为第二流记录),该第二流记录除了记录该广播报文的五元组信息即源IP 地址为0. 0. 0. 0、目的IP地址为255. 255. 255. 255、源端口为68、目的端口为67、协议类型 为UDP协议之外,还记录了该广播报文的报文发起端(IP地址为0. 0. 0. 0)与接口 B的对应 关系,以及记录该广播报文的报文响应端(IP地址为255. 255. 255. 255)与接口 A的对应关 系,然后按照第二流记录,将该广播报文从接口 A转发出去,从而实现了报文的正确转发。在创建了第二流记录之后,如果子网B中的一个主机PC_B2向该DHCP服务器发送 DHCP Discover广播报文,与主机PC_A2的情况类似,提取该广播报文的五元组信息,与第 一流记录和第二流记录都匹配,但接收该广播报文的接口即接口 B与第二流记录中报文发 起端对应的接口 B—致,因此,按照第二流记录中记录的报文响应端对应的接口 A转发该广 播报文,从而到达了子网A中的DHCP服务器,实现了广播报文的正确转发。基于同一发明构思,本发明实施例还提供了一种报文转发装置及网络设备,由于 该装置及设备解决问题的原理与前述一种报文转发方法相似,因此该装置和防火墙的实施 可以参见方法的实施,重复之处不在赘述。本发明实施例提供的一种报文转发装置,如图3所示,包括提取单元301,用于确定接收报文的第一接口 ;确定单元302,用于从接收的该报文中提取五元组信息;匹配单元303,用于将五元组信息与流表中的流记录的五元组信息进行匹配;比较单元304,用于当匹配单元匹配成功时,比较第一接口与匹配的第一流记录中报文发起端对应的接收接口是否一致;流记录创建单元305,用于当比较单元304的比较结果为不一致时,在流表中创建 第二流记录,在第二流记录中将与第一接口组成桥组的第二接口作为报文响应端对应的发 送接口 ;转发单元306,用于当比较单元304的比较结果为一致时,从第一流记录中报文响 应端对应的发送接口转发该报文;或者当比较单元304的比较结果为不一致时,从第二流 记录中的第二接口转发该报文。进一步地,本发明实施例提供的报文转发装置中的流记录创建单元305,还用于当 匹配单元303匹配不成功时,将该报文作为首报文,在流表中建立一条新的流记录。本发明实施例提供的流记录创建单元305,进一步用于在流表中创建一条包含有 该报文的五元组信息、报文发起端与第一接口的对应关系信息,以及报文响应端与第二接 口的对应关系信息的记录作为第二流记录。本发明实施例还提供了一种网络设备,该网络设备包含上述报文转发装置,能够 实现接收接口不同但具有相同五元组信息的报文的正确转发。较佳地,本发明实施例提供的上述网络设备为防火墙。本发明实施例提供的报文转发方法、装置及网络设备,在分别从组成桥组的一对 接口接收具有相同五元组信息的报文的情况下,当报文的五元组信息与流表中已创建的流 记录的五元组信息匹配、但接收接口与该流记录中报文发送端对应的接口不一致时,为该 报文重新创建第二流记录,并从后建立的第二流记录中记录的与第一接口组成桥组的第二 接口转发,避免了现有技术中出现的当接收报文的第一接口与匹配的流记录中报文发送端 对应的接收接口不一致时,也按照该匹配的流记录中报文响应端的发送接口发送该报文, 导致出现从第一接口接收的报文再从第一接口转发回去的问题,从而实现了透明模式的防 火墙对于从组成桥组的两个不同接口接收的、具有相同五元组信息的报文的正确转发。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种报文转发方法,其特征在于,包括确定接收报文的第一接口;从接收的所述报文中提取五元组信息;将所述五元组信息与流表中的流记录的五元组信息进行匹配;如果匹配成功,比较所述第一接口与匹配的第一流记录中报文发起端对应的接收接口是否一致,若一致,则从所述第一流记录中报文响应端对应的发送接口转发该报文;若不一致,则在流表中创建第二流记录,在所述第二流记录中将与所述第一接口组成桥组的第二接口作为报文响应端对应的发送接口,从所述第二接口转发该报文。
2.如权利要求1所述的方法,其特征在于,在流表中创建第二流记录,包括 在流表中创建一条包含有该报文的五元组信息、所述报文发起端与所述第一接口的对应关系信息,以及所述报文响应端与所述第二接口的对应关系信息的记录作为第二流记 录。
3.如权利要求1所述的方法,其特征在于,如果匹配不成功,则将所述报文作为首报 文,在流表中创建一条新的流记录。
4.如权利要求1或2所述的方法,其特征在于,使用数据链表的形式创建第二流记录。
5.一种报文转发装置,其特征在于,包括 确定单元,用于确定接收报文的第一接口 ;提取单元,用于从接收的所述报文中提取五元组信息; 匹配单元,用于将所述五元组信息与流表中的流记录的五元组信息进行匹配; 比较单元,用于当匹配单元匹配成功时,比较所述第一接口与匹配的第一流记录中报 文发起端对应的接收接口是否一致;流记录创建单元,用于当所述比较单元的比较结果为不一致时,在流表中创建第二流 记录,在所述第二流记录中将与所述第一接口组成桥组的第二接口作为报文响应端对应的 发送接口 ;转发单元,用于当所述比较单元的比较结果为一致时,从所述第一流记录中报文响应 端对应的发送接口转发该报文;或者当所述比较单元的比较结果为不一致时,从第二流记 录中的所述第二接口转发该报文。
6.如权利要求5所述的装置,其特征在于,所述流记录创建单元,进一步用于在流表中 创建一条包含有该报文的五元组信息、所述报文发起端与所述第一接口的对应关系信息, 以及所述报文响应端与所述第二接口的对应关系信息的记录作为第二流记录。
7.如权利要求5所述的装置,其特征在于,所述流记录创建单元,还用于当所述匹配单 元匹配不成功时,将所述报文作为首报文,在流表中建立一条新的流记录。
8.—种网络设备,其特征在于,包含如权利要求5 7任一权利要求所述的报文转发装置。
全文摘要
本发明公开了一种报文转发方法、装置及网络设备,其中方法包括确定接收报文的第一接口;从接收的报文中提取五元组信息;将五元组信息与流表中的流记录的五元组信息进行匹配;如果匹配成功,比较第一接口与匹配的第一流记录中报文发起端对应的接收接口是否一致,若一致,则从第一流记录中报文响应端对应的发送接口转发该报文;若不一致,则在流表中创建第二流记录,在该第二流记录中将第一接口组成桥组的第二接口作为报文响应端对应的发送接口;从第二接口转发该报文。本发明实现了透明模式的防火墙对从组成桥组的两个不同接口接收的、具有相同五元组信息的报文的正确转发。
文档编号H04L12/56GK101834783SQ20101013661
公开日2010年9月15日 申请日期2010年3月29日 优先权日2010年3月29日
发明者黄凯明 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1