WO2011093228A1 - フロントエンドシステム、フロントエンド処理方法 - Google Patents

フロントエンドシステム、フロントエンド処理方法 Download PDF

Info

Publication number
WO2011093228A1
WO2011093228A1 PCT/JP2011/051135 JP2011051135W WO2011093228A1 WO 2011093228 A1 WO2011093228 A1 WO 2011093228A1 JP 2011051135 W JP2011051135 W JP 2011051135W WO 2011093228 A1 WO2011093228 A1 WO 2011093228A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
switch
query
controller
end processor
Prior art date
Application number
PCT/JP2011/051135
Other languages
English (en)
French (fr)
Inventor
中島 剛
Original Assignee
日本電気株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to EP11736941A priority Critical patent/EP2530886A1/en
Priority to CN201180007734.7A priority patent/CN102763382B/zh
Priority to US13/575,919 priority patent/US8863269B2/en
Publication of WO2011093228A1 publication Critical patent/WO2011093228A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/355Application aware switches, e.g. for HTTP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • the present invention relates to a front end system, and more particularly to a front end system in which a plurality of relay devices are mixed.
  • L3 switch layer 3 switch
  • L4 switch layer 4 switch
  • application layer fourth layer
  • L7 switch layer 7 switch
  • the L7 switch is sometimes called an application switch.
  • the L3 switch is a network device that is a core device of the LAN (Local Area Network) and has a packet transfer function of a router, which has been hardware-developed so that it is significantly faster.
  • the L3 switch was born from the evolution of the conventional L2 switch (layer 2 switch).
  • the L2 switch is a device that relays a LAN frame based on a MAC address (Media Access Control Address).
  • the L3 switch also has a router function that determines a relay destination based on an IP address (Internet Protocol Address). That is, the L3 switch is a device in which the L2 switch and the router are combined into one unit.
  • the L4 switch recognizes transport layer (fourth layer) level protocols such as TCP (Transmission Control Protocol) and UDP (User Datagram Protocol), and arranges the data sent through the network layer (third layer). And make error correction and retransmission requests to ensure the reliability of data transfer.
  • transport layer fourth layer
  • protocol such as TCP (Transmission Control Protocol) and UDP (User Datagram Protocol)
  • the L7 switch recognizes an application layer level protocol such as HTTP (HyperText Transfer Protocol) or FTP (File Transfer Protocol), and can control the destination based on the specific communication contents of the packet.
  • HTTP HyperText Transfer Protocol
  • FTP File Transfer Protocol
  • the bandwidth control of the packet can be performed by the bandwidth control device. Furthermore, at the application layer level, the passage of packets can be restricted by a firewall (FW: FireWall), and load balancing or redundancy can be performed by a load balancer (LB: Load Balancer (load balancer)).
  • FW FireWall
  • LB Load Balancer (load balancer)
  • a dedicated appliance is required as a bandwidth control device, a firewall (FW), or a load balancer (LB).
  • bandwidth control for the purpose of securing QoS (Quality of Service) step by step by these dedicated appliances from when the router receives a packet from the Internet until the packet arrives at the terminal. control) and intrusion prevention and load balancing by a firewall (FW).
  • the router receives a packet from the Internet (L3), transfers the packet to the bandwidth control device (L7), and follows the bandwidth control performed by the bandwidth control device.
  • the packet is forwarded to the first L3 switch (L3), the first L3 switch forwards the packet to the firewall (FW) (L7), and if the firewall (FW) permits intrusion, the packet is sent to the second L3 switch.
  • the second L3 switch forwards the packet to the load balancer (LB) (L7), and forwards the packet to the L2 switch according to the load balancing performed by the load balancer (LB).
  • L2 switch forwards the packet to the subordinate terminal.
  • Non-Patent Document 1 discloses prior art related to a firewall (FW). Further, Non-Patent Document 2 discloses a prior art related to a load balancer (LB).
  • FW firewall
  • LB load balancer
  • the object of the present invention is, as shown in FIG. 2, a front-end processor having a firewall (FW) that recognizes an L7 (layer 7) level protocol and a load balancer (LB) in the vicinity of a switch serving as an entrance / exit of an external network.
  • FW firewall
  • LB load balancer
  • FEP Front End Processor
  • the front-end system of the present invention includes a switch that relays packets, a controller that controls the switch to determine a new communication path, and a front-end processor that connects to the controller via the switch.
  • the front end processor includes a dispatcher, a firewall, and a load balancer.
  • the dispatcher collects packets, extracts only necessary information from the collected packets, generates a query packet corresponding to the layer 7 level protocol, and performs a policy check on the query packet based on the application policy. , Send the query packet to the destination.
  • the firewall recognizes the layer 7 level protocol and determines whether the query packet is allowed to pass.
  • the load balancer recognizes a layer 7 level protocol, performs load balancing of the query packet according to the load condition of the network, and when the query packet is the first query packet, transmits the query packet to the controller via the switch. And confirm the route of the query packet.
  • the front-end processor is connected to a controller that determines a new communication path by controlling the switch via a switch that relays packets. Further, on the front-end processor, a dispatcher collects packets, extracts only necessary information from the collected packet group, and generates a query packet corresponding to the layer 7 level protocol. In addition, on the front-end processor, whether or not the query packet is allowed to pass is determined by a firewall that recognizes a layer 7 level protocol. Also, the load balancer that recognizes the layer 7 level protocol on the front-end processor performs load balancing of the query packet according to the network load status. If the query packet is the first query packet, A query packet is transmitted to the controller, and the route of the query packet is confirmed. Further, on the front-end processor, the dispatcher performs a policy check on the query packet based on the application policy, and transmits the query packet to the destination.
  • end-to-end (End to End) performance can be improved, and a network can be flexibly constructed for each policy.
  • FIG. 1 is a diagram illustrating a configuration of a network system in the case of firewall: FW (L4) and load balancer: LB (L4) (Example 1). It is a data flow figure which shows the flow of the packet in the network system in the case of FW (L4) and LB (L4) (Example 1), and operation
  • the front-end system of the present invention includes a switch 10, a controller 20, and a front-end processor (FEP: Front End Processor) 30.
  • FEP Front End Processor
  • the switch 10 includes a port 11, a firewall (FW) 12, and a load balancer (LB) 13.
  • the port 11 has a flow table (Flow Table) 111.
  • the controller 20 includes an operating system (OS) 21, a firewall (FW) 22, and a load balancer (LB) 23.
  • OS operating system
  • FW firewall
  • LB load balancer
  • the operating system (OS) 21 has a policy DB (DataBase) 211.
  • the front end processor (FEP) 30 includes a dispatcher 31, a firewall (FW) 32, and a load balancer (LB) 33.
  • the dispatcher 31 has an application policy 311.
  • the firewall (FW) 32 has a flow table 321.
  • the load balancer (LB) 33 has a flow table 331, server information 332, and session maintenance information 333.
  • firewall (FW) 12 and the firewall (FW) 22 may have the same configuration as the firewall (FW) 32. That is, the firewall (FW) 12 and the firewall (FW) 22 may also have information corresponding to the flow table 331.
  • the load balancer (LB) 13 and the load balancer (LB) 23 may have the same configuration as the load balancer (LB) 33. That is, the load balancer (LB) 13 and the load balancer (LB) 23 may also have information corresponding to the flow table 331, server information 332, and session maintenance information 333.
  • the switch 10, the controller 20, and the front end processor (FEP) 30 may be plural.
  • controller 20 and the front end processor (FEP) 30 are connected via the switch 10.
  • the controller 20 and the front end processor (FEP) 30 may be integrated.
  • the controller 20 and the front end processor (FEP) 30 can communicate directly without passing through the switch 10.
  • the port 11 is connected to the controller 20 and the front end processor (FEP) 30.
  • the port 11 is connected to an external communication device via an external network such as the Internet.
  • the port 11 transfers data between the external communication device, the controller 20, and the front end processor (FEP) 30.
  • the firewall (FW) 12, the firewall (FW) 22, and the firewall (FW) 32 are external to prevent third parties from entering through an external network and sneaking / falsifying / destroying data or programs. It has a function to monitor data flowing on the boundary between and detect and block unauthorized access.
  • the load balancer (LB) 13, the load balancer (LB) 23, and the load balancer (LB) 33 centrally manage requests from an external network (centralized management), and request requests to a plurality of servers having equivalent functions. It has a function to distribute and transfer.
  • an intrusion prevention system IPS: Intrusion Prevention System
  • IPS Intrusion Prevention System
  • the operating system (OS) 21 When the controller 20 receives a packet, the operating system (OS) 21 notifies a functional module such as a firewall (FW) or a load balancer (LB) according to the topology information of the entire network.
  • a functional module such as a firewall (FW) or a load balancer (LB) according to the topology information of the entire network.
  • the dispatcher 31 assigns FEP calculation capability to executable processes and tasks.
  • the dispatcher 31 generates a query packet based on the received packet.
  • the dispatcher 31 sees the load status of its own FEP and other FEPs, and activates and generates functional modules such as a firewall (FW) and a load balancer (LB) for the FEP with a relatively low load. Sorted query packets are distributed.
  • the dispatcher 31 receives a query packet from a functional module such as a firewall (FW) or a load balancer (LB), checks the policy of the query packet, and if there is no problem, the query ( Query) Send the packet to the destination.
  • a functional module such as a firewall (FW) or a load balancer (LB)
  • a flow entry that defines a predetermined process (action) to be performed on a packet that meets a predetermined match condition (rule) is registered.
  • a packet group (packet series) that conforms to the rule is called a flow.
  • the flow rules are any or all of a destination address (Destination Address), a source address (Source Address), a destination port (Destination Port), and a source port (Source Port) included in the header area of each protocol layer of the packet. It is defined by various combinations using and can be distinguished. Note that the above address includes a MAC address (Media Access Control Address) and an IP address (Internet Protocol Address). In addition to the above, information on an ingress port (Ingress Port) can also be used as a flow rule. If the flow table 321 and the flow table 331 exist in the same front end processor (FEP) 30, they may be the same.
  • FEP front end processor
  • the policy DB 211 stores topology information of the entire network.
  • Application policy 311 stores topology information for each switch and node.
  • the application policy 311 is set according to the topology information in the policy DB 211.
  • the server information 332 is a destination of a packet or a query packet, and holds information on another communication device that is a target for establishing a connection.
  • the server information 332 holds an IP address or the like of a server that provides a predetermined service via the network.
  • the session maintenance information 333 is a connection (connection) established between two communication devices at both ends of a route passing through the front-end processor (FEP) 30 or between the front-end processor (FEP) 30 and another communication device. ) Holds information about the session.
  • a session refers to a series of operations and communications from connection / login to disconnection / logoff in a computer system or network communication.
  • the dispatcher 31 of the front end processor (FEP) 30 receives a packet from the switch 10. Thereafter, the dispatcher 31 generates a query packet based on the received packet, and sends the generated query packet to at least one of the firewall (FW) 32 and the load balancer (LB) 33. Send.
  • the firewall (FW) 32 When the firewall (FW) 32 receives a query packet from the dispatcher 31 or the load balancer (LB) 33, the firewall (FW) 32 refers to the flow table 321, and the flow entry corresponding to the query (Query) packet is stored in the flow table 321. Check if it is registered. When a flow entry corresponding to the query (Query) packet is registered in the flow table 321, the firewall (FW) 32 determines whether or not the query (Query) packet is allowed to pass according to the flow entry. When the query packet is passed, the firewall (FW) 32 transmits the query packet to the dispatcher 31 or the load balancer (LB) 33. When the query (Query) packet is not allowed to pass, the firewall (FW) 32 discards the query (Query) packet.
  • the firewall (FW) 32 uses the first query (1st (First) Query) packet as the query (Query) packet. It is determined that the query packet exists, and the query packet is transmitted to the dispatcher 31 or the load balancer (LB) 33.
  • the load balancer (LB) 33 When the load balancer (LB) 33 receives a query packet from the dispatcher 31 or the firewall (FW) 32, the load balancer (LB) 33 refers to the flow table 331, and the flow entry corresponding to the query (Query) packet is stored in the flow table 331. Check if it is registered. When a flow entry corresponding to the query packet is registered in the flow table 331, the load balancer (LB) 33 performs load balancing on the query packet and transmits it to the dispatcher 31 according to the flow entry. To do. If the flow entry corresponding to the query packet is not registered in the flow table 331, the load balancer (LB) 33 uses the query packet as a first query packet. The query packet is transmitted to the controller 20 via the switch 10. Note that the first query (1st Query) packet means an unknown query (Query) packet that has not been processed before.
  • the port 11 of the switch 10 When the port 11 of the switch 10 receives a normal packet or a query packet, the port 11 refers to the flow table 111 and confirms whether a flow entry corresponding to the received packet is registered in the flow table 111. When the flow entry corresponding to the received packet is registered in the flow table 111, the port 11 processes the packet according to the flow entry in the flow table 111 for the packet. If no matching packet is registered in the flow table 111, the port 11 once transmits the packet to the controller 20. The fact that the port 11 once transmits an unknown packet to the controller 20 may be registered in advance in the flow table 111 as a flow entry.
  • the port 11 when the port 11 receives a query packet from the front-end processor (FEP) 30, the port 11 refers to the flow table 111 and the flow entry corresponding to the query packet is registered in the flow table 111. Make sure that Since the query (Query) packet is the first query (1st Query) packet and the flow entry corresponding to the query (Query) packet is not registered in the flow table 111, the port 11 is connected to the query (Query) packet. Is transmitted to the controller 20.
  • FEP front-end processor
  • the load balancer (LB) 23 of the controller 20 receives a query packet from the front-end processor (FEP) 30 via the switch 10, the load balancer (LB) 23 sends the query packet to the firewall (FW) 22 or the load balancer. (LB) Send to 23 for processing.
  • the load balancer (LB) 23 includes a flow table 111 for the port 11, a flow table 331 for the load balancer (LB) 33, and a processing result at the firewall (FW) 22 or the load balancer (LB) 23.
  • a flow entry corresponding to the query packet is newly registered in the flow table 321 of the firewall (FW) 32.
  • the load balancer (LB) 23 transmits a control command for newly registering a flow entry corresponding to the query packet in each flow table to the switch 10 or the front-end processor (FEP) 30.
  • An example of this control command is one of OpenFlow protocol messages (OpenFlow Protocol Message), such as a “FlowMod” message for registering an entry from the controller to the switch flow table.
  • OpenFlow Protocol Message OpenFlow Protocol Message
  • the load balancer (LB) 23 does not register the flow entry directly in the flow table 321 of the firewall (FW) 32 but indirectly through the load balancer (LB) 33. May be registered. There is no problem if the flow table 321 and the flow table 331 are the same.
  • the load balancer (LB) 23 immediately after (or simultaneously with) the flow registration, the load balancer (LB) 23 returns the query packet to the load balancer (LB) 23 via the switch 10.
  • the load balancer (LB) 33 of the front-end processor (FEP) 30 receives a query packet from the controller 20 via the switch 10, the load balancer (LB) 33 refers to the flow table 331 and corresponds to the query packet. It is confirmed whether the flow entry to be registered is registered in the flow table 331.
  • the load balancer (LB) 33 receives the query (Query). The packet is transmitted to the dispatcher 31. At this time, the query packet may pass through the firewall (FW) 32.
  • the dispatcher 31 performs a policy check based on the application policy 311 for the query packet, and if there is no problem, transmits the query packet to the destination.
  • the route of the query packet is “dispatcher 31 ⁇ firewall (FW) 32 ⁇ load balancer (LB) 23 ( ⁇ controller 20 ⁇ load balancer (LB) 23: mismatch) ⁇ dispatcher 31” or “ Dispatcher 31 ⁇ load balancer (LB) 23 ( ⁇ controller 20 ⁇ load balancer (LB) 23: mismatch) ⁇ firewall (FW) 32 ⁇ dispatcher 31 ”.
  • Examples of the switch 10 include relay devices such as a router, a switching hub, a gateway, and a proxy.
  • the switch 10 may be a multi-layer switch.
  • controller 20 and the front end processor (FEP) 30 a computer such as a PC (personal computer), an appliance, a workstation, a main frame, and a supercomputer can be considered.
  • PC personal computer
  • appliance a workstation
  • main frame a main frame
  • supercomputer a supercomputer
  • Each of the switch 10, the controller 20, and the front end processor (FEP) 30 has a communication function.
  • Examples of hardware for realizing the communication function include a network adapter such as NIC (Network Interface Card), a communication device such as an antenna, a communication port such as a connection port (connector), and the like.
  • networks that connect each of them include the Internet, LAN (Local Area Network), wireless LAN (Wireless LAN), WAN (Wide Area Network), backbone (Backbone), cable television (CATV) line, fixed telephone network, A mobile phone network, WiMAX (IEEE 802.16a), 3G (3rd Generation), leased line, IrDA (Infrared Data Association), Bluetooth (registered trademark), serial communication line, data bus, and the like are conceivable.
  • LAN Local Area Network
  • wireless LAN Wireless LAN
  • WAN Wide Area Network
  • Backbone Backbone
  • CATV cable television
  • a mobile phone network WiMAX (IEEE 802.16a), 3G (3rd Generation), leased line, IrDA (Infrared Data Association), Bluetooth (registered trademark), serial communication line, data bus, and the like are conceivable.
  • WiMAX IEEE 802.16a
  • IrDA Infrared Data Association
  • Bluetooth registered trademark
  • each of the switch 10, the controller 20, and the front end processor (FEP) 30 may be a virtual machine (Virtual Machine (VM)) constructed on a physical machine.
  • VM Virtual Machine
  • Port 11 firewall (FW) 12, load balancer (LB) 13, operating system (OS) 21, firewall (FW) 22, load balancer (LB) 23, dispatcher 31, firewall (FW) 32, and load balancer (LB) 33) is realized by a processor that is driven based on a program and executes a predetermined process, and a memory that stores the program and various data.
  • a CPU Central Processing Unit
  • a microprocessor a microcontroller
  • a semiconductor integrated circuit Integrated Circuit (IC) having a dedicated function
  • semiconductor storage devices such as RAM (Random Access Memory), ROM (Read Only Memory), EEPROM (Electrically Erasable and Programmable Read Only Memory), and HDD Memory (SDHidK)
  • RAM Random Access Memory
  • ROM Read Only Memory
  • EEPROM Electrical Erasable and Programmable Read Only Memory
  • HDD Memory HDD Memory
  • An auxiliary storage device such as State Drive
  • a removable disk such as a DVD (Digital Versatile Disk)
  • a storage medium such as an SD memory card (Secure Digital memory card), or the like is conceivable.
  • processor and the memory may be integrated.
  • a single chip such as a microcomputer has been developed. Therefore, a case where a one-chip microcomputer mounted on each of the switch 10, the controller 20, and the front end processor (FEP) 30 includes a processor and a memory can be considered.
  • the front end system of the present invention includes a switch (core SW) 10-1, a switch (built-in SW) 10-2, a switch (edge SW) 10-3, a controller 20, and a front end processor (FEP). ) 30, client 100, and server 200.
  • Each of the switch (core SW) 10-1, the switch (built-in SW) 10-2, and the switch (edge SW) 10-3 is a type of the switch 10.
  • Each of the switch (core SW) 10-1, the switch (built-in SW) 10-2, and the switch (edge SW) 10-3 is connected to each other.
  • the switch (core SW) 10-1 is connected to the client 100 via an external network such as the Internet.
  • the switch (built-in SW) 10-2 is connected to the controller 20 and the front end processor (FEP) 30.
  • the switch (edge SW) 10-3 is connected to the server 200. At this time, the switch (core SW) 10-1, the switch (built-in SW) 10-2, and the switch (edge SW) 10-3 may be integrated.
  • the position where the front end processor (FEP) 30 is arranged is desirably the entrance / exit of the external network and the vicinity of the controller 20 (preferably as close as possible). However, it is not essential. That is, the front end processor (FEP) 30 is preferably arranged as close as possible to both the switch (core SW) 10-1 and the controller 20. Therefore, it is more preferable that the controller 20 and the front end processor (FEP) 30 are integrated.
  • FW (L4) indicates an environment in which the firewall (FW) operates at the L4 (layer 4) level.
  • LB (L4) indicates an environment in which the load balancer (LB) operates at the L4 (layer 4) level.
  • FW (L7) indicates an environment in which the firewall (FW) operates at the L7 (layer 7) level.
  • LB (L7) indicates an environment in which the load balancer (LB) operates at the L7 (layer 7) level.
  • the firewall (FW) and load balancer (LB) perform processing for normal packets at the L4 (layer 4) level, and perform processing for query packets at the L7 (layer 7) level.
  • FW (L4), LB (L4) The case of FW (L4) and LB (L4) will be described with reference to FIGS. 4A to 4C.
  • the firewall (FW) and the load balancer (LB) operate at the L4 (layer 4) level
  • the firewall (FW) and the load balancer (LB) operate on the switch (core SW) 10-1. In this case, packet transmission to the front end processor (FEP) is unnecessary.
  • (1) 1st packet When the switch (core SW) 10-1 receives a packet from the client 100 via the network, if the packet is the 1st packet, the switch (core SW) 10-1 passes through the switch (built-in SW) 10-2. Transfer the packet to the controller 20.
  • the destination address (dst: Destination Address) is a virtual IP address (VIP)
  • the source address (src: Source Address) is the IP address (cl IP) of the client 100.
  • the switch (core SW) 10-1 updates the flow table 111 according to the control command from the controller 20.
  • the switch (core SW) 10-1 receives a packet returned from the controller 20 after updating the flow table 111 or a packet having the same rule as the packet, the firewall (FW) 12 and the load balancer (LB) 13 to send the packet.
  • the firewall (FW) 12 recognizes the L4 level protocol and refers to the IP header and TCP header of the packet to determine whether or not it can pass.
  • the load balancer (LB) 13 recognizes the L4 level protocol and determines the real IP address (the IP address of the server 200) based on the virtual IP address (VIP). At this time, the load balancer (LB) 13 may determine a real IP address (IP address of the server 200) corresponding to the virtual IP address (VIP) by looking at the load state.
  • 3WHS 3WHS
  • the switch (core SW) 10-1 passes through the switch (edge SW) 10-3.
  • the packet is transmitted to the server 200.
  • the switch (core SW) 10-1 and the server 200 perform the transmission / reception of the packet three times including the packet according to the procedure of 3WHS (3-Way Hand Shake) to establish a connection.
  • FW (L7) In the case of FW (L7), LB (L7)
  • the case of FW (L7) and LB (L7) will be described with reference to FIGS. 5A to 5C.
  • the firewall (FW) and the load balancer (LB) operate at the L7 (layer 7) level
  • the firewall (FW) and the load balancer (LB) operate on the controller.
  • the front end processor (FEP) terminates the TCP session.
  • the front-end processor (FEP) establishes a connection (connection) to both the client 100 side and the server 200 side.
  • (1) 1st packet When the switch (core SW) 10-1 receives a packet from the client 100 via the network, if the packet is the 1st packet, the switch (core SW) 10-1 passes through the switch (built-in SW) 10-2. The packet is transferred to the controller 20.
  • the destination address (dst) is the virtual IP address (VIP)
  • the source address (src) is the IP address (cl IP) of the client 100.
  • the switch (core SW) 10-1 updates the flow table 111 according to the control command from the controller 20.
  • the switch (core SW) 10-1 transfers the returned packet to the front end processor (FEP) 30 via the switch (built-in SW) 10-2.
  • the switch (core SW) 10-1 sends the packet to the front-end processor via the switch (built-in SW) 10-2 in the same manner as the returned packet. Transfer to (FEP) 30.
  • the switch (core SW) 10-1 and the front-end processor (FEP) 30 perform packet transmission / reception three times according to the procedure of 3WHS (3-Way Hand Shake) to establish a connection.
  • the front end processor (FEP) 30 terminates the TCP session and receives a packet after the connection between the client 100 and the front end processor (FEP) 30 is established.
  • the front-end processor (FEP) 30 generates a query packet from the received packet. At this time, when the generated query (Query) packet is the first query (1st Query) packet, the front-end processor (FEP) 30 transmits the query (Query) packet to the controller 20.
  • the controller 20 sends the query packet to the firewall (FW) 22 and the load balancer (LB) 23.
  • the firewall (FW) 22 recognizes the L7 level protocol and refers to the IP header and TCP header of the query packet to determine whether or not the packet can pass.
  • the load balancer (LB) 23 recognizes the L7 level protocol and determines the real IP address (the IP address of the server 200) based on the virtual IP address (VIP). At this time, the load balancer (LB) 23 may determine a real IP address (IP address of the server 200) corresponding to the virtual IP address (VIP) by looking at the load state.
  • 3WHS 3WHS (vs. server)
  • the front-end processor (FEP) 30 sends the returned query packet to the server 200 via the switch (built-in SW) 10-2 and the switch (edge SW) 10-3. Send.
  • the front-end processor (FEP) 30 and the server 200 perform a query packet transmission / reception three times according to a 3WHS (3-Way Hand Shake) procedure to establish a connection.
  • FW (L7), LB (L4) The case of FW (L7) and LB (L4) will be described with reference to FIGS. 6A to 6C.
  • the firewall (FW) operates at the L7 (Layer 7) level and the load balancer (LB) operates at the L4 (Layer 4) level
  • the firewall (FW) operates on the controller, and this load balancer (LB) ) Operates on the switch (core SW) 10-1.
  • the front-end processor (FEP) does not terminate the TCP session. Further, a connection is established between the client 100 and the server 200, but the packet passes through the front end processor (FEP).
  • (1) 1st packet When the switch (core SW) 10-1 receives a packet from the client 100 via the network, if the packet is the 1st packet, the switch (core SW) 10-1 passes through the switch (built-in SW) 10-2. The packet is transferred to the controller 20.
  • the destination address (dst) is the virtual IP address (VIP)
  • the source address (src) is the IP address (cl IP) of the client 100.
  • the switch (core SW) 10-1 updates the flow table 111 according to the control command from the controller 20.
  • the switch (core SW) 10-1 receives a packet returned from the controller 20 or a packet having the same rule as the packet after updating the flow table 111
  • the switch (core SW) 10-1 transmits the packet to the load balancer (LB) 13.
  • the load balancer (LB) 13 recognizes the L4 level protocol, determines the real IP address (IP address of the server 200) based on the virtual IP address (VIP), and routes the packet to the front-end processor (FEP). Switch to 30.
  • LB LB
  • a server one of a plurality
  • VIP virtual IP address
  • the switch (core SW) 10-1 transmits the packet to the server 200 via the switch (built-in SW) 10-2, the front-end processor (FEP) 30, and the switch (edge SW) 10-3. A response from 200 is transmitted to the client 100. Further, the switch (core SW) 10-1 sends packets of the same rule to the server 200 via the switch (built-in SW) 10-2, the front-end processor (FEP) 30, and the switch (edge SW) 10-3. Forward.
  • the switch (core SW) 10-1 relays the packet in accordance with the procedure of 3WHS (3-Way Hand Shake), and performs transmission / reception of the packet between the client 100 and the server 200 three times including the 1st packet, A connection between the client 100 and the server 200 is established.
  • 3WHS 3-Way Hand Shake
  • the front-end processor (FEP) 30 receives a packet that passes through the front-end processor (FEP) 30.
  • the front-end processor (FEP) 30 generates a query packet from the received packet. At this time, when the generated query (Query) packet is the first query (1st Query) packet, the front-end processor (FEP) 30 transmits the query (Query) packet to the controller 20.
  • FW L7
  • the controller 20 sends the query packet to the firewall (FW) 22.
  • the firewall (FW) 22 recognizes the L7 level protocol and refers to the IP header and TCP header of the query packet to determine whether or not the packet can pass.
  • the front-end processor (FEP) 30 sends a query packet returned from the controller 20 and a query packet having the same rule to the switch (built-in SW) 10-2 and the switch (edge). SW) to server 200 via 10-3. Note that the response from the server 200 does not have to go through the front end processor (FEP) 30.
  • Example 4 Case of FW (L4), LB (L7)
  • the case of FW (L4) and LB (L7) will be described with reference to FIGS. 7A to 7C.
  • the firewall (FW) operates at the L4 (Layer 4) level and the load balancer (LB) operates at the L7 (Layer 7) level
  • the firewall (FW) and the load balancer (LB) operate on the controller.
  • the front end processor (FEP) terminates the TCP session.
  • the front-end processor (FEP) establishes a connection (connection) to both the client 100 side and the server 200 side.
  • the firewall (FW) may operate on the switch (core SW) 10-1. The operation in this case is the same as the operation of the firewall (FW) in the first embodiment.
  • (1) 1st packet When the switch (core SW) 10-1 receives a packet from the client 100 via the network, if the packet is the 1st packet, the switch (core SW) 10-1 passes through the switch (built-in SW) 10-2. The packet is transferred to the controller 20.
  • the destination address (dst) is the virtual IP address (VIP)
  • the source address (src) is the IP address (cl IP) of the client 100.
  • FW L4
  • the controller 20 sends the packet to the firewall (FW) 22.
  • the firewall (FW) 22 recognizes the L4 level protocol and refers to the IP header and TCP header of the packet to determine whether or not the packet can pass.
  • the controller 20 refers to the policy DB 211 and performs necessary processing (requires L7 level processing) based on the virtual IP address (VIP).
  • the flow entry corresponding to the packet is created.
  • the controller 20 transmits a control command for newly registering a flow entry corresponding to the packet to the flow table 111.
  • the controller 20 returns a packet to the switch (core SW) 10-1 via the switch (built-in SW) 10-2.
  • the controller 20 controls the flow table 111 to newly register a flow entry for discarding a packet having the same rule as the packet.
  • Send When a flow entry for discarding a packet with the same rule as the 1st packet is registered in the flow table 111, the switch (core SW) 10-1 does not transfer all subsequent packets with the same rule. Discard. That is, the subsequent processing is not performed.
  • the switch (core SW) 10-1 updates the flow table 111 according to the control command from the controller 20. Thereafter, the switch (core SW) 10-1 transfers the returned packet to the front end processor (FEP) 30 via the switch (built-in SW) 10-2 and the controller 20, and the front end processor (FEP) 30 Is sent to the client 100. In addition, when the switch (core SW) 10-1 receives a packet of the same rule, the switch (core SW) 10-1 similarly transfers the packet to the front end processor (FEP) 30 via the switch (built-in SW) 10-2. At this time, the switch (core SW) 10-1 and the front-end processor (FEP) 30 perform packet transmission / reception three times according to the procedure of 3WHS (3-Way Hand Shake) to establish a connection.
  • 3WHS 3-Way Hand Shake
  • the front end processor (FEP) 30 terminates the TCP session and receives a packet after the connection between the client 100 and the front end processor (FEP) 30 is established.
  • the front-end processor (FEP) 30 generates a query packet from the received packet, and transmits the query packet to the controller 20.
  • LB L7
  • the load balancer (LB) 23 recognizes the L7 level protocol and determines the real IP address (the IP address of the server 200) based on the virtual IP address (VIP). At this time, the load balancer (LB) 23 may determine a real IP address (IP address of the server 200) corresponding to the virtual IP address (VIP) by looking at the load state.
  • the controller 20 sends the query packet to the front-end processor (FEP). Reply to 30.
  • the controller 20 creates a flow entry corresponding to the query (Query) packet in order to write to the flow table 321 and the flow table 321. Then, the controller 20 transmits a control command for newly registering a flow entry corresponding to the query packet to the flow table 321 and the flow table 331.
  • the front-end processor (FEP) 30 updates the flow table 321 and the flow table 331 in accordance with a control command from the controller 20.
  • 3WHS 3WHS (vs. server)
  • the front-end processor (FEP) 30 registers the returned query (Query) packet in the flow table, and then sends the returned query (Query) packet to the switch (built-in SW) 10-2 and the switch (edge SW). ) To the server 200 via 10-3.
  • the front-end processor (FEP) 30 and the server 200 perform a query packet transmission / reception three times according to a 3WHS (3-Way Hand Shake) procedure to establish a connection.
  • 3WHS 3-Way Hand Shake
  • the TCP session is terminated by the front end processor (FEP). This is because a query packet is generated and load balancing is performed on the query packet.
  • the firewall (FW) when the firewall (FW) is operated at the L7 (layer 7) level, the packet is routed through the front-end processor (FEP). This is because it is necessary to generate a query packet.
  • FEP front-end processor
  • the load balancer (LB) when the load balancer (LB) is operated at the L4 (layer 4) level, the load balancer (LB) function can be processed on the switch 10.
  • the controller 20 can take over the processing on the switch 10.
  • FIG. 9 is an image of topology information stored in the policy DB 211.
  • the topology information includes a destination address, a protocol, a port number, and various application information.
  • the destination address is the IP address of the destination (destination).
  • the protocol is information indicating a classification of protocols such as “http”, “https”, “FTP”, and the like.
  • the port number is a sub (auxiliary) address provided under an IP address such as “80” or “443”.
  • the various application information is information indicating a firewall (FW) function, a load balancer (LB) function, and a layer (layer) in which these functions operate at an L4 (layer 4) level or an L7 (layer 7) level.
  • the operating system (OS) 21 of the controller 20 When the operating system (OS) 21 of the controller 20 receives the packet, it refers to the policy DB 211 and notifies the appropriate firewall (FW) function and load balancer (LB) function of the appropriate hierarchy.
  • OS operating system
  • LB load balancer
  • FIG. 10 is an image of flow tables such as the flow table 111, the flow table 321, and the flow table 331.
  • the flow table includes a processing flag, (1) source IP, (2) source port, (3) destination IP, (4) destination port, (5) payload, and (6) action. .
  • Source IP to (5) Payload is an item used as a flow rule.
  • the processing flag is a flag indicating which of (1) source IP to (5) payload is referred to as a flow rule. That is, the item set in the processing flag is adopted as a flow rule.
  • the payload corresponds to the user data part of the received data. For example, (5) part or all of each information such as “URL (Uniform Resource Locator)”, “Cookie information”, “script”, etc. is stored in the payload.
  • URL Uniform Resource Locator
  • (6) Action indicates the processing to be performed on the received packet when all items (processing flag conditions) set in the processing flag are satisfied. For example, processing such as “pass” and “discard” is set in (6) action.
  • the switch 10, the controller 20, and the front end processor (FEP) 30 are registered in the flow table with reference to the corresponding field of the header information of the received packet for the item (processing flag condition) set in the processing flag If the information matches (match), the process set in the (6) action corresponding to the process flag is executed.
  • the switch 10, the controller 20, and the front-end processor (FEP) 30 permit the passage of packets when all of (1) source IP to (5) payload are matched.
  • the switch 10, the controller 20, and the front-end processor (FEP) 30 unconditionally discard the packet when none of (1) source IP to (5) payload is matched. .
  • FIG. 11 is an image of a query packet.
  • a normal packet has an IP header, a TCP header, and a payload.
  • long data is divided into a plurality of packets and transmitted with a predetermined data length.
  • data divided into a predetermined data length is stored. That is, there are as many packets as the number of divided data.
  • the entire data stored in the payload of these packet groups is one message. Further, since the packets belonging to these packet groups have the same transmission source and destination, all the information stored in the IP header and the TCP header is the same.
  • the query packet has IP information, TCP information, and a payload.
  • IP information and the TCP information information obtained by extracting only necessary information such as an IP address and a port number from the IP header or TCP header of a normal packet is stored.
  • the payload stores a message obtained by extracting only necessary information from one message restored from the divided data.
  • a URL is composed of information type, server name, port number, folder name, file name, cookie information, and the like.
  • the URL is divided into predetermined data lengths. Stored. When only the cookie information is required in the URL, only the cookie information is extracted and stored in the payload of the query packet in the URL once restored from the packet group.
  • FIG. 12 is an image of load balancing between FEP and FEP.
  • Each front-end processor includes a dispatcher load balancer (dispatcher LB), a dispatcher, a firewall (FW), and a load balancer (LB).
  • dispatcher LB dispatcher load balancer
  • FW firewall
  • LB load balancer
  • the dispatcher load balancer looks at the load status of each FEP dispatcher, performs load balancing, and assigns processing to an appropriate FEP dispatcher.
  • the dispatcher load balancer may be a load balancer (LB) of its own FEP or another FEP.
  • the front-end processor FEP
  • the dispatcher load balancer is a load balancer (LB) of the switch 10 shown in FIG. 13) or the load balancer (LB) 23 of the controller 20.
  • the dispatcher, firewall (FW), and load balancer (LB) are the same as the dispatcher 31, firewall (FW) 32, and load balancer (LB) 33 shown in FIG.
  • the dispatcher looks at the load status of the firewall (FW) and load balancer (LB) of each FEP, performs load balancing, and assigns processing to an appropriate FEP firewall (FW) and load balancer (LB).
  • dispatcher looks at the load status not in units of firewalls (FW) and load balancers (LB), but in units of hardware of each FEP, and changes to firewalls (FW) and load balancers (LB) that have relatively low loads. Launch the necessary function modules.
  • the front-end processor (FEP) 30 that has transmitted the first query (1st Query) packet to the controller 20 and the front-end processor (FEP) 30 that receives a response from the controller 20 are: , Not necessarily the same thing. This is because the FEP different from the source FEP may be selected as the FEP to be used thereafter by the load balancer (LB) 23 of the controller 20.

Abstract

 複数の中継機器が混在するフロントエンドシステムにおいて、エンド・ツー・エンド(End to End)での性能向上を図り、ポリシー毎に柔軟にネットワークを構築することを可能にする。具体的には、外部ネットワークの出入口となるスイッチの近傍に、L7(レイヤ7)レベルのプロトコルを認識するファイアウォール(FW)やロードバランサ(LB)を併せ持つフロントエンドプロセッサ(FEP:Front End Processor)を設け、L7(レイヤ7)処理を一元化する。

Description

フロントエンドシステム、フロントエンド処理方法
 本発明は、フロントエンドシステムに関し、特に複数の中継機器が混在するフロントエンドシステムに関する。
 企業等の組織内におけるネットワークシステムでは、OSI参照モデルのネットワーク層(第3層)以上のデータを認識し、そのデータを基にパケットの行き先を制御するルーティングが行われている。このようなネットワークシステム上に存在するスイッチは、サポートするOSI参照モデルの層(レイヤ)ごとに、細かく分類されている。主な種別としては、ネットワーク層(第3層)のデータを読むL3スイッチ(レイヤ3スイッチ)、トランスポート層(第4層)のデータを読むL4スイッチ(レイヤ4スイッチ)、アプリケーション層(第7層)のデータを読むL7スイッチ(レイヤ7スイッチ)がある。L7スイッチは、アプリケーションスイッチと呼ばれることもある。
 L3スイッチは、LAN(Local Area Network)の中核機器として、ルータの持つパケットの転送機能をハードウェア化し、大幅に高速化したネットワーク機器である。L3スイッチは、従来のスイッチであるL2スイッチ(レイヤ2スイッチ)が進化して生まれた。L2スイッチは、MACアドレス(Media Access Control Address)を基にLANフレームを中継する機器である。これに対して、L3スイッチは、IPアドレス(Internet Protocol Address)を基に中継先を決めるルータ機能も兼ね備える。つまり、L3スイッチは、L2スイッチとルータが1台になった装置である。
 L4スイッチは、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)等のトランスポート層(第4層)レベルのプロトコルを認識し、ネットワーク層(第3層)を通して送られてきたデータの整序や誤り訂正、及び再送要求を行い、データ転送の信頼性を確保する。
 L7スイッチは、HTTP(HyperText Transfer Protocol)やFTP(File Transfer Protocol)等のアプリケーション層レベルのプロトコルを認識し、パケットの具体的な通信内容を基に行き先を制御することができる。
 また、L7スイッチと同じアプリケーション層(第7層)では、帯域制御装置によりパケットの帯域制御を行うことができる。更に、アプリケーション層レベルで、ファイアウォール(FW:FireWall)によりパケットの通過を制限することや、ロードバランサ(LB:Load Balancer(負荷分散装置))によりロードバランシングや冗長化を行うこともできる。
 しかし、企業等の組織内における今までのネットワーク構成では、帯域制御装置や、ファイアウォール(FW)や、ロードバランサ(LB)として、専用のアプライアンス(appliance)が必要であった。また、インターネットからルータがパケットを受信してから端末に当該パケットが到着するまでの間に、これらの専用のアプライアンスにより、段階的に、QoS(Quality of Service)確保を目的とした帯域制御(bandwidth control)や、ファイアウォール(FW)による侵入防止や、ロードバランシングが行われていた。
 例えば、図1に示すように、今までのネットワーク構成では、ルータがインターネットからパケットを受信し(L3)、当該パケットを帯域制御装置に転送し(L7)、帯域制御装置が行った帯域制御に従って当該パケットを第1のL3スイッチに転送し(L3)、第1のL3スイッチが当該パケットをファイアウォール(FW)に転送し(L7)、ファイアウォール(FW)が侵入を許可すれば当該パケットを第2のL3スイッチに転送し(L3)、第2のL3スイッチが当該パケットをロードバランサ(LB)に転送し(L7)、ロードバランサ(LB)が行ったロードバランシングに従って当該パケットをL2スイッチに転送し(L2)、L2スイッチが配下の端末に当該パケットを転送していた。
 そのため、L3スイッチで受信したパケットであっても、帯域制御や、侵入防止や、ロードバランシングを行うため、その都度、L7データを参照したり、L7スイッチにアクセスしたりする必要があり、データコピー等によるプロトコルオーバーヘッドが多発していた。
 なお、ファイアウォール(FW)に関する先行技術が非特許文献1に開示されている。また、ロードバランサ(LB)に関する先行技術が非特許文献2に開示されている。
