CN1317119A - 控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法 - Google Patents
控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法 Download PDFInfo
- Publication number
- CN1317119A CN1317119A CN99810588A CN99810588A CN1317119A CN 1317119 A CN1317119 A CN 1317119A CN 99810588 A CN99810588 A CN 99810588A CN 99810588 A CN99810588 A CN 99810588A CN 1317119 A CN1317119 A CN 1317119A
- Authority
- CN
- China
- Prior art keywords
- bag
- network
- prefix
- address
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 27
- 238000001914 filtration Methods 0.000 claims abstract description 18
- 239000012634 fragment Substances 0.000 claims description 38
- 230000014509 gene expression Effects 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 18
- 238000013519 translation Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 12
- 239000012141 concentrate Substances 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 6
- 101150081525 LIMK1 gene Proteins 0.000 claims description 3
- 238000004080 punching Methods 0.000 claims description 3
- 239000004576 sand Substances 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims 2
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- PQVHMOLNSYFXIJ-UHFFFAOYSA-N 4-[2-(2,3-dihydro-1H-inden-2-ylamino)pyrimidin-5-yl]-1-[2-oxo-2-(2,4,6,7-tetrahydrotriazolo[4,5-c]pyridin-5-yl)ethyl]pyrazole-3-carboxylic acid Chemical compound C1C(CC2=CC=CC=C12)NC1=NC=C(C=N1)C=1C(=NN(C=1)CC(N1CC2=C(CC1)NN=N2)=O)C(=O)O PQVHMOLNSYFXIJ-UHFFFAOYSA-N 0.000 description 1
- 241001553014 Myrsine salicina Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Business, Economics & Management (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
一种用于控制内部与外部网络(1,5,4)之间的网络数据包通讯的防火墙(3),包含:过滤装置,用于根据在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合数据包的规则,以便阻塞所述包或将所述包传递过该防火墙(3);二维地址查找装置(8),用于在一个每个前缀都有总规则集的一个规则子集的地址前缀集合中,对所述的该包的源和目的地地址进行二维查找,以便找出一个-通过其表示-与所述源和目的地地址相关联的前缀;规则对比装置(10),用于根据所述数据域的内容进行规则对比,以便找出适合数据包的规则。
Description
本发明总体涉及控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法,更具体来说,涉及一种包含用于根据要在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合该数据包的规则的过滤装置(filtering means)的防火墙设备及其方法,以便通过防火墙阻止所述数据包或转发数据包。
对大多数与因特网相连的机构来说,一个重要的问题是安全,因此防火墙正在变成大多数机构中的大多数计算机和网络安全策略中的重要部分。接入机构的网络服务器或其它公共服务的用户绝不能接触内部服务,如财务系统、因特网信息服务器和其它可能敏感的公司信息。系统的服务绝不能被中断-服务器和工作站需要得到针对来自因特网用户的拒绝服务(DOS-denial-of-service)标签的保护。
防火墙即过滤路由器,是一种工作原理基本上与路由器相同的设备。就是说,它在入接口上接受包,检查该包目的地地址,在正确的(就目的地地址而言)出接口上传递该包。然而,防火墙对每个包进行更加彻底的检查。源和目的地地址、源和目的地端口、协议域、标志和选项(options)也受检查,并与一系列防火墙规则对比。根据哪个规则符合该包,防火墙-例如当符合一个阻塞规则时-可能决定不传递该包。
除了非授权访问外,机构与因特网相连时,还有其它威胁发生。底线是从不明的源接收的数据不能被相信。搜索电子邮件和网页中的病毒和托罗伊木马病毒(trojan horses)是一些现有技术的防火墙履行的责任。
另外,随着网络带宽的增加,防火墙的性能正在变成一个重要的问题。
防火墙能在许多不同层次上工作,提供不同种类的搜索经过其中的数据的功能。然而,所有防火墙的基本功能是根据网络(IP=因特网协议)和传输(UDP、TCP=传输控制协议和ICMP=因特网控制消息协议)层首部的内容来执行过滤。如果没有这种IP过滤,所有其它功能-如数据搜索-就毫无用处,就是说,内部网络上的用户可能就会把他们的网络应用程序配置得不通过扫描程序就连接到远程服务器,由此绕过安全功能。
公司或机构与因特网相连出于不同的原因,例如,为了在网上公布关于公司、其产品和服务的信息,利用能在因特网上得到的信息,通过电子邮件通讯。
公司经常有因特网用户绝不能接触的内部信息,如因特网信息服务器、文件服务器等。大多数常见配置允许从因特网连接到一组服务器(web、电子邮件和其它公开服务),但是拒绝接入其它主机(例如内部服务器)。为实现这种配置,建立一个“非军事区”(DMZ)。可以从因特网以及从内部网进行与DMZ中的计算机的连接。在现有技术的网络中,内部网络(如内部网)通过防火墙与非军事区相连,而非军事区通过路由器与因特网相连。因此,网络通信能自由地穿行于因特网与DMZ之间,完全不受内部网上用户的保护。这一点的原因是,现有技术的防火墙也缺乏连接两个以上的网络-一个内部和一个外部网络-的可能性。
其它防火墙有三个网络接口。在这里能对因特网与DMZ以及内部网之间的交通作出一些限制。有些限制是对来往于DMZ中的主机作出的,例如,网络服务器只需要是在HTTP(超文本传输协议)端口上可访问的。因特网用户不应能连接到任何其它服务。然而,内部网上的用户为了管理的目的可能想要能够以比因特网用户更多的途径访问网络服务器,因此应当对这两个网络之间内的更多访问授权。类似的规则对于电子邮件服务器来说也需要;从因特网的SMTP(简单邮件传输协议)连接应当是允许的,但是读电子邮件则只能对内部网上某些被允许的主机来说是可能的,可能也应允许从因特网上的某个主机读电子邮件。
在防火墙环境中,DMZ中的机器数例如是30。对DMZ中的机器的规则可以因机器而异,但是每个机器的规则数相当少,例如10-15个。更多规则可能适合从内部网到DMZ的通讯,但是这些规则可能会更一般化。因此,对DMZ中所有机器都有效的规则数相当少。
另外,关于因特网与内部网之间的通讯的规则,在大多数情况下,即使有,也为数不多。大多数通讯应当被阻塞。然而,从内部网启动的通讯则可能被允许。
随着因特网上用户数量的增长,公共服务器将更频繁地被光顾,导致更多通讯。来往于内部网的通讯随着内部网用户从因特网上能得到的越来越多的信息中取得部分数据而增加。因此,带宽要求在增加。这对所使用的防火墙的性能提出更大的需求。
所以,防火墙的重要任务是包过滤,就是说,如果,给定一个IP包和一个规则集,应当对该包应用哪个规则?如果若干规则符合同一个包,则需要制定政策来规定要选取哪个规则。对这个问题,有两个现有技术的已知解决方案。一个解决方案是选取符合包的大多数域的规则,如果两个规则符合数量相同但内容不同的域,就需要在它们之间规定一个顺序。这个解决方案用在Borg和Flodin设计的包分类算法中。参看N.Borg和Malin Flodin的“Packet Classification”(包分类)(1997.6);N.Borg的“Packet Classifier for IPNetworks”(IP网络的包分类程序)(Masters Lic.,Lulea Universityof Technology,1998.2)另一个解决方案是定义规则之间的一个顺序,用该顺序来定义要选取哪个规则。第二个解决方案的一个优点是它在定义过滤规则时有更好的灵活性,NetBSD防火墙代码就使用这个方法。
过滤程序规则包含一个必须满足的基准集合,和当它们被满足是要执行的行动。准则的基础是,IP源和目的地地址(32位前缀)、IP协议域(8位整数)、包是否有设定的IP选项(options),这些选项是什么(整数)、预期IP/TCP源和目的地端口号(2个16位整数范围)、TCP首部标志(3位)、ICMP首部类型和代码域(2个8位整数)、包读自什么接口(8+8位)、包要传递到什么接口(8+8位)。
现今的大多数防火墙都不特别解决规则对比问题。常见的是有一个规则链接列表(或数组),将包与这些规则的每个和每一个比较,直到找到匹配。然而,这效率不高。另一个办法是规则的散列。另外,如果解决的方法在规则间有多义性-就是说两个规则符合同一个包,大多数实现通过定义作为要遵循的规则的第一或最后相符规则的方法来解决这个问题。
一种现有技术的防火墙-思科系统公司(Cisco Systems)的PIX防火墙,是一个对外部网络保护内部网络的面向连接的安全设备。PIX防火墙是一个非常昂贵的设备,它有一个约16000个同时连接的上限。PIX防火墙的主要部分是一个建立在自适应安全算法(ASA)基础上的保护方案,它具有可观的面向连接的安全性。ASA跟踪每个包的源和目的地地址、TCP序列号、端口号和其它TCP标志。该信息被存储在一个表中,所有向内和向外的包都与该表中的表目作比较。因此,所建立的每个连接的信息必须在该连接的生命期期间被存储起来,所以,可能的连接的数量就由可用的存储容量决定。完全加载的思科PIX防火墙能以90 Mbit/s的速度运行。然而,思科PIX防火墙也支持端口地址翻译(PAT),由此能由一个外部IP地址服务64000个以上的内部主机。
Net BSD 1.3的标准发布中附有一个现有技术的过滤程序-称作ipf(IP fileter-IP过滤程序)。
ipf中的各规则集在它们在其上有效的接口上分开。此外,规则被检查两次,第一次在包进入主机时,第二次在包离开主机时。仅对向内的包有效的规则不被添加到在输出端口被检查的规则列表中,反之亦然。数据结构基本上是一个优化的链接列表。
Exokernel、D.Engler、M.F.Kaashoek、小J.0’Tool、Exokernel的“An operating system architecture…”(参见第15届操作系统原理ACM研讨会论文集,1995年12月),用一种称作DPF的不同办法来处理包多路分解,见D.Engler、M.F.Kaashoek的“DPF:Fast,flexible message demultiplexing…”(DPF:快速、灵活的消息多路分解…)(D.Engler、M.F.Kaashoek著,“ComputerCommunication Review”(计算机通信评论)26卷,No.4,1996年10月)。这些规则是用一种专用程序设计语言编写的,然后被编译。编译程序知道所规定的所有规则,所生成的代码能为预期的通讯专利作优化。
本发明的一个目的是提供控制内部与外部网络之间的网络通信的一种改进的防火墙设备和一种方法,为实现高效、迅速的IP包过滤提供高效的地址查找和规则对比过程,并通过防火墙提供不限数量的可能连接。
这是通过按照本发明的防火墙设备和方法实现的,其中,通过对规则集分段而缩小需要被线性搜索的规则的集合。按照本发明的防火墙包含一个二维地址查找装置(address lookup means),它在一个地址前缀集中先后对包的源和目的地地址进行两步查找。将每个前缀与一个总规则集的一个规则子集相关联。对产生的规则子集进行线性搜索,以便找出适合当前数据包的规则。
本发明的另一个目的是提供一种过滤所分段的包(fragmentedpacket)中所有片段(fragment)的片段机(fragment machine)。
本发明的再另一个目的是提供一种将从防火墙传送的包的内部源地址翻译成外部源地址或将向防火墙传送的包的外部源地址翻译成内部源地址的网络地址翻译装置(translating means)。
本发明的再另一个目的是提供一种将从内部网络向外部网络传送的包的内部源地址翻译成外部源地址或将从外部网络向内部网络传送的包的外部源地址翻译成内部源地址的网络地址翻译装置。
本发明的再另一个目的是提供一种为从内部网络启动的连接执行一个由外向内的阻塞规则的临时例外(temporary exception)的穿孔装置(hole punching means),其中为从外部网络向内部网络传送的包通过防火墙建立一个返回通道。
本发明的另外一个目的是提供一种能够处理至少1000个独特规则的防火墙。
按照本发明的的防火墙及其方法的优点是不限数量的可能的同时连接、快速的IP过滤和所支持的大量的可能规则。
按照本发明的防火墙的另一个目的是提供一种包含路由器的防火墙。
为了更详细地解释本发明和本发明的优点和特点,以下将参照附图,详细说明最佳实施例。附图简介:
图1表示包含按照本发明的防火墙的普通网络拓扑;
图2是按照本发明的防火墙的框图;
图3是一个二维紧凑块(dense chunk)的分区的示意图;
图4是按照本发明的数据结构的示意图;
图5是类(0,0)平铺结构(tile)的示意图;
图6是类(1,1)平铺结构的示意图;
图7是类(1,2)平铺结构的示意图;
图8是类(2,1)平铺结构的示意图;
图9是类(1,3+)平铺结构的示意图;
图10是类(3+,1)平铺结构的示意图;
图11是类(2+,2+)平铺结构的示意图;
图12表示一例在含有6个键码的帕特希亚树(Patricia Tree)中对特定查询键码(query key)的不成功搜索;
图13是由因图12的不成功搜索而插入查询键码而产生的帕特希亚树。
图1中表示一例从公司或机构的角度来看的现代网络拓扑。诸如内部网的内部网络1包含若干个与防火墙3相连的网络节点2,如PC、工作站、文件服务器等等。与因特网相连的公司或机构,目的是为了在网上公布关于公司的诸如产品和服务的信息,利用其它公司或机构在因特网上公布的信息,以及通过电子邮件通讯。然而,公司可能有不允许因特网上的用户接触的内部信息,例如通过内部网信息服务器、文件服务器等可获得的信息。所以,为了让因特网用户接触公开信息,允许他们连接到有限的一组服务器-例如web服务器、电子邮件服务器等,拒绝他们接触诸如内部网服务器的其它主机上的信息。公共的服务器在一个与防火墙3相连的“非军事区”(DMZ)5中是可用的。防火墙3进一步通过路由器6与因特网相连,由此,从外部网络即因特网4以及从内部网1能连接到DMZ5中的节点,但限制从因特网4对内部网1的访问。
在以下说明中,提供了许多的具体细节,以便更透彻地说明本发明。对于本领域的那些熟练人员来说,显然,即使没有这些具体细节,也能实践本发明。为了不使本发明的主题不清,对一些众所周知特点不作详细说明。
图2表示了按照本发明的防火墙和快速路径(fast path)中不同模块以及被过滤的包如何流过的一个实施例。
在一个简单情形中,在防火墙输入连接7从网络1、4或5接收一个包后,将其施加到二维地址查找装置即2d-SFT功能块8。中间连接9连接2d-SFT与规则对比装置即功能块10,在此,包或者被传送(向下),或者被阻塞(b5)。然而,为了正确地工作,按照本发明的防火墙有许多另外的模块。
在本实施例中,在2d-SFT功能块8中进行源地址和目的地地址的查找,产生一个规则或实际上一个较短的规则列表。该规则列表一直留在规则对比功能块10中,直到对该列表搜索后找到一个相符规则时为止。
此外,关于该包是否可能需要被其它模块进行处理的信息,由该2d-SFT查找生成。这些决定中有些是在规则对比期间确定的,这意味着,规则对比实际上在进入该功能块之前就开始,如图2中所示。2d-SFT功能块8在下文作详细说明。
如果包大得不能在一个链路(link)上发送时,将其分段。这意味着,将IP首部后面的一切分解成一段一段(片段),并为每个片段配备其自己的IP首部。在每个片段中还设置额外的片段标志和片段偏置量(offset),以指示其是否是最后的片段,记录该片段的数据在原始(未分段的)包中的位置。
如果包被分段,则只有第一个片段即片段首部含有传输首部(TCP、UDP或ICMP首部)。这意味着,不能将随后的片段与涉及例如端口的规则对比。
按照本发明,一个分段机11从收集来自每个分段包的片段,直到片段首部到达(片段未必按顺序到达)。然后,将只在片段首部中出现的各段信息存储在与该分段包的相关表目中,将所收集的片段,以片段首部为先,施加到与连接7相连的输出o1。为从分段机传送的每个片段提供片段首部信息,以便它能就像是未分段包那样被过滤器处理。检查额外的片段标志和片段偏置量,以确定是否把该包施加到分段机11的与连接7相连的输入i1。
当一个分段包的所有片段都在分段机11中被接收时,删除该包的对应表目。
在有些点,分段机可能也决定阻塞片段。这发生在分解的分段包到达(可能由于攻击的结果)时-如果所收集的片段数量超过一定限度,或者是由于垃圾收集(删除旧表目,为新表目腾出地方)的结果。
网络地址翻译(NAT)是在公司有许多内部IP地址和仅仅一些外部(真实)IP地址时常用的。IP地址空间的有些部分被保留给内部地址,如10.*.*.*,192.168.*.和172.16.*.*。这些地址能在内部/专用网络上被自由地使用。但是在外部这些地址是绝对看不见的。因此,将防火墙设置得在包从内部网络去往外部网络时将内部源地址翻译成外部源地址。对于在另一方向上前进的包,当包经过防火墙时,将外部目的地地址翻译成内部地址。为了将许多内部地址映射到一些外部地址,也要使用端口。
例如,使用端口20000至20255(28个端口)将防火墙设置得将内部地址10.1.0.0至10.1.255.255(216个地址)映射到外部地址194.22.187.0至194.22.187.255(28个地址)。
当从10.1.1.1端口4000向130.240.64.46、端口6000启动一个连接时,从地址和端口范围中选取一个地址a和端口p,使得(a,p)不与任何其它NAT连接冲突。然后,对于每个从该连接外出的-由内向外的(I2X)-包,将源地址10.1.1.1和端口4000分别替换为a和p.对于从进入的-由外向内的(X2I)-包,将目的地址a和端口p分别替换为10.1.1.1和4000。
这样,这256个外部地址与256个端口一起能表示内部网络的65536个内部地址。
作为2d-SFT查找的结果,也获得关于是否要对包进行外部到内部地址翻译的信息,并将该包施加到执行外部到内部地址翻译的X2I-NAT功能块12的输入端i2。因此,消除了对所有不需要翻译的包进行X2I-NAT查找的开销。对于进行了X2I-NAT查找的包来说,如果失败,则将包通过X2I-NAT的慢路径输出s2发送到慢路径装置(slow path means)13,因为NAT数据结构的更新是在其中处理的。如果进行了成功的X2I-NAT查找,则改变地址和端口,检索出新的源-目的地对的一个规则匹配(rule matching),然后通过其输出o2将包发送到下一个过滤步骤。
作为2d-SFT查找或X2I-NAT查找的结果,也清楚是否要对该包进行内到外的地址翻译。这种翻译基本上是以与X2I-NAT的相同的方式进行的,但是是作为最后一个过滤步骤执行的。从规则对比功能块10的输出连接15接收的、要进行内到外的(I2X)地址翻译的包,被施加到I2X-NAT功能块14的输入i5。对于进行了I2X-NAT查找的包来说,如果失败,则将包通过I2X-NAT的慢路径输出s5发送到慢路径装置13,因为NAT数据结构的更新是在其中处理的。如果进行了成功的I2X一NAT查找,则改变地址和端口,然后通过其输出o2和输出连接15传送到适当的网络。
以X2I-NAT作为2d-SFT查找后的第一个步骤并且以I2X-NAT作为最后一个步骤的理由是,过滤规则是针对固定的内部地址而不是动态分配的NAT地址给出的。
一般来说,大多数从外部网络4向内部网络1的通讯都被阻塞,以保护内部网络。然而,内部网络上的主机通常被允许访问外部网络4上的主机。为了接收来自外部网络的任何返回通讯,必须为从内部网络启动的连接制定一个从外向内的阻塞规则的临时例外。这被称作为穿孔(hole punching-HP),即为返回的包在防火墙穿出一个孔。该孔仅在该连接的生命期期间存在,并且只影响来自该连接的包。
穿孔也追踪TCP序列号,以便保护穿孔过的连接不受劫持。因此,有必要既由I2X-HP功能块16进行对向外的(I2X)包的HP查找,又由I2X-HP功能块17进行对向内的(X2I)包的HP查找。
作为2d-SFT查找或X2I-NAT查找的结果,我们知道是否该包必须得到由内向外的(I2X)或是由外向内的(X2I)穿孔。这意味着,我们能避免对不可能必须得到穿孔的包进行HP查找的开销。将必须进行穿孔的向外的包施加到I2X-HP功能块16的输入i3,由此查找源和目的地地址与端口以及协议,以便找出一个现有状态。如果没有这种状态存在,则通过其慢路径输出s3把该包发送到慢路径装置13,在其中更新HP数据结构并创建一个状态。如果找到一个相符的状态,就对TCP序列号等进行更新,然后通过另一个输出o3将包发送到下一个过滤步骤。
X2I-HP以相同的方式进行。将必须进行穿孔的向内的包施加到X2I-HP功能块17的输入i4,由此查找源和目的地地址与端口以及协议,以便找出一个现有状态。如果没有这种状态存在,则曾经试图通过阻塞规则中一个不存在的孔发送过该包,于是在其输出b4阻塞该包。如果找到一个相符的状态,就对其进行更新,然后通过另一个输出o4将包发送到下一个过滤步骤。
再次参看2d-SFT功能块8,根据正在所述网络之间传送的数据包的数据域中的内容,从规则集中选择一个适合该数据包的规则,由此阻塞该包或者将其传递过防火墙。为了缩小需要被线性搜索的规则的集合,将规则集分段。按照本发明,这是通过在一个地址前缀集中对包的源和目的地地址进行二维查找一以便找出一个与源和目的地地址相关的前缀-而完成的,其中每个前缀都有总规则集的一个规则子集。然后,根据所述数据域的内容,由规则对比装置10进行规则对比,以便找出适合于该数据包的规则。
在进行二维的地址查找时,将每个规则视为覆盖着一个二维平面的一个矩形区域,其中矩形的偏置量(offset)和大小是由地址前缀和前缀长度决定的。于是,将查找视为是与寻找围绕平面中一个点的矩形相同的问题。为简化查找,作出一个保证平面中的每个点被一个且仅一个矩形覆盖的限制,由此产生一个更容易的查找过程。
进行二维地址查找之后,用生成的一个与找到的当前前缀相关的规则子集继续查找。不过,在该最终规则匹配中不使用该地址域。所以,如果某规则对于当前包的地址来说不是有效的,则它就不在由该地址查找产生的规则列表中。
由于每个规则是由一个覆盖总地址空间的一部分的矩形代表的,并且若干个规则可能适合于相同的地址,这些矩形可能重叠。然而为了使按照本发明的方法正常地作用,不允许有重叠的矩形。因此,为了满足该不重叠准则,必须执行以下步骤:
1.为每个规则创建在地址空间中的矩形。
2.创建一个只含有新创建矩形的集合。该集合将被称作比较集。
3.对于已经在平面中的所有矩形,将其与比较集中的每个矩形对比。
4.如果它们重叠,就切除不重叠的部分。重叠部分的规则列表被赋予附加在其结尾的新矩形中的规则。
5.对于所有部分-如果该部分是已经在平面上的一部分矩形,将它返回到平面;如果不是,将它加到要被比较的矩形集合。
6.如果比较集是非空的,返回步骤3。已经在平面中的并且被比较过的矩形可以被忽略。
7.在这个状态,比较集是空的。如果任何矩形原来与新的矩形重叠,如果需要就把它们分解成较小的部分,带有规则列表的共同部分含有新的规则。
在另一个方法中,为满足不重叠准则,在平面中只有一个矩形集合。而每个矩形除了含有其坐标和规则列表索引(rule 1ist index)外,还含有一个矩形或子矩形的集合。每个子矩形有一个另外的子矩形集合。然而,有时有必要引用相同的子矩形和遍历一个矩形深度的有向非循环图(DAG)。
总是有一个覆盖整个平面的根矩形。这代表当所有其它比较失败时要遵循的缺省矩形。规则动作或者是被阻塞或者是被允许通过则视配置而定。
被称作根的矩形是要向其添加一个新矩形的根矩形。
如果根矩形和新矩形是相同大小的,则将新矩形中的规则添加到与根矩形相关的规则列表中。
在根矩形的全部子矩形上重复。如果新矩形能被这些子矩形的任何子矩形完全覆盖,就转而以该子矩形为根进行一个递归调用,然后返回。
再次在根矩形的全部子矩形上重复。
如果某个子矩形能被完全地包容在新矩形中,就将它从根矩形移动到新矩形。该子矩形和其下面所有矩形的规则列表需要修改,以便也包含新矩形的规则。
如果该子矩形与该新矩形相交,就创建一个包含这二者的共同部分的新矩形。该相交矩形的规则列表是各原始规则列表的一个组合。然后,将该新矩形加到原始子矩形和新矩形中。
一旦将所有矩形都加到DAG后,就能遍历该图,然后就能生成由二维查找建立代码所需要的前缀定义的矩形的列表。该相交矩形将是一个合适的、前缀定义的矩形,但是在各子矩形已经被切除后的其它周围矩形不能由前缀适当地定义。
当该数据结构被用于如上所述的过滤查找时,该查找被分为两个步骤。首先进行一次二维地址查找,生成一个整数。该整数是一个规则数组中的下标-规则数组中的每个规则规定要比较哪些域以及如果找到匹配时执行什么行动。每个规则有一个指示如果失配时要以哪个规则继续的下一个域。规则列表的遍历一直继续到找到了匹配并采取了阻塞还是传递该包的适当行动时为止。
二维前缀问题是如下地解决的。
地址空间或全域U是一个由满足下述关系的整数对(s,d)组成的一个二维空间:0<=s<232,0<=d<232。
将一个满足“如果s0<=s<s1,d0<=d<d1,则(s,d)∈R(其中(s0,d0),(s1,d1)∈U)”的U的子集R称作矩形。另外,点对[(s0,d0),(s1,d1)]唯一地定义R。
将一个由[(s0,d0),(s1,d1)](其中,对于一些非负整数is,id,ks和kd,s1-s0=s1-2is·ks=2is并且d1-d0=d1-2id*kd=2id)定义的矩形称作前缀。
给定点(s,d)∈U和前缀集合P={p1,p2,…pn},使得P是U的一个分区,则二雏前缀对比问题就是,计算i,使得(s,d)∈Pi。
防火墙过滤问题的源-目的地部分被表示为一个二维前缀对比问题,其中,集合P是通过将路由选择表(routing table)和过滤规则转换成一个前缀分区(a partition of prefixes)而获得的。由于每个要被过滤的包要求一个前缀匹配,有必要找到P的一种表示,使得前缀匹配能被有效地计算。
图3表示划分一个小32×32位全域的一些前缀。黑方块18代表置位的位(代表),白方块19代表未置位的位。注意:点(0,0)位于图3中的左上角。
对于每个前缀P=[(s0,d0),(s1,d1)]∈P,选择点P0=(s0,d0)作为P的一个代表。另外,让P={p1,p2,…pn}={(s1,d1),(s2,d2),…(sn,dn)}代表P中的前缀的代表的一个集合。
给定点(sd,dd)∈U,对于每个使得sd>=s并且dd>=d的(s,d)∈U,(sd,dd)是(s,d)的一个支配点,或换言之,(s,d)被(sd,dd)支配。
给定点对(s1,d1),(s2,d2)∈U,按照范数(norm)L∞的这两点之间的距离由下式给出:
现在,给定点p=(s,d),寻找P中相符前缀的问题,相当于按照范数L∞寻找P中最接近的支配点p的问题,即寻找使pi与p之间的L∞距离最小的支配点pi∈P。因此,仅表示各支配点而不是各前缀本身就足够了。
如图4中所示,将集合P示意性地表示为一个232×232点的位矩阵,其中,如果p∈P,则位p是置位的。为了减少该表示所需的空间,我们实际上将P表示为一个四层次(level)的28+8分树。每个层次(再次)被示意性地表示为一个28×28位的位矩阵,其中,如果下面的子树中有一个支配点,则点p(s,d)是置位的。就是说,在层次1(顶层),位(s,d)表示在U的矩形[(224*s,224*d),224*(s+1),224*(d+1))]中存在还是不存在支配点。
对一个层次的实际表示是二维紧凑块或者就是二维块。任何以及何时能将一个层次用一维紧凑块来表示,在下文作讨论。二维块由32×32个平铺结构(tile)组成,其中每个平铺结构代表8×8位。由于定义一个平铺结构的点是前缀的支配点,不可能有全部264种平铺结构。实际上,我们对平铺结构有个限制,使得只有677个不同种类是可能的。
如果平铺结构T中有一个点(由平铺结构中的其中一位代表的某个子全域(sub-universes)中的一个点)在另一个平铺结构Td中有其最近的支配点,则T中的所有点在平铺结构Td中有它们最近的支配点。将支配点的定义扩展到支配平铺结构。将平铺结构Td称作T的支配平铺结构,或者说,平铺结构T被平铺结构Td支配。
为了满足前面定义的条件,需要以下命题。
如果P=[(s0,d0),(s1,d1)]是一个满足s1-s0>1的前缀,则[(s0,d0),(s0+2i,d1)]和[(s0+2i,d0),(s1,d1)](其中对于某些非负的整数i,s1-s0=2i)也是前缀。对于其它维数来说的该命题是对称的。
由以上命题,每当需要时,可将一个前缀分解成2个部分。因此,给定一个具有在平铺结构Td中的代表的前缀Pd的集合,我们可以反复地切割(cut)它们,一直到所有的前缀在同一平铺结构中两个方向上有端点(ednpoint)为止,以符合以上的要求。这叫做平铺结构切割,是紧凑二维块构造的关键部分。
将不同种类的平铺结构划分成图5-11中所示的7个类。对于每个类,平铺结构被表示成一个位矩阵(星号*代表的位可能是0或者1)。对于每个置位的位(bit set)(不是*)和平铺结构类,也有表示由该位(点)支配的子集的有保障边界的直线。注意,平铺结构中的置位的位,一般能支配右边和/或下边的其它平铺结构中的点。我们也给出类中不同种类的平铺结构的数量并区分自然的和受限制的平铺结构类。最后,我们描述平铺结构在紧凑二维块中是如何表示/编码的。
图5中表示一个类(0,0)平铺结构。没有位是置位的:自然的,一种,总是被类(1,1)、(1,2)、(2,1)、(1,3+)或(3+,1)中的平铺结构Td支配。寻找类(0,0)平铺结构中位(sb,db)中点的支配点和寻找其支配平铺结构Td的位(sb,db)中相应点的支配点相同。因此,类(0,0)平铺结构能够且应当总是按与其支配平铺结构Td完全相同的方式被编码。
图6中表示一个类(1,1)平铺结构。1位是置位的:自然的,一种,可能支配右边和/或下边的类(0,0)平铺结构。由于这个平铺结构内的所有点有同一个最近的支配点,我们就简单地编码一个向平铺结构本身内该点的引用(reference)。
图7中表示一个类(1,2)平铺结构。第1行(D雏)中2个位是置位的:自然的,一种,可能支配下边的类(0,0)平铺结构。不能支配右边的类(0,0)平铺结构。
这个平铺结构中有两个点的最近支配点,一个对应左半个中的点,一个对应右半个中的点。我们将对这两个支配点的引用编码成一个长度2的数组,然后能用该查询点的左/右半个作为下标。
图8中表示一个类(2,1)平铺结构。第1列(S维)中2个位是置位的:自然的,一种,可能支配右边的类(0,0)平铺结构。不能支配下边的类(0,0)平铺结构。这个平铺结构中有两个点的最近支配点,一个对应上半个中的点,一个对应下半个中的点。将对这两个支配点的引用编码成一个长度2的数组,然后能用该查询点的上/下半个作为下标。
图9中表示一个类(1,3+)平铺结构。第1行中3个或更多个位是置位的:自然的,24种,可能支配下边的类(0,0)平铺结构。不能支配右边的类(0,0)平铺结构。这个平铺结构类可有许多点的支配点。有必要将该平铺结构类编码,这是因为有24个不同种类的平铺结构。另外,对于第1行中每个被置位的位,编码一个指向下边的支配点(如果只有一个的话)或指向下一层块(如果有几个支配点的话)的指针。最后,编码一个对第一个指针的引用(基址指针)。这样,通过简单地检查d在哪个列中,就能找到一个查询点(s,d)的支配点(或者对下一层块的引用),然后连同块的种类,进行一次表查找,检索出一个指针偏置量x,最后,检索出离基址指针x个指针远的指针。注意,任何下一层块只需是一(D-)维的,这是因为平铺结构中的全部表示都位于相同的S坐标上。
图10中表示一个类(3+,1)平铺结构。第1列中3个或更多个位是置位的:自然的,24种,可能支配右边的类(0,0)平铺结构。不能支配下边的类(0,0)平铺结构。这个平铺结构类可有许多点的支配点。有必要将平铺结构的种类编码,这是因为有24个不同种类的平铺结构。另外,对于第1列中每个被置位的位,编码一个指向下边的支配点(如果只有一个的话)或指向下一层块(如果有几个支配点的话)的指针。最后,编码一个对第一个指针的引用(基址指针)。这样,通过简单地检查s在哪个行中,就能找到一个查询点(s,d)的支配点(或者对下一层块的引用),然后连同块的种类,进行一次表查找,检索出一个指针偏置量x,最后,检索出离基址指针x个指针远的指针。注意,任何下一层块只需是一(S-)维的,这是因为平铺结构中的全部表示都位于相同的D坐标上。
图11中表示一个类(2+,2+)平铺结构。第1行和第1列中都有两个或多个位是置位的:有限制的,625种,不能支配另一个平铺结构,并且不能被另一个平铺结构支配。这个平铺结构类中一般有许多支配点。编码是与对类(1,3+)和(3+,1)平铺结构的完全相同的方式进行的。然而,在进行实际的编码之前,要提出一个限制,以减少不同种类的数量。第一个任务是对每个位提出一个类似于定义8的平铺结构限制的限制。然后计算一对长度为8的位向量Sv和Dv,其中
如果第i行中有个位是置位的,Si=1,否则Si=0;
如果第i列中有个位是置位的,Di=1,否则Di=0。
新的平铺结构最后被通过用矩阵乘法计算Sv和DvT的积而创建,然后被编码。
如同在类(1,3+)和(3+,1)平铺结构中一样,在这个情况中也可以提供一维的子层次(sub-levels)。检查一个含有多于一个表示的位中的所有表示是在U中的同一行中-这意味着S维崩溃(S-dimension collapses),还是在U中的同一列上-这意味着D维崩溃(D-dimension collapses)。
在防火墙中用于表示NAT和HP表目的树结构的进一步说明。
在两种情况中,在查找中用被处理的包的IP地址对saddr和daddr、端口对sport和dport和协议proto作为键码。查找中的第一步骤是计算一个散列值。这是用非常简单和快速的指令(如位移(bit shifts)、按位逻辑运算)完成的。然后用该散列值作为下标,从一个大数组(散列表)中检索出一个16位指针。
该指针或者为0(这意味着查找失败(空的)),或者指向一个帕特希亚树的根。帕特希亚树是表示小键码集的一种很有效的数据结构。如果指针指向帕特希亚树,则通过并置saddr、daddr、sport、dport和proto的位模式(bit pattern)而创建一个键码。该键码然后在如下一节中所述的那样搜索帕特希亚树时被使用。
帕特希亚树是一个二进制树,它按位阵列处理查询键码,并用每个内部节点中的一个位下标(bit index)来指引分支。搜索是通过从根到叶子地遍历树而完成的。当访问具有位下标i的内部节点时,检查查询键码的位i,以确定要在左边的(如果该位是0)还是右边的(如果该位是1)子树中继续搜索。遍历在到达叶子时停止。为了确定查询键码是否在表中存在,于是将查询键码与在该叶子中存储的键码作比较。如果这两个键码相等,则搜索是成功的。
图12表示一例在含有6个键码的帕特希亚树中对查询键码001111的不成功搜索。在遍历期间检查了第0、2和3位,遍历在具有键码011101的叶子结束。比较查询和叶子键码,在第1位发现一个失配。
就内部节点中存储的位下标而言,帕特希亚树是堆顺序的。就是说,除根节点外的任何内部节点都有一个大于其父节点的位下标的位下标。自然,在以具有位下标i的节点为根的子树中存储的所有键码,自上至(包含)位i-1,是相同的。
完成插入的方式是,先执行一个不成功搜索,记录下在查询和叶子键码的比较中第一个失配位的下标i。然后创建两个新节点-一个具有下标i的新内部节点和一个对应该查询键码的叶节点。分别根据查询键码的第i位是0还是1,把该叶节点作为该内部节点左边的或右边的子树存储。通过用另一个子树域作为链接域,然后将该内部节点直接插在从根到叶遍历的路径中具有大于i的最小位下标的节点的上面。
图13是由因图12中前一个例子的不成功搜索而插入查询键码而产生的帕特希亚树。创建了一个具有位下标1的新内部节点,它被插入到从根出发的遍历的路径中、具有位下标0和2的节点之间。
用于穿孔的帕特希亚散列(Patricia Hashing)的工作方式与以上所述的完全相同-一个简单的散列表查找后,接着一个帕特希亚树查找。大多数时间,直接到达一个叶节点,这意味着不必从参数创建一个位阵列-这些参数被直接地与结构中含有/代表帕特希亚叶的对应域作比较。
提供一个查找函数hp_lookup(iaddr,xaddr,iport,xport,proto),用于I2X-HP和X2I-HP二者。应用于这二者的函数之间的唯一差别是给出的参数的顺序。对于I2X-HP来说,函数调用是hp_lookup(saddr,daddr,sport,dport,proto),对于X2I-HP来说,函数调用是hp_lookup(daddr,saddr,dport,sport,proto)。
查找函数返回一个对一个含有帕特希亚叶键码(即iaddr,xaddr,iport,xport,proto)的结构的引用,以及若干代表连接的状态的其它域,例如TCP序列号。
用于NAT的帕特希亚散列比HP的稍微复杂一点。原因是涉及三个不同的地址和端口-iaddr、naddr、xaddr、iport、nport、xport,与之相比,HP只涉及两个地址和端口。这意味着,函数在I2X与X2I之间的差别,变得比只是在查找中交换地址和端口多了几分复杂。
问题的解决方式是,让散列值的最低有效位反映查找是I2X还是X2I的(这与用两个散列表基本上是相同的)。含有表示一个NAT连接的帕特希亚叶键码的结构对于I2X和X2I来说是相同的,它含有全部三个地址和端口。
有两个查找函数:nat_i2x_lookup(saddr,daddr,sport,dport,proto)和nat_x2i_lookup(saddr,daddr,sport,dport,proto)。两个函数都用参数来计算一个要把该处的最低有效位相应地置位的散列值。如果生成的指针指向一个帕特希亚节点(内部节点),则将各地址、端口和协议并置起来,创建遍历帕特希亚树所需的位阵列。到达叶结构时,将各地址、端口和协议与叶中对应的域作比较。
如果一个包必须进行I2X-NAT:
将(包的)saddr与(叶结构的)iaddr对比,
将daddr与xaddr对比,
将sport与iport对比,
将dport与xport对比,
将proto与proto对比。
如果这些全部匹配,查找就是成功的,于是先将包的源地址和端口saddr和sport分别地替换为(叶结构的)naddr和nport,然后传递该包。
如果一个包必须进行X2I-NAT:
将(包的)saddr与(叶结构的)xaddr对比,
将daddr与naddr对比,
将sport与xport对比,
将dport与nport对比,
将proto与proto对比。
如果这些全部匹配,查找就是成功的,于是先将包的目的地地址和端口daddr和dport分别地替换为(叶结构的)iaddr和iport,然后将该包发送到下一个处理步骤。
HP和NAT数据结构的更新是由在BSP(处理器1)上运行的EffNIX内核(以前是NetBSD)执行的,但是大多数查找是由在AP(处理器2)上运行的传递内核(forwarding kernel)执行的。只有HP数据结构的一个实例和NAT数据结构的一个实例。这两个实例驻留在共享内存中,由这两个处理器同时访问。这导致一个非常有趣的同步问题-一个是写入者(writer),一个是读出者(reader)。同步问题的解决方法是,让更新例程在改变任何数据(写入)之前无效叶结构和节点。查找例程在访问叶和节点之前和之后,查验所访问的叶和节点是有效的,并查验它们在访问期间没有被修改过。如果竞争情况发生并被检测到(所有危险的竞争情况都被检测),查找就失败,于是将该包发送到BSP并在那里作处理(要么在处理后进行一次成功的查找,要么将数据结构更新)。
显然,本发明提供一种完全满足以上提出的目标和优点的、控制内部网络与外部网络之间的网络数据包通信的防火墙设备和方法。
尽管对本发明是结合其具体实施例作说明的,本发明易于以不同形式的实施例实现,因为要知道本文所披露的应被视为是本发明的原理的例证,而不是要将本发明限制与所示的具体实施例。
Claims (20)
1.一种控制内部与外部网络(1,5,4)之间的网络数据包通讯的防火墙(3),包含用于根据在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合所述数据包的规则,以便阻塞所述包或将所述包传递过该防火墙(3)的过滤装置,特征在于,二维地址查找装置(8)用于在一个每个前缀都有总规则集的一个规则子集的地址前缀集合中,对所述的该包的源和目的地地址进行二维查找,以便通过其表示找出一个与所述源和目的地地址相关联的前缀,和规则对比装置(10),其用于根据所述数据域的内容进行规则对比,以便找出适合所述数据包的规则。
2.按照权利要求1的防火墙,特征在于,所述二维地址查找装置(8)包含用于通过按照范数L∞确定P中最近的支配点p,即使得pi与p之间的L∞距离最小的p的支配点pi∈P而找出与所述源和目的地地址有关的前缀的装置。
3.按照权利要求2的防火墙,特征在于,
源和目的地地址是由点(s,d)∈U表示的,其中,U是一个由满足下述关系的整数对(s,d)表示的一个二维地址空间:0<=s<232,0<=d<232,
前缀P={p1,p2,…pn}是地址空间U的一个分区,
每个前缀pi是地址空间U中由[(s0,d0),(s1,d1)]定义的一个逻辑矩形R,其中,对于一些非负的整数is,id,ks和kd,s1-s0=s1-2is*ks=2is并且d1-d0=d1-2id*kd=2id,
所述逻辑矩形R是U的一个子集,满足:如果“s0<=s<s1,d0<=d<d1,则(s,d)∈R,其中(s0,d0),(s1,d1)∈U”,点对[(s0,d0),(s1,d1)]唯一地定义所述矩形R。
4.按照权利要求2或3的防火墙,特征在于,对于每个前缀P=[(s0,d0),(s1,d1)]∈P,点P0=(s0,d0)是p的一个表示,P={p1,p2,…pn}={(s1,d1),(s2,d2),…(sn,dn)}是P中的前缀的表示的集合,其中,给定点(sd,dd)∈U,对于其中sd>=s并且dd>=d的每个(s,d)∈U,(s,d)是由(sd,dd)支配的。
5.按照权利要求3的防火墙,特征在于,给定点对(s1,d1),(s2,d2)∈U,按照范数L∞的这两点之间的距离由下式给出:
6.按照前述各权利要求的任何权利要求的防火墙,特征在于分段机(11),它包含用于收集来自分段的包的包片段,一直到收到所述包的片段首部为止的片段收集装置,用于在表目装置中存储在包的片段首部域中出现的信息的片段首部存储装置,用于以片段首部为开始传递配有片段首部信息的包片段的片段传递装置,其中每个片段被过滤装置作为未分段的正常包作处理。
7.按照前述各权利要求的任何权利要求的防火墙,特征在于网络地址翻译装置(12,14)用于根据前缀中的信息,将通过防火墙(3)向外传送的包的内部源地址翻译成外部源地址或将通过防火墙(3)向内传送的包的外部源地址翻译成内部源地址。
8.按照权利要求1-6的任何权利要求的防火墙,特征在于网络地址翻译装置(12,14)用于根据前缀中的信息,将从内部网络(1)向外部网络(4)传送的包的内部源地址翻译成外部源地址或将从外部网络(4)向内部网络(1)传送的包的外部源地址翻译成内部源地址。
9.按照前述各权利要求的任何权利要求的防火墙,特征在于穿孔装置(16,17)用于根据前缀中的信息,确定所述包是否必须得到对从内部网络启动的连接的由外向内阻塞规则的临时例外,其中,在连接的生命期期间为从外部网络(4)向内部网络(1)传送的包建立一个通过防火墙的返回通道。
10.一种用于控制内部与外部网络(1,5,4)之间的网络数据包通讯的防火墙(3),包含用于根据在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合所述数据包的规则,以便阻塞所述包或将所述包传递过该防火墙(3)的过滤装置,特征在于分段机(11),它包含用于收集来自分段包的包片段,一直到收到所述包的片段首部为止的片段收集装置,用于在表目装置中存储在包的片段首部域中出现的信息的片段首部存储装置,用于以片段首部为开始传递配有片段首部信息的包片段的片段传递装置,其中每个片段被过滤装置作为未分段的正常包作处理。
11.一种通过防火墙(3)控制内部网络(1,5)与外部网络(4)之间的网络数据包通讯的方法,包含下列步骤:
根据在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合所述数据包的规则,
对所述包应用所述规则,
根据该规则,阻塞所述包或将所述包传递过防火墙(3),
特征在于,所述过滤进一步包含下列步骤:
在一个每个前缀都有总规则集的一个规则子集的地址前缀集合中,对所述的该包的源和目的地地址进行二维查找,以便通过其表示找出一个与所述源和目的地地址相关联的前缀,
根据该包的所述数据域的内容,在规则子集上进行规则对比,以便找出适合该数据包的规则。
12.按照权利要求11的方法,特征在于,它在选择适合数据包的规则的步骤之前,进一步包含下列步骤:
收集来自分段包的包片段,一直到收到所述包的片段首部为止,
在表目装置中存储在包的片段首部域中出现的信息,
以片段首部为开始,传递配有片段首部信息的包片段,其中每个片段被过滤装置作为未分段的正常包作处理。
13.按照权利要求11或12的方法,特征在于,它在执行规则对比之前,进一步包含下列步骤:
根据前缀中的信息,把要通过防火墙(3)向内传送的包的外部源地址翻译成内部源地址。
14.按照前述权利要求11-13的任何权利要求的方法,特征在于,它在执行规则对比之前,进一步包含下列步骤:
根据前缀中的信息,把要从外部网络(4)向内部网络(1,5)传送的包的外部源地址翻译成内部源地址。
15.按照前述权利要求11-14的任何权利要求的方法,特征在于,进一步包含下列步骤:
根据前缀中的信息,把要通过防火墙(3)向外传送的包的内部源地址翻译成外部源地址。
16.按照前述权利要求11-15的任何权利要求的方法,特征在于,进一步包含下列步骤:
根据前缀中的信息,把要从内部网络(1)向外部网络(4)传送的包的内部源地址翻译成外部源地址。
17.按照前述权利要求11-16的任何权利要求的方法,特征在于,它在执行规则对比之前,进一步包含下列步骤:
根据前缀中的信息,确定所述包是否必须得到对从内部网络(1)启动的连接的由外向内阻塞规则的临时例外,
如果是,则为从外部网络(4)向内部网络(1)传送的包建立一个通过防火墙(3)的返回通道,其持续时间相应于该连接的生命期。
18.一种通过防火墙(3)控制内部网络与外部网络(1,5,4)之间的网络数据包通讯的方法,包含下列步骤:
根据在所述网络之间传输的数据包的数据域中的内容,从一个总规则集中选择一个适合所述数据包的规则,
对所述包应用所述规则,
根据该规则,阻塞所述包或将所述包传递过防火墙(3),
特征在于,它在选择适合所述数据包的规则的步骤之前进一步包含下列步骤:
收集来自分段包的包片段,一直到收到所述包的片段首部为止,
在表目装置中存储在包的片段首部域中出现的信息,
以片段首部为开始,传递配有片段首部的包片段,其中每个片段被过滤装置作为未分段的正常包作处理。
19.按照前述权利要求11-18的任何权利要求的方法,特征在于,执行对包的源和目的地地址的二维地址查找的步骤进一步包含:
按照范数L∞确定P中最近的支配点p,即使得pi与p之间的L∞距离最小的p的支配点pi∈P。
20.按照权利要求19的方法,特征在于,
源和目的地地址是由点(s,d)∈U表示的,其中,U是一个由满足下述关系的整数对(s,d)表示的一个二维地址空间:O<=s<232,0<=d<232,
前缀的集合P={p1,p2,…pn}是地址空间U的一个分区,
每个前缀pi是地址空间U中由[(s0,d0),(s1,d1)]定义的一个逻辑矩形R,其中,对于一些非负的整数is,id,ks和kd,s1-s0=s1-2is*ks=2is并且d1-d0=d1-2id*kd=2id,其中,逻辑矩形R是U的一个子集,满足:如果“s0<=s<s1,d0<=d<d1,则(s,d)∈R,其中(s0,d0),(s1,d1)∈U”,点对[(s0,d0),(s1,d1)]唯一地定义所述矩形R,
对于每个前缀P=[(s0,d0),(s1,d1)]∈P,点(s0,d0)是p的一个表示,P={p1,p2,…pn}={(s1,d1),(s2,d2),…(sn,dn)}是P中的前缀的表示的集合,其中,给定点(sd,dd)∈U,对于其中sd>=s并且dd>=d的每个(s,d)∈U,(s,d)是由(sd,dd)支配的,
给定点对(s1,d1),(s2,d2)∈U,按照范数L∞的这两点之间的距离由下式给出:
limk→∞k√|s1-s2|k+|d1-d2|k=max(|s1-s2|,|d1-d2|)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE98024151 | 1998-07-02 | ||
SE9802415A SE513828C2 (sv) | 1998-07-02 | 1998-07-02 | Brandväggsapparat och metod för att kontrollera nätverksdatapakettrafik mellan interna och externa nätverk |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1317119A true CN1317119A (zh) | 2001-10-10 |
Family
ID=20411974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99810588A Pending CN1317119A (zh) | 1998-07-02 | 1999-07-02 | 控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法 |
Country Status (18)
Country | Link |
---|---|
US (1) | US20020016826A1 (zh) |
EP (1) | EP1127302A2 (zh) |
JP (1) | JP2002520892A (zh) |
KR (1) | KR20010072661A (zh) |
CN (1) | CN1317119A (zh) |
AU (1) | AU4948499A (zh) |
BG (1) | BG105087A (zh) |
CA (1) | CA2336113A1 (zh) |
EA (1) | EA200100099A1 (zh) |
EE (1) | EE200000783A (zh) |
HU (1) | HUP0103814A2 (zh) |
ID (1) | ID29386A (zh) |
IL (1) | IL140481A0 (zh) |
NO (1) | NO20006668L (zh) |
PL (1) | PL345701A1 (zh) |
SE (1) | SE513828C2 (zh) |
SK (1) | SK20232000A3 (zh) |
WO (1) | WO2000002114A2 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1293735C (zh) * | 2002-09-24 | 2007-01-03 | 法国无线电话公司 | 由网关的用户管理网关配置的方法 |
CN100345118C (zh) * | 2003-11-07 | 2007-10-24 | 趋势株式会社 | 数据包内容过滤装置及方法 |
WO2009026788A1 (fr) * | 2007-08-24 | 2009-03-05 | Jianzhong Zhang | Procédé, dispositif et système pour établir un protocole de communication |
CN101040497B (zh) * | 2004-10-12 | 2010-05-12 | 松下电器产业株式会社 | 防火墙系统和防火墙控制方法 |
CN101014048B (zh) * | 2007-02-12 | 2010-05-19 | 杭州华三通信技术有限公司 | 分布式防火墙系统及实现防火墙内容检测的方法 |
CN101690119B (zh) * | 2007-06-25 | 2013-11-27 | 西门子公司 | 用于在分散式数据网络中转发数据的方法 |
CN108781209A (zh) * | 2015-12-22 | 2018-11-09 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN112364360A (zh) * | 2020-11-11 | 2021-02-12 | 南京信息职业技术学院 | 一种财务数据安全管理系统 |
CN113783974A (zh) * | 2021-09-09 | 2021-12-10 | 烽火通信科技股份有限公司 | 一种动态下发map域规则的方法及装置 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001243364A1 (en) * | 2000-03-01 | 2001-09-12 | Sun Microsystems, Inc. | System and method for avoiding re-routing in a computer network during secure remote access |
US20040073617A1 (en) * | 2000-06-19 | 2004-04-15 | Milliken Walter Clark | Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail |
US6950947B1 (en) | 2000-06-20 | 2005-09-27 | Networks Associates Technology, Inc. | System for sharing network state to enhance network throughput |
US7031267B2 (en) | 2000-12-21 | 2006-04-18 | 802 Systems Llc | PLD-based packet filtering methods with PLD configuration data update of filtering rules |
US7013482B1 (en) | 2000-07-07 | 2006-03-14 | 802 Systems Llc | Methods for packet filtering including packet invalidation if packet validity determination not timely made |
GB2371186A (en) * | 2001-01-11 | 2002-07-17 | Marconi Comm Ltd | Checking packets |
JP3963690B2 (ja) * | 2001-03-27 | 2007-08-22 | 富士通株式会社 | パケット中継処理装置 |
US7640434B2 (en) * | 2001-05-31 | 2009-12-29 | Trend Micro, Inc. | Identification of undesirable content in responses sent in reply to a user request for content |
US7117533B1 (en) * | 2001-08-03 | 2006-10-03 | Mcafee, Inc. | System and method for providing dynamic screening of transient messages in a distributed computing environment |
US6993660B1 (en) | 2001-08-03 | 2006-01-31 | Mcafee, Inc. | System and method for performing efficient computer virus scanning of transient messages using checksums in a distributed computing environment |
JP3864743B2 (ja) * | 2001-10-04 | 2007-01-10 | 株式会社日立製作所 | ファイアウォール装置、情報機器および情報機器の通信方法 |
US7298745B2 (en) * | 2001-11-01 | 2007-11-20 | Intel Corporation | Method and apparatus to manage packet fragmentation with address translation |
US7761605B1 (en) | 2001-12-20 | 2010-07-20 | Mcafee, Inc. | Embedded anti-virus scanner for a network adapter |
US8185943B1 (en) | 2001-12-20 | 2012-05-22 | Mcafee, Inc. | Network adapter firewall system and method |
KR20030080412A (ko) * | 2002-04-08 | 2003-10-17 | (주)이카디아 | 외부네트워크 및 내부네트워크로부터의 침입방지방법 |
AU2003227123B2 (en) * | 2002-05-01 | 2007-01-25 | Firebridge Systems Pty Ltd | Firewall with stateful inspection |
AUPS214802A0 (en) | 2002-05-01 | 2002-06-06 | Firebridge Systems Pty Ltd | Firewall with stateful inspection |
US7676579B2 (en) * | 2002-05-13 | 2010-03-09 | Sony Computer Entertainment America Inc. | Peer to peer network communication |
US7243141B2 (en) * | 2002-05-13 | 2007-07-10 | Sony Computer Entertainment America, Inc. | Network configuration evaluation |
US8224985B2 (en) * | 2005-10-04 | 2012-07-17 | Sony Computer Entertainment Inc. | Peer-to-peer communication traversing symmetric network address translators |
US8060626B2 (en) | 2008-09-22 | 2011-11-15 | Sony Computer Entertainment America Llc. | Method for host selection based on discovered NAT type |
US8234358B2 (en) * | 2002-08-30 | 2012-07-31 | Inpro Network Facility, Llc | Communicating with an entity inside a private network using an existing connection to initiate communication |
AU2003233838A1 (en) * | 2003-06-04 | 2005-01-04 | Inion Ltd | Biodegradable implant and method for manufacturing one |
US7669240B2 (en) * | 2004-07-22 | 2010-02-23 | International Business Machines Corporation | Apparatus, method and program to detect and control deleterious code (virus) in computer network |
KR100582555B1 (ko) * | 2004-11-10 | 2006-05-23 | 한국전자통신연구원 | 네트워크 트래픽 이상 상태 검출/표시 장치 및 그 방법 |
US7769858B2 (en) * | 2005-02-23 | 2010-08-03 | International Business Machines Corporation | Method for efficiently hashing packet keys into a firewall connection table |
US20060268852A1 (en) * | 2005-05-12 | 2006-11-30 | David Rosenbluth | Lens-based apparatus and method for filtering network traffic data |
US20070174207A1 (en) * | 2006-01-26 | 2007-07-26 | Ibm Corporation | Method and apparatus for information management and collaborative design |
US8903763B2 (en) | 2006-02-21 | 2014-12-02 | International Business Machines Corporation | Method, system, and program product for transferring document attributes |
US8392981B2 (en) * | 2007-05-09 | 2013-03-05 | Microsoft Corporation | Software firewall control |
US7995478B2 (en) * | 2007-05-30 | 2011-08-09 | Sony Computer Entertainment Inc. | Network communication with path MTU size discovery |
US20080298354A1 (en) * | 2007-05-31 | 2008-12-04 | Sonus Networks, Inc. | Packet Signaling Content Control on a Network |
US7933273B2 (en) | 2007-07-27 | 2011-04-26 | Sony Computer Entertainment Inc. | Cooperative NAT behavior discovery |
CN101861722A (zh) * | 2007-11-16 | 2010-10-13 | 法国电信公司 | 用于对分组进行归类的方法和装置 |
US8171123B2 (en) | 2007-12-04 | 2012-05-01 | Sony Computer Entertainment Inc. | Network bandwidth detection and distribution |
US7856506B2 (en) | 2008-03-05 | 2010-12-21 | Sony Computer Entertainment Inc. | Traversal of symmetric network address translator for multiple simultaneous connections |
CN101827070A (zh) * | 2009-03-06 | 2010-09-08 | 英华达股份有限公司 | 可携式通讯装置 |
US9407602B2 (en) * | 2013-11-07 | 2016-08-02 | Attivo Networks, Inc. | Methods and apparatus for redirecting attacks on a network |
US11507663B2 (en) | 2014-08-11 | 2022-11-22 | Sentinel Labs Israel Ltd. | Method of remediating operations performed by a program and system thereof |
US9710648B2 (en) | 2014-08-11 | 2017-07-18 | Sentinel Labs Israel Ltd. | Method of malware detection and system thereof |
US20160094659A1 (en) * | 2014-09-25 | 2016-03-31 | Ricoh Company, Ltd. | Information processing system and information processing method |
US9692727B2 (en) | 2014-12-02 | 2017-06-27 | Nicira, Inc. | Context-aware distributed firewall |
US11115385B1 (en) * | 2016-07-27 | 2021-09-07 | Cisco Technology, Inc. | Selective offloading of packet flows with flow state management |
US10193862B2 (en) | 2016-11-29 | 2019-01-29 | Vmware, Inc. | Security policy analysis based on detecting new network port connections |
US11616812B2 (en) | 2016-12-19 | 2023-03-28 | Attivo Networks Inc. | Deceiving attackers accessing active directory data |
US11695800B2 (en) | 2016-12-19 | 2023-07-04 | SentinelOne, Inc. | Deceiving attackers accessing network data |
US10462171B2 (en) | 2017-08-08 | 2019-10-29 | Sentinel Labs Israel Ltd. | Methods, systems, and devices for dynamically modeling and grouping endpoints for edge networking |
US11470115B2 (en) | 2018-02-09 | 2022-10-11 | Attivo Networks, Inc. | Implementing decoys in a network environment |
JP7278423B2 (ja) | 2019-05-20 | 2023-05-19 | センチネル ラブス イスラエル リミテッド | 実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法 |
US11190489B2 (en) | 2019-06-04 | 2021-11-30 | OPSWAT, Inc. | Methods and systems for establishing a connection between a first device and a second device across a software-defined perimeter |
US11579857B2 (en) | 2020-12-16 | 2023-02-14 | Sentinel Labs Israel Ltd. | Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach |
US11899782B1 (en) | 2021-07-13 | 2024-02-13 | SentinelOne, Inc. | Preserving DLL hooks |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0594196B1 (en) * | 1992-10-22 | 1999-03-31 | Cabletron Systems, Inc. | Address lookup in packet data communications link, using hashing and content-addressable memory |
US5606668A (en) * | 1993-12-15 | 1997-02-25 | Checkpoint Software Technologies Ltd. | System for securing inbound and outbound data packet flow in a computer network |
WO1997000471A2 (en) * | 1993-12-15 | 1997-01-03 | Check Point Software Technologies Ltd. | A system for securing the flow of and selectively modifying packets in a computer network |
US5757924A (en) * | 1995-09-18 | 1998-05-26 | Digital Secured Networks Techolognies, Inc. | Network security device which performs MAC address translation without affecting the IP address |
US5918018A (en) * | 1996-02-09 | 1999-06-29 | Secure Computing Corporation | System and method for achieving network separation |
US5889958A (en) * | 1996-12-20 | 1999-03-30 | Livingston Enterprises, Inc. | Network access control system and process |
-
1998
- 1998-07-02 SE SE9802415A patent/SE513828C2/sv not_active IP Right Cessation
-
1999
- 1999-07-02 KR KR1020007015107A patent/KR20010072661A/ko not_active Application Discontinuation
- 1999-07-02 CN CN99810588A patent/CN1317119A/zh active Pending
- 1999-07-02 PL PL99345701A patent/PL345701A1/xx unknown
- 1999-07-02 ID IDW20002747A patent/ID29386A/id unknown
- 1999-07-02 CA CA002336113A patent/CA2336113A1/en not_active Abandoned
- 1999-07-02 EE EEP200000783A patent/EE200000783A/xx unknown
- 1999-07-02 IL IL14048199A patent/IL140481A0/xx unknown
- 1999-07-02 HU HU0103814A patent/HUP0103814A2/hu unknown
- 1999-07-02 WO PCT/SE1999/001202 patent/WO2000002114A2/en not_active Application Discontinuation
- 1999-07-02 JP JP2000558448A patent/JP2002520892A/ja active Pending
- 1999-07-02 EA EA200100099A patent/EA200100099A1/ru unknown
- 1999-07-02 EP EP99933426A patent/EP1127302A2/en not_active Withdrawn
- 1999-07-02 SK SK2023-2000A patent/SK20232000A3/sk unknown
- 1999-07-02 AU AU49484/99A patent/AU4948499A/en not_active Abandoned
-
2000
- 2000-12-22 BG BG105087A patent/BG105087A/bg unknown
- 2000-12-27 NO NO20006668A patent/NO20006668L/no not_active Application Discontinuation
-
2001
- 2001-07-16 US US09/904,837 patent/US20020016826A1/en not_active Abandoned
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1293735C (zh) * | 2002-09-24 | 2007-01-03 | 法国无线电话公司 | 由网关的用户管理网关配置的方法 |
CN100345118C (zh) * | 2003-11-07 | 2007-10-24 | 趋势株式会社 | 数据包内容过滤装置及方法 |
CN101040497B (zh) * | 2004-10-12 | 2010-05-12 | 松下电器产业株式会社 | 防火墙系统和防火墙控制方法 |
CN101014048B (zh) * | 2007-02-12 | 2010-05-19 | 杭州华三通信技术有限公司 | 分布式防火墙系统及实现防火墙内容检测的方法 |
CN101690119B (zh) * | 2007-06-25 | 2013-11-27 | 西门子公司 | 用于在分散式数据网络中转发数据的方法 |
WO2009026788A1 (fr) * | 2007-08-24 | 2009-03-05 | Jianzhong Zhang | Procédé, dispositif et système pour établir un protocole de communication |
CN108781209A (zh) * | 2015-12-22 | 2018-11-09 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN108781209B (zh) * | 2015-12-22 | 2022-03-01 | 赫思曼自动化控制有限公司 | 具有部分单向的数据传输的网络 |
CN112364360A (zh) * | 2020-11-11 | 2021-02-12 | 南京信息职业技术学院 | 一种财务数据安全管理系统 |
CN113783974A (zh) * | 2021-09-09 | 2021-12-10 | 烽火通信科技股份有限公司 | 一种动态下发map域规则的方法及装置 |
CN113783974B (zh) * | 2021-09-09 | 2023-06-13 | 烽火通信科技股份有限公司 | 一种动态下发map域规则的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
HUP0103814A2 (hu) | 2002-03-28 |
NO20006668D0 (no) | 2000-12-27 |
SE9802415D0 (sv) | 1998-07-02 |
JP2002520892A (ja) | 2002-07-09 |
WO2000002114A3 (en) | 2000-02-17 |
US20020016826A1 (en) | 2002-02-07 |
SE9802415L (sv) | 2000-01-03 |
PL345701A1 (en) | 2002-01-02 |
BG105087A (bg) | 2001-08-31 |
SK20232000A3 (sk) | 2001-09-11 |
NO20006668L (no) | 2001-03-01 |
AU4948499A (en) | 2000-01-24 |
ID29386A (id) | 2001-08-30 |
CA2336113A1 (en) | 2000-01-13 |
EA200100099A1 (ru) | 2001-06-25 |
IL140481A0 (en) | 2002-02-10 |
KR20010072661A (ko) | 2001-07-31 |
SE513828C2 (sv) | 2000-11-13 |
EP1127302A2 (en) | 2001-08-29 |
WO2000002114A2 (en) | 2000-01-13 |
EE200000783A (et) | 2001-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1317119A (zh) | 控制内部与外部网络之间的网络数据包通讯的防火墙设备和方法 | |
CN100342698C (zh) | 对转发信息进行动态管理的分布式路由器及其方法 | |
CN1610331A (zh) | 进行as间的路由控制的通信装置及其路由控制方法 | |
CN1118990C (zh) | 报文存储与转发系统 | |
CN1404591A (zh) | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 | |
US6745192B1 (en) | System and method for providing a multi-tiered hierarchical transient message store accessed using multiply hashed unique filenames | |
CN1754353A (zh) | 用于ip多播的协议无关实现的方法和设备 | |
CN100352240C (zh) | 控制二层以太环网设备mac地址学习数目的方法 | |
CN1929472A (zh) | 数据网络中管理数据传输的方法、系统、信号及介质 | |
CN1299541A (zh) | 小无线数据网络中的业务传送路由选择 | |
CN1783880A (zh) | 软路由器动态绑定协议 | |
CN1717911A (zh) | 用于在通信网络上通信的方法和设备 | |
CN1992676A (zh) | 在通信网络中多个业务路径之间的转发状态共享 | |
CN1431805A (zh) | 数据包交换系统、方法,路由设备,数据包结构和产生方法 | |
CN1781098A (zh) | 关联存储器中的因特网协议安全性匹配值 | |
CN1949740A (zh) | 针对bgp负载分担中路由下一跳变化的处理方法 | |
CN1929444A (zh) | 运营商边界节点、虚拟专用局域网服务通信方法及系统 | |
CN101052055A (zh) | 一种向量数据通信网上建立向量连接的方法 | |
CN101052004A (zh) | Ip网络中基于虚拟分发网的多播传送方法 | |
CN1393091A (zh) | HAVi及其它网际互联设备中的资源请求转发 | |
CN1710910A (zh) | 基于分层结构的网络系统及其节点的定位方法 | |
CN1946060A (zh) | 实现重定向报文正确转发的方法及第一部件、第二部件 | |
CN1716944A (zh) | 网络路径最大传输长度发现方法 | |
CN1893392A (zh) | 防止用户获得运营商网络信息的方法和装置 | |
CN1719769A (zh) | 在网络设备中对接收数据包进行分类的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |