Technique for coupling entities via virtual ports

A technique transfers data between geographically dispersed entities belonging to a virtual-local-area network (VLAN). According to the technique, geographically dispersed entities communicate via software-defined virtual ports that “appear” as physical ports to the entities. Each virtual port, in turn, is associated with one or more connections wherein each connection may be associated with one or more VLANs. Data generated on a particular VLAN that is destined for a remote entity is forwarded to a virtual port which, in turn, transfers the data to the remote entity over the connection associated with the VLAN. Moreover, state is maintained at each virtual port for each connection, thereby enabling the virtual ports to support various protocols that operate with physical ports.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to data networking and, in particular, to a technique for coupling geographically dispersed entities belonging to a virtual local area network (VLAN) via virtual ports.

2. Background Information

A data network is a geographically distributed collection of interconnected communication links and segments for transporting data between nodes, such as computers. The nodes typically transport the data over the network by exchanging discrete frames or packets containing the data in accordance with various pre-defined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP) or the Internetwork Packet eXchange (IPX) protocol. In this context, a protocol consists of a set of rules defining how the nodes interact with each other.

Many types of networks are available, with types ranging from local area networks (LANs) to wide area networks (WANs). LANs typically connect nodes, such as personal computers and workstations, over dedicated private communication links located in the same general physical location, such as a building or a campus to form a private network. WANs, on the other hand, typically connect large numbers of geographically dispersed nodes over long-distance communications links, such as common carrier telephone lines. The Internet is an example of a WAN that connects disparate networks throughout the world, providing global communication between nodes contained in various networks. WANs often comprise a complex network of intermediate network nodes, such as routers or switches, that are interconnected to form the WAN and are often configured to perform various functions associated with transferring traffic through the WAN.

Some organizations employ virtual LANs (VLANs) in their private networks to “logically” group entities, such as users, servers, and other resources within the organization. A VLAN is a logical group of entities, such as users and servers, which appear to one another as if they are on the same physical LAN segment, even though they may be spread across a large network comprising many different physical segments. A VLAN operates at the data link layer, which is layer-2 (L2) of the Open Systems Interconnect (OSI) reference model.

In some organizations, entities belonging to a VLAN group may be dispersed over a wide geographical area. To interconnect the geographically dispersed entities, an organization may subscribe to a service provider (SP) that provides a WAN to enable communication among the various dispersed entities. Here, the organization may employ one or more routers to interconnect the various dispersed entities to the SP's WAN.

Some SPs employ the Asynchronous Transfer Mode (ATM) protocol to carry large volumes of traffic generated by various organizations through the WAN. Moreover, the SP may employ ATM virtual connections (VCs), wherein each VC carries the traffic for a particular organization's VLAN. By employing VCs in this manner, an SP can ensure that traffic generated on one organization's VLAN does not interfere with traffic generated on another organization's VLAN.

One problem with using VCs to carry VLAN traffic is that the VCs may not appear transparent to various L2 protocols operated over the VLAN. For example, nodes belonging to a VLAN often run the spanning-tree protocol (STP) and periodically generate bridged-protocol data units (BPDUs). The STP treats a physical port on these nodes as a single physical point-to-point data link and consequently sends only one copy of a generated BDPU to a given port. An ATM physical port, however, may be associated with a plurality of VCs that couple various network devices belonging to the VLAN. Since only one BPDU is generated for the ATM port, the STP may not operate properly as there will not be enough BPDUs for transfer over all the VCs associated with the VLAN.

Likewise, in accordance with the STP, a physical port may be placed in a blocked state to avoid loops in a particular VLAN's topology. This may pose a problem with ATM implementations wherein a blocked VC blocks an entire ATM port. For example, if the ATM port is associated with a plurality of VCs and each VC is associated with a different VLAN, blocking a VC to meet the requirements of the STP for a particular VLAN may inadvertently cause traffic on the other VLANs to be blocked as well.

Another problem associated with coupling VLANs via VCs is that in some intermediate nodes a separate control structure may be maintained for each VC. The control structure typically holds information associated with the connection, such as connection status and various statistics. Often, the number of control structures available in an intermediate node is limited due to limited resources available to the node, e.g., a limited amount of memory storage. Consequently, if the number of dispersed entities in a VLAN is quite numerous and requires many VCs, an intermediate node in the network may not have sufficient resources to maintain control structures for all the VCs needed to couple the entities belonging to the VLAN.

SUMMARY OF THE INVENTION

The present invention relates to a technique for efficiently transferring data between geographically dispersed entities belonging to a virtual-local-area network (VLAN). According to the technique, the geographically dispersed entities communicate via software-defined virtual ports that “appear” as physical ports to the entities. Each virtual port, in turn, is associated with one or more connections wherein each connection may be associated with a VLAN. Data generated on a particular VLAN that is destined for a remote entity is forwarded to a virtual port which, in turn, transfers the data to the remote entity over the connection associated with the VLAN. Moreover, state is maintained at each virtual port for each connection thereby enabling the virtual ports to support various protocols that operate with physical ports.

Briefly, an intermediate node acquires a packet destined for a destination node from a source node. The intermediate node associates the packet with a VLAN and identifies (i) a virtual port, through which the destination node can be reached, and (ii) a connection associated with the packet's VLAN. The intermediate node then transfers the packet onto the connection towards the destination node.

In the illustrated embodiment, geographically dispersed entities (e.g., end nodes) belonging to various VLANs are coupled to “customer-edge” (CE) intermediate nodes that, in turn, are coupled to “provider-edge” (PE) nodes contained in a wide-area network (WAN). A first entity (source node) belonging to a VLAN communicates with a second entity (destination node) belonging to the same VLAN by transferring a data packet (i.e., the original packet) containing the destination address of the second node to a first CE intermediate node. The first CE node acquires the original packet and identifies a VLAN associated with the packet. The first CE node then uses the destination address contained in the original packet and the VLAN to identify a virtual port that is used to reach the destination node. Using the VLAN information associated with the packet, the first CE node further identifies a software-defined connection, e.g., a virtual connection (VC), used to carry the VLAN's traffic. The first CE intermediate node encapsulates the original packet to produce a singly encapsulated packet and transfers the packet via the connection to a first PE intermediate node contained in the WAN.

The first PE intermediate node identifies an internal VLAN associated with the destination node. Using the internal VLAN information and destination address contained in the data, the first PE node identifies a virtual port and a software-defined connection (e.g., a VC) used to reach the destination node in a manner as described above. The first PE node encapsulates the singly encapsulated packet to create a doubly encapsulated packet and transfers that packet to a second PE node via the connection. The second PE node acquires the doubly encapsulated data, decapsulates it yielding the singly encapsulated data. Using the VLAN and destination address information in the singly encapsulated packet, the second PE node identifies a virtual port and a software-defined connection (e.g., a VC) associated with the destination node. The second PE node transfers the singly encapsulated packet over the connection to a second CE intermediate node. The second CE intermediate node acquires the singly encapsulated packet and decapsulates it yielding the original packet. The second CE node then processes the original packet, which may include forwarding it to the second entity.

Advantageously, the inventive technique is an improvement over prior schemes in that the virtual port appears as a “physical” port and enables certain protocols that deal with physical ports to operate where they may not otherwise operate using the prior schemes, such as those that rely on logical communication links like VCs. Moreover, the inventive technique conserves resources in that it enables many connections (e.g., VCs) associated with various VLANs to be associated with a single virtual port. The virtual port in turn is associated with a single control structure. As a result, many connections may be associated with a single control structure, thereby obviating having to maintain a separate control structure for each connection and consequently consume additional resources.

DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT

FIG. 1is a schematic block diagram of an exemplary data network100that may be advantageously used with the present invention. The network100comprises a collection of communication links and segments connected to a plurality of nodes, such as end nodes110and intermediate nodes200. The network links and segments may comprise local area networks (LANs)120, LAN links122, a wide-area network (WAN)170, and WAN links130interconnected by intermediate nodes200to form an internetwork of computer nodes. These internetworked nodes communicate by exchanging data according to a predefined set of protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP) and the Institute of Electrical and Electronics Engineers (IEEE) 802.3 and 802.1Q protocols.

