throbber
(12) United States Patent
`Taylor et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,728,885 B1
`Apr. 27, 2004
`
`US006728885B1
`
`(54) SYSTEM AND METHOD FOR NETWORK
`ACCESS CONTROL USING ADAPTIVE
`PROXIES
`
`(75)
`
`Inventors: Kevin R. Thylor, Ellicott City, MD
`(US); Ganesh Murugesan, Reston, VA
`(US); Homayoon Tttjalll, Ellicott City,
`MD (US)
`
`Networks. T. Ramteke, Prentice Hall, 1994, Chapter 19, pp.
`430-436.
`
`Computer Network, A. Tanenbaum, Prentice Hall, 1981, pp.
`15-21.
`
`‘ cited by examiner
`
`(73) Assignee: Networks Associates Technology, Inc.,
`Santa Clara, CA (US)
`
`Primary Examiner—Gilberto Barron
`Assistant Examiner—-A. Nobahar
`
`( ‘ ) Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 1S4(b) by 0 days.
`
`(21) Appl. No.: 09/414,711
`
`(22) Filed:
`
`Oct.8, 1999
`
`(60)
`
`Related US. Application Data
`Provisional application No. 60/103,837, filed on Oct. 9,
`1998.
`
`(51) 1m.c1.’ ........................... 11041.9/32;co61= 11/30;
`G06F 12/14
`
`...................... .. 713/201; 709/238; 709/249
`(52) US. Cl.
`(58) Field of Search ............................... .. 713/201, 200;
`709/238, 249
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`2/1997 Shwed .................. 395/2(IJ.l1
`5,6(b,668 A
`3/1999 Baehr etal.
`.............. .. 713/201
`5,884,025 A '
`4/1999 Wesinger etal.
`......... .. 713/201
`5,898,830 A ‘
`5,968,176 A ‘ 10/1999 Nessett etal.
`............ .. 713/201
`6,128,298 A ‘ 10/ZJ00 Wootton etal.
`.......... .. 370/392
`
`OTHER PUBLICATIONS
`
`Firewall Software for NT and Unix, D. Seachrist et al., Byte,
`Jun. 1997, pp. 130-134.
`Applied Cryptography, Second Edition, Protocols, Algo-
`rithnn, and Source Code in C, B. Schneier, John Wiley &
`Sons, 1996, Chapters 8 and 24. pp. 185-187 and 574-579.
`
`(74) Attorney, Agent, or Fir-m—Silicon Valley lP Group,
`PC; Kevin J. Zilka; Christopher J. Hamaty
`
`(57)
`
`ABSTRACT
`
`A method, system and computer program for providing
`multilevel security to a computer network. The method
`comprkes the step of receiving a first communication packet
`on at
`least one network interface port from an outside
`network. The method further includes the steps of filtering
`the first packet in one of at least two levels of security
`comprising a first
`level of security which examines the
`content information of the packet and a second level of
`security which examines the first packet excluding the
`content infonnation of the packet. The system includes a
`first packet filter configured to filter its input packets by
`examining content information of its packets and a second
`packet filter configured to filter its input packets by exam-
`ining the header information without examining the content
`information of its packets. The system further includes a
`third filter which is configured to forward a number of
`packets to one of the first and second filters, thereby pro-
`viding security to the computer network. The computer
`program includes a first module located in an application
`layer, a second module located in a network layer, and a third
`module located in a kernel space and configured to examine
`a number of packets received by the computer network from
`at least one outside network and to forward the number of
`
`packets to one of the first and second modules after exam-
`ining the number of packets.
`
`29 Claims, 7 Drawing Sheets
`
`
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 1
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 1
`
`

`
`U.S. Patent
`
`Apr. 27,2004
`
`Sheet 1 of 7
`
`US 6,728,885 B1
`
`125
`
`105
`
`125
`
`'/
`
`107
`
`109
`
`FIG. 1
`(PRIOR ART)
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 2
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 2
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 2 of 7
`
`US 6,728,885 B1
`
`User Defined
`
`Tramp —«
`Packet Filte:
`
`FIG. 2
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 3
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 3
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 3 of 7
`
`US 6,728,885 B1
`
`
`Is the packet
`a connection
`
`control packet?
`
`
`
`253
`
`
`
`a connection
`
` Is the packet
`
`
`
`establishing
`packet?
`
`25 5
`
`
`
`Disconnect the
`
`connection or put
`the connection
`on hold
`
`FIG 3
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 4
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 4
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 4 of 7
`
`US 6,728,885 B1
`
`
`
`Is the port
`on which the
`
`packet was
`received
`
`registered?
`
`303
`
`
`
`Yes
`
`
`
`No
`
`(1) Send relevant
`information to the
`
`registered proxy
`
`(2) wait instructions
`
`from the proxy
`
`N0
`
`Apply Transparency
`
`Yes
`
`Apply the matched
`
`mle on the packet
`
`323
`
`FIG. 4
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 5
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 5
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 5 of 7
`
`US 6,728,885 B1
`
`Does the
`Does the
`
`packet nutch
`packet much
`with any user
`with any user
`specified mles?
`specified rules?
`
`
`
`
`
`331
`
`343
`
`FIG. 5
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 6
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 6
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 6 of 7
`
`US 6,728,885 B1
`
`Is the
`
`transparency
`on?
`
`
`packet to its
`packet to proxy
`
`destination
`
`Forward the
`
`
`
`
`Forward the
`
`405
`
`403
`
`FIG. 6
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 7
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 7
`
`

`
`U.S. Patent
`
`Apr. 27, 2004
`
`Sheet 7 of 7
`
`US 6,728,885 B1
`
`
`
`E
`
`8
`
`E
`
`%
`
`E’
`g
`
`455
`
`III
`
`N
`
`«:9
`u.
`
`III
`
`461
`
`201
`
`451
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 8
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 8
`
`

`
`US 6,728,885 B1
`
`1
`SYSTEM AND METHOD FOR NETWORK
`ACCESS CONTROL USING ADAPTIVE
`PROXIES
`
`CROSS REFERENCE TO RELATED
`APPLICATIONS
`
`'l11is application claims the benefit of U.S. Provisional
`Application No. 60/103,837, filed Oct. 9. 1998.
`
`FIELD OF INVEN'I'ION
`
`This invention relates to providing security in communi-
`cation networks. In particular, the invention relates to fire-
`wall technology in packet switched networks for adaptively
`providing a plurality of security levels.
`BACKGROUND OF THE INVEN'I'ION
`
`Referring to FIG. 1, a typical firewall 101 is placed
`between a Local Area Network (LAN) 103 and outside
`networks 111, 115. LAN 103 may include a plurality of
`internal hosts 105, 107, 109. Outside networks 111 can be
`networked through the Internet 117. Outside network 115
`may also include its own firewall 117. lntemal hosts 105,
`107, 109 and remote hosts 119, 121 are computers, e.g.,
`personal computers (PC) or computer workstations. Firewall
`101 includes a combination of computer hardware and
`software components configured to protect LAN 103, i.e.,
`preventing unwanted intrusions from outside networks 111,
`115.
`
`In order to exchange information, e.g., sending a message
`from remote host 119 to internal host 105, a connection 125
`is established by sending a plurality of packets therebe-
`tween. A packet is a basic mesage unit routed between a
`source computer and a destination computer, e.g., remote
`host 119 and internal host 105, respectively, in a packet-
`switched network depicted in FIG. 1. For example, when a
`file, e.g., an e-mail message, HTML file, or other similar
`message, is sent from a source computer to a destination
`computer, the file is broken into a plurality of packets. (Here,
`HTML, Hypertext Markup Language, is a set of “markup”
`symbols or codes, which instructs a Web browser how to
`display a Web page’s words and images.)
`More specifically, a Transport Control Protocol (TCP)
`module of a TCP/IP layer in a source computer divides the
`file into packets of an efiicient size for transmitting over the
`network. Each packet includes header information, e.g., a
`destination address and a source addres, and content
`information, i.e., the broken up message file. Further, the
`plurality of packets from the file includes a plurality of
`connection control packets and data tramfer packets. The
`connection control packets include at least one connection
`establishing packet, e.g., a SYN packet, and at least one
`connection disconnection packet, e.g., RST, FIN, FIN-ACK
`packets. The data transfer packets include the pieces of the
`broken up file. Individual packets for a given file may travel
`different routes through the packet switching network. When
`the packets from one file have all arrived at their destination
`computer, they are reassembled into the original file by a
`TCP module in the destination computer.
`Here, the TCP module is a communication protocol used
`along with the Internet Protocol (IP) to send data in the form
`of packets between a source and destination computers.
`While the IP module performs the actual delivery of the data,
`the TCP module keeps track of the individual packets that a
`file is divided into for efiicient routing through the Internet.
`OSI (Open Systems Interconnection) is briefly described
`here to provide the context in which the present invention is
`
`2
`discumed later. OS] is a reference model for the layer of
`common functions in a communicatiom system. Although
`many existing hardware and software products have been
`developed on a slightly diflerent model, the OSI model is
`often med as a guideline when new products are designed
`and serves as a common reference for understanding any
`particular design or comparing it with others.
`OS] includes seven layers:
`The application layer (layer 7) is a layer at which a user
`interacts with a computer to view messages or send
`data requests or responses.
`The presentation layer (layer 6) is a layer, usually pan of
`an operating system, that converts incoming and out-
`going data from one presentation format to another
`(e.g., converting a text stream into a popup window
`with a newly arrived text string).
`The sesion layer (layer 5) manages the establishment of
`a continuing series of requests and responses between
`the applications at each end of a communication con-
`nection.
`
`layer (layer 4) manages the end-to-end
`The transport
`control (e.g., detennining whether all packets have
`arrived) and error-checking.
`The network layer (layer 3) handles the routing of the data
`(sending it in the right direction to the right destination
`on outgoing transmissions and receiving incoming
`transmissions at the packet level).
`The link (or data-link) layer (layer 2) provides error
`control and synchronization for the physical level and
`does bit-stufiing for strings of 1’s in excess of 5.
`The physical
`layer (layer 1) conveys the bit stream
`through the network at the electrical and mechanical
`level.
`
`Referring back to FIG. 1, the basic task of firewall 101 is
`to separate internal network 103 from outside networks 117,
`115 and enforce security policies with a set of rules. The
`most common firewall features include: securing internal
`network 103 access with a perimeter defense, controlling all
`connections into and out of internal network 103, filtering
`packets according to previously defined rules, “authenticat-
`ing” or making sure users and applications are permitted to
`access resources, logging of activities, and actively notifying
`the appropriate people when suspicious events occur.
`Conventional firewalls include only one of a packet filter,
`an application proxy and a stateful inspection.
`A packet filter examines each incoming packet and
`decides what actions to take by checking against a table of
`access control rules. The packet
`filter,
`in its simpler
`embodiments, examines the header information of each
`incoming packet and makes pass/fail decisions based on
`their source and destination addresses. A weaknes of such
`
`a firewall is that the content information of the packets is
`unknown to the firewall. More specifically, because packet
`filters perform their checking at the network access layer,
`there is no real knowledge of application level vulnerabili-
`ties. As a result, direct connections are allowed between a
`source and destination computers through firewall 101,
`exposing internal hosts 105, 107, 109 to direct attacks.
`An application proxy does not allow direct contact
`between a ‘trusted’ and ‘untnrsted’ networks. Each of the
`
`20
`
`35
`
`45
`
`50
`
`65
`
`packets pmsing through th's type of firewall is examined at
`the application layer—meaning the application proxies
`understand the destination and contents of packets. Such a
`firewall, for example, distinguishes between “FTP Put" and
`“Get” commands. A typical application proxy includes a
`built-in proxy function also known as a transparency func-
`
`|PR2015-O1856 CAP CO, Ltd. Exhibit 2005 Page 9
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 9
`
`

`
`US 6,728,885 B1
`
`3
`tion. The transparency function replaces the IP addres of a
`host on the internal protected network with its own IP
`address for all
`traflic passing through. The transparency
`function provides added security, because it hides the
`addresses of internal hosts. This makes it more dilficult for
`
`hackers on the outside to target specific devices inside such
`a firewall. For this higher security, however, the application
`proxy requires large amounts of processing power and a
`corresponding loss of performance.
`Finally, a stateful packet filter examines packets without
`examining the packets as well as that of an application
`proxy. After a packet filter firewall or stateful inspection
`firewall has decided to allow a connection to be made, it
`allows data to travel directly between the networks without
`further inspection. Once a session is opened, the nature of
`the session can be changed without being detected. This
`allows for more speed, but also creates potential security
`risks as well. Again, making internal hosts 105, 107, 109
`vulnerable to attacks from outside.
`
`Accordingly, there exists a need for a firewall method
`which makes it possible to dynamically select
`the best
`procedures from existing firewall methods to achieve the
`required level of security while meeting performance con-
`straints.
`Further, the definitions of network communication terms
`and phases can be found in Andrew S. Tannenbaum, “Com-
`puter Networks ” 2"” ed., (1989), the contents of which are
`herein incorporated by reference. Information on network
`programming can also be found in W. Richard Stevers,
`“Unix Network Programming” (1990),
`the contents of
`which are herein incorporated by reference.
`SUMMARY OF THE INVENTION
`
`The firewall of the present invention combines the advan-
`tages provided in the conventional firewall
`technologies
`described above while eliminating short comings thereof. In
`other words, the firewall of the present invention is just as
`secure as a proxy firewall, but
`it
`is more flexible and
`eflicient.
`
`35
`
`More specifically, the firewall of the present invention is
`provided between an internal computer network to be pro-
`tected by the firewall and at least one outside network. The
`firewall includes a dynamic packet filter which communi-
`cates with a proxy. The proxy registers with the dynamic
`packet filter for notifications of request to establish new data
`communication connections through physical connections
`between the internal and outside computer networks. When
`a connection establishing request is received, in the form of
`a SYN packet, the dynamic packet filter notifies the proxy
`and provides attribute information thereto. The attribute
`information includes the source and destination addresses
`
`and the physical connection on which the packet was
`received.
`
`In order to detennine whether to allow the requested data
`communication connection, the proxy compares the attribute
`information with rules in a configuration information file.
`The niles in the configuration information file are entered by
`a user to set forth whether to allow data communication
`
`connections for certain physical connections. If the rule is to
`allow the data communication connection and forward the
`packets at the packet level, the dynamic packet filter creates
`a connection rule so as to apply the connection rule to
`packets having the same attribute information. Subsequent
`packets received with the same attrflaute information are
`then automatically forwarded without consulting the proxy.
`Once the connection terminates,
`the connection rule is
`removed and the proxy is notified. However, if the decision
`
`45
`
`50
`
`60
`
`65
`
`4
`is to absorb, the dynamic packet filter sends the packets up
`a TCP/IP stack in the firewall, where they will be accepted
`by the proxy.
`the proxy acts as the server to the
`In other words,
`incoming connection and initiates a new connection, acting
`as a client,
`to the ultimate destination. In between, the
`necessary application-level filtering is performed.
`An added benefit of the present invention, beyond the
`performance improvement, is the flexibility it gives its users.
`Within the adaptive proxy model, a firewall can be config-
`ured to follow more or less stringent security rules, fine-
`tuning performance even more.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`20
`
`FIG. 1 is a schematic illustration of a conventional
`communication network;
`FIG. 2 is a schematic illustration of internal modules of
`the firewall of the present invention;
`FIGS. 3-6 are flow charts a plurality of functions per-
`formed by the firewall of the present invention; and
`FIG. 7 is a schematic illustration of the traparency
`function of the present invention.
`
`DETAILED DESCRIPITON
`
`Referring to FIG. 2, there is illustrated an overall block
`diagram of a firewall 201 of the present
`invention that
`includes a Network Interface Card (NIC) 203 coupled to at
`least one outside network. NIC 203 is also coupled to a
`Network Addres Translation module (NAT) 205 which in
`turn is coupled to a Dynamic Packet Filter module (DPF)
`207. DPF 207 is coupled to a proxy 211, a User Defined
`Static Packet Filter module (UD-SPF) 209, Transparency
`Packet Filter (TPF) 215, and a local Transmission Control
`Protocol/lntemet Protocol stack (TC‘P/IP) 213. TCP/IP 213
`in turn is coupled to an Out-Going Dynamic Packet Filter
`(OG-DPF) 217.
`It should also be noted that the term “coupled" should be
`interpreted to mean one of many connection methods. For
`instance, NIC 215 may be coupled to the at least one outside
`network via wire or wireless communication connections,
`whereas NIC 203 may be coupled to NAT via physical wires.
`However, when two coupled modules are implemented in
`computer programs, the term coupled means data transfer
`between the two computer program modules during execu-
`tion thereof. In other words, the term “coupled” means a
`connection established through at
`least one of wireless
`communication links, wire connections and computer pro-
`gram data trafers.
`NAT 205, DPF 207, UD-SPF, 209, TPF 215, local TCP/IP
`213 and OG-DPF 217 are located in the kernel space of
`firewall 201. Here, the term kemel designates the operating
`system in a computer that contains the system-level com-
`mands hidden fiom the user. For example, the kernel may
`include device drivers, memory management routines,
`scheduling prograrm, and other system calls. The kernel
`always runs while the system is operating. Proxy 211 is
`located in the user space,
`i.e., the application layer, of
`firewall 201. The term proxy designates either all of the
`filtering and decision making processes or individual filter-
`ing processes occurring at
`the user space. Proxy 211,
`therefore, can be referred as a one process or a plurality of
`processes depending upon the context in which the term
`appears.
`
`Preferably, the preceding components in the kernel space
`and user space are implemented in computer programs
`
`|PR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 10
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 10
`
`

`
`US 6,728,885 B1
`
`5
`written in C or C++. Alternatively, the computer programs
`can be written in other computer languages such as Pascal.
`The computer programs are also implemented to run on a
`variety of computer operating systems such as UNIX, Win-
`dows NT or LINUX. It should be noted that the computer
`language and the corresponding operating system are not
`essential part of this invention;
`therefore,
`the invention
`dkclosed herein can be implemented in any computer lan-
`guage and operating system.
`The computer pmgram are stored in a computer readable
`storage medium, e.g., hard disks or floppy diskettes. In
`operation, the computer programs are read to a random
`access memory to be executed by a processor. The computer
`readable storage medium. the random access memory and
`the process are preferably included in the computer of
`firewall 201. Alternatively, however, the computer readable
`storage medium can be provided by another computer or
`floppy diskettes. Hence,
`the computer programs can be
`downloaded from a remote computer coupled to firewall
`201.
`
`Referring back to FIG. 2, preferably, firewall 201 can be
`part of a computer located between LAN and outside
`networks. NIC 203, also known as an adapter interface, is a
`hardware attachment, usually a computer expandable board,
`that connects firewall 201 to outside networks. Each physi-
`cal connection established through NIC 203 is asigned to a
`port number so as to identify the physical connection.
`The above described elements are further explained by
`way of steps that take place during operation therein. For
`instance, a plurality of packets from the outside networks
`arrives at NIC 21B. Each received packet
`is examined
`separately by firewall 201. More specifically, when a packet
`is received by NIC 203 from any one of outside networks
`111, 115, the packet is asociated with a corresponding port
`number. The packet is, then, forwarded to NAT 205 which
`translates the destination addres of the received packet into
`a corresponding address of internal hosts. The packet is then
`sent to DPF 207 for further examination and processing.
`Referring to FIG. 3, in step 253, DPF 207 determined
`whether the received packet is a connection control packet
`which requests to establish a data communication
`connection, disconnect an established connection, or put an
`established connection into a hold state. It should be noted
`that a physical connection between a source and destination
`connection does not establish a data communication con-
`
`nection. The connection is completely established only
`when the physical and data communication connections are
`achieved. In order to avoid any confusion, the physical
`communication connection is referred as a physical connec-
`tion and a data communication connection is referred as a
`
`connection hereinafter. If the paclaet is a connection control
`packet, DPF 207 perforrm step 255; and if the packet is not
`a connection control packet, i.e., a data packet, then DPF
`207 performs step 331.
`In step 255, DPF 207 determines whether the received
`packet
`is a connection establishing packet,
`i.e., a SYN
`packet. If the packet is a connection establishing packet,
`DPF 207 performs step 303; and if the packet
`is not a
`connection establishing packet, DPF 207 performs step 257.
`In step 257, DPF 207 performs the following: if the packet
`is a connection disconnecting packet, i.e., a FIN packet, the
`corresponding pre-exbting connection is disconnected; and
`if the packet is a hold packet, i.e., an RS1‘ packet, then the
`corresponding pre-existing connection is put on hold.
`Referring to FIG. 4, in step 303, to be performed when the
`packet is a connection establishing packet, DPF 207 further
`
`6
`determines whether the port, i.e., the port, on which the
`packet was received is a registered port. If the port
`is
`regbtered, DPF 207 performs step 311; and if the packet is
`not registered, DPF 207 performs step 321. The system
`administrator specifies which of the ports are to be registered
`in a configuration information file. For example, when
`physical connections are made between a remote host com-
`puter belonging to an outside network and a port on NIC
`203, the system administrator makes security assessment of
`the remote host. Subsequently, the system administrator sets
`up the configuration information file setting forth whether to
`regkter that port.
`In step 311, to be performed when the port is registered,
`DPF 207 transfers attribute information of the packet to
`proxy 211. Preferably, the attribute information includes the
`source and destination addreses of the packet and the port
`on which the packet was received.
`It should be noted,
`however, other information contained the connection estab-
`lishing packet can be sent
`to proxy as well. Once the
`attribute information has been sent to proxy, DPF 207 awaits
`instructions therefrom.
`
`Proxy 211, upon receiving the attribute information from
`DPF 207, determines whether to allow the connection. If the
`connection is to be allowed, proxy 211 further determines
`which filter dynamic filter rule to apply.
`One such dynamic filter mle is a filter all rule. This rule
`is utilized when only packet filtering is required for all
`packets in a particular connection. For example, this rule
`could be defined to apply packet filters to all “telnet”
`packets.
`Another dynamic filter rule is a selective filtering rule.
`Thb rule requires proxy 211 to handle connection control
`packets and packet filters to handle the data packets. In other
`words, the packet filtering will be enabled only when proxy
`211 has performed it’s security checks for the connections,
`i.e., checking the relevant information on the SYN packet
`sent by DPF 207. For instance,
`this rule '5 useful for
`protocols such as File Transfer Protocol (FTP), which sends
`data packets on a dilferent connection after establishing the
`connection. Other filtering rules are also possible such as not
`applying any filtering or applying a proxy filter at
`the
`application layer to all packets received on a specific con-
`nection.
`
`The configuration file discussed above, which stored the
`information on which ports are registered, further includes
`various filter rules to be applied for specific connections. For
`example, packets received from a particular port can be
`subjected to the filter all rule filter, while packets received
`fr'om another port can be subjected to the selective filtering
`rule. The configuration file is preferably stored in the com-
`puter where firewall 201 is located. It should be noted,
`however, that the configuration file can be stored in any of
`internal hosts.
`It should also be noted that
`the system
`administrator creates the configuration infonnation file dis-
`cussed above and specifies the TPF mles by utilizing a
`graphical user interface configured receive appropriate
`information from the system administrator.
`Once proxy 211 determines whether to allow the connec-
`tion and which one of the rules to apply to the connection,
`that information is trarsferred to DPF 207.
`
`20
`
`35
`
`45
`
`50
`
`In step 315, DPF 207 discarrk the packet if proxy 211
`determined not to allow the connection. In step 317, DPF
`207 creates a new connection and applies the corresponding
`rule. The rule will be applied to any subsequent packets from
`that connection until the connection is disconnected.
`
`65
`
`A new connection is created by modifying a connection
`list. The connection list, as the name implies, includes a list
`
`|PR20’l5-01856 CAP CO, Ltd. Exhibit 2005 Page 11
`
`IPR2015-01856 CAP CO, Ltd. Exhibit 2005 Page 11
`
`

`
`US 6,728,885 B1
`
`7
`of currently active or soon to be active connections and
`relevant information thereof such as the source and desti-
`nation addresses and the port on which the connection is or
`to be established. Each entry in the connection list represents
`TCP or UDP (User Datagram Protocol) connection. For
`instance. if the connection is allowed by proxy 211, the
`corresponding connection entry in the connection list is
`modified to indicate that the connection has been allowed
`and established.
`
`In yet another aspect of the invention, since there are no
`SYN packets for UDP conneetiorn, if a UDP packet has
`previously established a connection and the connection
`exists in the connection list then that connection is used for
`new UDP packets received on the same connection. Other
`UDP packet processing steps are similar to the TCP packet
`processing steps described above.
`Preferably, the communication between proxy 211 and
`DPF 207 describe above is achieved by using a socket. The
`following is a description of a specific implementation of the
`sockets. For instance, a new network protocol family and
`new functions can be added to a conventional socket APl
`
`(Application Program Interface). Sockets provide a conve-
`nient and well known programming model to one of ordi-
`nary skill in the art.
`Preferably, the following data structures are defined in a
`socket definition header file:
`
`20
`
`struct aockaddr_gt {
`u_short
`struct in_addr
`u_short
`u_clIar
`struct in_addr
`u_short
`u_clIar
`
`ain_farnily:
`sirLaddr;
`sin_port;
`proto;
`sout_addr.
`aout_port;
`airI._Zero[1]:
`
`the connect function, sin_port specifies the source port of a
`connection to be filtered. For the bind function, it specifies
`the destination TCP/UDP port number of SYN/UDP packets
`for which the proxy wishes to register via a listen function.
`For the accept function, it contains the source port number
`of the SYN/UDP packet received by the firewall. The listen
`function is discussed below.
`proto
`This variable field specifies the type of lntemet Transport
`Protocol that must be Dynamic Packet Filtered. The only
`valid values for this variable are lPPROT‘O_T‘CP for TCP
`and lPPROT0_UDP for UDP.
`sout_addr
`This variable field specifies a destination IP address. For
`the connect function, sout_addr specifies the destination IP
`address of a connection to be packet filtered. For the accept
`function, it contains the destination IP address of the SYN/
`UDP packet received by the firewall.
`sout_port
`This variable field specifies the destination port number.
`For the connect function, sout_pon specifies the destination
`port of a connection to be packet filtered. For the accept
`function,
`it contains the destination port number of the
`SYN/UDP packet received by the firewall.
`SlIl_7£|'0
`This variable field specifies unused byte of data. This
`enables the use of padding to match the size of struct
`sockaddr.
`
`Preferably, data_gt data structure defined below '5 used
`by the getsockopt function to retrieve DPF connection
`statistics.
`
`35
`
`struct data_gt {
`int
`arc_aent;
`int
`dst_sent:
`
`};
`
`The above definition of struct is a structure in computer
`program language. Astructure is a collection of one or more
`variables, possibly of ditferent types, grouped together under
`a single name for convenient handling. It should be noted
`that structures are called “records” in some other computer
`languages, notably Pascal. The structures permit a group of
`related variables to be treated as a unit instead of as separate
`entities. This arrangement helps to organize complicated
`data, partiailarly in large computer programs.
`The variable definitions such as u_short and u_char
`specify the length of corresponding variables to be unsigned
`short integer and umigned character, respectively. These
`terms are well known to one of ordinary skill in the art of
`computer programming. The following is a brief description
`of the various fields in the struct sockaddr_gt:
`sin_family
`Thu variable field specifies the protocol family to which
`the struct sockaddr_gt belongs.
`sin_addr
`This variable field specifies a source [P address. For a
`connect function, sin_addr specifies the source IP address of
`a connection to be filtered. For a bind function, it specifies
`the IP address of an interface port to which the socket should
`be bound by the bind function. For an accept function, it
`specifies the source IP addres of the SYN/UDP packet
`received by firewall 201. The connect, bind, and accept
`functions are discussed below.
`
`sin_port
`This variable field specifies a source port number, i.e., the
`interface port on which the packets are to be received. For
`
`45
`
`50
`
`65
`
`src_sent
`This variable returns the number of bytes transferred by
`the source end of the connection.
`dst_sent
`This variable returns the number of bytes transferred by
`the destination end of the connection.
`In order to fully discuss the new socket structure, the
`semantics of the various functions mentioned above is
`described below. As a starting point, the semantics of the
`functions is similar to the semantics of the various standard
`
`socket application calls for adaptive proxies and DPF. In
`other words, except for the data structure described above,
`the parameters to the functions are substantially similar to
`conventional socket interfaces such as the standard Berkley
`and Winsock socket interfaces
`
`Socket(int domain, int type, int protocol)
`This function creates an endpoint for communication. It
`opens a passive entry and returns a descriptor to the socket.
`Bind(SOCKETs, const stmct sockaddr ‘name, int namelen)
`The bind function asigns a name to an unbound socket
`created by socket. This causes the socket to be associated
`with the address specified in name. From the perspective of
`DPF 207, the hind function allows proxy 211 to register with
`a kemel/driver for packet filtering on a specific interface port
`number. Only the sin_family, sin_addr, and sin_port fields
`in nam

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket