Network devices, such as bridges, routers, and switches, forward packets from a source to a destination over a network. A bridge may be divided into multiple network devices, where the multiple network devices provide a single logical device. The single logical device includes a controlling bridge and one or more port extenders communicatively coupled to the controlling bridge. Conventionally, these devices lower the cost of adding more ports since the port extenders typically are less expensive than the controlling bridge. This is due to the controlling bridge being responsible for forwarding decisions. One example of a port extender is defined by Institute of Electrical and Electronics Engineers (IEEE) standard 802.1BR.
Multicast routing provides an efficient and scalable method for allowing multiple consumers to subscribe to a stream of data without the sender having to transmit individual streams to each consumer. For conventional port extenders (i.e., IEEE 802.1 BR compliant devices), only layer 2 bridging is supported for multicast packets. Therefore, to distribute multicast packets over several routable interfaces, such as Virtual Local Area Networks (VLANs), the multicast packets are forwarded for each routable interface. As such, when multicast packets are being routed through a port extender, the communication link from the controlling bridge to the port extender may be consumed by the same multicast packets being forwarded to multiple routable interfaces.
In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific examples in which the disclosure may be practiced. It is to be understood that other examples may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims. It is to be understood that features of the various examples described herein may be combined with each other, unless specifically noted otherwise.
Each node 112a-112(x), 114a-114(y), and 116a-116(z) includes a host, a client, another port extender (i.e., for aggregated port extenders), or other suitable devices for transmitting and receiving communications through network 100. Each node 112a-112(x), 114a-114(y), and 116a-116(z) may communicate with other nodes through network 100. Each node 112a-112(x), 114a-114(y), and 116a-116(z) may be member of a routed interface, such as a Virtual Local Area Network (VLAN).
Controlling bridge 101 routes packets through network 100. Controlling bridge 101 stores forwarding data (e.g., Media Access Control (MAC) addresses and Internet Protocol (IP) addresses) for nodes 112a-112(x), 114a-114(y), and 116a-116(z). Each incoming packet is transmitted to controlling bridge 101, which makes the decision as to where to forward the packet based on the packet and the forwarding data. Each port extender 104a-104(n) works in combination with controlling bridge 101 to forward packets to the designated node or nodes. Each port extender 104a-104(n) forwards each packet to a node or nodes based on a header attached to each packet by controlling bridge 101.
In operation, controlling bridge 101 configures forwarding tables including a multicast route table (described below with reference to
When a multicast packet is received at a port extender 104a-104(n) from a connected node 112a-112(x), 114a-114(y), and 116a-116(z), the port extender attaches a header to the packet that identifies the source port on which the packet was received and forwards the packet to controlling bridge 101. Controlling bridge 101 makes the forwarding decision for the multicast packet using the multicast route table, attaches a new header to the multicast packet including the source port and a destination for the packet, and forwards the packet to the appropriate port extenders 104a-104(n).
The new header identifies either the destination port (e.g. for a unicast packet), a replication group (e.g., for a multicast packet to a group of ports on a single VLAN (i.e., layer 2 bridging)), or an RGID (e.g., for a multicast packet to a plurality of groups of ports with each group of ports on a different VLAN (i.e., layer 3 multicast routing)). The port extender then forwards the packet to the appropriate port(s) based on the header. If the port extender receives a packet with an RGID, the port extender replicates the packet for each routed interface (i.e., VLAN) and forwards the packet to each port as defined in the port extender RGID table for the port extender. The port extender uses the source port identified in the header to remove the source port from the multicast group membership to prevent a multicast packet from being forwarded back to the source port from which the multicast packet originated.
In one example, network forwarding fabric 132, forwarding tables 136, and ACL/QoS TCAM 140 constitute application specific logic, such as an Application Specific Integrated Circuit (ASIC). In another example, processor 122 and memory 126 including multicast module 128 constitute application specific logic. In another example, a combination of network forwarding fabric 132, forwarding tables 136, ACL/QoS TCAM 140, processor 122, and memory 126 including multicast module 128 constitute application specific logic.
Processor 122 is communicatively coupled to memory 126 through a communication link 124 and to network forwarding fabric 132 through a communication link 130. Network forwarding fabric 132 is communicatively coupled to forwarding tables 136 through a communication link 134, to ACL/QoS TCAM 140 through a communication link 138, and to network interfaces 144a-144d through a communication link 142a-142d, respectively. Each network interface 144a-144d is configured to be communicatively coupled to a port extender, such as a port extender 104a-104(n) previously described and illustrated with reference to
Processor 122 includes a Central Processing Unit (CPU) or another suitable processor. In one example, memory 126 stores instructions executed by processor 122 for operating controlling bridge 120. Memory 126 includes any suitable combination of volatile and/or non-volatile memory, such as combinations of Random Access Memory (RAM), Read-Only Memory (ROM), flash memory, and/or other suitable memory. Memory 126 stores instructions executed by processor 122 including instructions for a multicast module 128. In one example, processor 122 executes instructions of multicast module 128 to implement the layer 3 multicast routing disclosed herein.
In one example, forwarding tables 136 include routing and bridging forwarding tables that are generated by controlling bridge 120 using conventional protocols. For multicast routed IP traffic, forwarding tables 136 include a multicast route table (described below with reference to
In operation, network forwarding fabric 132 receives packets from port extenders through network interfaces 144a-144d. Each packet includes a header identifying the source port for the packet. Controlling bridge 102 makes forwarding decisions for the packets based on data stored in forwarding tables 136 and based on data stored in ACL/QoS TCAM 140. Based on the forwarding decisions for a packet, controlling bridge 120 attaches a new header to the packet identifying the source port and the destination for the packet. The destination for each packet may identify a destination port, a replication group, or an RGID. The packets are then forwarded by network forwarding fabric 132 to a port extender(s) through the appropriate network interface(s) 144a-144d.
In one example, PE forwarding tables 174 and PE network forwarding fabric 178 constitute application specific logic, such as an ASIC. In another example, processor 162 and memory 166 including multicast module 168 constitute application specific logic. In another example, a combination of PE network forwarding fabric 178, PE forwarding tables 174, processor 162, and memory 166 including multicast module 168 constitute application specific logic.
Processor 162 is communicatively coupled to memory 166 through a communication link 164, to PE network forwarding fabric 178 through a communication link 170, and to PE forwarding tables 174 through a communication link 172. PE forwarding tables 174 are communicatively coupled to PE network forwarding fabric 178 through a communication link 176. PE network forwarding fabric 178 is communicatively coupled to uplink port 182 through a communication link 180 and to client ports 186a-186c through communication links 184a-184c, respectively. Uplink port 182 is configured to be communicatively coupled to a network interface of a controlling bridge, such as one of network interfaces 144a-144d of controlling bridge 120 previously described and illustrated with reference to
Processor 162 includes a CPU or another suitable processor. In one example, memory 166 stores instructions executed by processor 162 for operating port extender 160. Memory 166 includes any suitable combination of volatile and/or non-volatile memory, such as combinations of RAM, ROM, flash memory, and/or other suitable memory. Memory 166 stores instructions executed by processor 162 including instructions for a multicast module 168. In one example, processor 162 executes instructions of multicast module 168 to implement the layer 3 multicast routing disclosed herein.
PE forwarding tables 174 include a port extender RGID table (described below with reference to
In operation, PE network forwarding fabric 178 receives packets from clients via client ports 186a-186c. Port extender 160 attaches a header to each packet identifying the source port 186a-186c from which the packet was received. PE network forwarding fabric 178 then forwards the packet to a controlling bridge via uplink port 182.
PE network forwarding fabric 178 receives packets from a controlling bridge via uplink port 182. Each packet received from the controlling bridge includes a header identifying the source port and a destination for the packet. The destination may identify a destination port, a replication group, or an RGID. PE network forwarding fabric 178 then forwards the packet to clients via client ports 186a-186c based on the header of the packet and data stored in PE forwarding tables 174. If the destination of a packet identifies a destination port, the port extender forwards the packet to the identified client port 186a-186c. If the destination of a packet identifies a replication group, the port extender forwards the packet to the group of identified client ports 186a-186c. If the destination of a packet identifies an RGID, the port extender replicates the packet for each routed interface and for each routed interface forwards the packet to the group of client ports 186a-186c defined in the port extender RGID table.
In this example, controlling bridge 201 routes packets to and between four VLANs indicated by VLAN “a” 202a, VLAN “b” 202b, VLAN “c” 202c, and VLAN “d” 202d. Controlling bridge 201 includes port extender logic 216a-216c. In one example, port extender logic 216a-216c is provided by processor 122, memory 126, network forwarding fabric 132, forwarding tables 136, ACL/QoS TCAM 138, and network interfaces 144a-144d previously described and illustrated with reference to
Each port extender logic 216a-216c is communicatively coupled to a port extender 220a-220c through a communication link 218a-218c, respectively. Port extender 220a is communicatively coupled to hosts 228a-228c through communication links 222a-222c, respectively. Port extender 220b is communicatively coupled to hosts 230a-230c through communication links 224a-224c, respectively. Port extender 220c is communicatively coupled to hosts 232a-232c through communication links 226a-226c, respectively.
Packets for VLAN 202c are routed to port extender logic 216a through a communication link 204, to port extender logic 216b through a communication link 208, and to port extender logic 216c through a communication link 210. Packets from VLAN 202d are routed to port extender logic 216a through a communication link 206, to port extender logic 216b through a communication link 212, and to port extender logic 216c through a communication link 214.
In this example, hosts 228a, 228b, 230a, and 230c are members of VLAN “c”, and hosts 228c, 230b, and 232a-232c are members of VLAN “d”. In addition, each host has an address based on the VLAN, the port extender number, and the port of the port extender. For example, host 228a has an address “c.pe.1.1”, which indicates that host 228a is a member of VLAN “c” and is communicatively coupled to the first port of the first port extender 220a. Host 228b has an address “c.pe.1.2”, which indicates that host 228b is a member of VLAN “c” and is communicatively coupled to the second port of the first port extender 220a. Likewise, host 228c has an address “d.pe.1.3”, which indicates that host 228c is a member of VLAN “d” and is communicatively coupled to the third port of the first port extender 220a.
The following examples illustrated in
Multicast route table 400 stores data for each multicast flow so that the controlling bridge can make forwarding decisions for multicast packets. Multicast route table 400 includes an index field 402, an IP source field 404, an IP destination field 406, an ingress VLAN field 408, and an egress list field 410. The egress list field includes a list of VLANs, and a port list for each VLAN. Multicast route table 400 is generated by a controlling bridge using conventional protocols, such as PIM sparse or dense mode IP multicast routing, IGMP snooping, MLD, or by using other suitable protocols.
In this example, a multicast packet having an IP source “src.1”, an IP destination “dest.1”, and an ingress VLAN “a”, includes an egress list including VLANs “c” and “d”. For VLAN “c”, the packet is to be forwarded to addresses “c.pe.1.1” and “c.pe.1.2”. For VLAN “d”, the packet is to be forwarded to addresses “d.pe.1.3” and “d.pe.3.1”. This record has been assigned an index of “1”. A multicast packet having an IP source “src.2”, an IP destination “dest.2”, and an ingress VLAN “a”, includes an egress list including VLAN “d”. For VLAN “d”, the packet is to be forwarded to address “d.pe.2.2”. This record has been assigned an index of “2”. Likewise, a multicast packet having an IP source “src.3”, an IP destination “dest.3”, and an ingress VLAN “a”, includes an egress list including VLANs “c” and “d”. For VLAN “c”, the packet is to be forwarded to addresses “c.pe.1.2”, “c.pe.2.1”, and “c.pe.2.3”. For VLAN “d”, the packet is to be forwarded to addresses “d.pe.2.2”, “d.pe.3.2”, and “d.pe.3.3”. This record has been assigned an index of “3”.
Over time, records for new flows may be added to multicast route table 400 and records within multicast route table 400 may be removed. Therefore, multicast route table 400 may become sparse (i.e., may have unused entries between used entries).
Flow index to RGID table 420 stores data for forwarding multicast packets. Flow index to RGID table 420 includes a flow index field 422 and a list of PEs, with each PE assigned an RGID. Each flow index value stored in flow index field 422 corresponds to an index value stored in index field 402 of multicast route table 400 previously described and illustrated with reference to
In this example, for flow index “1”, list field 424 includes “<1, 1>, <3, 1>”, which indicates that a packet having a flow index of “1” is to be forwarded to the first port extender and the third port extender. In addition, both the first port extender and the third port extender for flow index “1” have been assigned an RGID of “1”. For flow index “2”, list field 424 includes “<2, 1>”, which indicates that a packet having a flow index of “2” is to be forwarded to the second port extender. In addition, the second port extender for flow index “2” has been assigned an RGID of “1”. Likewise, for flow index “3”, list field 424 includes “<1, 2>, <2, 2>, <3, 2>”, which indicates that a packet having a flow index of “3” is to be forwarded to the first port extender, the second port extender, and the third port extender. In addition, the first port extender, the second port extender, and the third port extender for flow index “3” have been assigned an RGID of “2” since the RGID of “1” has already been assigned to each port extender in the previous entries of flow index to RGID table 420.
In one example, the RGID starts at 1 at the first encounter of a given port extender and then increments for each further encounter of the given port extender. Therefore, the RGID for the same flow index 422 could be different in each port extender. For example, if the third port extender were also part of flow index “2”, the entry for flow index “2” would be “<2, 1>, <3, 2>”, and the entry for flow index “3” would be “<1, 2>, <2, 2>, <3, 3>”.
In operation, in response to receiving a multicast packet from a port extender, controlling bridge 201 attaches a header to the packet and forwards the packet to the appropriate port extenders. For example, for a packet for flow index “1”, controlling bridge 201 attaches a header including RGID “1” to the packet and forwards the packet once to first port extender 220a and once to third port extender 220c. For a packet for flow index “2”, controlling bridge 201 attaches a header including RGID “1” to the packet and forwards the packet once to second port extender 220b. Likewise, for a packet for flow index “3”, controlling bridge 201 attaches a header including RGID “2” to the packet and forwards the packet once to first port extender 220a, once to second port extender 220b, and once to third port extender 220c.
Port extender RGID table 440 stores data for forwarding multicast packets. Port extender RGID table 440 includes an RGID field 442 and a field 444 including a list of VLANs (i.e., routed interfaces) and an associated port list (i.e., an associated set of ports) for each VLAN. Port extender RGID table 440 links each RGID to a list of VLANs and an associated port list for each VLAN. In other examples, port extender RGID table 440 includes an RGID field whose value points to a linked list of replication groups, with one replication group per VLAN.
Port extender RGID table 440 is generated by controlling bridge 201 (
In this example, RGID “1” is assigned to VLANs “c” and “d”. For VLAN “c”, the port list includes ports 1 and 2. For VLAN “d”, the port list includes port 3. These values are based on the record of index “1” of multicast route table 400 (
In operation, in response to port extender 220a receiving a packet including an RGID of “1” from controlling bridge 201, port extender 220a replicates the packet for VLAN “c” and forwards the packet to ports 1 and 2 of port extender 220a. Port extender 220a also replicates the packet for VLAN “d” and forwards the packet to port 3 of port extender 220a. In this way, a packet including an RGID of “1” is forwarded from port extender 220a to hosts 228a, 228b, and 228c (
Port extender RGID table 460 stores data for forwarding multicast packets. Port extender RGID table 460 includes an RGID field 462 and a field 464 including a list of VLANs and an associated port list for each VLAN. Port extender RGID table 460 is generated by controlling bridge 201 (
In this example, RGID “1” is assigned to VLAN “d”. For VLAN “d”, the port list includes port 2. These values are based on the record of index “2” of multicast route table 400 (
In operation, in response to port extender 220b receiving a packet including an RGID of “1” from controlling bridge 201, port extender 220b replicates the packet for VLAN “d” and forwards the packet to port 2 of port extender 220b. In this way, a packet including an RGID of “1” is forwarded from port extender 220b to host 230b (
Port extender RGID table 480 stores data for forwarding multicast packets. Port extender RGID table 480 includes an RGID field 482 and a field 484 including a list of VLANs and an associated port list for each VLAN. Port extender RGID table 480 is generated by controlling bridge 201 (
In this example, RGID “1” is assigned to VLAN “d”. For VLAN “d”, the port list includes port 1. These values are based on the record of index “1” of multicast route table 400 (
In operation, in response to port extender 220c receiving a packet including an RGID of “1” from controlling bridge 201, port extender 220c replicates the packet for VLAN “d” and forwards the packet to port 1 of port extender 220c. In this way, a packet including an RGID of “1” is forwarded from port extender 220c to host 232a (
Controlling bridge 506 is communicatively coupled to an external network 502 through a communication link 504. Controlling bridge 506 is communicatively coupled to port extender 510 through a communication link 508. Port extender 510 includes a plurality of client ports, including port P1 512a, port P2 512b, and port P3 512c. Port P1 512a is communicatively coupled to a client 516a through a communication link 514a. Port P2 512b is communicatively coupled to a client 516b through a communication link 514b.
In operation of one example, client 516a transmits a packet to port P1 512a of port extender 510 as indicated at 520. The packet transmitted by client 516a includes client data. Port extender 510 receives the packet on port P1 512a and attaches a header to the packet that identifies the source port on which the packet was received. Port extender 510 then transmits the packet including the header to controlling bridge 506. The packet transmitted from port extender 510 to controlling bridge 506 is indicated at 524. Packet 524 includes a header including a source field 526 and a destination field 528. The source field 526 identifies the source of the packet (i.e., port P1 in this example), and the destination field 528 is not yet applicable. Packet 524 also includes the client data 520.
In response to receiving packet 524, controlling bridge 506 makes a forwarding decision for the packet based on forwarding tables (e.g., a multicast route table and a flow index to RGID table). Based on the forwarding decision, controlling bridge 506 attaches a new or updated header to the packet that identifies the source port of the packet and the destination for the packet. Controlling bridge 506 then transmits the packet including the new or updated header to port extender 510. The packet transmitted from controlling bridge 506 to port extender 510 is indicated at 534. Packet 534 includes a header including a source field 536 and a destination field 538. The source field 536 identifies the source of the packet (i.e., port P1 in this example), and the destination field 538 identifies the destination “X” for the packet. Packet 534 also includes the client data 520.
The destination “X” may be one of three values. The destination “X” may identify a destination port (e.g., port P2), a replication group ID that identifies a group of ports for a single routed interface (e.g., ports P2 and P3), or an RGID that identifies a group of ports for each of a plurality of routed interfaces. In response to receiving packet 534, port extender 510 forwards the packet based on the source field 536, the destination field 538, and forwarding tables (e.g., a port extender RGID table). The packet forwarded to a client includes client data 520 and not the header used by port extender 510 to forward the packet.
By forwarding multicast packets as disclosed herein using layer 3 multicast routing, multicast packets are transmitted only one time to each port extender, rather than one time per routed interface. Each port extender then replicates the multicast packet for each routed interface and forwards the multicast packet to the associated ports for each routed interface. Therefore, traffic on the network is reduced compared to layer 2 bridging.
Although specific examples have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a variety of alternate and/or equivalent implementations may be substituted for the specific examples shown and described without departing from the scope of the present disclosure. This application is intended to cover any adaptations or variations of the specific examples discussed herein. Therefore, it is intended that this disclosure be limited only by the claims and the equivalents thereof.