Illustratively, data network100comprises a customer network portion belonging to a customer and a provider network portion belonging to a service provider (SP). The customer network portion comprises various geographically dispersed networks, such as LANs120a-d, coupled to customer edge (CE) intermediate nodes (e.g. nodes200a-d) that reside on e.g., the customer's premises. The LANs120a-dcomprise end nodes110which may be computer systems, such as workstations and/or personal computers, capable of transferring and acquiring data packets to and from the network100. The provider network is illustratively a conventional service provider network, such as an Internet service provider (ISP) network comprising various intermediate nodes coupled to form WAN170. These nodes illustratively reside on the provider's premises and include provider edge (PE) nodes200e-fwhich are coupled to the various CE intermediate nodes200a-dvia e.g., high-speed data links130. The PE nodes enable LANs120a-dto access the WAN170and exchange information (e.g., data packets) between the end nodes110contained in the LANs120.

FIG. 2is a high-level partial schematic block diagram of intermediate node200, which illustratively is a switch. Operation of switch200will be described with respect to layer-2 (L2) and layer-3 (L3) switching which are the data-link and network layers of the Open Systems Interconnect (OSI) reference model, respectively, although the switch200may be programmed for other applications. A suitable intermediate network device platform that may be used with the present invention includes, but is not limited to, the Cisco 7600 series switch commercially available from Cisco Systems, Inc. of San Jose, Calif.

Switch200comprises a plurality of interconnected components including a forwarding engine290, various memories, queuing logic210, selector250, routing processor260, and network interface cards (line cards)240. A clock module270synchronously controls operations of various components contained in switch200, although it should be noted that arrayed elements contained in the forwarding engine290(described below) may be operatively configured to function asynchronously. In the illustrative embodiment, the clock module270generates clock signals at a frequency of, e.g., 200 megahertz (i.e., 5 nanosecond clock cycles), and globally distributes them via clock lines to the various components of the intermediate node200.

The memories generally comprise computer readable random-access memory (RAM) storage locations addressable by the forwarding engine290and routing processor260for storing software programs and data structures accessed by the various components, including software programs and data structures that implement aspects of the inventive technique. An operating system, portions of which are typically resident in memory and executed by the forwarding engine290, functionally organizes the node200by, inter alia, invoking network operations in support of software processes, including processes that implement the inventive technique, executing on node200. It will be apparent to those skilled in the art that other memory means, including various computer readable mediums, such as disk storage and/or flash memory, may be used for storing and executing program instructions pertaining to the inventive technique and mechanism described herein.

A buffer and queuing unit (BQU)210is connected to a packet memory220for storing packets and a queue memory230for storing network-layer and link-layer headers of the packets on data structures, such as linked lists, organized as queues (not shown). The BQU210further comprises data interface circuitry for interconnecting the forwarding engine290with the line cards240via a selector circuit250having an arbiter255. The line cards240may comprise, e.g., Asynchronous Transfer Mode (ATM), Fast Ethernet (FE), Gigabit Ethernet (GE) and Frame Relay (FR) ports, each of which includes conventional interface circuitry that may incorporate the signal, electrical and mechanical characteristics, and interchange circuits, needed to interface the cards with the physical media and protocols running over that media.

A routing processor260comprises a conventional processor262coupled to a processor memory264and is configured to execute, inter alia, various conventional routing protocols, such as the Open Shortest-Path First (OSPF) protocol, for communication directly with the forwarding engine290. The routing protocols generally comprise topological information exchanges between intermediate nodes to determine preferred paths through the network based on, e.g., destination IP addresses. These protocols provide information used by the processor260to create and maintain various forwarding databases.

The databases are loaded into a partitioned external memory280and are used by the forwarding engine290to perform, e.g., layer-2 (L2) and layer-3 (L3) forwarding operations. When processing a packet's header in accordance with L2 forwarding, for example, engine290applies a destination media-access control (MAC) address contained in the header and a virtual-local-area network (VLAN) identifier (ID) associated with the packet to the forwarding database300to identify a destination port where a destination node associated the destination address may be reached.