"Delegating Network Security With More Information" Jad Naous, Ryan Stutsman, David Mazieres, Nick McKeown, Nickolai Zeldovich. <http://www.scs.stanford.edu/~stutsman/papers/wren27-naous.pdf> "Plug-n-Serve: Load-Balancing Web Traffic using OpenFlow" Nikhil Handigol, Srinivasan Seetharaman, Mario Flajslik, Nick McKeown, Ramesh Johari. <http://conferences.sigcomm.org/sigcomm/2009/demos/sigcomm-pd-2009-final26.pdf> "The OpenFlow Switch Consortium" <http://www.openflowswitch.org/> "OpenFlow Switch Specification Version 1.0.0 (Wire Protocol 0x01) December 31, 2009" <http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf>
 本発明の目的は、図2に示すように、外部ネットワークの出入口となるスイッチの近傍に、L7(レイヤ7)レベルのプロトコルを認識するファイアウォール(FW)やロードバランサ(LB)を併せ持つフロントエンドプロセッサ(FEP:Front End Processor)を設け、L7(レイヤ7)処理を一元化したフロントエンドシステムを提供することである。
 本発明のフロントエンドシステムは、パケットを中継するスイッチと、スイッチを制御して通信新経路を決定するコントローラと、スイッチを介してコントローラと接続するフロントエンドプロセッサとを具備する。フロントエンドプロセッサは、ディスパッチャと、ファイアウォールと、ロードバランサとを具備する。当該ディスパッチャは、パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ7レベルのプロトコルに対応したクエリパケットを生成し、クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、クエリパケットを宛先に送信する。当該ファイアウォールは、レイヤ7レベルのプロトコルを認識し、クエリパケットの通過の許否を決定する。当該ロードバランサは、レイヤ7レベルのプロトコルを認識し、ネットワークの負荷状況に応じてクエリパケットのロードバランシングを行い、クエリパケットが最初のクエリパケットである場合、スイッチを介してクエリパケットをコントローラに送信し、クエリパケットの経路を確認する。
 本発明のフロントエンド処理方法では、フロントエンドプロセッサを、パケットを中継するスイッチを介して、スイッチを制御して通信新経路を決定するコントローラと接続する。また、フロントエンドプロセッサ上で、ディスパッチャにより、パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ7レベルのプロトコルに対応したクエリパケットを生成する。また、フロントエンドプロセッサ上で、レイヤ7レベルのプロトコルを認識するファイアウォールにより、クエリパケットの通過の許否を決定する。また、フロントエンドプロセッサ上で、レイヤ7レベルのプロトコルを認識するロードバランサにより、ネットワークの負荷状況に応じてクエリパケットのロードバランシングを行い、クエリパケットが最初のクエリパケットである場合、スイッチを介してクエリパケットをコントローラに送信し、クエリパケットの経路を確認する。また、フロントエンドプロセッサ上で、ディスパッチャにより、クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、クエリパケットを宛先に送信する。
 L7(レイヤ7)処理の一元化を実現することで、エンド・ツー・エンド(End to End)での性能向上を図ることができ、ポリシー毎に柔軟にネットワークを構築することができる。
