Abstract:
This specification describes a system that can offer, among other advantages, dynamically allowing or rejecting non-DHCP packets entering a switch. In addition, a FDB is commonly used by a bridge or switch to store an incoming packet&#39;s source MAC address and its port number, then later on if the destination MAC address of another incoming packet matching any entry in FDB will be forwarded to its associated port. Using the techniques described herein, not only this will be completely transparent to user, the techniques can also result in an increase in switch performance by blocking unwanted traffic at an earlier stage of forwarding process and freeing up other processing units at a later stage, like switch fabric or packet processing stages.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a Continuation of U.S. application Ser. No. 11/417,993 filed May 3, 2006, which is incorporated herein in its entirety by reference. 
     
    
     BACKGROUND 
       [0002]    A computer network such as a local area network (LAN), a wide area network (WAN), or the Internet facilitates communication among devices (e.g., clients). These devices may include workstations, servers, personal computers, cell phones, PDAs, wireless access points, laptops, and other electronic devices. 
         [0003]    Before a client can communicate over or with a network, the client must obtain an Internet Protocol (IP) address. A client may acquire an IP address through, for example, a client-server networking protocol such as, by way of example but not limitation, Bootstrap Protocol (BOOTP) which is a User Datagram Protocol (UDP), Dynamic Host Configuration Protocol (DHCP), that can be used to assign dynamic IP addresses to clients, Point-to-Point Protocol over Ethernet (PPPoE), or some other known or convenient networking protocol. 
         [0004]    A network may filter communication to and from a client that has not yet been assigned an IP address. For example, a network may be configured so that one or more Access Control Lists (ACLs) indicate whether to forward or discard a packet or a class of packets. The ACL may be used, by way of example but not limitation, to direct network routers to drop all packets originating from and directed to a client that has not been assigned an IP address. 
         [0005]    Filtering mechanisms of the variety described above, however, may consume significant network resources while processing data to and from clients without IP addresses because the packets are not discarded until the routing phase. Moreover, networks using schemes such as ACL configuration to filter packets may unnecessarily complicate decision-making for users and raise additional security issues. 
       SUMMARY 
       [0006]    The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools, and methods that are meant to be exemplary and illustrative, not limiting in scope. In various embodiments, one or more of the above-described problems have been reduced or eliminated, while other embodiments are directed to other improvements. 
         [0007]    A technique for restricting network access involves determining whether a data unit, such as a packet or a frame, has a layer 3 address assignment, such as an IP address assignment. A method according to the technique may include receiving a data unit including layer 2 client-identification data and determining whether the data unit includes layer 3 address data. If the data unit does not include any layer 3 address data, in this example, the method may proceed in determining whether the layer 2 client-identification data has been recorded. If the layer 2 client-identification data has not been recorded, in this example, the method may proceed in recording the layer 2 client-identification data and enabling a layer 3 address assignment status restriction attribute. If, on the other hand, the layer 2 client-identification data has been recorded, unless the address assignment status restriction attribute is enabled, in this example, the method may proceed with forwarding the data unit. 
         [0008]    A system according to the technique may include an address restriction engine, coupled to a memory and a switching device, for executing packet forwarding and data traffic filtering functions. The address restriction engine may include an address status restriction module having control logic for manipulating said layer 3 address assignment status restriction attribute and a packet forwarding module having logic for monitoring data traffic and for notifying the address status restriction module that it has received data with layer 3 address assignment data. The address status restriction module may determine whether to disable the layer 3 address assignment status restriction attribute based on data it receives from the packet forwarding module. 
         [0009]    The proposed system can offer, among other advantages, to, for example, dynamically allow or reject non-DHCP packets entering a switch. In addition, a FDB is commonly used by a bridge or switch to store an incoming packet&#39;s source MAC address and its port number, then later on if the destination MAC address of another incoming packet matching any entry in FDB will be forwarded to its associated port. Using the techniques described herein, not only this will be completely transparent to user, it can also increase switch performance by blocking unwanted traffic at an earlier stage of the packet forwarding process and freeing up other processing units at a later stage, like switch fabric or packet processing stages. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0010]    Embodiments of the present invention are illustrated in the figures. However, the embodiments and figures are illustrative rather than limiting; they provide examples of the invention. 
           [0011]      FIG. 1  depicts a flowchart of an example of a method for managing an address assignment status restriction attribute in a forwarding database (FDB). 
           [0012]      FIG. 2  depicts a flowchart of an example of a method for data filtering. 
           [0013]      FIG. 3  is a block diagram illustrating an example of a network system including a forwarding database (FDB) for filtering network traffic based on IP address assignment status. 
           [0014]      FIG. 4  is a schematic illustration of an example of a forwarding database entry. 
           [0015]      FIG. 5  is a block diagram illustrating an example of a network system including an address restriction engine for filtering data traffic. 
           [0016]      FIG. 6  depicts a flowchart  600  of an example of a method for restrictive data forwarding. 
       
    
    
       [0017]    The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings. 
       DETAILED DESCRIPTION  
       [0018]    In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without one or more of these specific details or in combination with other components or process steps. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. 
         [0019]      FIG. 1  depicts a flowchart  100  of an example of a method for managing an address assignment status restriction attribute in a forwarding database (FDB). This method and other methods are depicted as serially arranged modules. However, modules of the methods may be reordered, or arranged for parallel execution as appropriate. 
         [0020]    In the example of  FIG. 1 , the flowchart  100  starts at module  102  where a data packet is received from a client. The client may include, by way of example but not limitation, a cell phone, PDA, personal computer, laptop, notebook computer, workstation, or some other known or convenient wired or wireless device. The client may send to a network a data packet with information including, by way of example but not limitation, source address, destination address, and message data. 
         [0021]    The network may include a wired network, a wireless network, a LAN, a WAN, or a network such as the Internet. The term “Internet” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). The physical connections of the Internet and the protocols and communication procedures of the Internet are well-known to those of skill in the art. 
         [0022]    In the Open Systems Interconnection (OSI) communications model, a switch performs a layer 2 or Data-Link layer function. That is, the switch looks at each packet or data unit and determines from a physical address (the “MAC address”) which device a data unit is intended for and switches it out toward that device. However, in wide area networks such as the Internet, the destination address requires a look-up in a routing table by a device known as a router. Some switches also perform routing functions (layer 3 or the Network layer functions in OSI and layer 4 or the Transport layer functions) and are sometimes called IP switches. As used herein, a switching device may be any layer 2, layer 3, or layer 4 device. 
         [0023]    The time a switch takes to determine where to forward a data unit is called its latency. The price paid for having the flexibility that switches provide in a network is this latency. Switches are found at the backbone and gateway levels of a network where one network connects with another and at the sub-network level where data is being forwarded close to its destination or origin. The former are often known as core switches and the latter as desktop switches. 
         [0024]    In packet-switching, a message is divided into packets, which are units of a certain number of bytes. The network addresses of the sender and of the destination are added to the packet. Each network point looks at the packet to see where to send it next. Packets in the same message may travel different routes and may not arrive in the same order that they were sent. At the destination, the packets in a message are collected and reassembled into the original message. 
         [0025]    Referring once again to the example of  FIG. 1 , the flowchart  100  continues to module  104  where the packet is preprocessed for classification according to, for example, the source of the packet. A packet may originate from one of numerous sources including but not limited to an access point, a network port, or a central processing unit (CPU). Moreover, depending on criteria such as the source of the packet and the configuration of the network, the preprocessing functions may be executed by devices such as, by way of example but not limitation, a network processor, a general processor, or pre-processing software tailored for the task. 
         [0026]    In the example of  FIG. 1 , the flowchart  100  continues to module  106  where additional packet source information is learned. In an embodiment, a network switch receives the packet and learns information associated with the packet. The network switch may include, for example, a switching fabric coupled to a forwarding database (FDB) having a forwarding memory. In an embodiment, the forwarding memory stores a number of entries comprising information including but not limited to address data, port identification (ID), and entry age. The entry age can be used to, for example, facilitate the removal of old entries so that the database is not cluttered with outdated entries. The FDB may store entries according to the client&#39;s media access control (MAC) addresses, network addresses, both the MAC and network addresses, or in some other known or convenient manner. 
         [0027]    In an embodiment, a network switch performs a look-up in the FDB upon receipt of a packet. If an entry associated with the client&#39;s identification information is found in the FDB, no action is required. On the other hand, if the FDB does not include an entry associated with the client&#39;s identification information, a new entry is added to the FDB comprising information including but not limited to the client&#39;s MAC address, port ID, and a number of other attributes associated with the client. In an embodiment, a processing unit associated with the switch updates the FDB with a new entry. In an alternative embodiment, a CPU coupled to a number of network switches is responsible for learning data traffic passing through these switches and updating a central FDB. Additionally, the processor may be implemented with a number of devices including but not limited to, a specialized network processor or a general processor. 
         [0028]    In the example of  FIG. 1 , the flowchart  100  continues to decision point  107  where a destination of the packet is determined from the information available in the packet. If the destination is from the client, then the flowchart  100  continues to module  108  where an attempt is made to authenticate the client. For example, a CPU associated with the network switch may attempt to authenticate the client using a known or convenient authentication scheme. The CPU may authenticate the client using a cryptographic protocol such as, by way of example but not limitation, the Otway-Rees or the Wide-Mouth Frog protocol. Moreover, the CPU may be configured in a number of ways. In one embodiment, the CPU may be a local processor associated with one network switch and responsible for authenticating data traffic that pass through the network switch. In an alternative embodiment, the CPU may be coupled to a number of network switches and responsible for authenticating data traffic passing through these switches. Additionally, the CPU may be implemented with a number of devices including but not limited to, a specialized network processor or a general processor. 
         [0029]    Returning once again to the decision point  107 , if the destination of the packet is to the client, or after an attempt to authenticate the client is made at module  108  (if the destination is from the client), then the flowchart continues to decision point  109 . It may be noted that if the destination is not determined to be to or from the client (else), the flowchart  100  continues to module  114 , which is described later. 
         [0030]    In the example of  FIG. 1 , the flowchart  100  continues from module  108  to decision point  109 , where it is determined whether the client is authenticated. If the client is not authenticated ( 109 -NO), the packet is dropped and the client cannot communicate over or with the network. If the client is authenticated ( 109 -YES), the flowchart  100  continues at module  110  where the CPU identifies the client according to information contained in the packet and extracts a service profile associated with the client. The service profile may include information specific to the client, such as a set of minimum requirements. The set of minimum requirements may include, by way of example but not limitation, level of security or Quality of Service (QoS). In an embodiment, the service profile also includes information indicating whether communication with the client is restricted according to IP address assignment status. In an alternative embodiment, the service profile may not include such information, or the information may not be acted upon (e.g., at modules  112 ,  114 ). The packet information may include, by way of example but not limitation, the destination address and port ID. 
         [0031]    In the example of  FIG. 1 , the flowchart  100  continues to decision point  112  where it is determined whether IP address assignment restriction is required. In an embodiment, the CPU may make this determination based on the service profile. If the service profile specifies that communication with the client need not be filtered according to IP address assignment status ( 112 -NO), the flowchart  100  continues to module  114  where the network switch proceeds to forward the packet according to packet information (and, for illustrative purposes, the flowchart  100  ends although it should be noted that the packets may continue to be forwarded practically indefinitely). If the service profile indicates that communication with the client is restricted according to IP address assignment status ( 112 -YES), the flowchart  100  continues to module  116  where the packet is dropped and an IP address assignment restriction status attribute associated with the client is enable. In an embodiment, the CPU may enable the IP address assignment restriction status attribute in the FDB. 
         [0032]    In the example of  FIG. 1 , the flowchart  100  continues to decision point  118  where it is determined whether an assignment has been received. A packet that includes an assignment is of particular note because packets cannot be forwarded until, for example, an IP assignment has been made. If it is determined that an assignment has not been received ( 118 -NO), the flowchart  100  continues to decision point  119  where it is determined whether there is an assignment request. If it is determined that there is an assignment request ( 119 -Yes), then the flowchart  100  continues to module  114 , which was described previously. If, on the other hand, it is determined that there is no assignment request ( 119 -No), then the flowchart  100  continues to module  120  where the packet is dropped, to module  122  where traffic continues to be monitored (e.g., filtered according to the IP address assignment status associated with data the network switch receives), and back to decision point  118 . Advantageously, only packets with, for example, a DHCP protocol are allowed to enter the network switch. This may improve the performance of the switch. If, on the other hand, it is determined that an assignment has been received ( 118 -YES), the flowchart  100  continues to module  124  where verification of the address assignment is attempted. The verification may be by any known or convenient means. 
         [0033]    In the example of  FIG. 1 , the flowchart  100  continues to decision point  126  where it is determined whether the assignment is verified. If it is determined that the assignment is not verified ( 126 -NO), the flowchart  100  continues to module  120  where the packet is dropped, and continues from module  120  as described previously. If, on the other hand, it is determined that the assignment is verified ( 126 -YES), the flowchart  100  continues to module  128  where the IP address assignment restriction status attribute is disabled. The flowchart  100  ends at module  114  where packets are forwarded normally, as previously described. Advantageously, since the IP address assignment restriction status attribute is disabled until after IP address assignment, which prevents the forwarding of potentially many packets to the network switch, the network switch can operate more efficiently. 
         [0034]      FIG. 2  depicts a flowchart  200  of an example of a method for data filtering. Data filtering may be used in conjunction with, for example, the method of  FIG. 1 . In the example of  FIG. 2 , the flowchart  200  begins at module  202  where switching functions are executed. For example, a forwarding processor associated with a network switch may execute switching functions including, by way of example and not limitation, looking up a FDB, checking FDB entry fields including an IP address assignment status restriction attribute, and forwarding packets to a specified destination. In an embodiment, a CPU or other processor may function as the forwarding processor. In another embodiment, the forwarding processor is an independent processor configured to manage switching tasks. In this alternative embodiment, the CPU does not process data to or from the client while the client has yet to obtain an IP address. The forwarding processor may be implemented, by way of example but not limitation, in a general processor, in the CPU as a sub-processor, or in a specialized network processor. 
         [0035]    In the example in  FIG. 2 , the flowchart  200  continues to decision point  204  where it is determined whether a packet includes address assignment information. For example, each time a forwarding processor receives a packet, the forwarding processor may make a determination as to whether the packet includes IP address assignment information. If the packet does not include IP address assignment information ( 204 -NO), the flowchart continues to module  206  where a look-up is performed, and the client&#39;s IP address is allowed to be forwarded. For example, the forwarding processor may perform a look-up function in the FDB associated with the network switch. The packet information the forwarding processor uses for the look-up function may include, by way of example and not limitation, the MAC address or the network address of the packet sender. 
         [0036]    In the example of  FIG. 2 , the flowchart  200  continues to the decision point  208  where it is determined whether the IP address assignment status restriction attribute is enabled. If the attribute is enabled ( 208 -YES), the flowchart  200  proceeds to module  210  where the packet is dropped, from packets originating from or destined for the client, and the flowchart  200  returns to module  202 . If the attribute is disabled ( 208 -NO), the flowchart  200  continues to module  212  where the packet is forwarded and the flowchart  200  returns to module  202 . For example, the forwarding processor may allow the network switch to forward the packet according to packet information. The packet information may include, by way of example but not limitation, the destination address and port ID. 
         [0037]    Returning now to the flowchart  200  at decision point  204 . If it is determined that the packet includes address assignment information, then the flowchart  200  continues to module  214  where packet verification is attempted. For example, the forwarding processor may determine that the packet includes IP address assignment information, and send the packet to the CPU for verification. 
         [0038]    In the example of  FIG. 2 , the flowchart  200  continues to decision point  216  where it is determined whether the IP address assignment information can be verified. For example, the CPU may attempt to verify that the packet includes IP address assignment information. If the CPU cannot verify the IP address assignment information ( 216 -NO), the flowchart  200  continues to module  218  where the packet is dropped. If the CPU verifies that the data packet includes IP address assignment information ( 216 -YES), the flowchart  200  continues to decision point  220  where it is determined whether confirmation that an IP address has been assigned has been received. For example, the CPU may determine whether the packet includes confirmation that an IP address has been assigned. The methods for determining whether an IP address assignment has been confirmed may vary and include, by way of example and not limitation, receipt of a packet containing an IP address assignment for the destination device, receipt of a packet acknowledging the receipt of an IP address assignment, or the receipt of both an address assignment and an acknowledgment. 
         [0039]    In the example of  FIG. 2 , if, for example, the CPU determines that the IP address assignment information in the packet does not confirm an address assignment ( 220 -NO), the flowchart  200  loops back to module  218  where the packet is dropped, as described previously. It may be noted that there could be some type of delay or waiting period before dropping the packet depending upon the implementation. It may also be noted that switching functions for other packets may be executing concurrently during the delay. If the CPU determines that the IP address assignment information in the packet confirms an address assignment ( 220 -YES), the flowchart  200  proceeds to module  222  where the IP assignment status restriction is disabled. For example, the CPU may disable the IP assignment status restriction attribute in the FDB entry associated with the device whose address assignment has been confirmed. The flowchart  200  continues to module  224  where the packet is forwarded. For example, the network switch may forward the packet according to packet information. The packet information may include, by way of example but not limitation, the destination address and port ID. 
         [0040]      FIGS. 1 and 2  serve to illustrate methods by way of example. Fewer or more modules may be used to promote additional features and alternative embodiments. For example, in one implementation, the CPU may apply address status restrictions on all clients without e.g., checking service profiles. In another implementation, the CPU does not verify a packet identified as having IP address assignment information and proceeds directly to module  118  from module  126 . Moreover, terms and examples described serve illustrative purposes only and are not intended to be limiting. For example, although the term “packet” or “data packet” is used to describe a unit of information in the processing and switching operations above, one skilled in the art would appreciate that information may be transmitted in other data unit forms including, by way of example and not limitation, a data packet or a frame. Some instances above describe information filtering for data originating from a source that has not yet obtained an IP address assignment, one skilled in the art would readily perceive that data can be filtered either to or from such a source. 
         [0041]      FIG. 3  is a block diagram illustrating an example of a network system  300  including a forwarding database for filtering network traffic based on IP address assignment status. In the example of  FIG. 3 , the network system  300  includes a FDB  302 , a processor  304 , a switching device  306 , wireless access points (APs)  308 - 1  to  308 -N (referred to hereinafter collectively as APs  308 ), and clients  310 - 1  to  310 -N (referred to hereinafter collectively as clients  310 ). It may be noted that in alternative embodiments, two or more of the FDB  302 , processor  304 , switching device  306 , and APs  308  may be located locally with respect to one another. 
         [0042]    In the example of  FIG. 3 , the network system  300  includes a wireless network for illustrative purposes. However, at least some of the techniques described herein could be used in both a wireless and a wired network. 
         [0043]    The FDB  302  may be implemented with a forwarding memory (not shown). The forwarding memory stores a table containing entries having identification information extracted from data traffic that the switching device  306  receives and may include, by way of example and not limitation, MAC address, port ID, and virtual LAN (VLAN) ID. Additionally, the entries may include numerous attributes including, by way of example and not limitation, the age of the entry, and the IP address assignment status associated with the identification information. In an alternative embodiment, the FDB  302  may be implemented with a forwarding memory (not shown) for storing entries having information extracted from data traffic and a distinct associated memory (not shown) for storing attribute data associated with each entry in the forwarding memory. The data entries stored in the FDB  302  are used to identify the destination information and forwarding attributes associated with a data packet so that the packet may be forwarded to its specified destination. Entries in the FDB  302  are described in more detail later with reference to  FIG. 4 . For the purpose of example only, the system  300  could be configured such that the address to be restricted is one that originates from a wireless client, such as one of the wireless clients  310 . 
         [0044]    In the example of  FIG. 3 , the processor  304  is coupled to the FDB  302  and the switching device  306 . In an embodiment, the processor  304  may execute switching functions using the FDB  302  and the switching device  306 . In an embodiment, the processor  304  may be implemented as a CPU that processes data traffic that the switching device  306  receives and accesses the FDB  302  to update the entries therein. The CPU may, by way of example and not limitation, learn an address in a data packet, read associated data corresponding to a data packet, age the entries in the FDB  302 , invalidate outdated entries in the FDB  302 , replace entries in the FDB  302 , access search keys in the FDB  302 , and update attributes in the entries of the FDB  302 . In one embodiment, the CPU may be configured to monitor and filter the data traffic that the switching device  306  receives with a method such as that described in  FIG. 2 . In an alternative embodiment, a forwarding processor (not shown) monitors the forwarding data traffic and alerts the CPU with information necessary to update the entries in the FDB  302 . In one embodiment, the forwarding processor (not shown) is implemented independently of the CPU with, by way of example and not limitation, a general processor or a network processor. In another embodiment, the forwarding processor (not shown) is implemented as a sub-processor in the CPU. 
         [0045]    The switching device  306  may, in an embodiment, have a switching fabric (not shown) including, by way of example and not limitation, one or more switching Application Specific Integrated Circuits (ASICs). Furthermore, the switching ASICs may, for example, be configured to perform level 2 switching functions, level 3 switching functions, level 3 routing functions, level  4  switching functions, and level 4 routing functions. In an alternative embodiment, the switching fabric may implement the level 2 to 4 switching and routing functions by using software or by using hardware not dependents on ASICs. The switching device  306  may channel incoming data from input ports (not shown) to a specific output port that will take data toward an intended destination. On, for example, an Ethernet local area network (LAN), a switching device determines from the physical device (Media Access Control or MAC) address in each incoming message frame which output port to forward it to and out of. In, for example, a wide area packet-switched network such as the Internet, a switching device determines from the IP address in each packet which output port to use for the next part of its trip to the intended destination. In, for example, a circuit-switched network, one or more switching devices are used to set up a dedicated though temporary connection between two or more parties. 
         [0046]    In the example of  FIG. 3 , data from the clients  310  are forwarded through the APs  308  to the switching device  306 . In an embodiment where the IP addresses assignment status of clients  310  are restricted, packets sent to and from the clients  310  are discarded, at least until the restriction attribute is disabled in the FDB entries associated with the client  310 , as was described previously with reference to  FIG. 1  and  FIG. 2 . 
         [0047]      FIG. 4  is a schematic illustration of a FDB entry  400 . In the example of  FIG. 4 , the FDB entry  400  includes a port ID field  402 , a MAC address field  404 , a VLAN ID field  406 , an age field  408 , an address status restriction field  410 , and possibly other fields. The port ID field  402  identifies the port on which an associated message was received. The MAC address field  404  identifies the physical address of the device from which the message originated. A VLAN allows devices located on different physical LAN segments to communication as though they are on the same physical LAN segments. In so doing, a VLAN promotes efficiency based on traffic pattern rather than proximity. The VLAN ID enables devices grouped in a VLAN to identify each other within the VLAN. The FDB entry shown in  FIG. 4  includes both identification data (e.g. MAC address, VLAN address, port ID) and attributes (e.g. age, IP address assignment status). In another embodiment, the FDB includes a forwarding memory (not shown) for storing entries having identification data and a separate associated memory (not shown) for storing attributes associated with the entries in the forwarding memory. In yet another embodiment, filtering based on IP address assignment status is implemented in hardware. 
         [0048]      FIG. 5  is a block diagram illustrating an example of a network system  500  including an address restriction engine for filtering data traffic. In the example of  FIG. 5 , the network system includes a FDB  502 , an address restriction engine  510 , and a switching device  512 . The address restriction engine  510  further includes an address status restriction module  504  and a packet forwarding module  506 . 
         [0049]    In an embodiment, the FDB  502  may include a forwarding memory (not shown). The forwarding memory stores a table containing entries having information extracted from data traffic that the switching device  512  receives and may include, by way of example and not limitation, MAC address, port ID, and virtual LAN (VLAN) ID. Additionally, the entries may include numerous attributes including, by way of example and not limitation, the age of the entry, and the IP address assignment status associated with the identification information. In an alternative embodiment, the FDB  502  includes a forwarding memory (not shown) for storing entries having information extracted from data traffic and a distinct associated memory (not shown) for storing attribute data associated with each entry in the forwarding memory. The data entries stored in the FDB  502  are used to identify the destination information and forwarding attributes associated with a data packet so that the packet may be forwarded to its specified destination. For the purpose of example only, the system  500  could be configured such that the address to be restricted is one that originates from a wireless client, such as one of the wireless clients  310 . 
         [0050]    In the example of  FIG. 5 , the address restriction engine  510  is coupled to the FDB  502  and the switching device  512 . In an embodiment, the engine  510  may execute switching functions using the FDB  502  and the switching device  512 . In another embodiment, the engine  510  monitors the data traffic that the switching device  512  receives and filters the traffic in addition to executing switching functions. In an embodiment, the engine  510  filters the data traffic passing through the switching device  512  by delegating separate monitoring and switching functions between the address status restriction module  504  and the packet forwarding module  506 . In an embodiment, the address status restriction module  504  accesses the FDB  502  to manipulate an entry attribute based on the IP address assignment status of the device associated with the entry. The packet forwarding module  506  monitors the data traffic that the switching device  512  receives for packets that may change the IP address assignment status of a device and notifies the address status restriction module  504  of potential change in address assignments. The address status restriction module  504 , in turn, verifies whether an IP address has been assigned based on the information it receives from the packet forwarding module  506 . The address restriction engine  510  may be implemented, by way of example and not limitation, with a CPU, a network processor, or a general processor. In one embodiment, the engine  510  is a processor that includes a first sub-processor having the restriction module  504  and a second sub-processor having the forwarding module  506 . In an alternative embodiment, the engine  510  includes a first processor (e.g. CPU, general processor, network processor) having the restriction module  504  and a second processor (e.g. CPU, general processor, network processor) having the forwarding module  506 . 
         [0051]    In an embodiment, the switching device  512  may have a switching fabric (not shown) including, by way of example and not limitation, one or more switching Application Specific Integrated Circuits (ASICs). Furthermore, the switching ASICs may, for example, be configured to perform level 2 switching functions, level 3 switching functions, level 3 routing functions, level  4  switching functions, and level 4 routing functions. In an alternative embodiment, the switching fabric may implement the level 2 to 4 switching and routing functions by using software or by using hardware not dependents on ASICs. The switching device  512  may channel incoming data from input ports (not shown) to a specific output port that will take data toward an intended destination. On, for example, an Ethernet local area network (LAN), a switching device determines from the physical device (Media Access Control or MAC) address in each incoming message frame which output port to forward it to and out of. In, for example, a wide area packet-switched network such as the Internet, a switching device determines from the IP address in each packet which output port to use for the next part of its trip to the intended destination. In, for example, a circuit-switched network, one or more switching devices are used to set up a dedicated though temporary connection between two or more parties. 
         [0052]      FIG. 6  depicts a flowchart  600  of an example of a method for restrictive data forwarding. In the example of  FIG. 6 , the flowchart  600  starts at module  602  with receiving a data unity include layer 2 client-identification data. The flowchart  600  continues to module  604  with determining whether the data unit includes layer 3 address data. If, at decision point  608 , it is determined that the data unit does not include layer 3 address data, then the flowchart  600  continues to module  608  with determining whether layer 2 client-identification data has been recorded. If it is determined at decision point  610  that layer 2 data has not been recorded, then the flowchart continues to module  612  with recording the layer 2 data and to module  614  with enabling a layer 3 address assignment status restriction attribute, then the flowchart  600  ends. If, on the other hand, it is determined at decision point  610  that layer 2 data has been recorded, then the flowchart ends at module  616  with forwarding the data unity unless the address assignment status restriction attribute is enabled. 
         [0053]    Returning once again to decision point  606  of  FIG. 6 , if it is determined that the data unit includes layer 3 data ( 606 -Yes), then the flowchart  600  continues to module  618  with determining whether layer 3 address data confirms a layer 3 address assignment. If, at decision point  620 , it is determined that the layer 3 address assignment is not confirmed, then the flowchart  600  continues to module  622  with disabling the layer 3 address assignment status restriction attribute, to module  624  with forwarding the data unit, and the flowchart  600  ends. If, on the other hand, it is determined that the layer 3 address assignment is confirmed, then the flowchart  600  ends at module  626  with forwarding the data unit if the layer 3 address data does not confirm a layer 3 address assignment. Where a data unit is not forwarded, it may or may not be dropped, depending upon the implementation. 
         [0054]    Terms and examples described above serve illustrative purposes only and are not intended to be limiting. For example, although the term “packet” or “data packet” is used to describe a unit of information in the processing and switching operations above, one skilled in the art would appreciate that information may be transmitted in other data unit forms including, by way of example and not limitation, a data packet or a frame. Some instances above describe information filtering for data originating from a source that has not yet obtained an IP address assignment, one skilled in the art would readily perceive that data can be filtered either to or from such a source. 
         [0055]    As used herein, the term “embodiment” means an embodiment that serves to illustrate by way of example but not limitation. It may be noted that, in an embodiment, timestamps can be observed to measure roaming time. 
         [0056]    It will be appreciated to those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the scope of the present invention. It is intended that all permutations, enhancements, equivalents, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the true spirit and scope of the present invention. It is therefore intended that the following appended claims include all such modifications, permutations and equivalents as fall within the true spirit and scope of the present invention.