The forwarding engine290may comprise a symmetric multiprocessor system having a plurality of processing elements (not shown). Each processing element illustratively includes a pipelined processor that contains, inter alia, one or more arithmetic logic units (ALUs) and a register file having a plurality of general purpose registers that store intermediate result information processed by the ALUs. The processing elements may be arrayed into multiple rows and columns and further configured as a multi-dimensioned systolic array. Illustratively, the processing elements are arrayed as four (4) rows and eight (8) columns in a 4×8 arrayed configuration that is embedded between an input buffer (not shown) and an output buffer (not shown). However, it should be noted that other arrangements, such as an 8×8-arrayed configuration, may be advantageously used with the present invention.

The processing elements of each row are configured as stages of a “pipeline” that sequentially execute operations on transient data (e.g., packet headers) loaded by the input buffer, whereas the processing elements of each column operate in parallel to perform substantially the same operation on the transient data, but with a shifted phase. Each phase comprises a predetermined period of cycles, e.g., 128 cycles. Sequencing circuitry of the input buffer controls the processing elements of each pipeline by ensuring that each element completes processing of current transient data before loading new transient data into the pipeline at a new phase. In general, a new phase of processing is started, i.e., a context switch is performed, when the elements finish processing their current transient data (current context) and new incoming transient data (new context) is completely received by the input buffer.

The forwarding engine290is coupled to external memory280a portion of which is partitioned into a plurality of “column” memories wherein each column memory is coupled to a particular column of processing elements. Memory280is preferably organized as one or more banks and is implemented using fast-cycle-random-access-memory (FCRAM) devices, although other devices, such as reduced-latency-dynamic-random-access-memory (RLDRAM) devices, could be used. The external memory280stores non-transient data organized as a series of data structures for use in processing the transient data. The data structures include the forwarding database300, an interface-descriptor block (IDB) database500, one or more virtual-port (VPORT) VLAN databases600, a VLAN identifier (ID) database700, and an address translation database800.

FIG. 3is a schematic block diagram of forwarding database300illustratively organized as a table comprising one or more entries310wherein each entry310is configured to hold information associated with e.g., a node contained in network100. Entry310comprises an address field320, a VLAN ID field330and a port ID field340. The address field320holds a value that represents an address of a node associated with the entry, such as a L2 address of node110a, and the VLAN ID field330holds an identifier that identifies a VLAN associated with the node.

The port ID field340holds an identifier that identifies a port through which the node can be reached. This port may be a physical port contained e.g., on a line card240or a virtual port. A virtual port, as used herein, relates to a software-defined entity (port) that appears as a physical port, though it is not actually a physical port. As will be described further below, a virtual port may be associated with one or more VLANs wherein is each VLAN is associated with a connection, such as an ATM virtual connection (VC).

Data packets transferred via ports contained in node200may conform to the IEEE 802.1Q (802.1Q) standard described in the “IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Networks” available from the Institute of Electrical and Electronics Engineers, New York, N.Y. The 802.1Q standard defines the architecture, protocols, and mappings for bridges/switches to provide interoperability and consistent management of VLANs. Packets conforming to this standard include an ID that identifies a VLAN associated with the packet.

FIG. 4is a schematic block diagram of a singly encapsulated data packet400configured in accordance with the IEEE 802.1Q standard (802.1Q) that may be advantageously used with the present invention. Packet400comprises a destination address field410and a source address field420, which hold MAC addresses of destination and source nodes associated with the packet400, respectively. A data field460holds data (payload) transferred by the packet400and a frame-check sequence (FCS) field470holds a holds value, such as a cyclic-redundancy check (CRC), that may be used to “error check” the packet400. A length/type field450holds a length value or a type designator depending on the value contained therein. Typically, if this value is less than decimal 1536 (0x0600 hexadecimal), the value indicates a length of the packet in octets (bytes). If the value is greater than or equal to decimal 1536, the value typically indicates a “protocol type” that designates the nature of a protocol associated with the packet. For example, a hexadecimal value of 0x0800 in the length/type field450indicates the packet contains information associated with the Internet Protocol (IP).

