Data link layer switch frame forwarding analysis

Systems and methods to analyze layer-2 data frame switch forwarding are provided. A first switch may be coupled to a second switch. The first switch may maintain state information mirroring the state of the second switch. A sequence number may be appended to a data frame that is received at the first switch. Forwarding compliance of the second switch may be determined by analyzing a runtime attribute of the first switch.

I. FIELD OF THE DISCLOSURE

The present disclosure relates generally to data communication in a networked computing system, and more particularly, to testing the connectivity and responsiveness associated with data frame forwarding in a computing network.

Problems arising in the data link layer (layer-2) of the Open Systems Interconnection (OSI) model of a network can result in degraded communications. Layer-2 switches use hardware address tables to selectively forward data frames to appropriate destination ports. Verifying that a data frame was forwarded to the appropriate port requires an in depth understanding of Institute of Electrical and Electronics Engineers (IEEE) 802.3 standards. This burden is exponentially increased where large numbers of switching tests must be performed or customized tests are desired.

III. SUMMARY OF THE DISCLOSURE

According to a particular embodiment, an apparatus may include a test case module configured to transmit a data frame and a first switch including a first port. A second switch may include a second port coupled to the first port. The second switch may be configured to receive the data frame from the test module, to monitor a state of the first switch, and to determine a runtime attribute associated with forwarding the data frame.

According to another embodiment, a method of analyzing a data frame switch operation may include receiving a data frame at first switch from a test case module. A frame sequence number may be appended to the data frame, and the frame sequence number may be used to verify forwarding compliance of the second switch. The frame sequence number may include a checksum or any signature used to uniquely identify a data frame and may be appended to the end of the data frame or inserted anywhere in the payload of the data frame.

According to another embodiment, a program product may include program code configured to receive a data frame at a first switch from a test case module, to append a frame sequence number to the data frame, and to use the frame sequence number to verify forwarding compliance. A computer readable medium may bear the program code.

Features and benefits that characterize embodiments are set forth in the claims annexed hereto and faulting a further part hereof. However, for a better understanding of the embodiments, and of the advantages and objectives attained through their use, reference should be made to the Drawings and to the accompanying descriptive matter.

V. DETAILED DESCRIPTION

A particular embodiment may offload the test case protocol knowledge into a mirror switch. The mirror switch may mirror the state of the layer-2 switch under test and may execute the Institute of Electrical and Electronics Engineers (IEEE) 802.3 standard in parallel with the layer-2 switch under test. Both switches may be configured identically or nearly identically, and the ports may be connected. The layer-2 switch under test may be running in a hardware device or a simulator. The mirror switch ports may be connected via Ethernet cables when testing a hardware device or a virtual device (e.g., a TAP device) when testing in a simulator.

An embodiment may simplify IEE 802.3 test case writing while providing accurate comprehensive layer-2 forwarding verification. Sequence numbers may be appended to the end of each frame to uniquely identify an egress frame. The embodiment of a system may verify access control list (ACL) functionality, verify a forwarding rate, and recognize aggregated links/ports. The embodiment may further verify that only one frame egresses a trunk, and implements a multicast snooper to learn multicast groups.

Test cases may be written to inject any Ethernet frame into the layer-2 switch under test to validate compliance. The actual verification may be done by the redundant, layer-2 mirror switch and not the test case, itself. The mirror switch may verify that the layer-2 switch complies with the IEEE layer-2 forwarding standard. The mirror switch may run in a standalone Linux server or a simulator, such as Simics. The mirror switch may have a verification port paired with each of the layer-2 switch ports under test. The verification port may be directly cabled to the switch port or tapped using a virtual TAP device.

The mirror switch may enable the configuration of ports, trunks, VLANs, and other layer-2 configuration objects. The mirror switch may keep track of the switch state so that the mirror switch may verify the compliance of the layer-2 switch. The mirror switch may inject data frames into a selected verification port. The mirror switch may append a sequence number to the end of each data frame to uniquely identify the data frames as the data frames egress switch ports. The mirror switch may verify that egress data frames are correctly tagged or untagged as specified by the switch configuration. The mirror switch may maintain an ACL and verify that the layer-2 switch does not forward that match a drop action. The mirror switch may verify that aggregated ports are treated as one logical link. For example, the mirror switch may verify that a particular data frame egresses only one member of an aggregated link, or trunk. The mirror switch may perform multicast snooping to dynamically learn multicast groups and validate compliance.

The mirror switch may also verify that each injected data frame is forwarded to the appropriate switch port or ports. A unicast data frame may be flooded if the destination address of the unicast data frame has not yet been learned. Otherwise, the unicast data frame may be forwarded to the appropriate switch port. Broadcast data frames may be broadcast to all members of the VLAN. Multicast data frames may be flooded if a multicast snooper has not received any Internet group management protocol (IGMP) membership frames. Otherwise, multicast data frames may be forwarded to members of a multicast group.

The mirror switch may be configured to mirror the state of the layer-2 switch under test. The mirror switch may go through the same states as the layer-2 switch. Test case configures the mirror switch identically to the layer-2 switch. For example, all protocols being tested on the layer-2 switch may also be present on the mirror switch. Based on the current configuration, the mirror switch may calculate what the expected results should be and what the expected egress ports should be. The payloads should be identical, as well. In this manner, the mirror switch may simplify layer-2 analysis by automatically making available expected results for a given configuration.

Embodiments of the switching and analysis system may be realized in hardware, software, or in any combination thereof. In one example, different components, such as the ports, may be distributed. Either or both of the layer-2 switch and the mirror switch may be hardware in one embodiment, and software in another. The terms, “frame” and “packet,” may be used interchangeably throughout this description.

Turning more particularly to the drawings,FIG. 1shows an embodiment of a computing system100configured to monitor and analyze data frame switching processes. The system100may include a layer-2 (L2) switch102that receives data (e.g., commands) from a test case module104forwarded through a mirror switch106, or test switch.

The test case module104may be a program configured to output configuration commands. The test case module104may be in communication with the mirror switch106via a management link132. The mirror switch106may be identical or nearly identical to the layer-2 switch102. The layer-2 switch102may be the switch under test (SUT). The layer-2 switch102may be implemented in hardware or in a simulator, such as Simics.

The mirror switch106may generally be configured to emulate and analyze the data frame switching processes of the layer-2 switch102. The mirror switch106may be realized in either hardware or software. The mirror switch106may include a layer-2 (L2) testing module108, an Internet group management protocol (IGMP) snooper module110, and a switch state112. The L2 testing module108may comprise software or firmware executable to monitor and verify data frame transmission. The IGMP snooper module110may be configured to learn multicast groups. The switch state112may indicate the state of the layer-2 switch102. The mirror switch106may further include verification ports114,116,118,120that are coupled to switch ports122,124,126,128of the layer-2 switch102. A management link134may enable configuration commands and related communications between the mirror switch106and the layer-2 switch102.

FIG. 2illustrates an embodiment of a data frame200. The data frame200may be uniquely identified by a sequence number202. The data frame200may additionally include a destination address204and a source address206. A service tag, or S-tag,208, a virtual local area network (VLAN) tag210, an Ether Type212, and a payload214may also be included in the illustrative data frame200.

The sequence number202may be appended to the end of each data frame before the data frames are injected into a verification of a mirror switch (and a switch port of a layer-2 switch). The sequence number202may be used to uniquely identify the data frame200. When the data frame200egresses a port, the sequence number202may be analyzed to see if it is the expected sequence number202. As discussed herein, other characteristics, such as the payload214and the source address206, may additionally be verified. A properly functioning layer-2 switch may not alter data appended after the payload214. The frame sequence number202may uniquely identify the data frame200as the data frame200egresses switch ports. The frame sequence number202may also be used as a human readable identifier to aid in diagnosing bugs in the layer-2 switch.

FIG. 3is a timing diagram300illustrating how a layer-2 switch (SUT) may be configured according to an embodiment. The method is illustrated in terms of the interaction between a test case module, a mirror switch, ports1-4, and a layer-2 switch under test. For illustration purposes, the test case module104, the mirror switch106, the switch ports1-4(122,124,126,128), and the layer-2 switch102may be similar to those shown inFIG. 1. More particularly, processes1-6may set the spanning tree protocol (STP) state to forward to enable network traffic to flow on the switch ports. The forward state may be a command used to configure the switch. Other illustrative commands configured to set a state of the switch may include a command that enables or disables the transmission and reception of packets on a physical port. Another command may set the 802.1X authorization status of a port. Commands of other embodiments may set the service tag for a logical port, set port membership for a VLAN, private VLAN, or a trunk (i.e., link aggregation group). Another command may add static energy to a forwarding cache or may enable port mirroring for a physical port. Still other commands may define an ACL rule to override source address learning, to discard a particular type of packet, or to override VLAN filtering. As such, a state of a switch may be initiated in response to a command affecting switch configuration and forwarding processes.

