Disclosure of Invention
In order to solve the above technical problems or at least partially solve the above technical problems, an embodiment of the present disclosure provides a method and an apparatus for switching network card devices based on a bonding mode.
A first aspect of an embodiment of the present disclosure provides a method for switching network card devices in a bonding mode, where the method includes:
Responding to switching operation of network card equipment in a bonding mode, generating switching operation information, and transmitting the switching operation information to a preset callback interface, wherein the switching operation information is used for indicating switching of a first network card equipment into a second network card equipment;
The switching operation message is called from the preset callback interface based on a remote direct memory access driving module;
Based on the remote direct memory access driving module, switching the current data information of the first network card device to the second network card device through a shared memory according to the switching operation message, and executing the current data information in the second network card device, wherein the first network card device and the second network card device have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module.
In one example, the switching, based on the remote direct memory access driving module, the current data information of the first network card device to the second network card device via the shared memory according to the switching operation message includes:
transmitting the switching operation message to the first network card device and the second network card device based on a remote direct memory access driving module;
The first network card device stores the current data information into a shared memory according to the switching operation message, and after transmission is finished, the state identification of the shared memory is modified from a first identification to a second identification;
And when the second network card device detects that the state identifier of the shared memory is the second identifier, acquiring the current data information from the shared memory, and switching the first network card device to the second network card device.
In one example, before the first network card device stores the current data information into the shared memory according to the switching operation message, the method further includes:
And after the first network card equipment receives the switching operation message, suspending processing of the current data information.
In one example, the method further comprises:
And creating the shared memory based on the remote direct memory access driving module, and determining the shared memory state identifier as a first identifier.
In one example, the method further comprises:
and sending a notification message to the remote direct memory access driving module based on the second network card equipment, wherein the notification message is used for representing that the switching of the first network card equipment to the second network card equipment is completed.
A second aspect of an embodiment of the present disclosure provides a switching apparatus of a network card device in a bonding mode, where the apparatus includes:
The network interface device comprises a binding module, a preset callback interface, a first network interface device, a second network interface device, a first network interface device and a second network interface device, wherein the binding module is used for responding to switching operation of the network interface device in a binding mode, generating a switching operation message and transmitting the switching operation message to the preset callback interface;
the remote direct memory access driving module is used for calling the switching operation message from the preset callback interface;
The remote direct memory access driving module is used for switching the current data information of the first network card device to the second network card device through a shared memory according to the switching operation message, and executing the current data information in the second network card device, wherein the first network card device and the second network card device have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module.
In one example, the remote direct memory access driving module is specifically configured to send the switching operation message to the first network card device and the second network card device;
The first network card device is used for storing the current data information into the shared memory according to the switching operation message, and modifying the state identifier of the shared memory from a first identifier to a second identifier after the transmission is finished;
And the second network card device is configured to acquire the current data information from the shared memory when detecting that the status identifier of the shared memory is the second identifier, and switch the first network card device to the second network card device.
In one example, the apparatus further comprises:
And the first network card device is used for suspending processing the current data information after receiving the switching operation message.
In one example, the apparatus further comprises:
The remote direct memory access driving module is further configured to create the shared memory, and determine the shared memory status identifier as a first identifier.
In one example, the apparatus further comprises:
The second network card device is further configured to send a notification message to the remote direct memory access driving module, where the notification message is used to characterize that the switching of the first network card device to the second network card device is completed.
A third aspect of the embodiments of the present disclosure provides a network card device based on a binding mode, including:
A processor and a memory, wherein the memory has stored therein a computer program which, when executed by the processor, performs the method of the first aspect.
A fourth aspect of the disclosed embodiments provides a computer readable storage medium having stored therein a computer program which, when executed by a processor, can implement the method of the first aspect described above.
The embodiment of the disclosure provides a switching method and device of network card equipment based on a bonding mode, wherein the method comprises the steps of responding to switching operation of the network card equipment based on the bonding mode, generating switching operation information, transmitting the switching operation information to a preset callback interface, wherein the switching operation information is used for indicating switching of a first network card equipment into a second network card equipment, the first network card equipment and the second network card equipment are based on the network card equipment in the bonding mode, calling the switching operation information from the preset callback interface based on a remote direct memory access driving module, switching current data information of the first network card equipment to the second network card equipment based on the remote direct memory access driving module according to the switching operation information, and executing the current data information in the second network card equipment, wherein the first network card equipment and the second network card equipment are provided with the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module. By adopting the technical scheme, when one network card device has only one port, the communication mode of remote direct memory access can be carried out with other devices, and the stability of data transmission is further improved.
Detailed Description
In order that the above objects, features and advantages of the present disclosure may be more clearly understood, a further description of aspects of the present disclosure will be provided below. It should be noted that, without conflict, the embodiments of the present disclosure and features in the embodiments may be combined with each other.
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure, but the present disclosure may be practiced otherwise than as described herein, and it is apparent that the embodiments in the specification are only some, rather than all, of the embodiments of the present disclosure.
At present, a network card device based on a bonding mode in the related art establishes a bonding relationship between two ports of the same network card device, and further performs remote direct memory access with other devices. In particular, reference may be made to a schematic diagram of a related art remote direct memory access communication architecture shown in fig. 1.
For a clear description, reference may be made to the following explanation of the terms:
Remote direct memory access (Remote Direct Memory Access, RDMA for short) is one of the important support technologies to realize the potential of DPU schemes. The method is a computer network technology, which allows the direct access of the internal memories of two nodes on the network to complete the data communication without the participation of an operating system, thus having the advantages of low delay, high bandwidth, reduced system resource consumption and the like. From the perspective of system software design, RDMA can be directly regarded as a faster network, and current implementation of RDMA mainly includes InfiniBand, roCE (RDMA over Converged Ethernet) and iWARP (INTERNET WIDE AREA RDMA Protocol), wherein RoCE can implement high-performance data transmission on ethernet by encapsulating RDMA operations in an ethernet Protocol, and application is the widest.
The data processing unit (DataProcessingUnit, abbreviated as DPU) is a new generation of computing chip which uses data as a center, is I/O intensive, adopts a software defined technology route to support the virtualization of an infrastructure resource layer, and has the advantages of improving the efficiency of a computing system, reducing the total ownership cost of the whole system, improving the data processing efficiency and reducing the performance loss of other computing chips.
Linux binding drivers provide a network interface arrangement that bundles multiple network interface devices into a single network interface arrangement for use in network load balancing and network redundancy.
Memory Region (MR) is a block of contiguous Memory managed by RDMA, which controls access rights of Memory for remote access. Each memory has a set lkey and rkey of two 32-bit numbers representing the memory region. Lkey and rkey are needed for data transmission and reception.
RDMA doorbell mechanism (DB) is a technique used in RDMA communication that avoids the bottlenecks of CPU participation and data copying that are common in conventional network communication by directly communicating between a user state and a kernel state. The core advantage of this mechanism is that it can significantly reduce the delay of data transmission and improve the efficiency of data transmission.
The network configuration uses the Bonding technology to make redundancy of the network port hardware level, and single-point failure of single network port application is prevented.
For multiple physical network cards, one of the physical network cards is set as a Master (Master), the other network cards are Slave (Slave), the MAC address of the Bond network card is taken from the physical network card marked as the Master, and then the MAC address is copied to the other physical network cards.
It is common to use a master-slave mode in which only one slave is activated and the other slave interfaces are activated only when the interfaces of the active slave fail. A failover occurs in the primary and standby modes and one or more gratuitous ARP are sent on the newly activated slave interface. All VLAN interfaces on the master-slave device interfaces and on the interfaces where at least one IP address needs to be configured are sent gratuitous ARP. Gratuitous ARP sent on the VLAN interface will be attached with the appropriate VLAN id, so this mode provides fault tolerance.
As can be seen from fig. 1, the related art cannot realize switching among a plurality of network card devices, and has limitations. Fig. 2 is a schematic diagram of a communication architecture of remote direct memory access according to an embodiment of the disclosure.
Fig. 3a is a flowchart of a method for switching network card devices based on a binding mode according to an embodiment of the present disclosure, where the method may be performed by a network card device. As shown in fig. 3a, the method provided in this embodiment includes the following steps:
S301, generating a switching operation message in response to switching operation of the network card device in the bonding mode, and transmitting the switching operation message to a preset callback interface, wherein the switching operation message is used for indicating switching of the first network card device to the second network card device, and the first network card device and the second network card device are network card devices in the bonding mode.
In one example, the network card device in the bonding mode includes a first network card device and a second network card device. The first network card device and the second network card device have the same hardware structure and the same resource ID. In particular, reference may be made to a management diagram of resource IDs as shown in fig. 3 b. The advantage of this arrangement is that after the network card device is switched, it can be ensured that the network card device after switching can use the index information of the network card device before switching.
In one example, the first network card device characterizes a network card device before switching, and the second network card device characterizes a network card device after switching. Specifically, the switching operation may be triggered by a port abnormality in the first network card device. Further, the switching operation message may be a preset instruction message, a preset code file, or a preset identifier. The preset callback interface can be accessed by the remote direct memory access driving module in real time.
S302, a switching operation message is called from a preset callback interface based on the remote direct memory access driving module.
In one example, the remote direct memory access driver module invokes the handover operation message from the preset callback interface after querying that the handover operation message exists in the preset callback interface.
S303, switching the current data information of the first network card device to the second network card device through a shared memory based on the remote direct memory access driving module according to the switching operation message, and executing the current data information in the second network card device, wherein the first network card device and the second network card device have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module.
In one example, the shared memory may be accessed by the first network card device or by the second network card device. The current data information is the data information being processed by the first network card device. After the remote direct memory access driving module acquires the switching operation message, the current data information of the first network card device is stored into the shared memory, then the first network card device is switched to the second network card device, and then the second network card device executes the current data information.
The embodiment of the disclosure provides a switching method of network card equipment based on a bonding mode, which comprises the steps of responding to switching operation of the network card equipment based on the bonding mode, generating switching operation information, transmitting the switching operation information to a preset callback interface, wherein the switching operation information is used for indicating that a first network card equipment is switched to a second network card equipment, the first network card equipment and the second network card equipment are based on the network card equipment in the bonding mode, calling the switching operation information from the preset callback interface based on a remote direct memory access driving module, switching current data information of the first network card equipment to the second network card equipment through a shared memory based on the remote direct memory access driving module according to the switching operation information, and executing the current data information in the second network card equipment, wherein the first network card equipment and the second network card equipment have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module. By adopting the technical scheme, when one network card device has only one port, the communication mode of remote direct memory access can be carried out with other devices, and the stability of data transmission is further improved.
Fig. 4a is a flowchart illustrating a switching method of a network card device in a bonding mode according to an embodiment of the present disclosure. Embodiments of the present disclosure may be optimized based on the embodiments described above, and may be combined with various alternatives of one or more of the embodiments described above.
As shown in fig. 4a, the method for switching network card devices in the binding mode may include the following steps:
S401, responding to switching operation of network card equipment in a bonding mode, generating switching operation information, and transmitting the switching operation information to a preset callback interface, wherein the switching operation information is used for indicating switching of a first network card equipment into a second network card equipment, and the first network card equipment and the second network card equipment are based on the network card equipment in the bonding mode.
In one example, this step may be referred to the description of step S301.
S402, calling a switching operation message from a preset callback interface based on the remote direct memory access driving module.
In one example, this step may be referred to the description of step S302.
S403, the switching operation message is sent to the first network card device and the second network card device based on the remote direct memory access driving module.
In one example, after the remote direct memory access driving module receives the switching operation message, the switching operation message is sent to the first network card device and the second network card device, so that the first network card device performs a corresponding operation, and the second network card device also performs a corresponding operation.
S404, after the first network card device receives the switching operation message, the processing of the current data information is paused.
In one example, after the first network card device receives the switch operation message, the current data information is no longer processed in preparation for switching the second network card device.
S405, the first network card device stores the current data information into the shared memory according to the switching operation message, and after the transmission is finished, the state identification of the shared memory is modified from the first identification to the second identification.
In one example, the first network card device suspends processing the current data information and stores the current data information in the shared memory, and then modifies the state identifier of the shared memory after storing all the current data information is completed, and modifies the state identifier of the shared memory from the first identifier to the second identifier. The second identifier indicates that the shared memory completes the storage operation of all the current data information.
S406, when the second network card device detects that the state identifier of the shared memory is the second identifier, the current data information is acquired from the shared memory, and the first network card device is switched to the second network card device.
In one example, when the second network card device detects that the status identifier of the shared memory is the second identifier, it indicates that the second network card device knows that the shared memory completes the storing operation of all the current data information. And then acquiring current data information from the shared memory, and completing switching from the first network card device to the second network card device.
In one example, the current data information includes sq information, rq information, cq information, and the like.
In one example, the first network card device and the second network card device may access MR memory and shared memory. For a clearer illustration, reference may be made to a schematic memory structure shown in fig. 4 b. As can be seen from fig. 4b, the first network card device and the second network card device can each access the MR memory, the sq information, the rq information, the cq information, and the like.
S407, sending a notification message to the remote direct memory access driving module based on the second network card equipment, wherein the notification message is used for representing that the switching of the first network card equipment to the second network card equipment is completed.
In one example, the second network card device sends a notification message to the remote direct memory access driver module for notifying the remote direct memory access driver module that the switching of the first network card device to the second network card device is complete.
S408, executing current data information in the second network card device, wherein the first network card device and the second network card device have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module.
In one example, the method further comprises:
and creating a shared memory based on the remote direct memory access driving module, and determining the shared memory state identifier as a first identifier.
In one example, the shared memory is a physical address and the first identifier characterizes the shared memory as available for use.
The embodiment of the disclosure provides a switching method of network card equipment based on a bonding mode, which comprises the following steps: the first network card device stores the current data information into the shared memory according to the switching operation message, and after the transmission is finished, the state identification of the shared memory is modified from the first identification to the second identification. When the second network card device detects that the state identifier of the shared memory is the second identifier, current data information is acquired from the shared memory, and the first network card device is switched to the second network card device. By adopting the technical scheme, the network card equipment can be switched in time through the identification of the shared memory, the data import and export are independently completed in the hardware, the drive is not perceived, and the switching is smoother.
Fig. 5 is a schematic structural diagram of a switching device of a network card device in a bonding mode according to an embodiment of the present disclosure, where the switching device of the network card device in the bonding mode may be understood as the network card device in the bonding mode or a part of functional modules in the network card device in the bonding mode. As shown in fig. 5, the switching device 50 of the network card device in the binding mode includes:
The bonding module 501 is configured to generate a switching operation message in response to a switching operation of the network card device in the bonding mode, and transmit the switching operation message to a preset callback interface, where the switching operation message is used to instruct to switch the first network card device to the second network card device;
the remote direct memory access driving module 502 is configured to invoke a switching operation message from a preset callback interface;
The remote direct memory access driving module 502 is configured to switch current data information of the first network card device to the second network card device via the shared memory according to the switching operation message, and execute the current data information in the second network card device, where the first network card device and the second network card device have the same hardware structure, and the shared memory is created in advance by the remote direct memory access driving module.
In one example, the remote direct memory access driver module 502 is specifically configured to send a switching operation message to the first network card device and the second network card device;
the first network card device 503 is configured to store current data information into the shared memory according to the switching operation message, and modify the status identifier of the shared memory from a first identifier to a second identifier after the transmission is completed;
And the second network card device 504 is configured to acquire current data information from the shared memory when detecting that the status identifier of the shared memory is the second identifier, and switch the first network card device to the second network card device.
In one example, the apparatus 50 further comprises:
The first network card device 503 is configured to suspend processing of the current data information after receiving the switching operation message.
In one example, the apparatus 50 further comprises:
the remote direct memory access driver module 502 is further configured to create a shared memory, and determine a shared memory status identifier as a first identifier.
In one example, the apparatus 50 further comprises:
The second network card device 504 is further configured to send a notification message to the remote direct memory access driving module, where the notification message is used to characterize that the switching of the first network card device to the second network card device is completed.
The device provided in this embodiment can execute the method of any one of the above embodiments, and the execution mode and the beneficial effects thereof are similar, and are not described herein again.
The embodiment of the disclosure also provides a network card device based on the bonding mode, which comprises a memory and a processor, wherein the memory stores a computer program, and the processor is used for executing the computer program, and when the computer program is executed by the processor, the method of any embodiment can be realized.
Fig. 6 is a schematic structural diagram of a network card device in a binding mode according to an embodiment of the present disclosure. Referring now in particular to fig. 6, a schematic diagram of a bonding mode based network card device 1000 suitable for use in implementing embodiments of the present disclosure is shown. The network card device 1000 in the binding-based mode in the embodiments of the present disclosure may include, but is not limited to, mobile terminals such as mobile phones, notebook computers, digital broadcast receivers, PDAs (personal digital assistants), PADs (tablet computers), PMPs (portable multimedia players), in-vehicle terminals (e.g., in-vehicle navigation terminals), and the like, and fixed terminals such as digital TVs, desktop computers, and the like. The network card device shown in fig. 6 in the binding-based mode is only one example, and should not impose any limitation on the functions and scope of use of the embodiments of the present disclosure.
As shown in fig. 6, the network card device 1000 in the bonding mode may include a processing means (e.g., a central processor, a graphic processor, etc.) 1001 which may perform various appropriate actions and processes according to a program stored in a Read Only Memory (ROM) 1002 or a program loaded from a storage means 1008 into a Random Access Memory (RAM) 1003. In the RAM1003, various programs and data required for the operation of the network card device 1000 in the bonding mode are also stored. The processing device 1001, the ROM 1002, and the RAM1003 are connected to each other by a bus 1004. An input/output (I/O) interface 1005 is also connected to bus 1004.
In general, devices including input devices 1006 such as a touch screen, touch pad, keyboard, mouse, camera, microphone, accelerometer, gyroscope, etc., output devices 1007 including a Liquid Crystal Display (LCD), speaker, vibrator, etc., storage devices 1008 including, for example, magnetic tape, hard disk, etc., and communication devices 1009 may be connected to the I/O interface 1005. The communication means 1009 may allow the network card device 1000 in the bonding mode to communicate with other devices wirelessly or by wire to exchange data. Although fig. 6 illustrates the network card apparatus 1000 in a bonding mode with various devices, it should be understood that not all illustrated devices are required to be implemented or provided. More or fewer devices may be implemented or provided instead.
In particular, according to embodiments of the present disclosure, the processes described above with reference to flowcharts may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a non-transitory computer readable medium, the computer program comprising program code for performing the method shown in the flow chart. In such an embodiment, the computer program may be downloaded and installed from a network via the communication device 1009, or installed from the storage device 1008, or installed from the ROM 1002. The above-described functions defined in the method of the embodiment of the present disclosure are performed when the computer program is executed by the processing device 1001.
It should be noted that the computer readable medium described in the present disclosure may be a computer readable signal medium or a computer readable storage medium, or any combination of the two. The computer readable storage medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or a combination of any of the foregoing. More specific examples of a computer-readable storage medium may include, but are not limited to, an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this disclosure, a computer-readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. In the present disclosure, however, the computer-readable signal medium may include a data signal propagated in baseband or as part of a carrier wave, with the computer-readable program code embodied therein. Such a propagated data signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination of the foregoing. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to electrical wiring, fiber optic cable, RF (radio frequency), and the like, or any suitable combination of the foregoing.
In some embodiments, the clients, servers may communicate using any currently known or future developed network protocol, such as HTTP (HyperText Transfer Protocol ), and may be interconnected with any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), the internet (e.g., the internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks), as well as any currently known or future developed networks.
The computer readable medium may be included in the network card device in the bonding mode, or may exist alone without being incorporated in the network card device in the bonding mode.
The computer readable medium carries one or more programs, when the one or more programs are executed by the network card device in the bonding mode, the network card device in the bonding mode is caused to generate a switching operation message in response to switching operation of the network card device in the bonding mode, the switching operation message is transmitted to a preset callback interface, the switching operation message is used for indicating that the first network card device is switched to the second network card device, the first network card device and the second network card device are network card devices in the bonding mode, the switching operation message is called from the preset callback interface based on a remote direct memory access driving module, the current data information of the first network card device is switched to the second network card device through a shared memory based on the remote direct memory access driving module according to the switching operation message, and the current data information is executed in the second network card device, wherein the first network card device and the second network card device have the same hardware structure, and the shared memory is pre-created by the remote direct memory access driving module.
Computer program code for carrying out operations of the present disclosure may be written in one or more programming languages, including, but not limited to, an object oriented programming language such as Java, smalltalk, C ++ and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer through any kind of network, including a Local Area Network (LAN) or a Wide Area Network (WAN), or may be connected to an external computer (for example, through the Internet using an Internet service provider).
The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The units involved in the embodiments of the present disclosure may be implemented by means of software, or may be implemented by means of hardware. Wherein the names of the units do not constitute a limitation of the units themselves in some cases.
The functions described above herein may be performed, at least in part, by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic that may be used include Field Programmable Gate Arrays (FPGAs), application Specific Integrated Circuits (ASICs), application Specific Standard Products (ASSPs), systems-on-a-chip (SOCs), complex Programmable Logic Devices (CPLDs), and the like.
In the context of this disclosure, a machine-readable medium may be a tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. The machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of a machine-readable storage medium would include an electrical connection based on one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
The embodiments of the present disclosure further provide a computer readable storage medium, where a computer program is stored, where the computer program, when executed by a processor, may implement a method according to any one of the foregoing embodiments, and the implementation manner and beneficial effects of the method are similar, and are not described herein again.
It should be noted that in this document, relational terms such as "first" and "second" and the like are used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. Moreover, the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises an element.
The foregoing is merely a specific embodiment of the disclosure to enable one skilled in the art to understand or practice the disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the disclosure. Thus, the present disclosure is not intended to be limited to the embodiments shown and described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.