An encapsulation information field430contains information associated with 802.1Q. Specifically, field430contains a tag control information (TCI) field432, a priority (P) field434, a canonical indicator (CI) field436and a VLAN identifier (ID) field438. The TCI field432holds a value (e.g., hexadecimal 0x8100) that indicates the packet is interpreted as e.g., an 802.1Q type packet. The priority field434holds an indicator that indicates a priority level (e.g., 0 through 7) and the CI field436holds an indicator that indicates whether the source and destination addresses are in canonical format. The VLAN tag field440holds a VLAN identifier (ID) that identifies the VLAN associated with the packet.

The present invention relates to a technique for efficiently transferring data between geographically dispersed entities belonging to a virtual-local-area network (VLAN). According to the technique, the geographically dispersed entities communicate via software-defined virtual ports that “appear” as physical ports to the entities. Each virtual port, in turn, is associated with one or more software-defined connections wherein each connection may be associated with one or more VLANs. Data generated on a particular VLAN that is destined for a remote entity is forwarded to a virtual port which, in turn, transfers the data to the remote entity over the software-defined connection associated with the VLAN. Moreover, state is maintained at each virtual port for each connection thereby enabling the virtual ports to support various protocols that operate with physical ports.

IDB database500comprises one or more interface descriptor blocks (IDBs) wherein each IDB represents a physical or virtual port contained in node200.FIG. 5is a schematic block diagram of an IDB database500that may be advantageously used with the present invention. Database500is illustratively depicted as a table containing a plurality of entries510. Each entry510is indexed by a port ID of the port represented by the entry and contains a virtual port (VPORT) VLAN database pointer field540, a default VLAN ID field560and an interface information field580. The interface information field580holds various information about the port, such as status, various flag fields and so on. The default VLAN ID field560holds an identifier that identifies a default VLAN that is associated with various packets acquired on the port. For example, if a packet acquired on the port contains a VLAN ID, such as an 802.1Q type packet, the packet is associated with the VLAN indicated by the VLAN ID contained in the packet. Otherwise, if the acquired packet does not contain a VLAN ID, the packet is associated with the VLAN identified by the default VLAN ID field560of the IDB entry500for the port.

The VPORT VLAN database pointer field540illustratively holds an address of a VPORT VLAN database600that contains information of VLANs associated with a virtual port represented by an IDB entry510.FIG. 6is a schematic block diagram of VPORT VLAN database600that may be advantageously used with the present invention. Database600is illustratively a table containing a plurality of entries610wherein each entry610represents a VLAN that is associated with the virtual port. Each entry610contains a VLAN ID field620, a virtual connection (VC) ID field640, a VLAN port state field680and a VC information field690. The VLAN port state field680holds information about the state of a VLAN port associated with the VLAN. This information680illustratively includes various spanning-tree protocol (STP) states, such as blocked, listening, learning, forwarding, and disabled. The STP is described in the Institute of Electrical and Electronics Engineers (IEEE) standard 802.1D, “Standard for Local Area Network MAC (Media Access Control) Bridges,” available from the IEEE. The VLAN ID field620contains an identifier that identifies the VLAN associated with the entry610and the VC ID field640contains an identifier of a connection, e.g., an ATM VC, associated with the VLAN. Illustratively, the connection is a software-defined connection that takes the place of an actual physical point-to-point connection that is typically associated with a VLAN port. The VC information field690contains other information associated with the connection represented by the VC ID640, such as, for example, connection status.

Packets are transferred between PE nodes200contained in the WAN170via internal VLANs contained within WAN170. An internal VLAN used to carry a packet is determined by applying a VC ID associated with the packet to the VLAN ID database700. Illustratively, the VC ID associated with the packet is the VC ID that identifies the connection that carried the packet to the PE node200.FIG. 7is a schematic block diagram of a VLAN ID database700that may be advantageously used with the present invention. Database700is illustratively a table comprising one or more entries710, wherein each entry710“maps” a VC ID associated with a packet to an “identifier” associated with an internal VLAN contained within WAN170, i.e., an internal VLAN ID. Specifically, entry710contains a VC ID field720and an internal VLAN ID field740. The VC ID field720holds a VC ID associated with a packet and the internal VLAN ID field740holds an identifier associated with an internal VLAN.