従来のネットワークシステム(専用のアプライアンスを配置)の構成を示す図である。 本発明に係るネットワークシステムの構成を示す図である。 本発明のフロントエンドシステムの基本構成を示す図である。 ファイアウォール:FW(L4)、ロードバランサ:LB(L4)の場合(実施例1)のネットワークシステムの構成を示す図である。 FW(L4)、LB(L4)の場合(実施例1)のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。 FW(L4)、LB(L4)の場合(実施例1)のフロントエンドシステムの基本構成を示す図である。 FW(L7)、LB(L7)の場合(実施例2)のネットワークシステムの構成を示す図である。 FW(L7)、LB(L7)の場合(実施例2)のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。 FW(L7)、LB(L7)の場合(実施例2)のフロントエンドシステムの基本構成を示す図である。 FW(L7)、LB(L4)の場合(実施例3)のネットワークシステムの構成を示す図である。 FW(L7)、LB(L4)の場合(実施例3)のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。 FW(L7)、LB(L4)の場合(実施例3)のフロントエンドシステムの基本構成を示す図である。 FW(L4)、LB(L7)の場合(実施例4)のネットワークシステムの構成を示す図である。 FW(L4)、LB(L7)の場合(実施例4)のネットワークシステムにおけるパケットの流れ及び各機器の動作を示すデータフロー図である。 FW(L4)、LB(L7)の場合(実施例4)のフロントエンドシステムの基本構成を示す図である。 FW機能とLB機能の組み合わせのイメージを示す図である。 ポリシーDBのイメージを示す図である。 フローテーブルのイメージを示す図である。 クエリ(Query)パケットのイメージを示す図である。 FEPによるバランシング処理のイメージを示す図である。
 <実施形態>
 以下に、本発明の実施形態について添付図面を参照して説明する。
 [基本構成]
 図3に示すように、本発明のフロントエンドシステムは、スイッチ10と、コントローラ20と、フロントエンドプロセッサ(FEP:Front End Processor)30を備える。
 スイッチ10は、ポート11と、ファイアウォール(FW)12と、ロードバランサ(LB)13を備える。
 ポート11は、フローテーブル(Flow Table)111を有する。
 コントローラ20は、オペレーティングシステム(OS:Operating System)21と、ファイアウォール(FW)22と、ロードバランサ(LB)23を備える。
 オペレーティングシステム(OS)21は、ポリシーDB(DataBase)211を有する。
 フロントエンドプロセッサ(FEP)30は、ディスパッチャ(dispatcher)31と、ファイアウォール(FW)32と、ロードバランサ(LB)33を備える。
 ディスパッチャ31は、適用ポリシー311を有する。
 ファイアウォール(FW)32は、フローテーブル321を有する。
 ロードバランサ(LB)33は、フローテーブル331と、サーバ情報332と、セッション維持情報333を有する。
 なお、ファイアウォール(FW)12及びファイアウォール(FW)22は、ファイアウォール(FW)32と同様の構成にしても良い。すなわち、ファイアウォール(FW)12やファイアウォール(FW)22も、フローテーブル331に相当する情報を有していても良い。
 また、ロードバランサ(LB)13及びロードバランサ(LB)23は、ロードバランサ(LB)33と同様の構成にしても良い。すなわち、ロードバランサ(LB)13やロードバランサ(LB)23も、フローテーブル331、サーバ情報332、及びセッション維持情報333に相当する情報を有していても良い。
 [構成の詳細な説明]
 スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30は、それぞれ複数でも良い。
 ここでは、スイッチ10を介して、コントローラ20とフロントエンドプロセッサ(FEP)30が接続されている。なお、コントローラ20とフロントエンドプロセッサ(FEP)30は、一体化していても良い。コントローラ20とフロントエンドプロセッサ(FEP)30が一体化している場合、コントローラ20とフロントエンドプロセッサ(FEP)30は、スイッチ10を介さずに、直接的に通信可能である。
 ポート11は、コントローラ20とフロントエンドプロセッサ(FEP)30に接続されている。また、ポート11は、インターネット等の外部ネットワークを介して、外部の通信装置に接続されている。ここでは、ポート11は、外部の通信装置、コントローラ20、及びフロントエンドプロセッサ(FEP)30の相互間でデータを転送する。
 ファイアウォール(FW)12、ファイアウォール(FW)22、及びファイアウォール(FW)32は、外部ネットワークを通じて第三者が侵入し、データやプログラムの盗み見・改ざん・破壊等が行われることのないように、外部との境界を流れるデータを監視し、不正なアクセスを検出・遮断する機能を有する。
 ロードバランサ(LB)13、ロードバランサ(LB)23、及びロードバランサ(LB)33は、外部ネットワークからの要求を一元的に管理(集中管理)し、同等の機能を持つ複数のサーバに要求を分散して転送する機能を有する。なお、ロードバランサ(LB)によるロードバランシングとの並列処理として、侵入防止システム(IPS:Intrusion Prevention System)によりサーバやネットワークへの不正侵入を阻止することもできる。
 オペレーティングシステム(OS)21は、コントローラ20がパケットを受信した際、ネットワーク全体のトポロジー情報に従って、ファイアウォール(FW)やロードバランサ(LB)等の機能モジュールに通知する。
 ディスパッチャ31は、実行可能なプロセスやタスク等に対してFEPの計算能力を割り当てる。ここでは、ディスパッチャ31は、受信したパケットに基づいてクエリ(Query)パケットを生成する。また、ディスパッチャ31は、自FEPや他のFEPの負荷状況を見て、比較的負荷の低いFEPに対して、ファイアウォール(FW)やロードバランサ(LB)等の機能モジュールの立ち上げを行い、生成されたクエリ(Query)パケットを振り分ける。また、ディスパッチャ31は、ファイアウォール(FW)やロードバランサ(LB)等の機能モジュールからクエリ(Query)パケットを受け取り、当該クエリ(Query)パケットのポリシーチェックを行った後、問題がなければ当該クエリ(Query)パケットを宛先に送信する。
 フローテーブル111、フローテーブル321、及びフローテーブル331には、所定のマッチ条件(ルール)に適合するパケットに対して行うべき所定の処理(アクション)を定義したフローエントリが登録される。ルールに適合するパケット群(パケット系列)をフローと呼ぶ。フローのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス(Destination Address)、送信元アドレス(Source Address)、宛先ポート(Destination Port)、送信元ポート(Source Port)のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、MACアドレス(Media Access Control Address)やIPアドレス(Internet Protocol Address)を含むものとする。また、上記に加えて、入口ポート(Ingress Port)の情報も、フローのルールとして使用可能である。フローテーブル321とフローテーブル331は、同じフロントエンドプロセッサ(FEP)30内に存在する場合、同一物でも良い。
 フローテーブルの詳細については、非特許文献3、4に記載されている。
 ポリシーDB211は、ネットワーク全体のトポロジー情報を格納する。
 適用ポリシー311は、スイッチやノード毎のトポロジー情報を格納する。適用ポリシー311は、ポリシーDB211のトポロジー情報に従って設定される。
 サーバ情報332は、パケット又はクエリ(Query)パケットの宛先となり、接続(コネクション)を確立する対象となる他の通信装置に関する情報を保持する。ここでは、サーバ情報332は、ネットワークを介して所定のサービスを提供するサーバのIPアドレス等を保持する。
 セッション維持情報333は、フロントエンドプロセッサ(FEP)30を経由する経路の両端となる2つの通信装置の間、或いはフロントエンドプロセッサ(FEP)30と他の通信装置の間で確立された接続(コネクション)におけるセッションに関する情報を保持する。セッションとは、コンピュータシステムやネットワーク通信において、接続/ログインしてから、切断/ログオフするまでの、一連の操作や通信のことを示す。
 [基本処理]
 フロントエンドプロセッサ(FEP)30のディスパッチャ31は、スイッチ10からパケットを受信する。その後、ディスパッチャ31は、受信したパケットに基づいてクエリ(Query)パケットを生成し、生成されたクエリ(Query)パケットを、ファイアウォール(FW)32及びロードバランサ(LB)33のうち少なくとも一方に対して送信する。
 ファイアウォール(FW)32は、ディスパッチャ31或いはロードバランサ(LB)33からクエリ(Query)パケットを受信した場合、フローテーブル321を参照し、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル321に登録されているか確認する。当該クエリ(Query)パケットに該当するフローエントリがフローテーブル321に登録されている場合、ファイアウォール(FW)32は、そのフローエントリに従い、当該クエリ(Query)パケットを通過させるか否か判断する。当該クエリ(Query)パケットを通過させる場合、ファイアウォール(FW)32は、当該クエリ(Query)パケットをディスパッチャ31或いはロードバランサ(LB)33に送信する。当該クエリ(Query)パケットを通過させない場合、ファイアウォール(FW)32は、当該クエリ(Query)パケットを廃棄する。また、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル321に登録されていない場合、ファイアウォール(FW)32は、当該クエリ(Query)パケットを最初のクエリ(1st(First) Query)パケットであるものと判断して、当該クエリ(Query)パケットを通過させてディスパッチャ31或いはロードバランサ(LB)33に送信する。
 ロードバランサ(LB)33は、ディスパッチャ31或いはファイアウォール(FW)32からクエリ(Query)パケットを受信した場合、フローテーブル331を参照し、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル331に登録されているか確認する。当該クエリ(Query)パケットに該当するフローエントリがフローテーブル331に登録されている場合、ロードバランサ(LB)33は、そのフローエントリに従い、当該クエリ(Query)パケットをロードバランシングしてディスパッチャ31に送信する。また、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル331に登録されていない場合、ロードバランサ(LB)33は、当該クエリ(Query)パケットを最初のクエリ(1st Query)パケットであるものと判断して、スイッチ10を介して、当該クエリ(Query)パケットをコントローラ20に送信する。なお、最初のクエリ(1st Query)パケットとは、以前に処理されたことのない未知のクエリ(Query)パケットという意味である。
 スイッチ10のポート11は、通常のパケットやクエリ(Query)パケットを受信した場合、フローテーブル111を参照し、当該受信パケットに該当するフローエントリがフローテーブル111に登録されているか確認する。当該受信パケットに該当するフローエントリがフローテーブル111に登録されている場合、ポート11は、当該パケットに対するフローテーブル111内のフローエントリに従い、当該パケットを処理する。また、フローテーブル111内に一致するパケットが登録されてない場合、ポート11は、当該パケットを、一旦コントローラ20に送信する。ポート11が未知のパケットを一旦コントローラ20に送信する旨は、フローテーブル111内にフローエントリとして予め登録しておいても良い。ここでは、ポート11は、フロントエンドプロセッサ(FEP)30からクエリ(Query)パケットを受信した場合、フローテーブル111を参照し、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル111に登録されているか確認する。当該クエリ(Query)パケットは最初のクエリ(1st Query)パケットであり、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル111に登録されていないため、ポート11は、当該クエリ(Query)パケットをコントローラ20に送信する。
 コントローラ20のロードバランサ(LB)23は、スイッチ10を介して、フロントエンドプロセッサ(FEP)30からクエリ(Query)パケットを受信した場合、当該クエリ(Query)パケットをファイアウォール(FW)22やロードバランサ(LB)23に送信して処理する。また、ロードバランサ(LB)23は、ファイアウォール(FW)22又はロードバランサ(LB)23での処理結果に応じて、ポート11のフローテーブル111と、ロードバランサ(LB)33のフローテーブル331と、ファイアウォール(FW)32のフローテーブル321に対して、当該クエリ(Query)パケットに該当するフローエントリを新たに登録する。例えば、ロードバランサ(LB)23は、各フローテーブルに当該クエリ(Query)パケットに該当するフローエントリを新たに登録する旨の制御命令を、スイッチ10やフロントエンドプロセッサ(FEP)30に送信する。この制御命令の例として、オープンフロープロトコルメッセージ(OpenFlow Protocol Message)の1つであり、コントローラからスイッチのフローテーブルにエントリを登録するための「FlowMod」メッセージ等が考えられる。なお、ロードバランサ(LB)23は、ファイアウォール(FW)32のフローテーブル321に対しては、直接的にフローエントリを登録するのではなく、ロードバランサ(LB)33を介して間接的にフローエントリを登録するようにしても良い。フローテーブル321とフローテーブル331が同一物であれば問題ない。更に、フロー登録の直後に(或いは同時に)、ロードバランサ(LB)23は、スイッチ10を介して、ロードバランサ(LB)23に当該クエリ(Query)パケットを返信する。
 フロントエンドプロセッサ(FEP)30のロードバランサ(LB)33は、スイッチ10を介して、コントローラ20からクエリ(Query)パケットを受信した場合、フローテーブル331を参照し、当該クエリ(Query)パケットに該当するフローエントリがフローテーブル331に登録されているか確認する。ここでは、コントローラ20のロードバランサ(LB)23により、当該クエリ(Query)パケットに該当するフローエントリが既にフローテーブル331に登録されているため、ロードバランサ(LB)33は、当該クエリ(Query)パケットをディスパッチャ31に送信する。このとき、当該クエリ(Query)パケットがファイアウォール(FW)32を経由するようにしても良い。
 ディスパッチャ31は、当該クエリ(Query)パケットに対して、適用ポリシー311に基づくポリシーチェックを行い、問題がなければ当該クエリ(Query)パケットを宛先に送信する。
 [クエリ(Query)パケットの経路1:FW機能とLB機能の個別処理]
 ファイアウォール機能(FW機能)とロードバランシング機能(LB機能)を個別に(並列処理で)使用する場合について説明する。この場合、ディスパッチャ31が、ファイアウォール(FW)32やロードバランサ(LB)23に対して、個別にクエリ(Query)パケットを送信し、それぞれから個別に結果を受け取る。そのため、クエリ(Query)パケットの経路は、「ディスパッチャ31→ファイアウォール(FW)32→ディスパッチャ31」と「ディスパッチャ31→ロードバランサ(LB)23(→コントローラ20→ロードバランサ(LB)33:不一致の場合)→ディスパッチャ31」の2系統となる。これら2系統の経路を通過する順番は、どちらが先でも良いし、同時でも良い。なお、ファイアウォール(FW)32がクエリ(Query)パケットを廃棄した場合は、「ファイアウォール(FW)32からの廃棄通知」、「ファイアウォール(FW)32から応答なし」等により、その旨をディスパッチャ31が把握し、それ以降の処理を行わない。
 [クエリ(Query)パケットの経路2:FW機能とLB機能の連続処理]
 ファイアウォール機能(FW機能)とロードバランシング機能(LB機能)を連続して(直列処理で)使用する場合について説明する。この場合、ディスパッチャ31が、ファイアウォール(FW)32及びロードバランサ(LB)23のいずれか一方に対してクエリ(Query)パケットを送信し、受信した側が処理後にクエリ(Query)パケットを他方(残りの一方)に対して送信し、その他方(残りの一方)が処理後にクエリ(Query)パケットをディスパッチャ31に送信する。そのため、クエリ(Query)パケットの経路は、「ディスパッチャ31→ファイアウォール(FW)32→ロードバランサ(LB)23(→コントローラ20→ロードバランサ(LB)23:不一致の場合)→ディスパッチャ31」、又は「ディスパッチャ31→ロードバランサ(LB)23(→コントローラ20→ロードバランサ(LB)23:不一致の場合)→ファイアウォール(FW)32→ディスパッチャ31」となる。
 [他の処理例:基本処理の変更]
 なお、上記では、ディスパッチャ31は、クエリ(Query)パケットを生成した後、クエリ(Query)パケットを、ファイアウォール(FW)32及びロードバランサ(LB)23に送信し、応答を受信してからポリシーチェックを行い、宛先に送信する例について説明している。しかし、実際には、ディスパッチャ31は、クエリ(Query)パケットを生成した後、直ちにポリシーチェックを行い、その後にクエリ(Query)パケットをファイアウォール(FW)32及びロードバランサ(LB)23に送信するようにしても良い。この場合、ファイアウォール(FW)32及びロードバランサ(LB)23のいずれかが、クエリ(Query)パケットを宛先に送信する。
 [ハードウェアの例示]
 スイッチ10の例として、ルータ(router)、スイッチングハブ(switching hub)、ゲートウェイ(gateway)、プロキシ(proxy)等の中継機器が考えられる。スイッチ10は、マルチレイヤスイッチ(multi-layer switch)でも良い。
 また、コントローラ20及びフロントエンドプロセッサ(FEP)30の例として、PC(パソコン)、アプライアンス(appliance)、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機が考えられる。
 スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30の各々は、通信機能を有する。通信機能を実現するためのハードウェアの例として、NIC(Network Interface Card)等のネットワークアダプタや、アンテナ等の通信装置、接続口(コネクタ)等の通信ポート等が考えられる。また、各々を接続するネットワークの例として、インターネット、LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)、バックボーン(Backbone)、ケーブルテレビ(CATV)回線、固定電話網、携帯電話網、WiMAX(IEEE 802.16a)、3G(3rd Generation)、専用線(lease line)、IrDA(Infrared Data Association)、Bluetooth(登録商標)、シリアル通信回線、データバス等が考えられる。
 なお、スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30の各々は、物理マシン上に構築された仮想マシン(Virtual Machine(VM))でも良い。
 ポート11、ファイアウォール(FW)12、ロードバランサ(LB)13、オペレーティングシステム(OS)21、ファイアウォール(FW)22、ロードバランサ(LB)23、ディスパッチャ31、ファイアウォール(FW)32、及びロードバランサ(LB)33の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリとによって実現される。
 上記のプロセッサの例として、CPU(Central Processing Unit)、マイクロプロセッサ(microprocessor)、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路(Integrated Circuit(IC))等が考えられる。
 上記のメモリの例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクや、SDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。
 なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30の各々に搭載される1チップマイコンが、プロセッサ及びメモリを備えている事例が考えられる。
 但し、実際には、これらの例に限定されない。
 <実施例>
 図4A~図7Cを参照して、様々な環境における本発明の実施例について説明する。
 ここでは、本発明のフロントエンドシステムは、スイッチ(コアSW)10-1と、スイッチ(内蔵SW)10-2と、スイッチ(エッジSW)10-3と、コントローラ20と、フロントエンドプロセッサ(FEP)30と、クライアント100と、サーバ200を備える。
 スイッチ(コアSW)10-1、スイッチ(内蔵SW)10-2、及びスイッチ(エッジSW)10-3の各々は、スイッチ10の一種である。スイッチ(コアSW)10-1、スイッチ(内蔵SW)10-2、並びにスイッチ(エッジSW)10-3の各々は、相互に接続されている。スイッチ(コアSW)10-1は、インターネット等の外部ネットワークを介してクライアント100と接続されている。スイッチ(内蔵SW)10-2は、コントローラ20及びフロントエンドプロセッサ(FEP)30に接続されている。スイッチ(エッジSW)10-3は、サーバ200と接続されている。このとき、スイッチ(コアSW)10-1、スイッチ(内蔵SW)10-2、及びスイッチ(エッジSW)10-3は、一体化していても良い。
 なお、フロントエンドプロセッサ(FEP)30を配置する位置は、外部ネットワークの出入口かつコントローラ20の近傍(できれば直近)が望ましい。但し、必須ではない。すなわち、フロントエンドプロセッサ(FEP)30は、可能な限りスイッチ(コアSW)10-1とコントローラ20の双方の近傍に配置するのが好適である。従って、コントローラ20とフロントエンドプロセッサ(FEP)30が一体化していると更に好適である。
 以下の説明において、FW(L4)は、ファイアウォール(FW)がL4(レイヤ4)レベルで稼動する環境を示す。LB(L4)は、ロードバランサ(LB)がL4(レイヤ4)レベルで稼動する環境を示す。FW(L7)は、ファイアウォール(FW)がL7(レイヤ7)レベルで稼動する環境を示す。LB(L7)は、ロードバランサ(LB)がL7(レイヤ7)レベルで稼動する環境を示す。
 ファイアウォール(FW)及びロードバランサ(LB)は、L4(レイヤ4)レベルでは通常のパケットに対する処理を行い、L7(レイヤ7)レベルではクエリ(Query)パケットに対する処理を行う。
 [実施例1:FW(L4)、LB(L4)の場合]
 図4A~図4Cを参照して、FW(L4)、LB(L4)の場合について説明する。
 ファイアウォール(FW)及びロードバランサ(LB)がいずれもL4(レイヤ4)レベルで稼動する場合、当該ファイアウォール(FW)及びロードバランサ(LB)は、スイッチ(コアSW)10-1上で稼動する。この場合、フロントエンドプロセッサ(FEP)へのパケット送信は不要である。
 (1)1stパケット
 スイッチ(コアSW)10-1は、ネットワークを介して、クライアント100からパケットを受信した際、当該パケットが1stパケットであれば、スイッチ(内蔵SW)10-2を介して、パケットをコントローラ20に転送する。当該パケットは、宛先アドレス(dst:Destination Address)が仮想IPアドレス(VIP:Virtual IP address)であり、送信元アドレス(src:Source Address)がクライアント100のIPアドレス(cl IP)である。
 (2)ルール作成
 コントローラ20は、スイッチ(コアSW)10-1からパケットを受信すると、ポリシーDB211を参照し、仮想IPアドレス(VIP)を基に、必要な処理(L7レベルの処理の必要性等)を決定し、フローテーブル111に書き込むため、当該パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル111に対して、当該パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ20は、スイッチ(内蔵SW)10-2を介してスイッチ(コアSW)10-1にパケットを返信する。
 (3)FW(L4)、LB(L4)
 スイッチ(コアSW)10-1は、コントローラ20からの制御命令に応じて、フローテーブル111を更新する。また、スイッチ(コアSW)10-1は、フローテーブル111の更新後に、コントローラ20から返信されたパケット、又は当該パケットと同一ルールのパケットを受信すると、ファイアウォール(FW)12及びロードバランサ(LB)13にパケットを送る。ファイアウォール(FW)12は、L4レベルのプロトコルを認識し、当該パケットのIPヘッダ、TCPヘッダを参照して、通過可否を判断する。ロードバランサ(LB)13は、L4レベルのプロトコルを認識し、仮想IPアドレス(VIP)に基づいて、実IPアドレス(サーバ200のIPアドレス)を決定する。このとき、ロードバランサ(LB)13は、負荷状況を見て、仮想IPアドレス(VIP)に対応する実IPアドレス(サーバ200のIPアドレス)を決定しても良い。
 (4)3WHS(対サーバ)
 スイッチ(コアSW)10-1は、パケットがファイアウォール(FW)12で破棄されず、ロードバランサ(LB)13でサーバ200宛に振り分けられた場合、スイッチ(エッジSW)10-3を介して、パケットをサーバ200へ送信する。このとき、スイッチ(コアSW)10-1とサーバ200は、3WHS(3-Way Hand Shake)の手順に従って、当該パケットを含めて、パケットの送受信を3回行い、接続(コネクション)を確立する。
 (5)データ通信
 その後、スイッチ(コアSW)10-1は、同一ルールのパケットを受信すると、スイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、パケットをサーバ200へ転送する。
 [実施例2:FW(L7)、LB(L7)の場合]
 図5A~図5Cを参照して、FW(L7)、LB(L7)の場合について説明する。
 ファイアウォール(FW)及びロードバランサ(LB)がいずれもL7(レイヤ7)レベルで稼動する場合、当該ファイアウォール(FW)及びロードバランサ(LB)は、コントローラ上で稼動する。この場合、フロントエンドプロセッサ(FEP)がTCPのセッションを終端する。また、フロントエンドプロセッサ(FEP)は、クライアント100側とサーバ200側の双方に接続(コネクション)を確立する。
 (1)1stパケット
 スイッチ(コアSW)10-1は、ネットワークを介して、クライアント100からパケットを受信した際、当該パケットが1stパケットであれば、スイッチ(内蔵SW)10-2を介して、当該パケットをコントローラ20に転送する。当該パケットは、宛先アドレス(dst)が仮想IPアドレス(VIP)であり、送信元アドレス(src)がクライアント100のIPアドレス(cl IP)である。
 (2)ルール作成
 コントローラ20は、スイッチ(コアSW)10-1からパケットを受信すると、ポリシーDB211を参照し、仮想IPアドレス(VIP)を基に、必要な処理(L7レベルの処理の必要性等)を決定し、フローテーブル111に書き込むため、当該パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル111に対して、当該パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ20は、スイッチ(内蔵SW)10-2を介してスイッチ(コアSW)10-1にパケットを返信する。
 (3)3WHS(対FEP)
 スイッチ(コアSW)10-1は、コントローラ20からの制御命令に応じて、フローテーブル111を更新する。また、スイッチ(コアSW)10-1は、スイッチ(内蔵SW)10-2を介して、返信されたパケットをフロントエンドプロセッサ(FEP)30へ転送する。以降、スイッチ(コアSW)10-1は、返信されたパケットと同一ルールのパケットを受信すると、返信されたパケットと同様に、スイッチ(内蔵SW)10-2を介して、パケットをフロントエンドプロセッサ(FEP)30へ転送する。このとき、スイッチ(コアSW)10-1とフロントエンドプロセッサ(FEP)30は、3WHS(3-Way Hand Shake)の手順に従って、パケットの送受信を3回行い、接続(コネクション)を確立する。
 (4)データ転送
 フロントエンドプロセッサ(FEP)30は、クライアント100とフロントエンドプロセッサ(FEP)30間の接続(コネクション)が確立した後に、TCPのセッションを終端し、パケットを受信する。
 (5)クエリ(Query)パケット生成
 フロントエンドプロセッサ(FEP)30は、受信したパケットからクエリ(Query)パケットを生成する。このとき、フロントエンドプロセッサ(FEP)30は、生成されたクエリ(Query)パケットが最初のクエリ(1st Query)パケットである場合、当該クエリ(Query)パケットをコントローラ20に送信する。
 (6)FW(L7)、LB(L7)
 コントローラ20は、クエリ(Query)パケットを受信すると、当該クエリ(Query)パケットをファイアウォール(FW)22及びロードバランサ(LB)23に送る。ファイアウォール(FW)22は、L7レベルのプロトコルを認識し、当該クエリ(Query)パケットのIPヘッダ、TCPヘッダを参照して、通過可否を判断する。ロードバランサ(LB)23は、L7レベルのプロトコルを認識し、仮想IPアドレス(VIP)に基づいて、実IPアドレス(サーバ200のIPアドレス)を決定する。このとき、ロードバランサ(LB)23は、負荷状況を見て、仮想IPアドレス(VIP)に対応する実IPアドレス(サーバ200のIPアドレス)を決定しても良い。
 (7)最初のクエリ(1st Query)パケット設定登録
 コントローラ20は、クエリ(Query)パケットがファイアウォール(FW)22で破棄されず、ロードバランサ(LB)23で仮想IPアドレス(VIP)に対応する宛先であるサーバ200宛に振り分けられた場合、クエリ(Query)パケットをフロントエンドプロセッサ(FEP)30へ返信する。このとき、コントローラ20は、フローテーブル321及びフローテーブル321に書き込むため、当該クエリ(Query)パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル321及びフローテーブル331に対して、当該クエリ(Query)パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ(FEP)30は、コントローラ20からの制御命令に応じて、フローテーブル321及びフローテーブル331を更新する。
 (8)3WHS(対サーバ)
 また、フロントエンドプロセッサ(FEP)30は、返信されたクエリ(Query)パケットをスイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、クエリ(Query)パケットをサーバ200へ送信する。このとき、フロントエンドプロセッサ(FEP)30とサーバ200は、3WHS(3-Way Hand Shake)の手順に従って、クエリ(Query)パケットの送受信を3回行い、接続(コネクション)を確立する。
 (9)データ転送
 その後、フロントエンドプロセッサ(FEP)30は、同一ルールのクエリ(Query)パケットを生成すると、スイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、当該クエリ(Query)パケットをサーバ200へ転送する。
 [実施例3:FW(L7)、LB(L4)の場合]
 図6A~図6Cを参照して、FW(L7)、LB(L4)の場合について説明する。
 ファイアウォール(FW)がL7(レイヤ7)レベルで稼動し、ロードバランサ(LB)がL4(レイヤ4)レベルで稼動する場合、当該ファイアウォール(FW)は、コントローラ上で稼動し、このロードバランサ(LB)は、スイッチ(コアSW)10-1上で稼動する。この場合、フロントエンドプロセッサ(FEP)ではTCPのセッションを終端しない。また、クライアント100とサーバ200間で接続(コネクション)が確立されるが、パケットはフロントエンドプロセッサ(FEP)を経由する。
 (1)1stパケット
 スイッチ(コアSW)10-1は、ネットワークを介して、クライアント100からパケットを受信した際、当該パケットが1stパケットであれば、スイッチ(内蔵SW)10-2を介して、当該パケットをコントローラ20に転送する。当該パケットは、宛先アドレス(dst)が仮想IPアドレス(VIP)であり、送信元アドレス(src)がクライアント100のIPアドレス(cl IP)である。
 (2)ルール作成
 コントローラ20は、スイッチ(コアSW)10-1からパケットを受信すると、ポリシーDB211を参照し、仮想IPアドレス(VIP)を基に、必要な処理(L7レベルの処理の必要性等)を決定し、フローテーブル111に書き込むため、当該パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル111に対して、当該パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ20は、スイッチ(内蔵SW)10-2を介してスイッチ(コアSW)10-1にパケットを返信する。
 (3)LB(L4)
 スイッチ(コアSW)10-1は、コントローラ20からの制御命令に応じて、フローテーブル111を更新する。また、スイッチ(コアSW)10-1は、フローテーブル111の更新後に、コントローラ20から返信されたパケット、又は当該パケットと同一ルールのパケットを受信すると、ロードバランサ(LB)13にパケットを送る。ロードバランサ(LB)13は、L4レベルのプロトコルを認識し、仮想IPアドレス(VIP)に基づいて、実IPアドレス(サーバ200のIPアドレス)を決定し、パケットの経路をフロントエンドプロセッサ(FEP)30経由に切り替える。例えば、LB(L4)の場合、ユーザ設定により指定されたアルゴリズム(ラウンドロビン、最小応答時間、等)に基づき、分散対象のサーバ(複数あるうちの1つ)を決定し、クライアント-FEP間、及びFEP-サーバ間のパス(フローエントリ)を設定する。このとき、ロードバランサ(LB)13は、負荷状況を見て、仮想IPアドレス(VIP)に対応する実IPアドレス(サーバ200のIPアドレス)を決定しても良い。
 (4)3WHS(対サーバ)
 スイッチ(コアSW)10-1は、スイッチ(内蔵SW)10-2、フロントエンドプロセッサ(FEP)30、及びスイッチ(エッジSW)10-3を介して、当該パケットをサーバ200へ送信し、サーバ200からの応答をクライアント100へ送信する。また、スイッチ(コアSW)10-1は、スイッチ(内蔵SW)10-2、フロントエンドプロセッサ(FEP)30、及びスイッチ(エッジSW)10-3を介して、同一ルールのパケットをサーバ200へ転送する。このとき、スイッチ(コアSW)10-1は、3WHS(3-Way Hand Shake)の手順に従ってパケットを中継し、1stパケットを含めて、クライアント100とサーバ200間のパケットの送受信が3回行い、クライアント100とサーバ200間の接続(コネクション)を確立する。
 (5)データ転送
 フロントエンドプロセッサ(FEP)30は、クライアント100とサーバ200間の接続(コネクション)を確立した場合、フロントエンドプロセッサ(FEP)30を経由するパケットを受信する。
 (6)クエリ(Query)パケット生成
 フロントエンドプロセッサ(FEP)30は、受信したパケットからクエリ(Query)パケットを生成する。このとき、フロントエンドプロセッサ(FEP)30は、生成されたクエリ(Query)パケットが最初のクエリ(1st Query)パケットである場合、当該クエリ(Query)パケットをコントローラ20に送信する。
 (7)FW(L7)
 コントローラ20は、クエリ(Query)パケットを受信すると、当該クエリ(Query)パケットをファイアウォール(FW)22に送る。ファイアウォール(FW)22は、L7レベルのプロトコルを認識し、当該クエリ(Query)パケットのIPヘッダ、TCPヘッダを参照して、通過可否を判断する。
 (8)最初のクエリ(1st Query)パケット設定登録
 コントローラ20は、当該クエリ(Query)パケットがファイアウォール(FW)22で破棄されなかった場合、当該クエリ(Query)パケットをフロントエンドプロセッサ(FEP)30へ返信する。このとき、コントローラ20は、フローテーブル321及びフローテーブル321に書き込むため、当該クエリ(Query)パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル321及びフローテーブル331に対して、当該クエリ(Query)パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ(FEP)30は、コントローラ20からの制御命令に応じて、フローテーブル321及びフローテーブル331を更新する。
 (9)データ通信
 また、フロントエンドプロセッサ(FEP)30は、コントローラ20から返信されたクエリ(Query)パケット及び同一ルールのクエリ(Query)パケットを、スイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、サーバ200へ送信する。なお、サーバ200からの応答は、フロントエンドプロセッサ(FEP)30を経由しなくても良い。
 [実施例4:FW(L4)、LB(L7)の場合]
 図7A~図7Cを参照して、FW(L4)、LB(L7)の場合について説明する。
 ファイアウォール(FW)がL4(レイヤ4)レベルで稼動し、ロードバランサ(LB)がL7(レイヤ7)レベルで稼動する場合、当該ファイアウォール(FW)及びロードバランサ(LB)は、コントローラ上で稼動する。この場合、フロントエンドプロセッサ(FEP)がTCPのセッションを終端する。また、フロントエンドプロセッサ(FEP)は、クライアント100側とサーバ200側の双方に接続(コネクション)を確立する。なお、実際には、ファイアウォール(FW)は、スイッチ(コアSW)10-1上で稼動しても良い。この場合の動作は、実施例1におけるファイアウォール(FW)の動作と同じである。
 (1)1stパケット
 スイッチ(コアSW)10-1は、ネットワークを介して、クライアント100からパケットを受信した際、当該パケットが1stパケットであれば、スイッチ(内蔵SW)10-2を介して、当該パケットをコントローラ20に転送する。当該パケットは、宛先アドレス(dst)が仮想IPアドレス(VIP)であり、送信元アドレス(src)がクライアント100のIPアドレス(cl IP)である。
 (2)FW(L4)
 コントローラ20は、スイッチ(コアSW)10-1からパケットを受信すると、当該パケットをファイアウォール(FW)22に送る。ファイアウォール(FW)22は、L4レベルのプロトコルを認識し、当該パケットのIPヘッダ、TCPヘッダを参照して、通過可否を判断する。
 (3)ルール作成
 コントローラ20は、当該パケットがファイアウォール(FW)22で破棄されなかった場合、ポリシーDB211を参照し、仮想IPアドレス(VIP)を基に、必要な処理(L7レベルの処理の必要性等)を決定し、フローテーブル111に書き込むため、当該パケットに該当するフローエントリを作成する。コントローラ20は、フローテーブル111に対して、当該パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。その後、又は同時に、コントローラ20は、スイッチ(内蔵SW)10-2を介してスイッチ(コアSW)10-1にパケットを返信する。また、コントローラ20は、当該パケットがファイアウォール(FW)22で破棄された場合、フローテーブル111に対して、当該パケットと同一ルールのパケットを破棄するためのフローエントリを新たに登録する旨の制御命令を送信する。なお、フローテーブル111に対して、1stパケットと同一ルールのパケットを破棄するためのフローエントリを登録した場合、スイッチ(コアSW)10-1は、以降の同一ルールのパケットを転送せずに全て廃棄する。すなわち、これ以降の処理を行わない。
 (4)3WHS(対FEP)
 スイッチ(コアSW)10-1は、コントローラ20からの制御命令に応じて、フローテーブル111を更新する。その後、スイッチ(コアSW)10-1は、スイッチ(内蔵SW)10-2及びコントローラ20を介して、返信されたパケットをフロントエンドプロセッサ(FEP)30へ転送し、フロントエンドプロセッサ(FEP)30からの応答をクライアント100に送信する。また、スイッチ(コアSW)10-1は、同一ルールのパケットを受信すると、同様に、スイッチ(内蔵SW)10-2を介して、フロントエンドプロセッサ(FEP)30へ転送する。このとき、スイッチ(コアSW)10-1とフロントエンドプロセッサ(FEP)30は、3WHS(3-Way Hand Shake)の手順に従って、パケットの送受信を3回行い、接続(コネクション)を確立する。
 (5)データ転送
 フロントエンドプロセッサ(FEP)30は、クライアント100とフロントエンドプロセッサ(FEP)30間の接続(コネクション)が確立した後に、TCPのセッションを終端し、パケットを受信する。
 (6)クエリ(Query)パケット生成
 フロントエンドプロセッサ(FEP)30は、受信したパケットからクエリ(Query)パケットを生成し、クエリ(Query)パケットをコントローラ20に送信する。
 (7)LB(L7)
 コントローラ20は、クエリ(Query)パケットを受信すると、当該クエリ(Query)パケットをロードバランサ(LB)23に送る。ロードバランサ(LB)23は、L7レベルのプロトコルを認識し、仮想IPアドレス(VIP)に基づいて、実IPアドレス(サーバ200のIPアドレス)を決定する。このとき、ロードバランサ(LB)23は、負荷状況を見て、仮想IPアドレス(VIP)に対応する実IPアドレス(サーバ200のIPアドレス)を決定しても良い。コントローラ20は、クエリ(Query)パケットがロードバランサ(LB)で仮想IPアドレス(VIP)に対応する宛先であるサーバ200宛に振り分けられた場合、当該クエリ(Query)パケットをフロントエンドプロセッサ(FEP)30へ返信する。
 (8)最初のクエリ(1st Query)パケット設定登録
 このとき、コントローラ20は、フローテーブル321及びフローテーブル321に書き込むため、当該クエリ(Query)パケットに該当するフローエントリを作成する。そして、コントローラ20は、フローテーブル321及びフローテーブル331に対して、当該クエリ(Query)パケットに該当するフローエントリを新たに登録する旨の制御命令を送信する。フロントエンドプロセッサ(FEP)30は、コントローラ20からの制御命令に応じて、フローテーブル321及びフローテーブル331を更新する。
 (9)3WHS(対サーバ)
 また、フロントエンドプロセッサ(FEP)30は、返信されたクエリ(Query)パケットをフローテーブルに登録した後、返信されたクエリ(Query)パケットを、スイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、サーバ200へ送信する。このとき、フロントエンドプロセッサ(FEP)30とサーバ200は、3WHS(3-Way Hand Shake)の手順に従って、クエリ(Query)パケットの送受信を3回行い、接続(コネクション)を確立する。
 (10)データ転送
 その後、フロントエンドプロセッサ(FEP)30は、同一ルールのクエリ(Query)パケットを生成すると、スイッチ(内蔵SW)10-2とスイッチ(エッジSW)10-3を介して、当該クエリ(Query)パケットをサーバ200へ転送する。
 [FW機能とLB機能の組み合わせ]
 図8を参照して、ファイアウォール(FW)機能とロードバランサ(LB)機能の組み合わせについて説明する。
 適用ポリシーにおいて、ファイアウォール(FW)、又はロードバランサ(LB)、或いはその両方をL4(レイヤ4)レベルで稼動させる場合、スイッチ10上で処理可能である。
 ロードバランサ(LB)をL7(レイヤ7)レベルで稼動させる場合、フロントエンドプロセッサ(FEP)でTCPのセッションを終端するようにする。クエリ(Query)パケットを生成し、クエリ(Query)パケットに対するロードバランシングを行うためである。
 上記以外で、ファイアウォール(FW)をL7(レイヤ7)レベルで稼動させる場合、パケットがフロントエンドプロセッサ(FEP)を経由するようにする。クエリ(Query)パケットを生成する必要があるためである。このとき、ロードバランサ(LB)をL4(レイヤ4)レベルで稼動させる場合、ロードバランサ(LB)機能はスイッチ10上で処理可能である。
 なお、コントローラ20は、スイッチ10上での処理を肩代わりすることができる。
 <データのイメージ>
 以下に、本発明で使用されるデータのイメージについて説明する。
 [ポリシーDB:トポロジー情報のイメージ]
 図9は、ポリシーDB211に格納されるトポロジー情報のイメージである。
 トポロジー情報は、宛先アドレスと、プロトコルと、ポート番号と、各種アプリケーション情報を有する。
 宛先アドレスは、送信先(宛先)のIPアドレスである。プロトコルは、「http」、「https」、「FTP」等のプロトコルの分類を示す情報である。ポート番号は、「80」、「443」等のIPアドレスの下に設けられたサブ(補助)アドレスである。各種アプリケーション情報は、ファイアウォール(FW)機能やロードバランサ(LB)機能、及びこれらが稼動する階層(レイヤ)がL4(レイヤ4)レベルかL7(レイヤ7)レベルを示す情報である。
 コントローラ20のオペレーティングシステム(OS)21は、パケットを受信した際、ポリシーDB211を参照して、適切な階層の、適切なファイアウォール(FW)機能やロードバランサ(LB)機能に通知する。
 [フローテーブルのイメージ]
 図10は、フローテーブル111、フローテーブル321、及びフローテーブル331等のフローテーブルのイメージである。
 フローテーブルは、処理フラグと、(1)送信元IPと、(2)送信元Portと、(3)宛先IPと、(4)宛先Portと、(5)ペイロードと、(6)アクションを有する。
 (1)送信元IP~(5)ペイロードは、フローのルールとして使用される項目である。
 処理フラグは、フローのルールとして、(1)送信元IP~(5)ペイロードのいずれを参照するかを示すフラグである。すなわち、処理フラグに設定された項目が、フローのルールとして採用される。
 (1)送信元IP、(2)送信元Port、(3)宛先IP、及び(4)宛先Portについては、説明を省略する。
 (5)ペイロードは、受信したデータのユーサーデータ部に該当する。例えば、(5)ペイロードには、「URL(Uniform Resource Locator)」、「Cookie情報」、「スクリプト」等の各情報の一部又は全部が格納される。
 (6)アクションは、処理フラグに設定された項目(処理フラグの条件)を全て満足した場合に、受信したパケットに対して行う処理を示す。例えば、(6)アクションには、「通過」、「廃棄」等の処理が設定される。
 スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30は、処理フラグに設定された項目(処理フラグの条件)について、受信したパケットのヘッダ情報の該当フィールドを参照し、フローテーブルに登録された情報とマッチ(一致)すれば、当該処理フラグに対応する(6)アクションに設定された処理を実行する。
 最上位の処理として、スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30は、(1)送信元IP~(5)ペイロードの全てにマッチした場合、パケットの通過を許可する。
 最下位の処理として、スイッチ10、コントローラ20、及びフロントエンドプロセッサ(FEP)30は、(1)送信元IP~(5)ペイロードのいずれにもマッチしなかった場合、無条件にパケットを破棄する。
 [クエリ(Query)パケットのイメージ]
 図11は、クエリ(Query)パケットのイメージである。
 実際の伝送イメージとして、通常のパケットは、IPヘッダと、TCPヘッダと、ペイロードを有する。現在のネットワークシステムでは、長大なデータは、所定のデータ長で複数のパケットに分割されて送信される。ペイロードには、所定のデータ長に分割されたデータが格納されている。すなわち、分割されたデータの数だけパケットが存在する。これらのパケット群のペイロードに格納されたデータ全体で1メッセージとなる。また、これらのパケット群に属するパケットは、送信元や宛先が同じため、IPヘッダやTCPヘッダに格納されている情報は、全て同じとなる。
 クエリ(Query)パケットは、IP情報と、TCP情報と、ペイロードを有する。IP情報及びTCP情報には、通常のパケットのIPヘッダやTCPヘッダから、IPアドレスやポート番号等の必要な情報のみを抽出したものが格納される。また、ペイロードには、分割されたデータから復元される1メッセージのうち、必要な情報のみを抽出したものが格納される。例えば、Webアクセスにおいて、URLは、情報の種類やサーバ名、ポート番号、フォルダ名、ファイル名、Cookie情報等で構成されており、通常のパケットには、URLが、所定のデータ長に分割されて格納される。URLのうちCookie情報のみが必要である場合、クエリ(Query)パケットのペイロードには、パケット群から一旦復元されたURLのうち、Cookie情報のみが抽出されて格納される。
 <ロードバランシングのイメージ>
 以下に、本発明で実施されるロードバランシングのイメージについて説明する。
 [FEP-FEP間のロードバランシング]
 図12は、FEP-FEP間のロードバランシングのイメージである。
 ここでは、3つのフロントエンドプロセッサ(FEP)を示す。個々のフロントエンドプロセッサ(FEP)は、ディスパッチャロードバランサ(ディスパッチャLB)と、ディスパッチャと、ファイアウォール(FW)と、ロードバランサ(LB)を備える。但し、実際には、これらの例に限定されない。
 ディスパッチャロードバランサ(ディスパッチャLB)は、各FEPのディスパッチャの負荷状況を見て、ロードバランシングを行い、適切なFEPのディスパッチャに処理を割り当てる。ディスパッチャロードバランサ(ディスパッチャLB)は、自FEP又は他のFEPのロードバランサ(LB)でも良い。なお、図12では、フロントエンドプロセッサ(FEP)がディスパッチャロードバランサ(ディスパッチャLB)を備えているが、実際には、ディスパッチャロードバランサ(ディスパッチャLB)は、図3に示すスイッチ10のロードバランサ(LB)13や、コントローラ20のロードバランサ(LB)23でも良い。
 ディスパッチャ、ファイアウォール(FW)、及びロードバランサ(LB)は、それぞれ図3に示すディスパッチャ31、ファイアウォール(FW)32、及びロードバランサ(LB)33と同じである。
 ディスパッチャは、各FEPのファイアウォール(FW)やロードバランサ(LB)の負荷状況を見て、ロードバランシングを行い、適切なFEPのファイアウォール(FW)やロードバランサ(LB)に処理を割り当てる。
 なお、ディスパッチャは、ファイアウォール(FW)やロードバランサ(LB)単位ではなく、各FEPのハードウェア単位で負荷状況を見て、比較的負荷の低いFEPに、ファイアウォール(FW)やロードバランサ(LB)等の必要な機能モジュールを立ち上げる。
 [コントローラ-FEP間のロードバランシング]
 なお、上記の実施形態や各実施例において、コントローラ20に最初のクエリ(1st Query)パケットを送信したフロントエンドプロセッサ(FEP)30と、コントローラ20から応答を受信するフロントエンドプロセッサ(FEP)30は、必ずしも同一物とは限らない。コントローラ20のロードバランサ(LB)23により、以降使用されるFEPとして、送信元のFEPとは異なるFEPが選ばれる可能性もあるからである。
 <追記>
 以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
 なお、本出願は、日本出願番号2010-017960に基づく優先権を主張するものであり、日本出願番号2010-017960における開示内容は引用により本出願に組み込まれる。