Processes7-10may add ports to a VLAN to establish a broadcast domain. One skilled in the art will appreciate that embodiments may be extended to test multiple complex switch configurations. Identical configurations may be stored in both the mirror switch and the layer-2 switch.

FIG. 4shows a timing diagram400illustrating how an embodiment of a unicast data frame may be flooded as if it were a broadcast data frame. Broadcast frames may be configured to be transmitted to every single port that is a member of a local area network. The method is illustrated in terms of the interaction between a test case module, a mirror switch, ports1-4, and a layer-2 switch under test. For illustration purposes, the test case module104, the mirror switch106, the ports1-4(114,116,118,120), and the layer-2 switch102may be similar to those shown inFIG. 1. More particularly, the test case module may inject at1a unicast data frame into the port2. The mirror switch may inject at2the unicast data frame into the verification port2. The verification port2may be connected to the switch port2. At3, the layer-2 switch may not find the destination address in its forwarding cache, so the layer-2 switch may flood the unicast data frame to the other members of the VLAN. The mirror switch at4may verify that the unicast data frame is flooded to all the other member of the VLAN. The layer-2 switch may additionally return a successful return code to the test case.

FIG. 5shows a timing diagram500illustrating an embodiment of a method of MAC address learning for a unicast data frame. The method is illustrated in terms of the interaction between a test case module, a mirror switch, ports1-4, and a layer-2 switch under test. For illustration purposes, the test case module104, the mirror switch106, the ports1-4(114,116,118,120), and the layer-2 switch102may be similar to those shown inFIG. 1.

Processes1-4ofFIG. 5show how a media access control (MAC) address is dynamically learned. More particularly, the test case module may call at1the learn_mac application programming interface (API) to cause MAC 00:00:00:00:00:03 to be learned on port3. A gratuitous address resolution protocol (ARP) frame may be created at2with source address 00:00:00:00:00:03 at3. The ARP frame may be injected into port3. The layer-2 switch may add 00:00:00:00:00:03, port3to its forwarding cache, and may broadcast the ARP frame on all other members of the VLAN. Process4may include the mirror switch verifying that the ARP frame egresses all the switch ports except source port3.

Processes5-9ofFIG. 5show the forwarding of unicast data frame when its destination address has been previously learned. More specifically, the test case module at5may inject a unicast data frame with destination address 00:00:00:00:00:03 into port2. The unicast data frame may be injected into port2at6. The layer-2 switch may locate destination address DA 00:00:00:00:00:03 in its forwarding cache at7and may forward the unicast data frame to port3(no need to flood). At8ofFIG. 5, the mirror switch may verify that the unicast data frame only egresses port3and may return a successful return code to the test case. Where the unicast data frame had also egressed port1, the layer-2 would be non-compliant and an error return code would be returned to the test case.

FIG. 6shows a timing diagram600illustrating a method of link aggregation that may be performed according to an embodiment. The method is illustrated in terms of the interaction between a test case module, a mirror switch, ports1-4, and a layer-2 switch under test. For illustration purposes, the test case module104, the mirror switch106, the ports1-4(114,116,118,120), and the layer-2 switch102may be similar to those shown inFIG. 1.

The test case module may at1create a trunk9that includes member ports2and3such that the ports are treated as a single logical link. The mirror switch may configure trunk9at2on the layer-2 switch that includes member ports2and3. The test case module at3may call the learn_mac API to cause MAC 00:00:00:00:00:01 to be learned on port1. The mirror switch may at4inject a gratuitous ARP frame with source address 00:00:00:00:00:01 into port1. The mirror switch at5may add MAC 00:00:00:00:00:01, port1to its forwarding cache and may broadcast the ARP frame to all the other VLAN member ports. At6, the mirror switch may verify that the ARP frame egresses all the VLAN member ports except port1. The test case module at7may call the learn_mac API to cause MAC 00:00:00:00:00:09 to be learned on trunk9.