As noted above, the internal VLAN used to carry a packet is determined by applying a VC ID associated with the packet to the VLAN ID database700. Specifically, the VC ID associated with the packet is compared with the VC IDs720contained in the table to determine if a VC ID720of an entry710matches the VC ID associated with the packet. If so, the internal VLAN ID740of the matching entry710is used to identify the internal VLAN that carries the packet within the WAN170. For example, assume PE node200eacquires a packet from CE node200aon a connection associated with a VC ID value of 5. Further assume that database700contains an entry710whose VC ID field720and internal VLAN ID field740contain the values 5 and 7, respectively. Node200ecompares the VC ID associated with the packet, e.g., 5, with the VC IDs720of the entries in the table700and locates a matching entry710i.e., the entry710whose VC ID field720and internal VLAN ID field740contain the values 5 and 7, respectively. Node200ethen uses the internal VLAN ID740of the matching entry, i.e., 7, to identify the internal VLAN that carries the packet within the WAN170.

Certain destination addresses contained in a packet originating external to the provider's network may not be handled properly within the internal VLANs contained within the provider's network. For example, a packet originating in the customer network that contains a multicast address which identifies the packet as an IEEE 802.1D bridged-protocol-data unit (BPDU) may be inadvertently interpreted as a BPDU generated for the provider's network. To obviate mishandling packets containing certain destination addresses, the PE nodes200are configured to modify the destination address of these packets with an address that enables the packets to be handled properly within the provider's network. Specifically in accordance with the inventive technique, the destination addresses within these packets are translated to “internal destination addresses” that are used when the packets are transferred within the provider's network. Address translation database800contains information that is used to perform this translation.

FIG. 8illustrates an address translation database800that may be advantageously used with the present invention. Database800is illustratively organized as a table containing one or more entries810, wherein each entry810contains an external address field820and an internal address field840. The external address field820holds an address, e.g., a MAC address, associated with a destination address contained in a packet that is generated external to the provider's network. The internal address field840holds an address associated with an internal address that is used as a “substitute” destination address for the externally generated destination address when the packet is transferred in the provider's network. Node200“translates” a destination address contained in a packet that was generated external to the provider's network by applying the externally generated address to the database800to locate an entry810whose external address field820contains a value that matches the externally generated address. If a matching entry810is found, node200replaces the externally generated destination address in the packet with the content of the internal address field840of the matching entry810.

Illustratively, packets transferred between the CE nodes200a-d(FIG. 1) and the PE nodes200e-fare singly encapsulated in accordance with 802.1Q, whereas packets transferred between PE nodes200e-fare doubly encapsulated as “802.1Q-in-802.1Q” packets.FIG. 9is a schematic block diagram of a doubly encapsulated packet900that may be advantageously used with the present invention. Packet900is illustratively an 802.1Q-in-802.1Q packet containing a destination address field910, a source address field920, an outer encapsulation information field930, an inner encapsulation information field940, a length/type field950, a data field960and an FCS field970. The destination address field910, source address field920, length/type950field, data field960and FCS field970contain information similar to the information contained in the destination address field410, source address field420, length/type field450, data field460and FCS field470, respectively, described above.

The outer encapsulation information field930and inner encapsulation information field940, likewise, contain information similar to the information contained in the encapsulation information field430also described above. Specifically, the TCI fields932,942contain tag control information, the priority (P) fields934,944contain priority information, the CI fields936,946contain canonical indicators, and the VLAN ID fields938,948contain a VLAN ID, as described above.

In the doubly encapsulated packet, the content of the inner encapsulation information field940illustratively contains information specified in the encapsulation field430of an 802.1Q type packet acquired by the PE node200. Thus, illustratively the TCI field942, priority (P) field944, CI field946and external VLAN ID field948contain information contained in the TCI field432, priority (P) field434, CI field436and VLAN ID field438of the acquired singly encapsulated packet400, respectively. The content of the outer encapsulation information field930illustratively contains a TCI932, priority (P)934, CI936and internal VLAN ID938associated with an internal VLAN, as will be described further below.

