The present invention relates generally to the field of computer networking and more specifically to wire-tapping packets within a computer network.
“Wire-tapping” or “port mirroring” is a mechanism by which certain traffic ingressing or egressing a network node is sent through an arbitrary interface while the packet is also forwarded normally. Lawfully-authorized wire-tapping is considered to be an invaluable tool for law enforcement agencies in their fight against crime and terrorism.
In some prior art wire-tapping methods, normal forwarding lookup is first performed on a packet in question. Then, an “intercept lookup”—a process that determines whether the packet meets certain predefined profiles—is performed. If the packet indeed meets the predefined profiles, the packet is replicated and a copy of the packet is forwarded to a law enforcement agency. The packet is forwarded normally to its intended destination after the intercept lookup. An example of such prior art wire-tapping methods is shown in
One problem with the prior art method of
Accordingly, what is needed is a mechanism for wire-tapping network traffic efficiently such that the wire-tapping activities are undetectable to the originator and recipient(s) of the network traffic.
The invention provides an efficient mechanism for wire-tapping network traffic. In one embodiment, a primary forwarding lookup process and a secondary forwarding lookup process are performed in parallel and independently of each other. The primary forwarding lookup process determines the output interface to which the packet is to be routed regardless of whether the packet is to be intercepted. The secondary forwarding lookup process determines whether the packet meets a certain interception profile and also determines the output interface, if any, to which a copy of the packet is to be routed. Because the lookup processes are performed independently and in parallel, network traffic can be forwarded to their intended destinations without additional delay imposed by the secondary lookup process.
In one embodiment, the primary forwarding lookup process includes the steps of obtaining a destination IP address of the packet and searching for a match in a primary forwarding information table. This primary forwarding lookup process is not unlike a typical packet forwarding process. Thus, it is difficult for the wire-tapped party to detect the presence of wire-tapping activities. Furthermore, because typical packet forwarding mechanisms can be used, hardware and software for performing primary forwarding lookup do not have to be redesigned from scratch.
According to one embodiment, the secondary forwarding lookup process includes the steps of obtaining profile information from the traffic and searching for a match in a secondary forwarding lookup table in which each entry contains profile information and a corresponding SEPTI (Secondary Exit Port Table Index). Typical profile information includes, but is not limited to, source IP address, destination IP address, source socket, destination socket, input interface, output interface, protocol information, Type of Service (TOS) information, and/or Port of Entry (POE) information. The SEPTI is an index to another table where the exit port information is stored. In one embodiment, the secondary forwarding lookup table can also store forwarding information for policy routing.
Another advantage of the invention is that the secondary forwarding lookup table can include a large number of search fields and a large number of intercept profiles. When a large number of search fields are used, incisive wire-tapping can be performed using highly selective intercept criteria.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
Throughout the description, similar reference numbers may be used to identify similar elements.
The invention provides a novel method and apparatus for wire-tapping network traffic. In one embodiment, a primary forwarding lookup process and a secondary forwarding lookup process are performed in parallel and independently of each other. The primary forwarding lookup process determines the output interface to which the packet is to be routed. The secondary forwarding lookup process determines whether the packet fits an interception profile and also determines the output interface, if any, to which a copy of the packet is to be routed. Because the lookup processes are performed independently and in parallel, network traffic can be forwarded to their intended destinations without additional delay imposed by the secondary lookup process.
The Receive Module 210 is configured to receive packets from an external source or from another part of the network node. In one embodiment, the Receive Module 210 buffers the received packets and parses the header portions of the received packets for relevant information. More particularly, the Receive Module 210 obtains a Destination IP Address from the received packets and provides the Destination IP Address to the Primary Forwarding Path 220. In other embodiments, the Receive Module 210 may obtain any other type of information from the packet and provide such information to the Primary Forwarding Path 220.
When the Primary Forwarding Lookup Engine 212 receives the Destination IP Address, the Engine 212 performs a lookup on the Primary Forwarding Information Table 216, an example of which is illustrated in
With reference again to
In addition to parsing the packet for the Primary Forwarding Path 220, the Receive Module 210 parses the header of the received packet for information that is relevant to the Secondary Forwarding Path 222. In one embodiment, the Receive Module 210 obtains Profile Information from the received packets and provides the Profile Information to the Secondary Forwarding Path 222. In the present disclosure, “Profile Information” refers to any information contained in a packet or information about the packet that allows the network node to determine whether the packet fits certain predefined profile. Examples of Profile Information include, but are not limited to, source IP address, destination IP address, source socket, destination socket, input interface identifier, output interface identifier, protocol type, Type of Service (TOS) information, and Port of Entry (POE) information.
When the Secondary Forwarding Lookup Engine 213 receives the Profile Information, the Engine 213 performs a lookup on the Secondary Forwarding Information Table 217, an example of which is illustrated in
Referring again to
In one embodiment, the Secondary Forwarding Information Table 217 contains profile information of packets that a user (e.g., a network node administrator or a law enforcement agency) desires to intercept. The Secondary Exit Port Table (not shown) contains information of the monitoring port and/or address of the intercepting party. Packets with header information matching any one of the profiles stored in the Secondary Forwarding Lookup Table 217 will be forwarded to the monitoring port and/or the address of the intercepting party.
In one embodiment, the Secondary Forwarding Information Table 217 includes many search fields. One advantage of having many search fields is that each search profile can be made to be highly specific. As a result, highly profile-specific wire-tapping can be performed by embodiments of the invention.
Attention now turns to an example that illustrates operations of the embodiment. Suppose a law enforcement agency desires to intercept network traffic having a particular profile. In this example, suppose the profile consists of a source IP address “236.1.1.1” and a destination IP address of “11.1.1.1”. The network administrator first configures the Secondary Forwarding Information Table 217 to contain the profile as specified by the law enforcement agency. The network administrator also stores the law enforcement agency's IP address in the Secondary Exit Port Table, and stores a pointer to the entry's address in the corresponding entry of the Secondary Forwarding Information Table 217. When the network node receives a packet fitting the specified profile, the network node will be able to determine that, if there is a match in the Secondary Exit Port Table, that the packet should be intercepted. The network node will also be able to determine from the Secondary EPTI index and the Secondary Exit Port Table the appropriate interfaces to which a copy of the intercepted packet should be sent.
According to an embodiment of the invention, forwarding operations of the Primary Forwarding Path 220 are performed in parallel with and independent of forwarding operations of the Secondary Forwarding Path 222. For example, the lookup operations performed by the Secondary Forwarding Lookup Engine 213 are performed independently of the results of lookup operations performed by the Primary Forwarding Lookup Engine 212, and vice versa. In this way, forwarding operations performed by the Primary Forwarding Path 220 are not delayed or affected by operations of the Secondary Forwarding Path 222.
In one embodiment, the Secondary Forwarding Lookup Table 217 may require very little memory. In that case, the Secondary Forwarding Lookup Table can be stored together with a Policy Routing Lookup Table in a CAM (Content Addressable Memory). In that embodiment, the Secondary Forwarding Lookup Engine 213 and the Secondary Packet Forwarding Engine 215 can also be used for policy routing.
Referring now to
As shown, at step 510, the network node receives and buffers a packet. Thereafter, the network node parses the packet for relevant information and provides the information in parallel to a primary lookup engine and a secondary lookup engine (step 512). The primary lookup engine then performs a lookup on the Primary Forwarding Information Table using the retrieved information (step 516), and forwards the packet according to the results of the lookup operations (step 518).
While the primary lookup engine is performing steps 516 to 518, the secondary lookup engine independently performs steps 522 to 528. In particular, the secondary lookup engine uses the provided information to perform a lookup on the Secondary Forwarding Information Table (step 522). At decision point 524, the network node determines whether the retrieved profile information matches any predetermined profiles stored within the Secondary Information Table. If a match cannot be found, the packet is discarded. However, if a match is found, a copy of the packet is forwarded to an appropriate output port, as specified by information of the Secondary Forwarding Information Table (step 528).
Note that the primary lookup and the secondary lookup are performed in parallel and independently of each other. Whether the packet meets the profile for interception does not affect the forwarding of the packet by the primary forwarding engine.
It should be noted that the packet can be replicated before or after step 516 and step 522. In one embodiment, the hardware of the network node is configured such that packet replication occurs before it has been whether the packet fits an interception profile. In another embodiment, a packet is replicated only after it has been determined that the packet fits an interception profile.
The primary and secondary control modules 106 and 108 support various switch/router and control functions, such as network management functions and protocol implementation functions. The control modules 106 and 108 each include a processor 122 and memory 124 for carrying out the various functions. The processor 122 may include a multifunction microprocessor (e.g., an Intel i386 processor) and/or an application specific processor that is operationally connected to the memory. The memory 124 may include electrically erasable programmable read-only memory (EEPROM) or flash ROM for storing operational code and dynamic random access memory (DRAM) for buffering traffic and storing data structures, such as forwarding information.
The line cards 102A, 102B, and 102C each include at least one port 116, a processor 118, and memory 120. The processor 118 may be a multifunction processor and/or an application specific processor that is operationally connected to the memory 120, which can include a RAM or a Content Addressable Memory (CAM). Each of the processors 118 performs and supports various switch/router functions. Each line card also includes Primary Forwarding Lookup Engine 212 and Secondary Forwarding Lookup Engine 213 that can access memory 120. Each line card also includes a Primary Packet Forwarding Engine 214 and a Secondary Packet Forwarding Engine 215. According to the invention, hardware implementation of the Primary Forwarding Lookup Engine 212, Secondary Forwarding Lookup Engine 213, Primary Packet Forwarding Engine 214 and Secondary Packet Forwarding Engine 215 enables packets to be forwarded and intercepted at line rate or near line rate. In another embodiment, part or all of the functions of the invention can be implemented by software running on the line card processors (e.g., processor 118) and/or the control module processors (e.g., processor 122).
According to one embodiment of the invention, when a packet is forwarded, it is written to the switch fabric 104. In this embodiment, when a packet is intercepted, it is written to the switch fabric 104 more than once to different ports of the network node.
Although specific embodiments of the invention have been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts as described and illustrated herein. For instance, it should also be understood that throughout this disclosure, where a software process or method is shown or described, the steps of the method may be performed in any order or simultaneously, unless it is clear from the context that one step depends on another being performed first. Furthermore, although some embodiments of the invention have been described in the context of layer 3 of the Open System Interconnection (OSI) model of the International Standards Organization (ISO), a person of ordinary skill in the art having the benefit of this disclosure would realize that the invention is also applicable to other protocol layers of the OSI model. The invention is limited only by the claims.
This application is entitled to the benefit of provisional Patent Application Ser. No. 60/385,949, filed 4 Jun. 2002, which is hereby incorporated by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5550816 | Hardwick et al. | Aug 1996 | A |
5917821 | Gobuyan et al. | Jun 1999 | A |
5940376 | Yanacek et al. | Aug 1999 | A |
6553000 | Ganesh et al. | Apr 2003 | B1 |
6553025 | Kung et al. | Apr 2003 | B1 |
6654589 | Haumont | Nov 2003 | B1 |
6678270 | Garfinkel | Jan 2004 | B1 |
6741595 | Maher et al. | May 2004 | B2 |
6751746 | Jain et al. | Jun 2004 | B1 |
6801525 | Bodnar et al. | Oct 2004 | B1 |
6839351 | Chow et al. | Jan 2005 | B1 |
6870905 | Pelaez et al. | Mar 2005 | B2 |
6963566 | Kaniz et al. | Nov 2005 | B1 |
6990102 | Kaniz et al. | Jan 2006 | B1 |
7031304 | Arberg et al. | Apr 2006 | B1 |
7046663 | Temoshenko et al. | May 2006 | B1 |
7266117 | Davis | Sep 2007 | B1 |
7412507 | Saxena et al. | Aug 2008 | B2 |
20010050914 | Akahane et al. | Dec 2001 | A1 |
20020009083 | Ambe et al. | Jan 2002 | A1 |
20020101867 | O'Callaghan et al. | Aug 2002 | A1 |
20020116527 | Chen et al. | Aug 2002 | A1 |
20020146009 | Gupta et al. | Oct 2002 | A1 |
20030026268 | Navas | Feb 2003 | A1 |
20030101276 | Park et al. | May 2003 | A1 |
20030118042 | Nishida et al. | Jun 2003 | A1 |
20060029104 | Jungck | Feb 2006 | A1 |
20060274755 | Brewer et al. | Dec 2006 | A1 |
Number | Date | Country |
---|---|---|
WO 02082782 | Oct 2002 | WO |
WO 02102111 | Dec 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20040022261 A1 | Feb 2004 | US |
Number | Date | Country | |
---|---|---|---|
60385949 | Jun 2002 | US |