The mirror switch may at8inject a gratuitous ARP frame with source address 00:00:00:00:00:09 into port2. Injecting the ARP into port3may have had the same effect, since both ports2and3belong to trunk9. The layer-2 switch may at9add MAC 00:00:00:00:00:09, trunk9to its forwarding cache and may broadcast the ARP frame to all the other VLAN member ports. At10, the mirror switch may verify that the ARP frame egresses all the VLAN member ports, except ports2and3(trunk9member ports). The test case module at11may call the inject_packet API to inject a unicast data frame with DA 00:00:00:00:00:09 into port1. The mirror switch may inject at12the unicast data frame into port1. The layer-2 switch may locate MAC 00:00:00:00:00:09, trunk9in its forwarding cache and use the default hashing algorithm to select trunk member port2and to forward the unicast data frame to port2. It is possible that trunk member port3may have been selected. At14, the mirror switch may verify that the unicast data frame is forwarded to either member ports of trunk9and may return a successful return code to the test case.

FIG. 7is a timing diagram700illustrating a method of addressing multicast frames using a multicast snooper according to an embodiment. The method is illustrated in terms of the interaction between a test case module, a mirror switch, ports1-4, and a layer-2 switch under test. For illustration purposes, the test case module104, the mirror switch106, the ports1-4(114,116,118,120), and the layer-2 switch102may be similar to those shown inFIG. 1. Processes1-3show multicast flooding prior to learning a multicast group. Processes4-9ofFIG. 7show how the multicast snooper may learn the multicast group from IGMP Membership Report frames. Processes10-12illustrate a multicast frame sent to only the ports that belong to the multicast group.

Referring toFIG. 8, a particular embodiment of a method800of verifying a runtime attribute, such as a data frame egress, is illustrated. The method800includes initiating a test case at802, and the layer-2 switch may be configured at804. Commands used in the configuration process at804are generally shown inFIG. 3.

A data frame may be injected at806. The processes at806may generally relate to those illustrated inFIG. 4. Proceeding to block808, the method800may wait for egress frame verification before returning to block806. The mirror switch may verify that the data frame egresses the appropriate ports and that the content of the data frame is correct.

FIG. 9is a flowchart of an embodiment of a method of configuring a switch, such as the layer-2 switch106ofFIG. 1. The processes ofFIG. 9may relate generally to the switch configuration processes ofFIG. 3and of804ofFIG. 8. The method900includes receiving a configuration command, at902. The switch state of the mirror switch may be updated, at904. The method900may send at906a configuration command to a switch before returning to902. Configuration commands may set configuration attributes (e.g., a switch state) of the switch.

Referring toFIGS. 10aand 10b, a particular embodiment of a method1000of monitoring and analyzing data frame switching is illustrated as a flowchart. At1002of the flowchart, a data frame may be injected by the test case module into the mirror switch.

The method1000also includes the mirror switch calculating expected egress ports, at1004. Determining which ports are expected to egress may be based on the switch configuration, e.g., the state of the switch) and on the type of frame (e.g., a broadcast frame, a multicast frame, a unicast frame, etc.).

Proceeding to block1006, the mirror switch may append a sequence number to the data frame. The sequence number may be used to uniquely identify the data frame. When the data frame egresses a port, the sequence number may be analyzed to see if it is the expected sequence number. As discussed herein, other characteristics, such as the payload and the source address, may additionally be verified.

At1008, the mirror switch may inject the data frame into an ingress port. For example, the test case module may instruct the mirror switch that the data frame should be injected. Proceeding to block1010, the method1000may wait for the data frame to egress expected ports.

At1012, the method1000determines when a timeout occurs. The timeout may be associated with a computing time expected for the data frame to be successfully forwarded. In an embodiment, a timeout may correspond to a sufficient time for potential frames to arrive for analysis. Where a timeout is detected at block1012, an error may be returned at1014. Where no timeout is alternatively detected, the mirror switch may determine at1016if a data frame with a matching sequence number has been received. When no data frame with a matching sequence number has been received, the mirror switch may initiate at1018an output message indicating an unknown data frame.

Returning to block1016, where a data frame with a matching sequence number has been received, the mirror switch may determine at1020whether a payload is corrupted by comparing the payload to the payload of the originally injected frame. Where the payload is corrupted, the mirror switch may initiate at1022an output message indicating that the payload has been corrupted.

