Method and apparatus for optimizing the transfer of data packets between local area networks
First Claim
1. A system for selectively transferring data packets between a plurality of local area networks (LANs), wherein said data packets identify destination and source addresses, said system comprising:
- a plurality of media access controllers (MACs) each configured for receiving and transmitting data packets to and/or from a different LAN;
said MACS including at least a first MAC associated with a first LAN for receiving data packets from said first LAN and a second MAC associated with a second LAN for transmitting data packets to said second LAN;
a shared data bus;
each of said MACs connected to said shared data bus for presenting data packets for transfer across said data bus;
a MAC receive buffer including a controller for transferring data packets presented by said MACs across shared data bus and for buffering at least a portion of said transferred data packets;
a MAC transmit buffer including a controller capable of operating concurrently with said MAC receive buffer controller for transferring data packets across said shared data bus and for buffering at least a portion of said transferred data packets;
a shared packet memory for storing a plurality of data packets;
a packet memory input buffer for periodically receiving and buffering at least a portion of data packets from said packet memory;
a packet memory output buffer capable of operating concurrently with said packet memory input buffer for periodically buffering and transmitting at least a portion of data packets to said packet memory;
a shared descriptor memory for storing descriptors pointing to said data packets stored within said packet memory;
an address table for correlating the destination address of each data packet with one of said MACs;
a receive controller for transferring a data packet from said MAC receive buffer to said packet memory via said packet memory output buffer and for generating descriptors corresponding to the locations of said data packet within said packet memory;
wherein said receive controller stores said descriptors in said descriptor memory in response to said address table and the destination address of said data packet; and
a transmit controller capable of operating concurrently with said receive controller for transferring a data packet from said packet memory to said MAC transmit buffer via said packet memory input buffer according to descriptors stored within said descriptor memory.
16 Assignments
0 Petitions
Accused Products
Abstract
A switch apparatus for optimizing the transfer of data packets between a plurality of local area networks (LANs). Apparatus of the present invention are comprised of multiple independent controllers, e.g., a receive controller and a transmit controller, which share common resources including a first memory (a packet memory) which stores the data packets, a second memory (a descriptor memory) which stores pointers to the stored data packets, and buffered data paths (preferably using FIFO buffers). The independent controllers operate essentially concurrently for most tasks while interleaving their use of the shared resources. Consequently, embodiments of the present invention can simultaneously receive and transmit data across multiple LAN data ports (e.g., 28 Ethernet ports comprised of 10/100 and/or 10 Mbps ports).
-
Citations
12 Claims
-
1. A system for selectively transferring data packets between a plurality of local area networks (LANs), wherein said data packets identify destination and source addresses, said system comprising:
-
a plurality of media access controllers (MACs) each configured for receiving and transmitting data packets to and/or from a different LAN;
said MACS including at least a first MAC associated with a first LAN for receiving data packets from said first LAN and a second MAC associated with a second LAN for transmitting data packets to said second LAN;a shared data bus; each of said MACs connected to said shared data bus for presenting data packets for transfer across said data bus; a MAC receive buffer including a controller for transferring data packets presented by said MACs across shared data bus and for buffering at least a portion of said transferred data packets; a MAC transmit buffer including a controller capable of operating concurrently with said MAC receive buffer controller for transferring data packets across said shared data bus and for buffering at least a portion of said transferred data packets; a shared packet memory for storing a plurality of data packets; a packet memory input buffer for periodically receiving and buffering at least a portion of data packets from said packet memory; a packet memory output buffer capable of operating concurrently with said packet memory input buffer for periodically buffering and transmitting at least a portion of data packets to said packet memory; a shared descriptor memory for storing descriptors pointing to said data packets stored within said packet memory; an address table for correlating the destination address of each data packet with one of said MACs; a receive controller for transferring a data packet from said MAC receive buffer to said packet memory via said packet memory output buffer and for generating descriptors corresponding to the locations of said data packet within said packet memory;
wherein said receive controller stores said descriptors in said descriptor memory in response to said address table and the destination address of said data packet; anda transmit controller capable of operating concurrently with said receive controller for transferring a data packet from said packet memory to said MAC transmit buffer via said packet memory input buffer according to descriptors stored within said descriptor memory. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. In a system comprised of (1) a plurality of media access controllers (MACs) each configured for receiving and transmitting data packets to and/or from a different local area networks (LAN), said MACS including at least a first MAC associated with a first LAN for receiving and buffering data packets from said first LAN and a second MAC associated with a second LAN for transmitting data packets to said second LAN, (2) a shared packet memory for storing a plurality of data packets, and (3) a shared descriptor memory for storing descriptors pointing to said data packets stored within said packet memory, wherein said data packets identify destination and source addresses, a switch controller for selectively transferring data packets between a plurality of LANs via said MACS, said switch controller comprising:
-
a shared data bus; each of said MACs connected to said shared data bus for presenting data packets for transfer across said data bus; a MAC receive buffer including a controller for transferring data packets presented by said MACs across shared data bus and for buffering at least a portion of said transferred data packets; a MAC transmit buffer including a controller capable of operating concurrently with said MAC receive buffer controller for transferring data packets across said shared data bus and for buffering at least a portion of said transferred data packets; a packet memory input buffer for periodically receiving and buffering at least a portion of data packets from said packet memory; a packet memory output buffer capable of operating concurrently with said packet memory input buffer for periodically buffering and transmitting at least a portion of data packets to said packet memory; an address table for correlating the destination address of each data packet with one of said MACs; a receive controller for transferring a data packet from said first MAC to be stored in said packet memory via said MAC receive buffer to said packet memory via said packet memory output buffer and for generating descriptors corresponding to the locations of said data packet within said packet memory;
wherein said receive controller stores said descriptors in said descriptor memory in response to said address table and the destination address of said data packet; anda transmit controller capable of operating concurrently with said receive controller for transferring a data packet from said packet memory to said MAC transmit buffer via said packet memory input buffer according to descriptors stored within said descriptor memory. - View Dependent Claims (8, 9, 10, 11, 12)
-
Specification