Claims (16)

  1.  パケットを中継するスイッチと、
     前記スイッチを制御して通信新経路を決定するコントローラと、
     前記スイッチを介して前記コントローラと接続するフロントエンドプロセッサと
    を具備し、
     前記フロントエンドプロセッサは、
     前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ7レベルのプロトコルに対応したクエリパケットを生成し、前記クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、前記クエリパケットを宛先に送信するディスパッチャと、
     レイヤ7レベルのプロトコルを認識し、前記クエリパケットの通過の許否を決定するファイアウォールと、
     レイヤ7レベルのプロトコルを認識し、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行い、前記クエリパケットが最初のクエリパケットである場合、前記スイッチを介して前記クエリパケットを前記コントローラに送信し、前記クエリパケットの経路を確認するロードバランサと
    を具備する
     フロントエンドシステム。
  2.  請求項1に記載のフロントエンドシステムであって、
     前記ディスパッチャは、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサ上で前記ファイアウォール及び前記ロードバランサを立ち上げる処理を行い、前記ファイアウォール及び前記ロードバランサに対して前記クエリパケットを送信する
     フロントエンドシステム。
  3.  請求項1又は2に記載のフロントエンドシステムであって、
     前記コントローラは、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサに対して前記クエリパケットを返信する
     フロントエンドシステム。
  4.  請求項1乃至3のいずれか一項に記載のフロントエンドシステムであって、
     前記スイッチは、
     前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送するポートと、
     レイヤ4レベルのプロトコルを認識し、前記パケットの通過の許否を決定するL4ファイアウォールと、
     レイヤ4レベルのプロトコルを認識し、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うL4ロードバランサと
    を具備し、
     前記スイッチは、前記L4ファイアウォール及び前記L4ロードバランサを共に稼動させて、前記パケットの通過の許否を決定し、前記パケットのロードバランシングを行い、前記フロントエンドプロセッサへの前記パケットの転送を行わず、前記フロントエンドプロセッサでの処理を不要とする
     フロントエンドシステム。
  5.  請求項1乃至3のいずれか一項に記載のフロントエンドシステムであって、
     前記フロントエンドプロセッサは、前記スイッチを経由するTCP(Transmission Control Protocol)のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信し、
     前記コントローラは、
     前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するOSと、
     レイヤ7レベルのプロトコルを認識し、前記クエリパケットの通過の許否を決定するL7ファイアウォールと、
     レイヤ7レベルのプロトコルを認識し、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行うL7ロードバランサと
    を具備する
     フロントエンドシステム。
  6.  請求項1乃至3のいずれか一項に記載のフロントエンドシステムであって、
     前記スイッチは、
     前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送するポートと、
     レイヤ4レベルのプロトコルを認識し、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うL4ロードバランサと
    を具備し、
     前記コントローラは、
     前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するOSと、
     レイヤ7レベルのプロトコルを認識し、前記クエリパケットの通過の許否を決定するL7ファイアウォールと
    を具備し、
     前記スイッチは、前記L4ロードバランサを稼動させて、前記パケットの経路を前記フロントエンドプロセッサ経由に変更し、前記パケットを前記フロントエンドプロセッサに送信し、
     前記コントローラは、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記L7ファイアウォールを稼動させて、前記クエリパケットの通過の許否を決定する
     フロントエンドシステム。
  7.  請求項1乃至3のいずれか一項に記載のフロントエンドシステムであって、
     前記コントローラは、
     レイヤ4レベルのプロトコルを認識し、前記スイッチから前記パケットを受信し、前記パケットの通過の許否を決定し、前記パケットの通過を制限する場合、前記パケットを廃棄し、前記スイッチに対し、前記パケットと同一ルールのパケットを廃棄する旨を通知するL4ファイアウォールと、
     ネットワーク全体のトポロジー情報を参照し、前記L4ファイアウォールから前記パケットを受信し、前記スイッチから前記パケットを受信し、前記パケットに対するルール及びアクションを決定し、前記スイッチに通知するOSと、
     レイヤ7レベルのプロトコルを認識し、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記クエリパケットのロードバランシングを行うL7ロードバランサと
    を具備し、
     前記フロントエンドプロセッサは、前記スイッチを経由するTCP(Transmission Control Protocol)のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信する
     フロントエンドシステム。
  8.  請求項1乃至3のいずれか一項に記載のフロントエンドシステムで、スイッチ、コントローラ、及びフロントエンドプロセッサのうち少なくとも1つとして使用される計算機。
  9.  フロントエンドプロセッサを、パケットを中継するスイッチを介して、前記スイッチを制御して通信新経路を決定するコントローラと接続することと、
     前記フロントエンドプロセッサ上で、ディスパッチャにより、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出してレイヤ7レベルのプロトコルに対応したクエリパケットを生成することと、
     前記フロントエンドプロセッサ上で、レイヤ7レベルのプロトコルを認識するファイアウォールにより、前記クエリパケットの通過の許否を決定することと、
     前記フロントエンドプロセッサ上で、レイヤ7レベルのプロトコルを認識するロードバランサにより、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行い、前記クエリパケットが最初のクエリパケットである場合、前記スイッチを介して前記クエリパケットを前記コントローラに送信し、前記クエリパケットの経路を確認することと、
     前記フロントエンドプロセッサ上で、前記ディスパッチャにより、前記クエリパケットに対して適用ポリシーに基づくポリシーチェックを行い、前記クエリパケットを宛先に送信することと、
    を含む
     フロントエンド処理方法。
  10.  請求項9に記載のフロントエンド処理方法であって、
     前記フロントエンドプロセッサ上で、前記ディスパッチャにより、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサ上で前記ファイアウォール及び前記ロードバランサを立ち上げる処理を行い、前記ファイアウォール及び前記ロードバランサに対して前記クエリパケットを送信すること
    を更に含む
     フロントエンド処理方法。
  11.  請求項9又は10に記載のフロントエンド処理方法であって、
     前記コントローラ上で、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記フロントエンドプロセッサを含む複数のフロントエンドプロセッサの各々のハードウェア単位の負荷状況を見て、最適なフロントエンドプロセッサに対して前記クエリパケットを返信すること
    を更に含む
     フロントエンド処理方法。
  12.  請求項9乃至11のいずれか一項に記載のフロントエンド処理方法であって、
     前記スイッチ上で、前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送することと、
     前記スイッチ上で、レイヤ4レベルのプロトコルを認識するL4ファイアウォールにより、前記パケットの通過の許否を決定することと、
     レイヤ4レベルのプロトコルを認識するL4ロードバランサにより、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うことと、
     前記スイッチ上で、前記L4ファイアウォール及び前記L4ロードバランサを共に稼動させて、前記パケットの通過の許否を決定し、前記パケットのロードバランシングを行い、前記フロントエンドプロセッサへの前記パケットの転送を行わず、前記フロントエンドプロセッサでの処理を不要とすることと
    を更に含む
     フロントエンド処理方法。
  13.  請求項9乃至11のいずれか一項に記載のフロントエンド処理方法であって、
     前記コントローラ上で、OSにより、前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
     前記フロントエンドプロセッサ上で、前記スイッチを経由するTCP(Transmission Control Protocol)のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信することと、
     前記コントローラ上で、レイヤ7レベルのプロトコルを認識するL7ファイアウォールにより、前記クエリパケットの通過の許否を決定することと、
     前記コントローラ上で、レイヤ7レベルのプロトコルを認識するL7ロードバランサにより、ネットワークの負荷状況に応じて前記クエリパケットのロードバランシングを行うことと
    を具備する
     フロントエンド処理方法。
  14.  請求項9乃至11のいずれか一項に記載のフロントエンド処理方法であって、
     前記スイッチ上で、前記パケットが最初のパケットである場合、前記パケットを前記コントローラに送信し、前記パケットに対するルール及びアクションを確認し、前記パケットに対するルール及びアクションに応じて前記パケットを転送することと、
     前記コントローラ上で、OSにより、前記スイッチから前記パケットを受信し、ネットワーク全体のトポロジー情報を参照して前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
     前記スイッチ上で、レイヤ4レベルのプロトコルを認識するL4ロードバランサにより、ネットワークの負荷状況に応じて前記パケットのロードバランシングを行うことと、
     前記スイッチ上で、前記L4ロードバランサを稼動させて、前記パケットの経路を前記フロントエンドプロセッサ経由に変更し、前記パケットを前記フロントエンドプロセッサに送信することと、
     前記コントローラ上で、前記フロントエンドプロセッサから前記クエリパケットを受信することと、
     前記コントローラ上で、レイヤ7レベルのプロトコルを認識するL7ファイアウォールにより、前記クエリパケットの通過の許否を決定することと
    を更に含む
     フロントエンド処理方法。
  15.  請求項9乃至11のいずれか一項に記載のフロントエンド処理方法であって、
     前記コントローラ上で、レイヤ4レベルのプロトコルを認識するL4ファイアウォールにより、前記スイッチから前記パケットを受信し、前記パケットの通過の許否を決定し、前記パケットの通過を制限する場合、前記パケットを廃棄し、前記スイッチに対し、前記パケットと同一ルールのパケットを廃棄する旨を通知することと、
     前記コントローラ上で、OSにより、ネットワーク全体のトポロジー情報を参照し、前記L4ファイアウォールから前記パケットを受信し、前記スイッチから前記パケットを受信し、前記パケットに対するルール及びアクションを決定し、前記スイッチに通知することと、
     前記フロントエンドプロセッサ上で、前記スイッチを経由するTCP(Transmission Control Protocol)のセッションを終端し、前記パケットを収集し、収集されたパケット群から必要な情報のみを抽出して前記クエリパケットを生成し、前記クエリパケットを前記コントローラに送信することと、
     前記コントローラ上で、レイヤ7レベルのプロトコルを認識するL7ロードバランサにより、前記フロントエンドプロセッサから前記クエリパケットを受信し、前記クエリパケットのロードバランシングを行うことと
    を更に含む
     フロントエンド処理方法。
  16.  請求項9乃至11のいずれか一項に記載のフロントエンド処理方法を、スイッチ、コントローラ、及びフロントエンドプロセッサのうち少なくとも1つとして使用される計算機に実行させるためのプログラムを記憶した記憶媒体。
