The present invention relates generally to networked communications and, more particularly, to efficient space utilization of distributed MAC address tables in switches, including Ethernet switches.
In distributed switching systems, switching entities perform information forwarding, learning, and aging out of forwarding entries. If a switching entity contains multiple switching subunits, each switching subunit may have its own forwarding table in which information about network addresses is stored. Switching functionalities such as information forwarding, learning, and aging out of forwarding entries are carried out on a per-switching subunit basis. This architecture requires that most of the configurations to operate a switch need to be applied on a per-switching subunit basis and must be repeated for each switching subunit.
In one embodiment, a switch includes a processor, a line card, one or more forwarding tables residing on the switch, and a plurality of ports. The processor is configured to determine an inbound port through which a frame is received, wherein the plurality of ports includes the inbound port, map the received frame to a flooding domain, determine a destination address of the received frame, and determine one or more of the plurality of ports through which the received frame is to be forwarded. If the line card contains a port that is part of the flooding domain, the processor is configured to populate one of the forwarding tables associated with the line card with information regarding the received frame and information regarding the flooding domain. If the line card contains no ports that are part of the flooding domain, the processor is configured to populate none of the forwarding tables associated with the line card with information regarding the received frame and information regarding the flooding domain.
In another embodiment, a method for networked communications includes receiving, on an inbound port, a frame to be forwarded, mapping the received frame to a flooding domain, determining an inbound port through which a frame is received, wherein the plurality of ports includes the inbound port, determining a destination address of the received frame, and determining one or more of the plurality of ports through which the received frame is to be forwarded. If the line card contains a port that is part of the flooding domain, the method includes populating a forwarding table associated with the line card with information regarding the received frame and information regarding the flooding domain. If the line card contains no ports that are part of the flooding domain, the method includes populating no forwarding tables associated with the line card with information regarding the received frame and information regarding the flooding domain.
In yet another embodiment, an article of manufacture includes a computer readable medium and computer-executable instructions carried on the computer readable medium. The instructions are readable by a processor. The instructions, when read and executed, cause the processor to receive, on an inbound port, a frame to be forwarded, map the received frame to a flooding domain, determine an inbound port through which a frame is received, determine a destination address of the received frame, and determine one or more of the plurality of ports through which the received frame is to be forwarded. If the line card contains a port that is part of the flooding domain, the processor is caused to populate a forwarding table associated with the line card with information regarding the received frame and information regarding the flooding domain. If the line card contains no ports that are part of the flooding domain, the processor is caused to populate no forwarding tables associated with the line card with information regarding the received frame and information regarding the flooding domain. The plurality of ports includes the inbound port.
For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
Inbound frame 116a may be implemented in packets, frames, cells, or other received data to be forwarded. When an inbound frame 116a is received into a given port 112, the destination of the information will be looked up in table 120 to determine which port 112 the information should be sent. As demonstrated in
Switch 102 may be implemented in any suitable electronic device for carrying out the embodiments taught by the present disclosure. In one embodiment, switch 102 may be implemented as an Ethernet switch. Switch 102 may be configured to receive information to be forwarded to network destinations, and the information may be implemented in any form suitable for switch 102 to forward. In one embodiment, the information received may be implemented in an inbound frame 116a. Likewise, switch 102 may be configured to forward information in any suitable form, and likely the same form in which it was received. In one embodiment, the forwarded information may be implemented in an outbound frame 116b.
Switch 102 may be configured to communicate with any suitable network entity 104 to receive and send information such as frames 116. Network entities 104 may be embodied by, for example, a computer, router, switch, network device, sub-network or network. Network 118 may be embodied by, for example, a local-area-network, wide-area-network, the Internet, an intranet, or any other suitable communications network. Switch 102 may be configured to send and receive information through ports 112 on their respective line cards 110. Switch 102 may be configured to determine upon receipt of a frame 116a, which of the ports 112 should the outbound frame 116b be sent, based in part upon the contents of tables 120 associated with each line card. Switch 102 may be configured to act upon received information by the configuration of line cards 110, switching fabric 114, and/or processor 106.
Line cards 110 may be implemented in any suitable manner to create the embodiments described in this disclosure. In one embodiment, line cards 110 may be implemented in a module including electronic circuitry, processors, and/or memory for handling communications through one or more ports 112. Each line card 110 may contain a table 120. In one embodiment, each table 120 may be implemented in the corresponding line card 110, such as being stored in a memory associated with the line card 110. In another embodiment, table 120 may be implemented elsewhere in switch 102. Line card 110 may be configured to determine to what other line cards 110 in switch 102, information received from port 112 should be forwarded. Line card 110 may be configured to make such determinations based on the contents of an associated table 120. Line card 110 may be configured to forward information received from port 112 to another line card 110 of switch 102 through switching fabric 114. Switching fabric 114 may be implemented in any suitable combination of hardware and software for connecting line cards 110 to each other to transmit information between the line cards 110. Switching fabric 114 may be controlled through configuration by processor 106.
Processor 106 may comprise, for example, a microprocessor, microcontroller, digital signal processor (DSP), application specific integrated circuit (ASIC), or any other digital or analog circuitry configured to interpret and/or execute program instructions and/or process data. Processor 106 may interpret and/or execute program instructions and/or process data stored in memory 108. Memory 108 may comprise any system, device, or apparatus configured to hold and/or house one or more memory modules. Each memory module may include any system, device or apparatus configured to retain program instructions and/or data for a period of time (e.g., computer-readable media). In one embodiment, each line card 110 may contain one or more memory modules, containing at least an associated table 120. In another embodiment, each line card 110 may share memory 108 to store tables 120.
Tables 120 may be implemented in any suitable manner to store and make available to switch 102 and line cards 110 information concerning other network entities 104 in switching system 100 and how the network entities 104 may be accessed through ports 112. Tables 120 may include, for example, information regarding addresses of network entities 104, information regarding flooding domains 202, and information regarding which port 112, the address may be reached. Tables 120 may be configured as forwarding tables to provide information to switch 102 on how to forward information to other entities. In one embodiment, each table 120 may be implemented in its respective line card 110. In another embodiment, tables 120 may be implemented together, but coupled to each line card 110. Tables 120 may be implemented, for example, in logic, a memory, or circuitry. If a table 120 is implemented in a line card 110, table 120 may be implemented in memory of line card 110.
An inbound frame 116a to be forwarded to a network destination 104 may be received by switch 102 and may contain a source address and a destination address of the frame. In the example of
Upon the arrival of inbound information, such as frame 116a, switch 102 may be configured to determine the destination address and source address of the frame. Such a determination may be made by, for example, by examination of header information within frame 116a. Switch 102 may be configured to map the frame to any flooding domains, such as the flooding domains 202 of
Switch 102 may be configured to determine whether the destination address is known within the table 120 of ingress line card 110 of switch 102. If the destination address is not known within the table 120 of ingress line card 110, the switch 102 may be configured to flood all remaining ports 112 in the flooding domain 202 with a copy of the frame 116a. In one embodiment, switch 102 may be configured to only flood those ports 112 associated with the flooding domain to which the frame was mapped. This selective flooding may need less resources than simply flooding all ports 112 of switch 102.
If the source address of the inbound frame 116 is not known in the table 120 of the ingress line card 110, then switch 102 may be configured to populate tables 120 with newly discovered information, such as the association of the source address of the inbound frame 116a with the ingress port 112, and the flooding domains 202 the frame is associated with. However, simply copying such information into each table 120 may generate many entries that are not necessary. Switch 102 may be configured to populate only those tables 120 which need to know the newly learned address.
In one embodiment, switch 102 may only populate tables 120 which are associated with a line cards 110 on which a flooding domain associated with the inbound frame 116 is active. A flooding domain may be active on a line card 110, or other line cards of switch 102, if that flooding domain contains a port 112 on any such line card on switch 102. Consequently, switch 102 may be configured to determine, for the flooding domain mapped to the inbound frame, what ports 112 are included in the flooding domain from line cards 110 in which the flooding domain is active. Switch 102 may be configured to only populate those tables 120 that are associated with a line card on which the flooding domain is active, wherein the flooding domain is mapped to the inbound frame 116a. Switch 102 may be configured to forward an outbound frame 116b to each port 112 that is included in the flooding domain from line cards 110 in which the flooding domain is active.
If the source address of the inbound frame 116a was not known in the tables 120 of switch 102, then switch 102 may be configured to populate tables 120 with newly discovered information, such as the association of the source address of the inbound frame 116 with the port 112 through which it was received. However, as in
In operation, switch 102 may be communicating with network destinations 104. Switch 102 may receive frames to be forwarded, for example, from one network source 104a to another network destination 104b. Switch may be receiving and forwarding frames over network 118.
Switch 102 may receive a frame 116a through a port 112 associated with a line card 110. Switch 102 may map the inbound frame 116a to a flooding domain 202. Line card 110 may consult table 120 to determine whether the destination address of the frame 116a is known. If the destination address of the frame is not known within tables 120, then each port 112 within the flooding domain may be flooded with a copy of the frame 116a. For example, in
Switch 102 may determine whether the tables 120 are already populated with the information in the inbound frame 116a. If not, switch 102 may populate tables 120 with the information in the inbound frame 116a. Switch 102 may determine which tables 120 are associated with ports 112 that are active within the mapped flooding domain 202. In one embodiment, switch 102 may populate only those tables 120 that are associated with active ports 112 within the mapped flooding domain 202. For example, switch 102 may determine that the inbound frame 116a is mapped to flooding domain X, and contains a source address of “A,” and was received through P1. Switch 102 may determine the line cards on which the flood domain is active, and the flood domain contains ports P1, P5, P7 and P8. Consequently, tables 120a, 120c, and 120d are associated with ports that are active within the flooding domain of the inbound frame; however, table 120b is not. Switch 102 may thus determine whether information determined from the inbound frame is found within the tables 120a, 120c, and 120d. If the information is not found within such tables 120, then, as shown in
Switch 102 may receive a frame 116a through a port 112 associated with a line card 110, for which the destination address of the frame 116a is known. If the destination address of the frame is known within tables 120, then a copy of the frame may be transmitted through the port 112 associated with the destination address. For example, in
As described above, switch 102 may determine whether the tables 120 are populated with the information in the inbound frame 116a, and, if not, populate tables 120 for line cards 110 where the flooding domain 202 of the inbound frame 116a is active. For example, switch 102 may determine that the inbound frame 116a is mapped to flooding domain X, and contains a source address of “C,” and was received through P5. Switch 102 may determine that the ports P1, P5, P7, and P8 are active within flooding domain X. Consequently, tables 120a, 120c, and 120d are associated with ports that are active within the flooding domain of the inbound frame; however, table 120b is not. Switch 102 may thus determine whether information determined from the inbound frame is found within the tables 120a, 120c, and 120d. If the information is not found within such tables 120, then, as shown in
In one embodiment, switch 102 determine the active ports 112 for a given flooding domain 202, and then examine tables 120 to determine whether the table 120 contains information for an address and port combination for an inactive flooding domain. If an entry is found within a table 120 which belongs to a flooding domain 202 which is not active on a line card 110 or port 112 associated with the table 120, then the entry may be removed. For example, if table 120b contained an entry associating address “A” with P1 for the flooding domain X, switch 102 may determine that flooding domain X is not active on P3 or P4, and thus remove the entry from table 120b.
In step 515, the destination address of the frame may be determined. In step 520, a tuple of the destination address and the flooding domain may be looked up in a local forwarding table. Information associated with the flooding domain may include ports in which the flooding domain is active. If the destination address and flooding domain tuple is found within such tables, associating the address with a port through which the address may be reached, then in step 525, the frame may be forwarded over such a port associated with the destination address.
If the destination address and forwarding domain tuple is not found, then in step 530 the forwarding table may be populated with information associated with the frame. Such information may include the source address, the flooding domain, and the ingress port. In step 535, the frame may be flooded to all the line cards active in the flooding domain. Steps 505-535 may be repeated for each frame received at a switch, including frames received by an ingress line card.
In step 605, information, such as a frame, to be forwarded over a network may be received. Such a reception may be from an ingress line card. The frame may contain a destination address. The frame may also be mapped to a flooding domain. In step 610, it may be determined whether the tuple of the destination address of the frame and a flooding domain to which the frame is mapped are known in the local forwarding table. In one embodiment, the local forwarding table may be associated with the egress line card. If the tuple is known, then in step 640 the frame may be forwarded over a port associated with the destination address. The port may be determined from the forwarding table, as a result of looking up the tuple. The port may be associated with the destination address for the purposes of the local line card.
If the tuple is not known, then in step 620 the forwarding table may be populated with forwarding information associated with the frame. Such forwarding information may include a source address, flooding domain, or ingress port. In step 630, the frame may be forwarded to all ports of the associated flooding domain. In one embodiment, the ports through which the frame is forwarded may include the ports of the egress line card
Although
Methods 500 and 600 may be implemented using the system of
For the purposes of this disclosure, computer-readable media may include any instrumentality or aggregation of instrumentalities that may retain data and/or instructions for a period of time. Computer-readable media may include, without limitation, storage media such as a direct access storage device (e.g., a hard disk drive or floppy disk), a sequential access storage device (e.g., a tape disk drive), compact disk, CD-ROM, DVD, random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), and/or flash memory; as well as communications media such wires, optical fibers, and other tangible, non-transitory media; and/or any combination of the foregoing.
Although the present disclosure has been described in detail, it should be understood that various changes, substitutions, and alterations can be made hereto without departing from the spirit and the scope of the disclosure as defined by the appended claims.