Assume, for illustrative purposes, that node110a(source node) has a data packet for transfer to node110d(destination node) and nodes110aand110dbelong to the same VLAN.FIGS. 10A-Bare flow charts illustrating a sequence of steps that may be used to transfer the data packet from source node110ato destination node110dvia WAN170in accordance with the inventive technique. The sequence begins at Step1005and proceeds to Step1007where engine290establishes one or more virtual ports illustratively by populating the IDB500and VPORT VLAN600databases with information associated with the virtual ports including information associated with virtual ports as described above. These databases may be populated by issuing a series of commands that contain the information about the virtual ports to node200. Node200, in turn, processes the commands and populates the databases with the information. It will be apparent to one skilled in the art that other techniques may be used to populate the databases, including techniques such as pre-configuring the software contained in node200to populate the databases from e.g., data accessible to node200.

At Step1010source node110agenerates illustratively a packet containing a destination address associated with destination node110d, places the data in the packet and transfers the packet over link122to a port contained on CE node200a. At Step1012, CE node200aacquires the packet from network100via e.g., a line card240. At Step1014identifies a VLAN ID associated with the packet. Specifically, the forwarding engine290in node200aapplies a port ID associated with the port that acquired the packet to the IDB database500and selects an entry510in the database associated with the port. Engine290then identifies a VLAN ID associated with the packet. If the acquired packet contains a VLAN ID, such as with an 802.1Q type packet, engine290examines the packet to determine the VLAN ID associated with the packet; otherwise, engine290associates the packet with the default VLAN ID560specified in the selected entry510.

At Step1016, engine290identifies a virtual port associated with the destination node110d. Specifically, engine290applies the destination address contained in the acquired packet and the VLAN ID associated with the packet to the forwarding database300to locate an entry310whose address320matches the destination address in the packet and whose VLAN ID330matches the VLAN ID associated with the packet. The port ID field340of the matching entry310contains an ID that identifies the virtual port associated with the destination node. The engine290applies the port ID340associated with the packet to the IDB database500to identify an IDB entry510associated with the virtual port (Step1018).

Engine290then identifies a connection (e.g., VC) associated with the packet's VLAN (Step1020). Specifically, engine290uses the VPORT VLAN database pointer field540of the matching IDB entry510to locate the VPORT VLAN database600associated with the virtual port. Engine290then applies the VLAN ID associated with the acquired packet to the VPORT VLAN database600to locate an entry610in the database600whose VLAN ID620matches the VLAN ID associated with the acquired packet. Engine290then associates the VC identified by the VC ID620of the matching entry610with the acquired packet's VLAN.

At Step1026engine290encapsulates the acquired packet to generate e.g., an 802.1Q singly encapsulated packet400, as described above, wherein the VLAN ID of the VLAN associated with the acquired packet is specified in the VLAN ID field438of the packet400and values are generated and placed in the TCI field432, priority (P) field434and CI field436in accordance with 802.1Q. Engine290then transfers the singly encapsulated packet400over the connection associated with the packet's VLAN to the provider network's ingress PE node200evia link130a.

At Step1030(FIG. 10B), the ingress PE node200eacquires the packet400and its forwarding engine290applies the VC ID associated with the packet (e.g., the VC ID associated with the connection on which the packet was acquired) to the node's200eVLAN ID database700to determine an internal VLAN ID associated with the packet (Step1032). Specifically, engine290identifies an entry710whose VC ID720matches the VC ID associated with the singly encapsulated packet400. Engine290then associates the internal VLAN ID740of the matching entry with the packet400.