PCT/JP2011/051135 2010-01-29 2011-01-21 フロントエンドシステム、フロントエンド処理方法 WO2011093228A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP11736941A EP2530886A1 (en) 2010-01-29 2011-01-21 Front end system and front end processing method
CN201180007734.7A CN102763382B (zh) 2010-01-29 2011-01-21 前端系统和前端处理方法
US13/575,919 US8863269B2 (en) 2010-01-29 2011-01-21 Frontend system and frontend processing method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010017960A JP5382451B2 (ja) 2010-01-29 2010-01-29 フロントエンドシステム、フロントエンド処理方法
JP2010-017960 2010-01-29

Publications (1)

Publication Number Publication Date
WO2011093228A1 true WO2011093228A1 (ja) 2011-08-04

Family

ID=44319216

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/051135 WO2011093228A1 (ja) 2010-01-29 2011-01-21 フロントエンドシステム、フロントエンド処理方法

Country Status (5)

Country Link
US (1) US8863269B2 (ja)
EP (1) EP2530886A1 (ja)
JP (1) JP5382451B2 (ja)
CN (1) CN102763382B (ja)
WO (1) WO2011093228A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104205749A (zh) * 2012-03-28 2014-12-10 日本电气株式会社 通信系统、上层交换机、控制装置、交换机控制方法以及程序
JP2018050306A (ja) * 2011-08-17 2018-03-29 ニシラ, インコーポレイテッド 分散論理l3ルーティング

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996614B2 (en) * 2011-02-09 2015-03-31 Citrix Systems, Inc. Systems and methods for nTier cache redirection
CN103828313B (zh) * 2011-09-27 2017-05-24 日本电气株式会社 网络系统、前端单元和控制消息传输速率降低方法
JP5892237B2 (ja) 2012-03-28 2016-03-23 日本電気株式会社 通信システム、通信装置、制御装置、通信装置の制御方法及びプログラム
US9178715B2 (en) 2012-10-01 2015-11-03 International Business Machines Corporation Providing services to virtual overlay network traffic
CN103051557B (zh) * 2012-12-27 2016-07-06 华为技术有限公司 数据流处理方法及系统、控制器、交换设备
WO2014107860A1 (zh) * 2013-01-10 2014-07-17 北京华为数字技术有限公司 报文处理方法、装置及系统
CN104348819A (zh) * 2013-08-07 2015-02-11 上海宽带技术及应用工程研究中心 一种软件定义网络中的防火墙系统及其实现方法
CN104639504B (zh) 2013-11-12 2018-09-21 华为技术有限公司 网络协同防御方法、装置和系统
CN104734988B (zh) * 2013-12-23 2018-10-30 杭州华为数字技术有限公司 软件定义网络中路由控制的方法和开放流控制器
WO2016082167A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 业务处理装置及方法
WO2016086955A1 (en) * 2014-12-01 2016-06-09 Nokia Solutions And Networks Oy Methods and computing devices to regulate packets in a software defined network
US10880198B2 (en) * 2015-05-08 2020-12-29 Qualcomm Incorporated Aggregating targeted and exploration queries
CN107113244B (zh) * 2015-06-27 2020-11-17 华为技术有限公司 一种数据转发的方法、装置和系统
JP6503988B2 (ja) * 2015-09-02 2019-04-24 富士通株式会社 セッション制御方法およびセッション制御プログラム
NO20160593A1 (en) 2016-04-12 2017-10-13 Pexip AS Improvements in multimedia conferencing
US10038671B2 (en) * 2016-12-31 2018-07-31 Fortinet, Inc. Facilitating enforcement of security policies by and on behalf of a perimeter network security device by providing enhanced visibility into interior traffic flows
US10581962B2 (en) * 2017-11-01 2020-03-03 Alibaba Group Holding Limited Direct communication between physical server and storage service
JP6977621B2 (ja) * 2018-03-02 2021-12-08 日本電信電話株式会社 制御装置、及び制御方法
CN108989352B (zh) * 2018-09-03 2022-11-11 平安科技(深圳)有限公司 防火墙实现方法、装置、计算机设备及存储介质
CN110661904B (zh) * 2019-10-25 2022-06-14 浪潮云信息技术股份公司 一种实现源网络地址转换网关水平扩展的方法
CN110868278B (zh) * 2019-11-15 2022-07-08 上海电科智能系统股份有限公司 一种轨道交通综合监控系统通信前置机双机冗余的方法
CN111901192B (zh) * 2020-07-15 2023-09-12 腾讯科技(深圳)有限公司 一种页面访问数据的统计方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007104700A (ja) * 2001-03-27 2007-04-19 Fujitsu Ltd パケット中継処理装置
JP2007150641A (ja) * 2005-11-28 2007-06-14 Hitachi Ltd パケット通信装置及びネットワークシステム
JP2010017960A (ja) 2008-07-11 2010-01-28 Iwasaki Electric Co Ltd 紫外線照射器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3963690B2 (ja) 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
US7689710B2 (en) * 2001-06-12 2010-03-30 Hewlett-Packard Development Company, L.P. Method and system for a front-end modular transmission control protocol (TCP) handoff design in a streams based transmission control protocol/internet protocol (TCP/IP) implementation
US7302700B2 (en) * 2001-09-28 2007-11-27 Juniper Networks, Inc. Method and apparatus for implementing a layer 3/layer 7 firewall in an L2 device
US7958199B2 (en) * 2001-11-02 2011-06-07 Oracle America, Inc. Switching systems and methods for storage management in digital networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007104700A (ja) * 2001-03-27 2007-04-19 Fujitsu Ltd パケット中継処理装置
JP2007150641A (ja) * 2005-11-28 2007-06-14 Hitachi Ltd パケット通信装置及びネットワークシステム
JP2010017960A (ja) 2008-07-11 2010-01-28 Iwasaki Electric Co Ltd 紫外線照射器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JAD NAOUS; RYAN STUTSMAN; DAVID MAZIERES; NICK MCKEOWN; NICKOLAI ZELDOVICH, DELEGATING NETWORK SECURITY WITH MORE INFORMATION
NIKHIL HANDIGOL; SRINIVASAN SEETHARAMAN; MARIO FLAJSLIK; NICK MCKEOWN; RAMESH JOHARI, PLUG-N-SERVE: LOAD-BALANCING WEB TRAFFIC USING OPENFLOW
OPENFLOW SWITCH SPECIFICATION VERSION 1.0.0 (WIRE PROTOCOL OX01, 31 December 2009 (2009-12-31)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018050306A (ja) * 2011-08-17 2018-03-29 ニシラ, インコーポレイテッド 分散論理l3ルーティング
US10868761B2 (en) 2011-08-17 2020-12-15 Nicira, Inc. Logical L3 daemon
US11695695B2 (en) 2011-08-17 2023-07-04 Nicira, Inc. Logical L3 daemon
CN104205749A (zh) * 2012-03-28 2014-12-10 日本电气株式会社 通信系统、上层交换机、控制装置、交换机控制方法以及程序
EP2833585A4 (en) * 2012-03-28 2015-10-21 Nec Corp COMMUNICATION SYSTEM, UPPER-LAYER SWITCH, CONTROL DEVICE, SWITCH CONTROL PROCEDURE AND PROGRAM
US9515926B2 (en) 2012-03-28 2016-12-06 Nec Corporation Communication system, upper layer switch, control apparatus, switch control method, and program

Also Published As

Publication number Publication date
CN102763382A (zh) 2012-10-31
US20130042317A1 (en) 2013-02-14
JP2011160041A (ja) 2011-08-18
CN102763382B (zh) 2015-09-02
JP5382451B2 (ja) 2014-01-08
US8863269B2 (en) 2014-10-14
EP2530886A1 (en) 2012-12-05

Similar Documents

Publication Publication Date Title
JP5382451B2 (ja) フロントエンドシステム、フロントエンド処理方法
US10084751B2 (en) Load balancing among a cluster of firewall security devices
US10623309B1 (en) Rule processing of packets
US9288183B2 (en) Load balancing among a cluster of firewall security devices
US9654395B2 (en) SDN-based service chaining system
US7653075B2 (en) Processing communication flows in asymmetrically routed networks
KR101476014B1 (ko) 네트워크 시스템 및 네트워크 용장화 방법
US7318100B2 (en) Cooperative proxy auto-discovery and connection interception
WO2007106606A2 (en) Techniques for load balancing over a cluster of subscriber-aware application servers
CN107210933B (zh) 用于向附接的装备提供硬件资源信息的机制
JP5858147B2 (ja) 通信システム、上位レイヤスイッチ、制御装置、スイッチ制御方法及びプログラム
JP5858141B2 (ja) 制御装置、通信装置、通信システム、通信方法及びプログラム
US20130275620A1 (en) Communication system, control apparatus, communication method, and program
EP2916497A1 (en) Communication system, path information exchange device, communication node, transfer method for path information and program
JP5966488B2 (ja) ネットワークシステム、スイッチ、及び通信遅延短縮方法
EP3373556A1 (en) Method to be implemented at a network element for managing instances of network functions, and corresponding network element
Rayes et al. The internet in IoT
JP2017182138A (ja) 負荷分散システム
US9531716B1 (en) Service enabled network
But et al. ANGEL-Architecture

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201180007734.7

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11736941

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2011736941

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2011736941

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 6696/CHENP/2012

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 13575919

Country of ref document: US