Where the payload is determined to be uncorrupted, the mirror switch may determine at1024if a destination address (DA) and the source address (SA) match. Where the destination address and the source address do not match, the mirror switch may indicate an error at1026, and the method1000may return to1010. Where the destination address and the source address match, the mirror switch may determine at1028if an S-Tag is correct. Where the S-Tag is not correct, an output indicating that the S-Tag is invalid may be generated at1030. The S-Tag correctness may be determined using the known switch configuration.

Where the S-Tag is correct, the mirror switch may determine at1032whether the VLAN tag is correct. Where the VLAN tag is unexpected, an output indicating that the VLAN tag is invalid may be generated at1034.

Where the VLAN tag is correct, the mirror switch may determine at1036whether a port was expected to be egressed. Where the port was not expected to be egressed, the mirror switch may indicate at1038that an unexpected egress has been detected. Where the expected port was egressed, the mirror switch may indicate at1040that the data frame has successfully egressed the port.

The mirror switch may determine at1042whether the data frame is expected to egress anymore ports. Where the data frame is expected to egress more ports, the method1000may return to1010. Where the data frame is not expected to egress more ports, the data frame has successfully egressed appropriate ports and the method may end at1044. An output report may be generated for analysis. For example, output files may include linked data that allows a tester to efficiently review highlighted portions of the layer-2 analysis.

Referring toFIG. 11, a particular embodiment of a method1100of determining expected egress ports is illustrated as flowchart. As such, an embodiment of the method1100may have application at1004ofFIG. 10b. The mirror switch may initially determine at1102the expected egress ports. The determination may depend in part on the type of data frame.

The mirror switch may determine at1104whether a data frame is a unicast data frame. Where the data frame is a unicast data frame, the mirror switch may determine whether a destination cache hit occurs for the destination address of the data frame, at1106. Where a destination address cache hit occurs, the method1100may determine at1110that the expected egress is a single port. Where a destination address cache hit alternatively does not occur, the method1100may at1108determine that the expected egress may be flooding to all VLAN member ports.

Where the data frame is not a unicast data frame, the mirror switch may determine whether the data frame is a broadcast frame, at1112. When the data frame is a broadcast frame, the expected egress ports at1114may be to all VLAN member ports. Where the data frame is a multicast frame at1116, the expected egress ports may be all ports belonging to a multicast group, at1118.

At1120, the method1100may determine whether Access Control List (ACL) rules affect the expected egress ports. When the ACL rules effect the expected egress ports, the mirror switch may adjust at1122the expected egress ports.

At1124, the mirror switch may determine whether a private VLAN configuration affects the expected egress ports. A private VLAN may be subset of a VLAN. Where the private VLAN configuration affects the expected egress ports, the mirror switch may at1126adjust the expected egress ports according to the private VLAN configuration.

At1128, the mirror switch may determine whether there is a port mirroring configuration. A port mirroring configuration may cause a frame to be mirrored additional, mirrored ports. Where there is a port mirroring configuration, the mirror switch may adjust at1130the expected egress ports to account for the additional mirrored ports. In this manner, the mirror switch of an embodiment may determine expected egress ports in a manner that takes into account the illustrated and other known switch configuration attributes.

One skilled in the art will appreciate that there are many more configuration commands that could affect frame forwarding and that are not illustrated inFIG. 11. For example, an embodiment may determine if VLAN filtering has been enabled. VLAN filtering may discard the frames, if the VLAN tag does not match the VLAN port membership. VLAN filtering may cause the expected egress ports to be adjusted. In another example, having the 802.1x port authorization enabled may also cause the expected egress ports to be adjusted. The 802.1x port authorization may discard the frame, if the port is not currently authorized.

FIG. 12generally illustrates a block diagram of a computing apparatus1200consistent with an embodiment. For example, the apparatus1200may include software and hardware to monitor and verify switch frame delivery. The apparatus1200, in specific embodiments, may include a computer, a computer system, a computing device, a server, a disk array, client computing entity, or other programmable device, such as a multi-user computer, a single-user computer, a handheld device, a networked device (including a computer in a cluster configuration), a mobile phone, a video game console (or other gaming system), etc.