At Step1034, the forwarding engine290encapsulates the singly encapsulated packet400to generate a doubly encapsulated packet900illustratively encapsulated as an 802.1Q-in-802.1Q packet. Specifically, engine290uses information contained in the source address field420, length/type field450, data field460and encapsulation information field430of packet400to generate information placed in the source address field920, length/type field950, and data field960of packet900, respectively. Moreover, engine290uses information in the TCI field432, priority (P) field434, CI field438and VLAN ID field438to generate information placed in the TCI field942, priority (P) field944, CI field946and external VLAN ID field948of packet900, respectively. Engine290then applies the destination address410contained in the packet400to the address translation database800to determine if the destination address410matches an external address820contained in the database800. If so, engine290uses the internal address840to generate the destination address910of the packet900. Otherwise, engine290uses the destination address410contained in packet400to generate the destination address910. Engine290then uses the internal VLAN ID740of the matching VLAN database entry710to generate a value that is placed in the internal VLAN ID field938contained in the packet's outer encapsulation information930field. Moreover, engine290generates and places values in the TCI field932, priority (P) field934and CI field936in the packet's outer encapsulation information field930in accordance with 802.1Q, and generates and places a FCS in the packet's FCS field970.

Next, at Step1036, PE node200eforwards the doubly encapsulated packet900towards the egress PE node200f. Specifically, node200e's engine290applies the packet's destination address910and the internal VLAN ID938to the forwarding database300and identifies a virtual port where the egress PE node200fcan be reached in a manner as described above. Engine290then locates the IDB database entry510associated with the virtual port and uses the VPORT VLAN database pointer540of the entry510to locate the VPORT VLAN database600associated with the virtual port. Next, engine290locates the VPORT VLAN database entry610associated with the identified internal VLAN740, identifies the connection associated with the internal VLAN's VC ID640and forwards the packet900on the connection to the egress PE node200f.

At Step1038, egress PE node200facquires the doubly encapsulated packet900and its forwarding engine290decapsulates it by, e.g., removing the outer encapsulation information930and regenerating the packet's FCS to yield the singly encapsulated packet400. Engine290then applies the destination address410to the address translation database800to determine if the database800contains an entry810whose internal address840matches the destination address410of the packet400. If so, engine290replaces the destination address410contained in packet400with the external address820specified in the matching entry810.

At Step1040, engine290determines a destination port associated with the packet400by applying the destination address410of the packet400to its forwarding database300, in a manner as described above. Next, at Step1042, engine290determines (identifies) the connection associated with the VC ID640of the packet's VLAN in a manner as described above.

At Step1044, engine290transfers the packet400over the connection to CE node200b. At Steps1046and1048, CE node200bacquires the packet and its forwarding engine290decapsulates it by e.g., removing the encapsulation information430from the packet and regenerating the packet's FCS, to yield the original packet (i.e., packet generated by the source node110a). CE200b's engine290applies the destination address410contained in the packet and the VLAN ID438contained in the removed encapsulation information430to its forwarding database300, in a manner as described above, to identify an entry310containing a port ID340of the destination port where the destination node110dcan be reached. CE node200bthen transfers the packet to the destination node110dvia the destination port (Step1050). The sequence ends at Step1095.

It should be noted that in the above-described embodiment of the invention, data are transferred between nodes via connections, such as e.g., ATM VCs, wherein each VLAN is carried on a separate connection; however, this is not intended to be a limitation of the invention. In other embodiments of the invention, one or more VLANs are carried on trunked connections that enable data to be transferred between the nodes200. Moreover, in yet other embodiments of the invention, each VLAN is associated with other types of connections, such as point-to-point protocol (PPP) connections and/or frame relay connections.

It should be further noted that connections associated with a particular virtual port may be a combination of connection types. This combination may include connections that are all of the same type, such as all PPP connections. Moreover, this combination may include connections of different types, such as some of the connections associated with the virtual port are frame relay type connections while others associated with the same virtual port are ATM VC type connections.

It should also be noted that in the above-described embodiment of the invention, 802.1Q encapsulation is used; however, this too is not intended to be a limitation of the invention. In other embodiments, other forms of encapsulation are used. For example, one form of encapsulation that may take advantage of the inventive technique involves simply a tag in the encapsulation information fields (e.g., fields430,930and940) that identifies e.g., the VLAN that carries the packet.