Device, method and system for virtualizing a network
The network device with a virtual circuit and multiple physical ports dynamically adjusts to handle non-predetermined data rates, addressing packet loss and delays by reformating data streams to match fixed data rates, ensuring quality of service and precise traffic control.
Patent Information
- Application Number
- JP2025148737
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-04-02
- Filing Date
- 2025-09-09
- Publication Date
- 2026-02-03
AI Technical Summary
Conventional network interface controllers (NICs) have fixed transfer rates that are insufficient to accommodate data traffic from applications with non-predetermined data rates, leading to issues like packet loss and delays, particularly in applications such as videoconferencing.
A network device with a virtual circuit and multiple physical ports that dynamically adjusts to handle data streams at non-predetermined rates by establishing virtual ports and selecting physical ports with higher aggregate fixed data rates, reformating data streams to match the fixed data rate of the physical ports.
The solution effectively handles multiple data streams with varying rates, ensuring quality of service and precise traffic control by splitting or combining data streams to match the fixed data rate of physical ports, reducing packet loss and delays.
Smart Images

Figure 2026016358000001_ABST
Abstract
Description
[Technical Field]
[0001] This application relates to the field of computer networks, and more particularly to network devices, methods, and systems for virtualizing networks. [Background technology]
[0002]
[0003] Conventional computer systems typically include a network interface controller / card (NIC) capable of connecting the computer system to the Internet or other types of networks. A conventional NIC includes one or more network ports that operate at a predetermined fixed data rate, such as, for example, 10 / 100 / 1000 Mbps (megabits per second), 10 Gbps (gigabits per second), 40 Gbps, and 100 Gbps connections. As part of enabling communication between computer systems over a network, conventional NICs negotiate the transfer speed of the network port, and during that process, the transfer speed of the network port is fixed.
[0003] One drawback of conventional NICs is that the predetermined, fixed transfer rate of a port is insufficient to accommodate traffic from applications that desire to transfer data at non-predetermined data rates. For example, traffic from a videoconferencing application may exceed the physical limitations of a network port, resulting in undesirable packet loss and delays, degrading the videoconferencing experience of users of the videoconferencing application. As a result, there is a need for a technique for accommodating traffic from applications that desire to transfer data at non-predetermined data rates. Summary of the Invention
[0004] The present invention provides a technique for handling application traffic that desires to transfer data at a non-predetermined data rate. The present invention provides a network device including a plurality of physical transmit / receive ports. The plurality of physical transmit / receive ports transfer data over a network at a predetermined fixed data rate. The network device also includes a virtual circuit coupled to the plurality of physical transmit / receive ports. The virtual circuit receives a first transfer request from a processor to transmit a first incoming data stream at the first non-predetermined data rate and establishes a first virtual port for receiving the first incoming data stream. The virtual circuit also selects one or more physical transmit / receive ports from the plurality of physical transmit / receive ports in response to the first transfer request to form one or more selected physical transmit / receive ports, where the one or more selected physical transmit / receive ports have a predetermined aggregate fixed data rate that is higher than the first non-predetermined data rate. The virtual circuit further receives the first incoming data stream from the processor via the virtual port after the one or more physical transmit / receive ports are selected. The virtual circuit further forms one or more output data streams to flow at the predetermined fixed data rate. The one or more output data streams incorporate data from the first incoming data stream. The data from the first incoming data stream incorporated into the one or more output data streams is timed to selected pulses in a transmit clock signal that runs at a predetermined fixed data rate. Further, the virtual circuit forwards the one or more output data streams to one or more selected physical transmit / receive ports.
[0005] The present invention also includes a method of operating a network device. The method includes receiving a first transfer request from a processor to transmit a first incoming data stream at a first, non-predetermined data rate and establishing a virtual port for receiving the first incoming data stream. The method also includes selecting one or more physical transmit / receive ports from a plurality of physical transmit / receive ports to transmit data over the network at a predetermined, fixed data rate to form one or more selected physical transmit / receive ports, the one or more selected physical transmit / receive ports having a predetermined aggregate fixed data rate higher than the first, non-predetermined data rate. The method further includes, after the one or more physical transmit / receive ports have been selected, receiving the first incoming data stream from the processor via the virtual port and forming one or more output data streams to flow at the predetermined, fixed data rate. The one or more output data streams incorporate data from the first incoming data stream. The data from the first incoming data stream incorporated into the one or more output data streams is timed to selected pulses in a transmit clock signal that flows at the predetermined, fixed data rate. Additionally, the method includes forwarding the one or more output data streams to one or more selected physical transmit / receive ports.
[0006] The present invention also provides a network system. The network system includes a network, a first network device coupled to the network, and a second network device coupled to the network. The first network device has a plurality of first physical transmit / receive ports for transferring data over the network at a predetermined fixed data rate, and a first virtual circuit coupled to the plurality of first physical transmit / receive ports. The first virtual circuit receives a first transfer request from a processor to transmit a first incoming data stream at a first non-predetermined data rate and establishes a virtual port for receiving the first incoming data stream. The first virtual circuit also selects one or more first physical transmit / receive ports from the plurality of first physical transmit / receive ports to form one or more selected first physical transmit / receive ports, where the one or more selected first physical transmit / receive ports have a predetermined aggregate fixed data rate higher than the first non-predetermined data rate. Furthermore, after the one or more first physical transmit / receive ports are selected, the first virtual circuit receives the first incoming data stream from the processor via the virtual port. The first virtual circuit further forms one or more output data streams to flow at a predetermined fixed data rate. The one or more output data streams incorporate data from the first incoming data stream. The data from the first incoming data stream incorporated into the one or more output data streams is timed to selected pulses in a transmit clock signal that flows at the predetermined fixed data rate. The first virtual circuit further forwards the one or more output data streams to one or more selected physical transmit / receive ports. The second network device has a plurality of second physical transmit / receive ports for forwarding data over the network and a second virtual circuit coupled to the plurality of second physical transmit / receive ports. The second virtual circuit receives a first network request from the first virtual circuit to receive one or more output data streams at a first non-predetermined data rate from the one or more selected physical transmit / receive ports.The second virtual circuit also responds to a request from the first virtual circuit by selecting one or more second physical transmit / receive ports from the plurality of second physical transmit / receive ports to form one or more selected second physical transmit / receive ports corresponding to the one or more selected first physical transmit / receive ports, where the one or more selected second physical transmit / receive ports have a predetermined total fixed data rate higher than the first non-predetermined data rate. Furthermore, the second virtual circuit receives one or more output data streams from the first network device using the selected one or more second physical transmit / receive ports.
[0007] A better understanding of the features and advantages of the present invention will be obtained by reference to the following detailed description and accompanying drawings that set forth one illustrative embodiment, in which the principles of the invention are utilized. Specific embodiments of the present application are set forth below to provide a better description of the technical means of the present application for carrying out the present application in accordance with the contents of this specification, and to make the above and other objects, features, and advantages of the present application more easily understandable. [Brief explanation of the drawings]
[0008] Various other advantages and benefits will become apparent to those skilled in the art upon reading the detailed description of the preferred embodiments in the following text. The drawings are only for purposes of illustrating the preferred embodiments and are not to be construed as limiting the present application. Also, like reference numerals are used throughout the drawings to denote like parts. [Figure 1] FIG. 1 is a block diagram illustrating an example of a network device 100 in accordance with the present invention. [Figure 2] FIG. 2 is a timing diagram illustrating an example of clocking data from an incoming data stream to selected pulses in a transmit clock signal in accordance with the present invention. [Figure 3] FIG. 3 is a block diagram illustrating an example of a network device 300 in accordance with the present invention. [Figure 4]FIG. 4 is a timing diagram illustrating an example in which data from two incoming data streams are clocked onto selected pulses in a transmit clock signal in accordance with the present invention. [Figure 5] FIG. 5 is a block diagram illustrating an example of a network device 500 in accordance with the present invention. [Figure 6A] FIG. 6A is a timing diagram illustrating an example in which data from three incoming data streams are clocked onto selected pulses in a transmit clock signal in accordance with the present invention. [Figure 6B] FIG. 6B is a timing diagram illustrating an example of a token bucket timing diagram in accordance with the present invention. [Figure 7] FIG. 7 is a block diagram illustrating an example of a network device 700 in accordance with the present invention. [Figure 8] FIG. 8 is a timing diagram illustrating an example of splitting data within a data stream in accordance with the present invention. [Figure 9] FIG. 9 is a flow chart illustrating an example method 900 for operating a virtual circuit in accordance with the present invention. [Figure 10] FIG. 10 is a block diagram illustrating an example of a network system 1000 according to the present invention. [Figure 11] FIG. 11 is a block diagram illustrating an example of a communications network 1100 in accordance with the present invention. [Figure 12] FIG. 12 is a flow chart illustrating an example of a method 1200 for virtualizing one or more physical network ports (or interfaces) in a communication network in accordance with the present invention. [Figure 13] FIG. 13 is a block diagram illustrating an example of a computing system 1300 in accordance with the present invention. BEST MODE FOR CARRYING OUT THE INVENTION
[0009]
[0023] Exemplary embodiments of the present disclosure will be described in more detail with reference to the drawings. While exemplary embodiments of the present disclosure are illustrated in the drawings, it should be understood that the present disclosure can be embodied in various forms and should not be limited by the embodiments set forth herein. Instead, these embodiments are provided to provide a more complete understanding of the present disclosure and to fully convey the scope of the present disclosure to those skilled in the art.
[0010] 1 illustrates a block diagram of an example network device 100 in accordance with the present invention. As described in more detail below, virtual circuits within the network device enable multiple data streams having non-predetermined data rates lower than the predetermined fixed data rate to be combined for output from a single network port, and single data streams having non-predetermined data rates higher than the predetermined fixed data rate to be split for output from two or more network ports, by reformatting one or more incoming data streams at non-predetermined data rates into one or more outgoing data streams at predetermined fixed data rates.
[0011] 1, network device 100 includes a virtual circuit 110 that reformats incoming data streams, and a set of physical transmit and receive ports PP coupled to virtual circuit 110 for sending and receiving the reformatted data streams. In the current example, three physical transmit and receive ports PP1-PP3 are shown, although other numbers of ports may be used.
[0012] The virtual circuit 110 includes processing, switching, buffering, and timing circuits, including software modules as appropriate. The physical transmit / receive ports PP transfer data over the network 112 at predetermined fixed data rates, which may include, for example, one or more of 10 / 100 / 1000 Mbps (megabits per second), 10 Gbps (gigabits per second), 40 Gbps, and 100 Gbps.
[0013] In operation, virtual circuit 110 receives a first transfer request from an application running on the processor to send a first incoming data stream to a remote device at a first non-predetermined data rate over network 112. The first non-predetermined data rate can be any non-standard data rate, such as 16 Mbps or 128 Mbps.
[0014] In response to the first transfer request, virtual circuit 110 establishes virtual port VP1 for receiving the first incoming data stream from the processor. For example, establishing the virtual port may include allocating a certain amount of memory to serve as a FIFO buffer for the first incoming data stream. Additionally, virtual circuit 110 selects one or more physical transmit / receive ports PP having a predetermined total fixed data rate that is higher than the first non-predetermined data rate.
[0015] 1, if the first undetermined data rate (e.g., 16 Mbps) of the first incoming data stream is lower than the predetermined fixed data rate (e.g., 100 Mbps) of the physical transmit / receive port PP, the virtual circuit 110 selects a physical transmit / receive port PP, such as physical transmit / receive port PP1, that has a predetermined fixed data rate (e.g., 100 Mbps) higher than the first undetermined data rate (e.g., 16 Mbps) of the first incoming data stream. Following the selection, the virtual circuit 110 modifies the switching circuitry to couple the virtual port VP1 to the physical transmit / receive port PP1 through the processing, buffering, and timing circuits of the virtual circuit 110.
[0016] Following this, virtual circuit 110 returns an acknowledgment of approval of the first transfer request to the processor, then receives the first incoming data stream via virtual port VP1 at a first, non-predetermined data rate, and then forms one or more output data streams at a predetermined fixed data rate that incorporate data from the first incoming data stream.
[0017] Data from the first incoming data stream embedded in one or more output data streams is timed to selected pulses in a transmit clock signal running at a predetermined fixed data rate. Upon completion, virtual circuit 110 forwards the one or more output data streams to one or more selected physical transmit / receive ports.
[0018] 2 shows a timing diagram illustrating an example of clocking data from an incoming data stream onto selected pulses in a transmit clock signal in accordance with the present invention. The example in FIG. 2 shows a transmit clock signal 210 operating at a predetermined fixed rate of 10 cycles per second.
[0019] If the virtual circuit receives a data stream from a virtual port with an undetermined data rate of 2 cycles per second, it clocks the data from the first two clock cycles of the data stream into the first two clock cycles of the ten predetermined fixed cycles of the transmit clock signal 210, as shown in row 212.
[0020] Additionally, as shown in row 214 of Figure 2, the buffered data from the first two clock cycles of the data stream can be clocked at any of 10 predetermined fixed clock cycles per second. The example in Figure 2 is a simplified example to illustrate timing. In practice, a virtual port may receive a data stream having, for example, a data rate of 16 Ghz, which is buffered and clocked as shown in Figure 2 and output to a physical transmit / receive port having a predetermined fixed data rate of 100 Ghz.
[0021] 1, at a later time, virtual circuit 110 may receive a second transfer request from an application executing on the processor to transmit a second incoming data stream to a remote device at a second non-predetermined data rate over network 112. The second non-predetermined data rate may be the same as or different from the first non-predetermined data rate.
[0022] In response to the second transfer request, the virtual circuit 110 establishes a virtual port VP2 for receiving the second incoming data stream from the processor. For example, establishing the virtual port may include allocating an amount of memory to serve as a FIFO buffer for the second incoming data stream. Additionally, the virtual circuit 110 determines whether the selected physical transmit / receive port PP1 has an available data rate higher than the second, undetermined data rate.
[0023] For example, the virtual circuit 110 can determine whether the selected physical transmit / receive port PP1 has an available data rate higher than the second non-predetermined data rate by subtracting a first non-predetermined data rate (e.g., 16 Mbps) of the first incoming data stream from a predetermined fixed data rate (e.g., 100 Mbps) to obtain an available data rate (e.g., 84 Mbps), and then comparing the available data rate (e.g., 84 Mbps) with a second non-predetermined data rate (e.g., 32 Mbps) to determine whether the available data rate (e.g., 84 Mbps) is higher than the second non-predetermined data rate (e.g., 32 Mbps).
[0024] If the available data rate of the selected physical transmitting / receiving port PP1 is higher than the second, non-predetermined data rate, the virtual circuit 110 changes the switching circuitry to couple both the virtual port VP1 and the virtual port VP2 to the physical transmitting / receiving port PP1 via the processing, buffering, and timing circuitry of the virtual circuit 110.
[0025] 3 illustrates a block diagram of an example network device 300 in accordance with the present invention. Because network device 300 is similar to network device 100, the same reference numerals are used to indicate structure common to both network devices. As shown in FIG. 3, network device 300 differs from network device 100 in that virtual circuit 110 receives a second transfer request, establishes a second virtual port VP2, determines that physical transmit / receive port PP1 has an available data rate, and connects both the first and second incoming data streams to physical transmit / receive port PP1 through the processing, switching, buffering, and timing circuitry of virtual circuit 110.
[0026] Following this, virtual circuit 110 returns an acknowledgment of the second transfer request to the processor, then receives the second incoming data stream via virtual port VP2 at a second, non-predetermined data rate, and then generates a modified output data stream at a predetermined fixed data rate that incorporates data from both the first and second incoming data streams. As previously described, the first and second incoming data streams are clocked to the selected transmit clock signal. Virtual circuit 110 then forwards the modified output data stream to the selected physical transmit / receive port.
[0027] The predetermined fixed data rate has a data rate of x bits / second. In one embodiment, virtual circuit 110 subdivides the physical transmit / receive port's predetermined fixed data rate of x bits / second into fractional parts, allocates the fractional parts to first and second incoming data streams having non-predetermined data rates lower than the physical transmit / receive port's predetermined fixed data rate, and combines the fractional parts so that the total bits / second of the combined data streams is less than or equal to the physical transmit / receive port's predetermined fixed data rate of x bits / second.
[0028] For example, if the first non-predetermined data rate is 16 Mbps and the second non-predetermined data rate is 32 Mbps, then a fraction of 100 Mbps, 16 Mbps, is mapped to the first non-predetermined data rate, while a fraction of 100 Mbps, 32 Mbps, is mapped to the second non-predetermined data rate.
[0029] 4 shows a timing diagram illustrating an example in which data from two incoming data streams are clocked onto selected pulses in a transmit clock signal in accordance with the present invention. The example in FIG. 4 shows a transmit clock signal 410 operating at a predetermined fixed rate of 10 cycles per second.
[0030] If a virtual circuit receives a data stream from a first virtual port having an undetermined data rate of 2 cycles / second and a data stream from a second virtual port having an undetermined data rate of 3 cycles / second, the virtual circuit will clock data from the first two clock cycles of the first data stream into the first two clock cycles of the ten predetermined fixed cycles of transmit clock signal 410 and clock data from the first three clock cycles of the second data stream into the third, fourth, and fifth clock cycles of the ten predetermined fixed cycles of transmit clock signal 410, as shown in row 412.
[0031] Furthermore, as shown in row 414 of Figure 4, the data buffered from the first two clock cycles of the first data stream and the data buffered from the first three clock cycles of the second data stream can be clocked at any of 10 predetermined fixed cycles per second. The example of Figure 4 is a simplified example to illustrate timing. In practice, virtual ports VP1 and VP2 may receive data streams having data rates of, for example, 16 Ghz and 32 Ghz, respectively, and the data streams are clocked as shown in Figure 4 and output to physical transmit and receive ports having a predetermined fixed data rate of 100 Ghz.
[0032] 5 illustrates a block diagram of an example network device 500 in accordance with the present invention. Because network device 500 is similar to network device 300, the same reference numerals are used to indicate structure common to both network devices. As shown in FIG. 5, network device 500 differs from network device 300 in that virtual circuit 110 has received a third transfer request, established a third virtual port VP3, determined that physical transmit / receive port PP1 has an available data rate, and connected the first, second, and third incoming data streams to physical transmit / receive port PP1 through the processing, switching, buffering, and timing circuitry of virtual circuit 110.
[0033] 6A shows a timing diagram illustrating an example in which data from three incoming data streams are clocked onto selected pulses in a transmit clock signal in accordance with the present invention. The example of FIG. 6A shows a transmit clock signal 610 operating at a predetermined fixed rate of 10 cycles per second.
[0034] If a virtual circuit receives a data stream from a first virtual port having an undetermined data rate of 2 cycles / second, a data stream from a second virtual port having an undetermined data rate of 3 cycles / second, and a data stream from a third virtual port having an undetermined data rate of 4 cycles / second, the virtual circuit will clock data from the first two clock cycles of the first data stream into the first two clock cycles of the 10 predetermined fixed cycles per second, clock data from the first three clock cycles of the second data stream into the third, fourth, and fifth clock cycles of the 10 predetermined fixed cycles per second, and clock data from the first four clock cycles of the third data stream into the sixth, seventh, eighth, and ninth clock cycles of the 10 predetermined fixed cycles per second, as shown in row 412. The last cycle in this example is empty. Ideally, the virtual ports would be grouped so that all of the predetermined fixed clock cycles are utilized.
[0035] Furthermore, as shown in row 614 of FIG. 6A, data from the first two clock cycles of the first data stream, data from the first three clock cycles of the second data stream, and data from the first four clock cycles of the third data stream can be clocked into any of ten predetermined fixed cycles of the transmit clock signal 610.
[0036] The example in Figure 6A is a simplified example to illustrate timing. In reality, virtual ports VP1, VP2, and VP3 may receive data streams having data rates of, for example, 16 Ghz, 32 Ghz, and 48 Ghz, respectively, which are clocked as shown in Figure 6A and output to physical transmit and receive ports having a predetermined fixed data rate of 100 Ghz.
[0037] Referring again to FIG. 5, as described above, a virtual port may include a certain amount of memory that functions as a FIFO buffer for an incoming data stream at an undetermined data rate. The FIFO buffer receiving the incoming data stream may alternately operate as a token bucket, where the token bucket is periodically filled with tokens and emptied when full. The tokens may be implemented, for example, by data packets. When the token bucket is full, the virtual circuit 110 transfers all tokens from the bucket to the physical transmit / receive port at the physical transmit / receive port's predetermined fixed data rate.
[0038] Figure 6B shows a timing diagram illustrating an example of a token bucket timing diagram in accordance with the present invention. In the example of Figure 6B, each pulse represents the number of packets in a clock cycle, and each token bucket holds two tokens or data packets. As shown in Figure 6B, virtual circuit 110 clocks two VP1 packet data streams to selected pulses in the transmit clock signal and outputs the clocked data streams to the physical transmit and receive ports at the physical transmit and receive ports' predetermined fixed data rates, thereby emptying the VP1 token bucket and subsequently emptying the VP2 and VP3 buckets in the same manner.
[0039] One advantage of the present invention is that it can handle multiple data streams separately within a single physical transmit / receive port. For example, a physical transmit / receive port with a data rate of 100 Mbps can be used to transmit 10 Mbps of video conferencing traffic, 50 Mbps for ERP, 30 Mbps for superiors, and 10 Mbps for subordinates. Furthermore, it can guarantee a quality of service (QoS) of "A to Z" for all traffic. Another advantage is that the present invention provides precise traffic control.
[0040] 7 shows a block diagram illustrating an example of a network device 700 according to one embodiment of the present invention. Because network device 700 is similar to network device 500, the same reference numbers are used to indicate structures common to both network devices.
[0041] 7, virtual circuit 110 receives a fourth transfer request from an application running on the processor to send a fourth incoming data stream to a remote device over network 112 at a fourth unpredetermined data rate. In response to the fourth transfer request, virtual circuit 110 establishes virtual port VP4 to receive the fourth incoming data stream from the processor. For example, establishing the virtual port may include allocating a certain amount of memory to function as a FIFO buffer for the fourth incoming data stream. Furthermore, virtual circuit 110 selects one or more physical transmit / receive ports PP from the number of physical transmit / receive ports PP that have a predetermined total fixed data rate that is higher than the first unpredetermined data rate.
[0042] As shown in FIG. 7, if the fourth undetermined data rate (e.g., 128 Mbps) of the fourth incoming data stream is higher than the predetermined fixed data rate (e.g., 100 Mbps) of the physical transmitting / receiving port PP, the virtual circuit 110 selects two or more physical transmitting / receiving ports, e.g., physical transmitting / receiving ports PP2 and PP3, where the two or more selected physical transmitting / receiving ports have a predetermined total fixed data rate higher than the fourth undetermined data rate of the fourth incoming data stream.
[0043] Following this, the virtual circuit 110 returns an acknowledgment of approval of the fourth transfer request to the processor, then receives a fourth incoming data stream via virtual port VP4 at a fourth, undetermined data rate, and then splits the fourth incoming data stream received from virtual port VP4 into two or more split data streams corresponding to two or more selected physical transmit / receive ports PP2 and PP3, where each of the two or more split data streams has a data rate lower than the predetermined fixed data rate.
[0044] Virtual circuit 110 then forms two or more output data streams to flow at a predetermined fixed data rate, where the two or more output data streams incorporate data from the two or more split data streams. The data from the split data streams incorporated into the two or more output data streams is clocked to selected pulses in the transmit clock signal. Upon completion, virtual circuit 110 forwards the two or more output data streams to two or more selected physical transmit / receive ports PP2 and PP3.
[0045] 8 shows a timing diagram illustrating an example of splitting data in a data stream in accordance with the present invention. As shown in FIG. 8, virtual circuit 110 can split the data in a data stream in two, after it has been assembled into an output data stream as described above, by, for example, forwarding all odd bits to physical port PP2 and all even bits to physical port PP3. The split effectively creates two smaller data streams with lower data rates.
[0046] Alternatively, virtual circuit 110 may divide the data in the data stream by transferring data at a data rate (e.g., 100 Mbps) that matches the predetermined fixed data rate (e.g., 100 Mbps) of physical port PP2 and transferring the remaining data at a data rate (e.g., 28 Mbps) to physical port PP3, as described above. In most cases, the number of physical transmit / receive ports PP is the minimum number required to accommodate the fourth, non-predetermined data rate.
[0047] 9 shows a flowchart illustrating an example method 900 of operating a virtual circuit in accordance with the present invention. As shown in FIG. 9, method 900 begins at 910 by receiving a first transfer request from a processor to transmit a first incoming data stream at a first non-predetermined data rate. The first non-predetermined data rate can be any non-standard data rate, such as 16 Mbps or 128 Mbps.
[0048] The method 900 then proceeds to 912, where it establishes a virtual port for receiving the first incoming data stream. After this, the method 900 proceeds to 914, where it selects one or more physical transmit and receive ports from the plurality of physical transmit and receive ports to transmit data over the network at a predetermined fixed data rate to form one or more selected physical transmit and receive ports, where the one or more selected physical transmit and receive ports have a predetermined aggregate fixed data rate that is higher than the first non-predetermined data rate.
[0049] Following this, the method 900 proceeds to 916 to receive a first incoming data stream from the processor after one or more physical transmit / receive ports have been selected, and then proceeds to 920 to form one or more output data streams to flow at a predetermined fixed data rate. The one or more output data streams incorporate data from the first incoming data stream. The data from the first incoming data stream incorporated into the one or more output data streams is timed to selected pulses in a transmit clock signal that flows at the predetermined fixed data rate. The method then proceeds to 922 to forward the one or more output data streams to the one or more selected physical transmit / receive ports.
[0050] If the first non-predetermined data rate of the first incoming data stream is lower than the predetermined fixed data rate of the physical transmit / receive port, the method 900 selects a physical transmit / receive port from the plurality of physical transmit / receive ports to form a selected physical transmit / receive port, where the selected physical transmit / receive port has a predetermined fixed data rate higher than the first non-predetermined data rate of the first incoming data stream. Furthermore, the method 900 forms an output data stream to flow at the predetermined fixed data rate corresponding to the selected physical transmit / receive port. The output data stream incorporates data from the incoming data stream. The data from the incoming data stream incorporated into the output data stream is timed to correspond to selected pulses in the transmit clock signal.
[0051] If the first non-predetermined data rate of the first incoming data stream is higher than the predetermined fixed data rate of the physical transmit / receive port, the method 900 selects two or more physical transmit / receive ports from the plurality of physical transmit / receive ports, where the two or more selected physical transmit / receive ports have a predetermined total fixed data rate that is higher than the non-predetermined data rate of the incoming data stream.
[0052] Additionally, method 900 splits an incoming data stream received from the virtual port into two or more split data streams corresponding to two or more selected physical transmit / receive ports. Each of the two or more split data streams has a predetermined data rate lower than the predetermined data rate of the incoming data stream. Additionally, method 900 forms two or more output data streams to flow at a predetermined fixed data rate. The two or more output data streams incorporate data from the two or more split data streams. The data from the split data streams incorporated into the two or more output data streams is timed to correspond to selected pulses in the transmit clock signal.
[0053] 9, the method 900 then proceeds to 924 to receive a second transfer request from the processor to transmit the second incoming data stream at a second non-predetermined data rate that is lower than the predetermined fixed data rate of the selected physical transmit / receive port. The method 900 then proceeds to 926 to determine whether the selected physical transmit / receive port has an available data rate that is higher than the second non-predetermined data rate.
[0054] After determining the available data rate, method 900 proceeds to 930 to receive a second incoming data stream from the processor. If the available data rate of the selected physical transmit / receive port is higher than the second, non-predetermined data rate, method 900 proceeds to 932 to generate a reshaped output data stream incorporating data from the first incoming data stream and the second incoming data stream, where the data from the first incoming data stream and the second incoming data stream are timed to the selected transmit clock signal. Following this, method 900 proceeds to 934 to forward the reshaped output data stream to the selected physical transmit / receive port. In one embodiment, method 900 can be stored on a non-transitory computer-readable storage medium having embedded program instructions that, when executed by a processor, cause the processor to perform method 900.
[0055] 10 shows a block diagram illustrating an example of a network system 1000 according to the present invention. The network system 1000 includes a first network device, a second network device, and a network that interconnects the first and second network devices 1010A and 1010B.
[0056] 10, a first network device may be implemented as network device 700, represented as 700A, with 110 represented as 110A, PP1-PP3 represented as PP1A-PP3A, and VP1-VP4 represented as VP1A-VP4A. Similarly, a second network device may be implemented as network device 700, represented as 700B, with 110 represented as 110B, PP1-PP3 represented as PP1B-PP3B, and VP1-VP4 represented as VP1B-VP4B.
[0057] In operation, virtual circuit 110A receives a first transfer request from an application running on the processor to send a first incoming data stream to a remote device at a first non-predetermined data rate over network 112. The first non-predetermined data rate can be any non-standard data rate, such as 16 Mbps and 128 Mbps.
[0058] In response to the first transfer request, the virtual circuit 110A establishes a virtual port VP1 for receiving a first incoming data stream from the processor, and then selects one or more physical transmit / receive ports PPA from the number of physical transmit / receive ports PPA that have a predetermined total fixed data rate higher than the first non-predetermined data rate.
[0059] Following this, virtual circuit 110A returns an acknowledgment of approval of the first transfer request to the processor, then receives the first incoming data stream via virtual port VP1A at a first non-predetermined data rate, and then forms an output data stream at a predetermined fixed data rate that incorporates data from the first incoming data stream.
[0060] Data from the first incoming data stream embedded in the outgoing data stream is timed to selected pulses in a transmit clock signal running at a predetermined fixed data rate. Upon completion, virtual circuit 110A forwards the one or more outgoing data streams to one or more selected physical transmit / receive ports, which then transmit the one or more outgoing data streams over network 112 to second network device 700B.
[0061] Prior to transmitting the output data streams over the network 112, the selected physical transmitting / receiving device PP1A of the first network device 700A transmits a network request to the second network device 700B to receive one or more output data streams from one or more selected physical transmitting / receiving ports at a first non-predetermined data rate.
[0062] The virtual circuit 110B of the second network device 700B receives the first network request and, in response thereto, selects one or more second physical transmit / receive ports from the set of second physical transmit / receive ports corresponding to the one or more selected first physical transmit / receive ports, where the one or more selected second physical transmit / receive ports have a predetermined total fixed data rate that is higher than the first non-predetermined data rate.
[0063] Following this, the virtual circuit 110B returns an acknowledgment of acceptance of the first network request to the first network device 700A, and then receives one or more output data streams at the first non-predetermined data rate via the physical transmit / receive ports PP1B-PP3B.
[0064] Virtual circuit 110B then extracts the data from the first incoming data stream embedded within the one or more output data streams from the one or more output data streams to form one or more reconstructed data streams flowing at a first non-predetermined fixed data rate, where the one or more reconstructed data streams substantially match the one or more first incoming data streams. Virtual circuit 110B then forwards the one or more reconstructed data streams to the second processor.
[0065] If the first non-predetermined data rate of the first incoming data stream is lower than the predetermined fixed data rate of the physical transmit / receive port PPA, the first virtual circuit 110A selects a first physical transmit / receive port PP1A from the set of first physical transmit / receive ports to form a selected first physical transmit / receive port, where the selected first physical transmit / receive port has a predetermined fixed data rate higher than the first non-predetermined data rate of the first incoming data stream. Further, the second virtual circuit 110B selects a second physical transmit / receive port PP1B from the set of second physical transmit / receive ports to form a selected second physical transmit / receive port, where the selected second physical transmit / receive port has a corresponding selected first physical transmit / receive port PP1A and has a predetermined fixed data rate higher than the first non-predetermined data rate of the first incoming data stream.
[0066] If the first non-predetermined data rate of the first incoming data stream is higher than the predetermined fixed data rate of the physical transmit / receive port, the first virtual circuit 110A selects two or more first physical transmit / receive ports, e.g., PP2A and PP3A, from the plurality of first physical transmit / receive ports, where the two or more selected first physical transmit / receive ports have a predetermined total fixed data rate higher than the non-predetermined data rate of the incoming data stream. Further, the second virtual circuit 110B selects two or more second physical transmit / receive ports, e.g., PP2B and PP3B, from the plurality of second physical transmit / receive ports corresponding to the two or more selected first physical transmit / receive ports, where the two or more selected second physical transmit / receive ports have a predetermined total fixed data rate higher than the non-predetermined data rate of the incoming data stream.
[0067] 11 illustrates a block diagram of an example communication network 1100 in accordance with the present invention. The communication network 1100 may include creating or generating one or more virtualized elastic physical ports, such as, but not limited to, for fixed line networks, in accordance with various embodiments of the present disclosure.
[0068] Communications network 1100 may include, but is not limited to, a network device or system 1102 communicatively coupled to a network device or system 1106. In various embodiments, each of network devices 1102 and 1106 may be implemented as, but is not limited to, a computer system, a network switch system, a network router system, a network communication device, and a computing system.
[0069] Each of the network devices 1102 and 1106 may include at least one network card (which may also be referred to as, without limitation, a network interface controller (NIC), a network interface card (NIC), a network adapter, a local area network (LAN) adapter, or a physical network interface) that may include one or more physical network ports.
[0070] Additionally, network devices 1102 and 1106 may each include other functionality, including but not limited to an operating system running on a processor (e.g., 1104 or 1152), one or more applications running on the processor, etc. In various embodiments, communication network 1100 may be part of an autonomous system (AS), which refers to a network or collection of networks managed by an entity or organization, which may be an Internet Service Provider (ISP) or a customer entity that subscribes to the services of an ISP.
[0071] Specifically, network device 1102 may include processor 1104, physical network ports 1 and 2 of network card B, which may be coupled to processor 1104, and memory 1146 (not shown) coupled to processor 1104 and to physical network ports 1 and 2 of network card B. Network card B may be implemented using one or more physical network ports similar to physical network ports 1 and 2.
[0072] In various embodiments, each of physical network ports 1 and 2 may be implemented as a Layer 2 network port, but is not limited to such. Note that network device (or system) 1106 may be implemented similarly to that described above with reference to network device 1102. However, some elements are not shown in FIG. 11 .
[0073] In various embodiments, network device 1106 may include physical network ports 1′ and 2′ of network card A. However, network card A may be implemented using one or more physical network ports similar to physical network ports 1′ and 2′. Further, in various embodiments, network device 1106 may include memory 1148 that may be coupled to network card A and physical network ports 1′ and 2′. Network device 1106 may also include a processor 1152 coupled to memory 1148 and to network card A and physical network ports 1′ and 2′.
[0074] In various embodiments, memory 1146 of network device 1102 stores instructions 1150 that, when executed by processor 1104, cause processor 1104 to perform a method for virtualizing one or more of the physical network ports of network device 1102. Further, in various embodiments, memory 1148 of network device 106 stores instructions 1150 that, when executed by processor 1152, cause processor 1152 to perform a method for virtualizing one or more of the physical network ports of network device 1106.
[0075] In various embodiments, network ports 1 and 1′ are peering ports, while network ports 2 and 2′ are also peering ports, but are not limited to such. Instructions 1150 (e.g., software, firmware, hardware, or any combination thereof), in various embodiments, may be used to create and manage virtualization within communications network 1100. Further, in various embodiments, instructions 1150 may be installed in one or more chips within a field programmable gate array (FPGA) board and may operate at a physical level, but are not limited to such.
[0076] 11, multiple virtual ports are generated or created on one or more of peering physical ports 1 and 1′ and peering physical ports 2 and 2′. The generation of multiple virtual ports can be implemented in a variety of ways according to various embodiments of the present disclosure.
[0077] For example, in various embodiments, one or more of peering physical ports 1 and 1' and peering physical ports 2 and 2' create multiple virtual ports that conform to, but are not limited to, the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard, except for the data transfer rate of the network ports.
[0078] The data transfer rate of each virtual port may be a data transfer rate that is lower than the maximum data transfer rate of the corresponding peering physical port (e.g., 1 and 1'). For example, standard physical port data transfer rates are 10 Mbps (megabits per second), 100 Mbps, 1 Gbps (gigabits per second), 40 Gbps, and 100 Gbps. However, in various embodiments, the traffic rates of the virtual ports may be, but are not limited to, 2 Mbps, 33 Mbps, 560 Mbps, 24 Gbps, and 86 Gbps.
[0079] Additionally, in various embodiments, the data speed / traffic rate of the virtual ports may be defined through IEEE 802.11 protocols and negotiation between peering virtual ports a and a', ports b and b', etc. Additionally, in various embodiments, the data transfer rate of each of multiple virtual ports (e.g., virtual ports a, b, c, and d) may be a fraction of the maximum data transfer rate of the corresponding physical network port (e.g., network card B port 1).
[0080] For example, within communication network 1100, a virtualized port (e.g., virtual port a) may be defined to conform to, but is not limited to, the IEEE 802.11 protocol, and the transfer bit rate of virtual port a may be changed to a negotiated rate (e.g., 11 Gigabits per second (Gbps)). Specifically, in various embodiments, a physical port (e.g., network card B port 1) of network device or system 1102 may be divided into multiple virtual ports (e.g., virtual ports a, b, c, and d), each conforming to, but not limited to, the IEEE 802.11 protocol. For example, if physical port 1 of network card B has a transfer bit rate of 100 Megabits per second (Mbps), then, according to various embodiments, it may be divided into 100 virtual ports (not currently shown), each having a transfer bit rate of 1 Mbps.
[0081] In various embodiments, once these 100 virtual ports are established, various embodiments allow any number of these virtual ports to be aggregated together to create new, higher data transfer rate virtual ports capable of handling a particular negotiated data transfer rate (e.g., 11 Gbps) for a particular connection or customer.
[0082] It should be further noted that in various embodiments, the mutual integration of virtual ports can be achieved across multiple physical ports of a network communication device. Also, in various embodiments, the mutual integration of virtual ports can be achieved across different communication layers. After these types of virtualization are performed, each physical port is replaced with multiple virtualized ports.
[0083] In various embodiments, virtualized ports can be used in, but are not limited to, all traffic management, port-based orchestration, software-defined networking (SDN), software-defined wide area network (SD-WAN), and network virtualization. Additionally, in various embodiments, virtual ports can be utilized to facilitate quality of service (QoS) control and build end-to-end traffic provisioning that improves network efficiency.
[0084] As noted above, the creation of multiple virtual ports can be implemented in a variety of ways according to various embodiments of the present disclosure. For example, in various embodiments, multiple virtual ports (e.g., virtual ports e, f, and g) can be created (or generated) on peering physical ports (2 and 2′) by maintaining a MAC (Media Access Control) forwarding table (e.g., which may be used in a Layer 2 switch system) for controlling data package forwarding from physical ports to virtual ports.
[0085] Additionally, multiple virtual ports (e.g., virtual ports e, f, and g) can be generated (or created) at the peering physical ports (2 and 2') by utilizing time slots to control the data transfer rate between the physical port and the virtual port. In various embodiments, the physical port is "split" into multiple virtual ports. For example, the base clock cycle can then be multiplied by 5 milliseconds (ms), meaning that one virtual port is 1 / 5 the maximum data rate of the peering physical port.
[0086] In various embodiments, time division multiple access (TDMA) can be used to create (or generate) virtualized ports, implementing virtual ports with data rates that are 1 / x the maximum data rate of the peering physical port. Furthermore, each virtual port is made to function or operate like a physical port. TDMA can be used to create or generate multiple virtual ports (e.g., virtual ports a, b, c, and d) within a physical port (e.g., network card B port 1), allowing multiple virtual ports to be managed and combined to form flexible virtual ports.
[0087] Additionally, in various embodiments, flexible virtual ports can be created across virtual ports (e.g., virtual ports d and e) that span or include multiple physical ports (e.g., network card B ports 1 and 2). Based on this functionality of various embodiments, virtual fibers / lines can be created, enabling virtualization across telecommunications networks.
[0088] 11 points out that in various embodiments, virtual port A is an operating system (OS) and application level virtual network port, which can directly use virtual ports a, a′ via OS interface 1108. Furthermore, in various embodiments, virtual port B is also an OS and application level virtual network port, which can directly use consolidated (or aggregated) virtual ports b, b′ and c, c′ via OS interface 1108.
[0089] When OS 1104 sees virtual port B, it sees only a single port with the combined data transfer rate of virtual ports b, b' and c, c', not two virtual ports b, b' and c, c'. Also, in various embodiments, virtual port C is also an OS and application level virtual network port, which can directly use the aggregated virtual ports d, d', e, e', and f, f' via OS interface 1108.
[0090] Virtual port C is created by aggregating (or aggregating) multiple virtual ports (e.g., d, d' and e, e' and f, f') across two physical ports (e.g., network card B ports 1 and 2). Thus, when OS 104 looks at virtual port C, it only sees a single port with the combined data transfer rate of virtual ports d, d', e, e', and f, f', and not the three virtual ports b, b' and c, c'. Note that in various embodiments, virtual ports B and C are each the result of layer 1 aggregation 1110.
[0091] In various embodiments, virtual port D is also an OS and application level virtual network port, which can directly use virtual ports b, b' and c, c' and d, d' and e, e' and f, f' that are aggregated via OS interface 1114. Virtual port D is created by aggregating multiple virtual ports (e.g., b, b' and c, c' and d, d' and e, e' and f, f') across two physical ports (e.g., network card B ports 1 and 2).
[0092] Furthermore, virtual port D is the result of layer 2 aggregation 1112 of virtual ports B and C. Thus, when OS 1104 looks at virtual port D, it only sees a single port with the combined data transfer rate of virtual ports b, b', c, c', d, d', e, e', and f, f', and not five virtual ports b, b', c, c', d, d', e, e', and f, f'.
[0093] In various embodiments, there is no limit to the amount of aggregation layers (e.g., Layer 3, Layer 4, etc.) that can be implemented within communication network 1100. Furthermore, it should be noted that in various embodiments, the data transfer rates (e.g., which may be different data transfer rates) of virtual ports (e.g., a, a' and b, b' and c, c' and d, d' and e, e' and f, f') can be combined in any manner to create or generate and define virtual ports of any data rate. In various embodiments, the virtual aggregate ports can be dynamic virtualized across physical ports. Operating system 1104 can obtain information regarding the number of available virtual ports, along with their corresponding data transfer rates, from instructions 1150.
[0094] As described herein in accordance with various embodiments, there are benefits associated with the functionality of communication network 1100. For example, virtualized network ports (e.g., which function as physical ports) can provide flexible network orchestration. Furthermore, each physical network port can support multiple virtualized ports that function like physical ports and can distribute different applications and traffic to different virtual ports. Furthermore, different data rate rates can be defined or configured to maintain quality of service (QoS) and control data traffic. Also, in various embodiments, more functionality can be added to different virtual ports for specialized management.
[0095] Figure 12 shows a flowchart illustrating an example method 1200 for virtualizing one or more physical network ports (or interfaces) in a communication network in accordance with the present invention. Although Figure 12 discloses specific operations, such operations are examples. Method 1200 may not include all of the operations shown in Figure 12. Additionally, method 1200 may include various other operations and / or variations of the illustrated operations.
[0096] Similarly, the order of the operations of method 1200 may be changed. Not all operations of method 1200 may be performed. In various embodiments, one or more of the operations of method 1200 may be controlled or managed by, but are not limited to, software, firmware, hardware, or any combination thereof.
[0097] Method 1200 may include the processing of various embodiments of the present disclosure that may be controlled or managed by processor(s) and electrical components under the control of computer- or computing device-readable and executable instructions or code. The computer- or computing device-readable and executable instructions (or code) may reside, for example, in a data storage facility such as volatile memory available to the computer or computing device, non-volatile memory available to the computer or computing device, and / or mass data storage available to the computer or computing device. However, the computer- or computing device-readable and executable instructions (or code) may reside in any type of computer- or computing device-readable medium or memory (e.g., such as found in computing system 1300 of FIG. 13).
[0098] At 1202, a plurality of network physical ports are implemented to be peering physical ports. Operation 1202 may be implemented in a wide variety of ways. For example, in various embodiments, operation 1202 may be implemented in any manner similar to that described and / or illustrated by this disclosure, but is not limited to such.
[0099] 12, at 1204, a plurality of peering virtual ports may be created at each of a plurality of peering physical ports and may be implemented at each peering physical port. Operation 1204 may be implemented in a wide variety of ways. For example, in various embodiments, operation 1204 may be implemented in any manner similar to that described and / or illustrated by this disclosure, but is not limited to such.
[0100] At 1206, a determination may be made as to whether the application is requesting the use of a peering physical port. If so, method 1200 may proceed to 1208. However, if it is determined at 1206 that the application is not requesting the use of a peering physical port, method 1200 may proceed to the beginning of 1206. This determination may be made in a variety of ways. For example, in various embodiments, this determination may be made in any manner similar to those described and / or illustrated by this disclosure, but is not limited to such.
[0101] At 1208 of Figure 12, during the negotiation of the peering physical port, a determination is made regarding the data transfer rate that the requesting application desires to operate at in order to function properly. This determination may be implemented in a variety of ways. For example, in various embodiments, this determination may be implemented in any manner similar to those described and / or illustrated by this disclosure, but is not limited to such.
[0102] At 1210, a determination is made as to whether multiple virtual ports should be aggregated to accommodate the determined data transfer rate of the requesting application. If so, method 1200 may proceed to 1212. However, if it is determined at 1210 that multiple virtual ports should not be aggregated to accommodate the determined data transfer rate of the requesting application (e.g., a single virtual port can accommodate the determined data transfer rate of the requesting application), method 1200 may proceed to operation 1214. This determination may be made in a wide variety of ways. For example, in various embodiments, this determination may be made in any manner similar to those described and / or illustrated by the present disclosure, but is not limited to such.
[0103] At 1212 of Figure 12, multiple virtual ports are aggregated to accommodate the determined data transfer rate of the requesting application. This aggregation can be implemented in a variety of ways. For example, in various embodiments, this aggregation can be implemented in any manner similar to those described and / or illustrated by this disclosure, but is not limited to such.
[0104] At 1214, a virtual port (e.g., aggregated or single) can be assigned to the requesting application, and the operating system interface is notified of the virtual port assigned to the requesting application. This assignment can be implemented in a variety of ways. For example, in various embodiments, this assignment can be implemented in any manner similar to those described and / or illustrated by this disclosure, but is not limited to such.
[0105] 12, at 1216, a determination is made as to whether the application has terminated using the allocated virtual port. If so, method 1200 may proceed to the beginning of operation 1206. However, if it is determined at 1216 that the application has not terminated using the allocated virtual port, method 1200 may proceed to the beginning of operation 1216. It should be noted that this determination may be made in a variety of ways. For example, in various embodiments, this determination may be made in any manner similar to those described and / or illustrated by the present disclosure, but is not limited to such.
[0106] 13 illustrates a block diagram of an example computing system 1300 in accordance with the present invention. In its most basic configuration, system 1300 includes at least one processing unit (or processor) 1302 for performing method 900 and memory 1304. This most basic configuration is illustrated in FIG. 13 by dashed line 1306. System 1300 may be implemented in a wide variety of ways in accordance with various embodiments of the present disclosure. For example, system 1300 may be implemented as, but is not limited to, a network switch system, a network router system, a network communication device, a network appliance, a computer system, a laptop computer system, a smartphone, a desktop computer system, and the like.
[0107] Reference will now be made in detail to various embodiments of the present disclosure, examples of which are illustrated in the accompanying drawings. While described in connection with various embodiments, it will be understood that these various embodiments are not intended to limit the disclosure. On the contrary, the present disclosure is intended to cover alternatives, modifications, and equivalents, which may be included within the scope of the present disclosure as interpreted according to the appended claims. Moreover, in the foregoing detailed description of various embodiments of the present disclosure, numerous specific details are set forth to provide a thorough understanding of the disclosure. However, those skilled in the art will recognize that the present disclosure may be practiced without these specific details, or with equivalents thereof. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the various embodiments of the present disclosure.
[0108] It should be noted that, for clarity, methods may be depicted herein as a sequence of numbered acts, but the numbering does not necessarily indicate the order of the acts. It should be understood that some of the acts may be skipped, performed in parallel, or performed without the requirement of maintaining a strict order of sequence. The drawings illustrating various embodiments according to the present disclosure are semi-schematic and not to scale, and in particular, some dimensions may be exaggerated in the drawing figures for clarity. Similarly, for ease of illustration, the views in the drawings generally have a similar orientation, although this depiction in the figures is in most cases arbitrary. In general, various embodiments according to the present disclosure may be operated in any orientation.
[0109] Some portions of the detailed descriptions are presented in terms of procedures, logic blocks, processes, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are used by those skilled in the data processing arts to effectively convey the substance of their work to others skilled in the art. In this disclosure, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of operations or instructions leading to a desired result. These operations involve physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computing system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as transactions, bits, values, elements, symbols, characters, samples, pixels, or the like.
[0110] It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise noted, as will be apparent from the discussion that follows, throughout this disclosure, discussions using terms such as, for example, "generate," "determine," "allocate," "aggregate," "utilize," "virtualize," "process," "access," "execute," or "store" will be understood to refer to the actions and processing of a computer system or similar electronic computing device or processor. A computing system or similar electronic computing device or processor manipulates and transforms data represented as physical (electronic) quantities in computer system memory, registers, other such information storage, and / or other computer-readable medium into other data that are similarly represented as physical quantities in the computer system memory or registers, or other such information storage, transmission, or display device.
[0111] The technical solutions in the embodiments of the present application have been clearly and completely described in the preceding sections with reference to the drawings of the embodiments of the present application. It should be noted that the terms "first," "second," etc. in the description and claims of the present invention and the above drawings are used to distinguish similar objects, and are not necessarily used to describe a specific sequence or order. It should be understood that these numbers may be exchanged appropriately so that the embodiments of the present invention described herein can be implemented in an order other than that shown or described herein.
[0112] The functions described in the methods of the present embodiments may be implemented in the form of software functional units and stored in a computing device-readable storage medium when sold or used as a standalone product. Based on this understanding, a part of the embodiments of the present application that contribute to the prior art or a part of the technical solutions may be embodied in the form of a software product stored in a storage medium containing a plurality of instructions for causing a computing device (which may be a personal computer, a server, a mobile computing device, a network device, etc.) to execute all or some of the steps of the methods described in various embodiments of the present application. The above-mentioned storage medium includes a USB drive, a portable hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, an optical disk, etc., which can store program code.
[0113] Various embodiments in the specification of the present application are described progressively, and each embodiment focuses on the differences from other embodiments, and the same or similar parts between various embodiments may be left to separate cases. The described embodiments are only a part of the embodiments, not all of the embodiments of the present application. All other embodiments obtained by those skilled in the art based on the embodiments of the present application without departing from the technology of the present invention are within the scope of the present application.
[0114] The above description of the disclosed embodiments will enable one skilled in the art to make or use the present application. Various modifications to these embodiments will be apparent to those skilled in the art, and the general principles defined herein may be implemented in other embodiments without departing from the spirit or scope of the present application. Thus, the present application is to be construed as having the widest scope consistent with the principles and novel features disclosed herein, rather than as limited to the embodiments shown herein. [Item of invention] [Item 1] 1. A network device, comprising: a plurality of physical transmit and receive ports for transferring data over the network at a predetermined fixed data rate; a virtual circuit coupled to the plurality of physical transmit and receive ports; wherein the virtual circuit comprises: receiving a first transfer request from the processor to transmit a first incoming data stream at a first non-predetermined data rate; establishing a first virtual port for receiving the first incoming data stream; selecting one or more physical transmit / receive ports from the plurality of physical transmit / receive ports in response to the first transfer request to form one or more selected physical transmit / receive ports, wherein the one or more selected physical transmit / receive ports have a predetermined total fixed data rate that is higher than the first non-predetermined data rate; after the one or more physical transmit / receive ports are selected, receiving the first incoming data stream from the processor via the virtual port; forming one or more output data streams to flow at said predetermined fixed data rate, said one or more output data streams incorporating said data from said first incoming data stream, said data from said first incoming data stream incorporated within said one or more output data streams being timed to selected pulses in a transmit clock signal that flows at said predetermined fixed data rate; forwarding the one or more output data streams to the one or more selected physical transmit / receive ports; Network devices. [Item 2] if the first non-predetermined data rate of the first incoming data stream is lower than the predetermined fixed data rate of a physical transmit / receive port, the virtual circuit selects a physical transmit / receive port from the plurality of physical transmit / receive ports to form the selected physical transmit / receive port having a predetermined fixed data rate higher than the first non-predetermined data rate of the first incoming data stream; Item 1. The network device according to item 1. [Item 3] further forming an output data stream so that said virtual circuit flows at said predetermined fixed data rate, said output data stream incorporating said data from said incoming data stream, said data from said incoming data stream incorporated into said output data stream being timed to selected pulses in said transmit clock signal. Item 2. The network device according to item 2. [Item 4] The virtual circuit further receiving a second transfer request from the processor to transmit a second incoming data stream at a second non-predetermined data rate lower than the predetermined fixed data rate of the selected physical transmit / receive port; establishing a second virtual port for receiving the second incoming data stream; determining whether the selected physical transmit / receive port has an available data rate higher than the second non-predetermined data rate; Item 3. The network device according to item 3. [Item 5] the virtual circuit further comprising: receiving the second incoming data stream at the second non-predetermined data rate from the processor after determining the available data rate; if the available data rate of the selected physical transmit / receive port is higher than the second non-predetermined data rate, generating a modified output data stream incorporating the data from the first incoming data stream and the second incoming data stream, wherein the data from the first incoming data stream and the second incoming data stream are timed to a selected transmit clock signal; forwarding the modified output data stream to the selected physical transmit / receive port; Item 4. The network device according to item 4. [Item 6] the predetermined fixed data rate has a data rate of x bits / second, the virtual circuit subdivides the predetermined fixed data rate of x bits / second of a physical transmit / receive port into fractions, allocates the fractions to the first and second input data streams having non-predetermined data rates lower than the predetermined fixed data rate of the physical transmit / receive port, and combines the fractions such that the total bits / second of the combined data streams is less than or equal to the predetermined fixed data rate of x bits / second of the physical transmit / receive port. Item 5. The network device according to item 5. [Item 7] determining whether the selected physical transmit / receive port has an available data rate higher than the second non-predetermined data rate includes: subtracting the first non-predetermined data rate from the predetermined fixed data rate of the first incoming data stream to obtain the available data rate; and comparing the available data rate with the second non-predetermined data rate. Item 5. The network device according to item 5. [Item 8] If the non-predetermined data rate of the incoming data stream is higher than the predetermined fixed data rate of the physical transmit / receive port, the virtual circuit: establishing a virtual port for receiving the incoming data stream from the processor; selecting two or more physical transmit / receive ports from the plurality of physical transmit / receive ports, wherein the two or more selected physical transmit / receive ports have a predetermined total fixed data rate that is higher than the non-predetermined data rate of the incoming data stream; Item 1. The network device according to item 1. [Item 9] the virtual circuit further splits the incoming data stream received from the virtual port into two or more split data streams corresponding to the two or more selected physical transmit / receive ports, each of the two or more split data streams having a non-predetermined data rate lower than the predetermined fixed data rate; Item 9. The network device according to item 8. [Item 10] the virtual circuit further forms two or more output data streams to flow at the predetermined fixed data rate, the two or more output data streams incorporating the data from the two or more divided data streams, and the data from the divided data streams incorporated into the two or more output data streams is timed to selected pulses in the transmit clock signal. Item 10. The network device of item 9. [Item 11] 1. A method of operating a network device, comprising: receiving a first transfer request from the processor to transmit a first incoming data stream at a first non-predetermined data rate; establishing a virtual port for receiving the first incoming data stream; selecting one or more physical transmit / receive ports from the plurality of physical transmit / receive ports to transmit data over the network at a predetermined fixed data rate to form one or more selected physical transmit / receive ports, the one or more selected physical transmit / receive ports having a predetermined aggregate fixed data rate higher than the first non-predetermined data rate; after the one or more physical transmit / receive ports are selected, receiving the first incoming data stream from the processor via the virtual port; forming one or more output data streams to flow at the predetermined fixed data rate, the one or more output data streams incorporating the data from the first incoming data stream, the data from the first incoming data stream incorporated into the one or more output data streams being timed to selected pulses in a transmit clock signal that flows at the predetermined fixed data rate; forwarding the one or more output data streams to the one or more selected physical transmit / receive ports; A method comprising: [Item 12] If the first non-predetermined data rate of the first incoming data stream is lower than the predetermined fixed data rate of a physical transmit / receive port, selecting a physical transmit / receive port from the plurality of physical transmit / receive ports to form a selected physical transmit / receive port, the selected physical transmit / receive port having a predetermined fixed data rate higher than the first non-predetermined data rate of the first incoming data stream; establishing a virtual port for receiving the incoming data stream; forming an output data stream to flow at the predetermined fixed data rate corresponding to the selected physical transmit / receive port, the output data stream incorporating the data from the incoming data stream, the data from the incoming data stream incorporated into the output data stream being timed to selected pulses in the transmit clock signal; further comprising: Item 12. The method according to item 11. [Item 13] receiving a second request from the processor to transmit a second incoming data stream at a second non-predetermined data rate lower than the predetermined fixed data rate of the selected physical transmit / receive port; determining whether the selected physical transmit / receive port has an available data rate higher than the second non-predetermined data rate; receiving the second incoming data stream from the processor after determining the available data rate; if the available data rate of the selected physical transmit / receive port is higher than the second non-predetermined data rate, generating a reshaped output data stream to incorporate the data from the first incoming data stream and the second incoming data stream, wherein the data from the first incoming data stream and the second incoming data stream are timed to a selected transmit clock signal; forwarding the reconstructed output data stream to the selected physical transmit / receive port; further comprising: Item 13. The method according to item 12. [Item 14] If the first non-predetermined data rate of the first incoming data stream is higher than the predetermined fixed data rate of a physical transmit / receive port, selecting two or more physical transmit / receive ports from the plurality of physical transmit / receive ports, the two or more selected physical transmit / receive ports having a predetermined total fixed data rate that is higher than the non-predetermined data rate of the incoming data stream; establishing a virtual port for receiving the incoming data stream; splitting the incoming data stream received from the virtual port into two or more split data streams corresponding to the two or more selected physical transmit / receive ports, each of the two or more split data streams having a non-predetermined data rate lower than the non-predetermined data rate of the incoming data stream; further comprising: Item 12. The method according to item 11. [Item 15] forming two or more output data streams to flow at the predetermined fixed data rate, the two or more output data streams incorporating the data from the two or more split data streams, and the data from the split data streams incorporated into the two or more output data streams being timed to selected pulses in the transmit clock signal. Item 15. The method according to item 14. [Item 16] A network system, Network and a first network device coupled to the network, a plurality of first physical transmit / receive ports for transferring data over the network at a predetermined fixed data rate; a first virtual circuit coupled to the plurality of first physical transmit / receive ports; and the first virtual circuit comprises: receiving a first transfer request from the processor to transmit a first incoming data stream at a first non-predetermined data rate; establishing a first virtual port for receiving the first incoming data stream; selecting one or more first physical transceiver ports from the plurality of first physical transceiver ports to form one or more selected first physical transceiver ports, wherein the one or more selected first physical transceiver ports have a predetermined total fixed data rate that is higher than the first non-predetermined data rate; after the one or more first physical transmit / receive ports are selected, receiving the first incoming data stream from the processor via the first virtual port; forming one or more output data streams to flow at said predetermined fixed data rate, said one or more output data streams incorporating said data from said first incoming data stream, said data from said first incoming data stream incorporated within said one or more output data streams being timed to selected pulses in a transmit clock signal that flows at said predetermined fixed data rate; forwarding the one or more output data streams to the one or more selected physical transmit / receive ports; a first network device; a second network device coupled to the network, a plurality of second physical transmit / receive ports for transferring data over the network; a second virtual circuit coupled to the plurality of second physical transmit / receive ports; and the second virtual circuit comprises: receiving a first network request from the first virtual circuit to receive the one or more output data streams at the first non-predetermined data rate from the one or more selected physical transmit / receive ports; In response to the request from the first virtual circuit, select one or more second physical transmit / receive ports from the plurality of second physical transmit / receive ports to form one or more selected second physical transmit / receive ports corresponding to the one or more selected first physical transmit / receive ports, wherein the one or more selected second physical transmit / receive ports have a predetermined total fixed data rate that is higher than the first non-predetermined data rate; receiving the one or more outgoing data streams from the first network device using the selected one or more second physical transmit / receive ports; a second network device; A network system comprising: [Item 17] the second virtual circuit: extracting from the one or more output data streams the data from the first incoming data stream embedded within the one or more output data streams to form one or more reconstructed data streams flowing at the first non-predetermined fixed data rate, the one or more reconstructed data streams substantially matching the one or more first incoming data streams; forwarding the one or more reconstructed data streams to a second processor; Item 17. The network system according to item 16. [Item 18] If the first non-predetermined data rate of the first incoming data stream is lower than the predetermined fixed data rate of a physical transmit / receive port, the first virtual circuit selects a first physical transmit / receive port from the plurality of first physical transmit / receive ports to form a selected first physical transmit / receive port, wherein the selected first physical transmit / receive port has a predetermined fixed data rate that is higher than the first non-predetermined data rate of the first incoming data stream; the second virtual circuit selects a second physical transmit / receive port from the plurality of second physical transmit / receive ports to form a selected second physical transmit / receive port, wherein the selected second physical transmit / receive port has a corresponding selected first physical transmit / receive port and has a predetermined fixed data rate that is higher than the first non-predetermined data rate of the first incoming data stream; Item 18. The network system according to item 17. [Item 19] If the first non-predetermined data rate of the first incoming data stream is higher than the predetermined fixed data rate of a physical transmit / receive port, the first virtual circuit selects two or more first physical transmit / receive ports from the plurality of first physical transmit / receive ports, where the two or more selected first physical transmit / receive ports have a predetermined total fixed data rate higher than the non-predetermined data rate of the incoming data stream; and the second virtual circuit selects two or more second physical transmit / receive ports from the plurality of second physical transmit / receive ports corresponding to the two or more selected first physical transmit / receive ports, where the two or more selected second physical transmit / receive ports have a predetermined total fixed data rate higher than the non-predetermined data rate of the incoming data stream. Item 18. The network system according to item 17. [Item 20] A non-transitory computer-readable storage medium having embedded thereon program instructions that, when executed by a processor, cause the processor to perform a method for operating a network device, the method comprising: receiving a first transfer request from the processor to transmit a first incoming data stream at a first non-predetermined data rate; establishing a virtual port for receiving the first incoming data stream; selecting one or more physical transmit / receive ports from a plurality of physical transmit / receive ports to transmit data over a network at a predetermined fixed data rate to form one or more selected physical transmit / receive ports, the one or more selected physical transmit / receive ports having a predetermined aggregate fixed data rate higher than the first non-predetermined data rate; receiving the first incoming data stream from the processor via the virtual port after the one or more physical transmit / receive ports are selected; forming one or more output data streams to flow at the predetermined fixed data rate, the one or more output data streams incorporating the data from the first incoming data stream, the data from the first incoming data stream incorporated into the one or more output data streams being timed to selected pulses in a transmit clock signal that flows at the predetermined fixed data rate; forwarding the one or more output data streams to the one or more selected physical transmit / receive ports; 1. A non-transitory computer-readable storage medium comprising:
Claims
[Claim 1] A network device (100), a plurality of physical transmit / receive ports (PP) for transferring data over a network (112) at a predetermined fixed data rate; a virtual circuit (110) coupled to said plurality of physical transmit / receive ports; Equipped with The virtual circuit is receiving a first transfer request from the processor to transmit a first incoming data stream at a first non-predetermined data rate; Establish a first virtual port (VP1) for receiving the first incoming data stream (paragraph [0014]), the first virtual port including a FIFO buffer that operates as a token bucket that is periodically filled with tokens and emptied when full (paragraph [0037]); Selecting one or more physical transmitting / receiving ports from the plurality of physical transmitting / receiving ports, the one or more physical transmitting / receiving ports having a predetermined total fixed data rate higher than the first non-predetermined data rate, to form one or more selected physical transmitting / receiving ports (paragraph [0014]); When the token bucket of the first virtual port becomes full, one or more output data streams incorporating data from the tokens are formed to transfer all tokens from the token bucket to the one or more selected physical transmit / receive ports at the predetermined fixed data rate (paragraph [0037]); forwarding the one or more output data streams to the one or more selected physical transmit / receive ports (paragraphs [0017], [0038], and FIG. 6B); Network devices.