The data processing system may include any device configured to process data and may encompass many different types of device/system architectures, device/system configurations, and combinations of device/system architectures and configurations. Typically, a data processing system will include at least one processor and at least one memory provided in hardware, such as on an integrated circuit chip. However, a data processing system may include many processors, memories, and other hardware and/or software elements provided in the same or different computing devices. Furthermore, a data processing system may include communication connections between computing devices, network infrastructure devices, and the like.

The data processing system1200is an example of a single processor unit based system, with the single processor unit comprising one or more on-chip computational cores, or processors. In this example, a processing unit1206may constitute a single chip with the other elements being provided by other integrated circuit devices that may be part of a motherboard, multi-layer ceramic package, or the like, to collectively provide a data processing system, computing device or the like. The processing unit1206may execute a test case module1214to monitor and verify frame switching in accordance with an embodiment.

In the depicted example, the data processing system1200employs a hub architecture including a north bridge and a memory controller hub (NB/MCH)1202, in addition to a south bridge and an input/output (I/O) controller hub (SB/ICH)1204. A processing unit1206, a main memory1208, and a graphics processor1210are connected to the NB/MCH1202. The graphics processor1210may be connected to the NB/MCH1202through an accelerated graphics port (AGP).

In the depicted example, a local area network (LAN) adapter1212connects to the SB/ICH1204. An audio adapter1216, a keyboard and mouse adapter1220, a modem1222, a read only memory (ROM)1224, a hard disk drive (HDD)1226, a CD-ROM drive1230, a universal serial bus (USB) port and other communication ports1232, and PCI/PCIe devices1234connect to the SB/ICH1204through bus1238and bus1240. The PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, and PC cards for notebook computers. PCI uses a card bus controller, while PCIe does not. ROM1224may be, for example, a flash basic input/output system (BIOS).

An HDD1226and a CD-ROM drive1230connect to the SB/ICH1204through the bus1240. The HDD1226and the CD-ROM drive1230may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface. A duper I/O (SIO) device1236may be connected to SB/ICH1204.

An operating system runs on the processing unit1206. The operating system coordinates and provides control of various components within the data processing system1200inFIG. 12. As a client, the operating system may be a commercially available operating system. An object-oriented programming system programming system may run in conjunction with the operating system and provide calls to the operating system from programs or applications executing on the data processing system1200. The data processing system1200may be a symmetric multiprocessor (SMP) system including a plurality of processors in the processing unit1206. Alternatively, a single processor system may be employed.

Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as the HDD1226, and may be loaded into main memory1208for execution by processing unit1206. The processes for illustrative embodiments may be performed by the processing unit1206using computer usable program code. The program code may be located in a memory such as, for example, a main memory1208, a ROM1224, or in one or more peripheral devices1226and1230, for example.

A bus system, such as the bus1238or the bus1240as shown inFIG. 12, may be comprised of one or more buses. The bus system may be implemented using any type of communication fabric or architecture that provides for a transfer of data between different components or devices attached to the fabric or architecture. A communication unit, such as the modem1222or the network adapter1212ofFIG. 12, may include one or more devices used to transmit and receive data. A memory may be, for example, the main memory1208, the ROM1224, or a cache such as found in the NB/MCH1202inFIG. 12.

Those of ordinary skill in the art will appreciate that the embodiments ofFIG. 12may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives and the like, may be used in addition to or in place of the hardware depicted inFIG. 12. Further, embodiments of the present disclosure, such as the one or more embodiments may take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a non-transitory computer-usable or computer-readable medium can be any non-transitory medium that can tangibly embody a computer program and that can contain or store the computer program for use by or in connection with the instruction execution system, apparatus, or device.

In various embodiments, the medium can include an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and digital versatile disk (DVD). The processes of the illustrative embodiments may be applied to a multiprocessor data processing system, such as a SMP, without departing from the spirit and scope of the embodiments.

Particular embodiments described herein may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a particular embodiment, the disclosed methods are implemented in software that is embedded in processor readable storage medium and executed by a processor, which includes but is not limited to filmware, resident software, microcode, etc.

Further, embodiments of the present disclosure, such as the one or more embodiments may take the form of a computer program product accessible from a computer-usable or computer-readable storage medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a non-transitory computer-usable or computer-readable storage medium may be any apparatus that may tangibly embody a computer program and that may contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.

Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the data processing system either directly or through intervening I/O controllers. Network adapters may also be coupled to the data processing system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.