A method, apparatus, system, and relay device for flow control in a network.

By introducing a state machine to control the data flow in the relay device, the problem of data loss caused by path blocking and rate reduction in the relay device buffer is solved, achieving lossless data transmission and reducing equipment overhead.

CN115706674BActive Publication Date: 2026-03-06MELLANOX TECHNOLOGIES LTD(IL)
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2022-07-21
Publication Date
2026-03-06

AI Technical Summary

Technical Problem

In packet-switched networks, data buffers in relay devices are prone to data loss due to path congestion and reduced data rates. Existing technologies struggle to achieve lossless data transmission and incur high costs.

Method used

By introducing a state machine into the relay device, the start and stop of the data flow can be controlled based on the location of the empty data byte and the state machine state, thereby achieving lossless data transmission and reducing buffer size and overhead.

Benefits of technology

It effectively prevents data loss, reduces buffer capacity requirements, lowers equipment costs and complexity, and enables lossless data transmission between host devices and peer devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115706674B_ABST
    Figure CN115706674B_ABST
Patent Text Reader

Abstract

This disclosure relates to Ethernet pause aggregation in a relay device. A relay device is provided that can identify the number of empty data byte positions in the relay device's data buffer. The relay device can receive an indicator associated with transmitted data packets. The relay device can pause or enable lossless data streaming between the relay device, a host device, and a peer device based on the number of empty data byte positions, the indicator, or both. The relay device may include a first data interface coupled to a peer device, a second data interface coupled to a host device, a data buffer configured to store data packets received from the host device, and a state machine enabling lossless data transmission between the host device and the peer device. The state machine can send a pause frame to the host device based on the data buffer utilization reaching data storage capacity.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The following pertains to media access control, including Ethernet pause aggregation. Background Technology

[0002] In some packet-switched networks, relay devices (e.g., Media Access Control Security (MACsec) devices, Internet Protocol Security (IPsec) devices, tunneling devices) can be configured to relay data packets between host devices and peers. Some relay devices may be equipped with data buffers to store incoming data packets received from host devices until the data packets have been successfully encrypted and relayed to the peer device. Summary of the Invention

[0003] The described technology relates to improved methods, systems, devices, and apparatuses for supporting Ethernet pause aggregation in relay devices. Typically, the described technology provides media access control.

[0004] A flow control method in a network is provided, comprising: identifying the number of empty data byte positions in the device's data buffer; receiving an indicator associated with a transmitted data packet; identifying the state of a state machine included in the device, wherein the state of the state machine may be based on the indicator; and suspending a lossless data stream between the device and at least two other devices. Suspending the lossless data stream may be based on the number of empty data byte positions being below a threshold, the state of the state machine, or both.

[0005] An apparatus is provided, comprising: a processor; a memory in electronic communication with the processor; and instructions stored in the memory, the instructions being executable by the processor to: identify the number of empty data byte positions in a data buffer of the apparatus; receive an indicator associated with a transmitted data packet; identify a state of a state machine included in the apparatus, the state of the state machine being based on the indicator; and suspend a lossless data stream between the apparatus and at least two other apparatuses. Suspending the lossless data stream may be based on the number of empty data byte positions being below a threshold, the state of the state machine, or both.

[0006] A system is provided, comprising: a data buffer; a controller for identifying the number of empty data byte positions in the data buffer; a transceiver configured to receive an indicator associated with a transmitted data packet; and a state machine configured to transition between a set of states based on the indicator. The controller is also configured to pause a lossless data stream between the data buffer and at least two devices, wherein pausing the lossless data stream can be based on the number of empty data byte positions falling below a threshold, the state machine, or both.

[0007] Examples may include one of the following features or any combination thereof.

[0008] Some examples of the methods, apparatuses, and systems described herein may include enabling lossless data streaming between a device and at least two other devices, wherein enabling lossless data streaming may be based on the number of bytes of empty data exceeding a threshold, the state of a state machine, or both.

[0009] In some examples of the methods, apparatuses, and systems described herein, pausing a lossless data stream based on the number of empty data byte positions may be independent of the state of the state machine; enabling a lossless data stream based on the number of empty data byte positions may be independent of the state of the state machine; or both.

[0010] In some examples of the methods, apparatuses, and systems described herein, pausing a lossless data stream can be based on a first state associated with a state machine; and enabling a lossless data stream can be based on a second state associated with a state machine.

[0011] Some examples of the methods, apparatus, and systems described herein may include sending a pause request based on the number of empty data byte positions falling below a threshold, the state of a state machine, or both. In some examples, the pause request, indicator, or both may include a control frame.

[0012] Some examples of the methods, apparatus, and systems described herein may include sending an enable request based on the number of empty data byte positions exceeding a threshold, the state of a state machine, or both. In some examples, the enable request, indicator, or both may include a control frame.

[0013] Some examples of the methods, apparatuses, and systems described herein may include receiving a set of data packets; and storing a set of data packets into a data buffer, wherein the number of locations of empty data bytes can be identified based on the storage of a set of data packets.

[0014] In some examples of the methods, apparatus, and systems described herein, receiving the set of data packets, storing the set of data packets, or both may include avoiding discarding one or more data packets from the set of data packets.

[0015] Some examples of the methods, apparatuses, and systems described herein may include transmitting at least a subset of a set of data packets over a communication medium based on the states of a state machine, wherein the number of locations of empty data bytes can be identified based on transmitting at least a subset of the set of data packets.

[0016] In some examples of the methods, apparatuses, and systems described herein, the communication medium may include a physical medium that electrically couples the device to a first device among at least two other devices.

[0017] Some examples of the methods, apparatuses, and systems described herein may include determining the size of a data buffer based on one or more of the following: the interface bandwidth associated with the communication medium; the distance between the device and the first device; and the transmission speed associated with the communication medium.

[0018] In some examples of the methods, apparatuses, and systems described herein, the apparatus may include relay devices.

[0019] In some examples of the methods, apparatuses, and systems described herein, at least two other devices may include a host device and a peer device.

[0020] In some examples of the methods, apparatuses, and systems described herein, the network may include a local area network (LAN).

[0021] A relay device is provided, comprising: a first data interface coupled to a peer device; a second data interface coupled to a host device; a data buffer configured to store data packets received from the host device before transmitting data packets to the peer device; and a state machine enabling lossless data transmission between the host device and the peer device. The relay device can send a pause frame to the host device based on the data buffer utilization reaching the data storage capacity.

[0022] Examples may include one of the following features or any combination thereof.

[0023] In some examples of the methods, apparatuses, and systems described herein, the state machine may be further configured to send a pause frame to the host device in response to receiving an additional pause frame from the peer device.

[0024] In some examples of the methods, apparatuses, and systems described herein, the data buffer may include a first-in, first-out (FIFO) data buffer.

[0025] In some examples of the methods, apparatuses, and systems described herein, data packets can be received at speeds exceeding 400 G / sec, and the data buffer can include a capacity of no more than 50 kb.

[0026] In some examples of the methods, apparatus, and systems described herein, the data buffer may include a capacity of no more than 25 kb.

[0027] In some examples of the methods, apparatus, and systems described herein, a data cable connects a first data interface to a peer device, and line traces connect a second data interface to a host device.

[0028] In some examples of the methods, apparatus, and systems described herein, the data cable may be at least 5m long.

[0029] In some examples of the methods, apparatus, and systems described herein, the first data interface may include at least one of a PCI Express (PCIe) interface and an Ethernet interface.

[0030] In some examples of the methods, apparatuses, and systems described herein, the state machine may be further configured to send a start transmission command to the host device in response to a drop in data buffer utilization below a predetermined threshold. Attached Figure Description

[0031] Figure 1 An example of a system supporting Ethernet pause aggregation for relay devices is shown in accordance with aspects of this disclosure.

[0032] Figure 2 An example of a system supporting Ethernet pause aggregation for relay devices is shown in accordance with aspects of this disclosure.

[0033] Figure 3 An example of a relay device supporting Ethernet pause aggregation according to aspects of this disclosure is shown.

[0034] Figure 4 An example of the process flow for supporting Ethernet pause aggregation of relay devices according to aspects of this disclosure is shown. Detailed Implementation

[0035] In some networks, a Media Access Control Security (MACsec) engine (also referred to herein as a relay component) can be configured to relay data packets between host devices and peer devices. A MACsec engine can be implemented in, for example, a relay device electrically coupled between host devices and peer devices. In some examples, a MACsec engine can move or transmit data from ingress to egress. In some cases, a MACsec engine can change the packet size of data packets before relaying or transmitting them (e.g., due to encryption processes performed on the data packets, signal processing, etc.). For example, the input bandwidth of a MACsec engine may differ from its output bandwidth. Some other examples of relay devices include Internet Protocol Security (IPsec) devices or tunneling devices.

[0036] Some relay devices may be equipped with a data buffer to store incoming data packets received from a host device until the data packets have been successfully encrypted and relayed to the peer device. In some cases, relay devices may be equipped with a data buffer to store incoming data packets received from a host device (e.g., via the host side of the relay device) until the data packets have been successfully encrypted and relayed to the peer device (e.g., via the line side of the relay device). For lossless operation, relay devices may be equipped with a data buffer (also referred to herein as a hold buffer or receive buffer) and a state machine for stopping the data packet flow on both the host and line sides of the relay device. In some cases, the host side of the relay device may be electrically coupled to the host device via a relatively short communication link, and the line side of the relay device may be electrically coupled to the peer device via a relatively long communication link.

[0037] In some cases, to ensure lossless operation between the host device (also referred to herein as the transmitter) and the peer device (also referred to herein as the receiver), packet buffers can be incorporated into network devices (e.g., host device, relay device, peer device). In some examples, the size of the packet buffer at the relay device can be equal to the round-trip time (RTT) between the relay device and the peer device. However, path congestion and other issues on the communication medium (e.g., the line) between the MACsec engine and the peer device can lead to increased lost transmissions and retransmissions, thus increasing the amount of data to be stored in the relay device's buffer. In some cases, a reduced data rate / transmission speed associated with the communication medium compared to the input bandwidth (e.g., on the host side) can result in a reduction in the output bandwidth at the MACsec engine (e.g., on the line side), which can further increase the amount of data to be stored in the data buffer. In some other cases, the rate at which the MACsec engine can handle data traffic and relay it to the peer device can be based on the transmission speed associated with the communication medium between the MACsec engine and the peer device, and this rate may be slower than the rate at which data traffic is transmitted from the host device to the MACsec engine.

[0038] In some packet-switched networks, when a relay device is added to a channel (e.g., from a host device to a peer via the relay device) and lossless operation is required, certain conditions between the relay device and the peer (e.g., path congestion, bottlenecks, reduced data rates) may prevent the relay device from acting as a line. That is, for example, some implementations may scale the relay device's data buffer based on the RTT between the relay device and the peer to ensure lossless operation between the devices. Therefore, in some cases, some relay devices may be equipped with relatively large data buffers to store incoming data packets to reduce the likelihood of packet drop. However, such techniques may not be feasible due to overhead (e.g., cost, device size, etc.).

[0039] In some packet-switched networks, for example, relay devices forward packets from host devices to peer devices, but this can be inefficient (e.g., due to path congestion, data rates, etc., as described herein). Therefore, in some cases, the amount of data stored in the relay device's data buffer (e.g., the host-side buffer) may reach the data storage capacity of the buffer. Some techniques address this data storage capacity by terminating lossless operation modes at the relay device (e.g., lossless operation between the host device and the relay device combined with lossless operation between the relay device and the peer device). For example, the host device can request (e.g., via command) the relay device to stop transmitting data packets to the host device (e.g., stop relaying data packets from the peer device to the host device), and the relay device can absorb incoming traffic from the peer device. However, absorbing traffic (e.g., traffic from the peer device) at the relay device can be associated with high cost overhead because the communication medium (e.g., line) between the relay device and the peer device can be relatively long (e.g., 100 meters). That is, for example, due to the relatively large RTT associated with the communication medium, the amount of existing data packets transmitted over the communication medium (and stored at the relay device) may be relatively large.

[0040] The aspects described herein support lossless mode operation at relay devices, including those with MACsec engines. For example, a relay device can support lossless data transfer between a host device and a peer device via the relay device. The relay device may include a state machine (e.g., a pause-reflection state machine) for enabling and / or disabling data flow from the host device to the peer device based on a set of criteria. In some examples, by enabling and / or disabling data flow, the relay device can control the data flow at a data buffer to forward data packets from the host device to the peer device, thereby preventing data loss. For example, controlling the data flow can prevent the amount of incoming data from exceeding the buffer capacity.

[0041] The data buffer that stores packets flowing from the host device to the peer device can be referred to as the relay device's "host-side buffer," "host-side data buffer," or "relay unit packet buffer." In some cases, for completely lossless termination, the size of the host-side buffer can be determined based on the RTT between the host device and the relay device. For example, the RTT between the host device and the relay device may correspond to a relatively short (e.g., 3 inches) communication medium between the host device and the relay device. For example, the host-side buffer may store data packets from the host device (and targeted at the peer device), and the size of the host-side buffer may be relatively small (e.g., to accommodate a relatively small RTT between the host device and the relay device).

[0042] The relay device may include another state machine for enabling and / or disabling data flow from the peer device to the host device based on a set of criteria. In some examples, by enabling and / or disabling data flow, the relay device can control a data buffer (also referred to herein as a “line-side buffer,” “line-side data buffer,” or “peer-side buffer”) to forward data packets from the peer device to the host device, thereby preventing data loss. For example, controlling the data flow can prevent the amount of incoming data from exceeding the buffer capacity.

[0043] In some cases, for complete lossless termination, the size of the line-side data buffer can be determined based on the RTT between the relay and peer devices. For example, the RTT between the relay and peer devices may correspond to a relatively long communication medium (e.g., 100 meters) between the relay and peer devices. In one example, the line-side data buffer may store data packets from the peer device (and target the host device), and the size of the line-side data buffer may be relatively large (e.g., accommodating a relatively large RTT between the relay and peer devices).

[0044] The aspects of this disclosure described herein can support reducing the size of the line-side buffer under example conditions (e.g., hypothetical), where any bandwidth (e.g., data packets) sent by a peer device can be forwarded to a host device via a relay device. In such an example, the relay device and / or the host device (e.g., via a relay device) can prevent the generation of pause data packets and their transmission to the peer device.

[0045] In another example, aspects of this disclosure may support reducing the size of the line-side buffer under example conditions, (e.g., assuming) where no bandwidth (e.g., data packets) sent by the peer device can be forwarded to the peer device. In such an example, the relay device and / or the peer device (e.g., via the relay device) may generate pause packets and send them to the host device.

[0046] The relay device described in this document can support receiving pause requests from peer devices and forwarding these requests to the host device. In some aspects, by forwarding pause requests to the host device, the relay device can stop or pause service flows to the peer device (e.g., by requesting the host device to stop sending data packets). In certain situations, when the relay device's host-side buffer exceeds a threshold (e.g., the data capacity of the host-side buffer), the relay device can generate a pause request and send it to the host device. In one example, from the host device's perspective, the pause request might appear to originate from the peer device.

[0047] In the examples, the aspects described herein can support lossless operation modes from the host device to the relay device and from the relay device to the peer device. In another example, the example aspect can support a lossless operation mode from the peer device to the host device via the relay device. For example, the peer device can send a request (e.g., a pause frame) to the relay device to stop the data flow from the host device to the peer device, and the relay device can forward the request to the host device. Alternatively or additionally, the host device can send a request (e.g., a pause frame) to the relay device to stop the data flow from the peer device to the host device, and the relay device can forward the request to the peer device.

[0048] In practice, a relay device can control data flow based on the amount of data in its data buffer (e.g., relative to a threshold). For example, when the amount of data stored in the data buffer exceeds the threshold (e.g., due to data packets received from the host device, fewer data packets relayed to the peer device, due to differences in data rates, etc.), the relay device can send a request (e.g., a pause frame) to the host device, requesting the host device to stop or pause data packet transmission. In some cases, the relay device can control data flow based on indicators received from the peer device (e.g., a pause frame indicating "do not send" data packets, a transmission command indicating "send" data packets). For example, the relay device can observe pause frames and / or transmission commands sent by the peer device. In one example, when the amount of data in the relay device's data buffer is below a threshold (e.g., the relay buffer is empty), and the peer device is in a transmission-enabled state (e.g., the relay device has received a transmission command from the peer device), the relay device can send a transmission command to the host device to start or resume data packet transmission.

[0049] In some respects, at the peer device, when the amount of data in the peer device's data buffer is below a threshold (e.g., the data buffer is empty), the peer device can send a transmission command to the host (e.g., via the relay device) to start or resume data packet transmission. In one example, the peer device can send a transmission command to the relay device. The relay device can forward the transmission command to the host device (or not forward the transmission command) based on the relay device's buffer state. For example, when the amount of data in the relay device's data buffer is below a threshold (e.g., the buffer is empty), the relay device can forward the transmission command to the host device. Alternatively or additionally, when the amount of data is greater than or equal to a threshold (e.g., the buffer is full), the relay device can prevent the forwarding of transmission commands to the host device. Instructions from the peer device (e.g., pause frames, transmission commands) can be stored by the relay device.

[0050] Relay devices can support reduced buffer sizes (e.g., 25 kilobytes (kb), 50 kb) on the line side, thereby providing reduced overhead (e.g., cost, device size). In some examples, the aspects described herein can support the removal of data buffers on the line side of the relay device, which may be superior to some other relay devices. For example, in packet-switched networks, the communication medium (e.g., line) between the relay device and its peer device can be a 100-meter track from switch to switch. For some other relay devices, the relay device can include a relatively large data buffer on the line side to absorb all information / data packets for communication over the communication medium. The example aspects of the relay devices described herein can be implemented in Ethernet switches or Ethernet gearboxes.

[0051] The aspects of this disclosure are initially described in the context of packet-switched networks. Examples of processes and signaling exchanges supporting Ethernet pause aggregation for trunk devices are then described. These aspects are further illustrated and described with reference to apparatus diagrams, system diagrams, and flowcharts relating to Ethernet pause aggregation for trunk devices.

[0052] Figure 1 An example of a system 100 supporting Ethernet pause aggregation for relay devices according to aspects of this disclosure is shown. System 100 may include, for example, a data packet network. In one example, system 100 may include host device 105, relay device 110, and peer device 115. Host device 105, relay device 110, and peer device 115 may be any electronic device capable of connecting to a wireless or wired network.

[0053] System 100 can support communication of data packets between host device 105 and peer device 115, for example, via relay device 110. In some aspects, system 100 can implement flow control in the network to support lossless transmission (e.g., avoiding frame or data packet loss) between host device 105, relay device 110, and peer device 115. For example, system 100 can enable and / or disable data packet flow at both the host side (e.g., a relatively short communication link, such as communication link 120) and the line side (e.g., a relatively long communication link, such as communication link 125) of relay device 110.

[0054] System 100 can support machine-to-machine communication over a network between any of the host device 105, peer device 115, and relay device 110. In some aspects, system 100 can support machine-to-machine communication between additional host devices 105, peer devices 115, and / or relay devices 110. The networks supported by system 100 can include any type of known communication medium or set of communication media, and such networks can use any type of protocol to transmit messages between endpoints. The network can include wired communication technologies, wireless communication technologies, or any combination thereof.

[0055] The Internet is an example of a network supported by System 100, and this network can constitute an Internet Protocol (IP) network and / or relay equipment 110, consisting of multiple computers, computing networks, and other devices (e.g., host device 105, peer device 115) located in multiple locations. Other examples of networks supported by System 100 may include, but are not limited to, standard ordinary legacy telephone systems (POTS), Integrated Services Digital Network (ISDN), Public Switched Telephone Network (PSTN), Local Area Network (LAN), Wide Area Network (WAN), Wireless LAN (WLAN), Session Initiation Protocol (SIP) network, Voice over Internet Protocol (VoIP) network, cellular network, and any other type of packet-switched or circuit-switched network known in the prior art. In some cases, System 100 may include any combination of networks or network types. In some aspects, a network may include any combination of communication media, such as coaxial cable, copper cable / wire, fiber optic cable, or antennas for communicating data (e.g., sending / receiving data).

[0056] Host device 105 and relay device 110 can communicate via communication link 120. In this example, communication link 120 can be a line trace connecting (e.g., electrically coupled) host device 105 and relay device 110. Communication link 120 can be connected to the data interface of relay device 110.

[0057] Communication link 120 may be referred to as, for example, a metal wire, transmission line, interconnect, trace, wire, conductor, signal path, and / or signal medium. For example, communication link 120 may include any combination of conductive materials that provide signal paths for coupling or interconnecting circuitry associated with host device 105 and relay device 110. Conductive materials may include, for example, aluminum (Al), copper (Cu), alloys of Al and Cu, etc. In some other examples, conductive materials may include other materials such as doped polycrystalline silicon, doped monocrystalline silicon, titanium (Ti), molybdenum (Mo), etc.

[0058] Relay device 110 and peer device 115 can communicate via communication link 125. In this example, communication link 125 may be a data cable connecting (e.g., electrically coupled) relay device 110 and peer device 115. In some aspects, communication link 125 may be a secure link and may be capable of transmitting encrypted information. Communication link 125 may be connected to another data interface of relay device 110. The data interface may be, for example, a PCIe interface, an Ethernet interface, etc.

[0059] Communication link 125 may include any combination of coaxial cable, fiber optic link, and / or switch. In one example, communication link 125 may be an Ethernet cable. For example, communication link 125 may be a full-duplex Ethernet link. In some cases, communication link 125 may have a length of at least 5 meters. In some other examples, communication link 125 may be a transmission medium that includes a wireless channel. For example, repeater device 110 may be a wired-to-wireless repeater device.

[0060] Host device 105 may include a paused finite state machine (FSM) 130 (also referred to herein as a finite automaton, finite automaton, or state machine), a receive buffer 135 (also referred to herein as a data buffer), and a transport pipe 140 (also referred to herein as a transport pipe). The paused FSM 130 may support flow control between host device 105, relay device 110, and peer device 115. In some aspects, the paused FSM 130 may support flow control 115 in both directions (e.g., from host device 105 to peer device, and from peer device 115 to host device 105) on communication link 120.

[0061] For example, host device 105 may indirectly send pause frames and / or transmission commands to peer device 115 via communication links 120 and 125 (e.g., through relay device 110). In some respects, a pause frame may be referred to herein as a pause message or a pause request. In some other respects, a transmission command may be referred to herein as a start transmission command or an enable request.

[0062] In one example, based on the state of the paused FSM 130, the host device 105 (paused FSM 130) can output a pause frame to suspend the transmission (e.g., data packet transmission) of the peer device 115 for a specified period of time. In another example, based on different states of the paused FSM 130, the host device 105 can send a transmission command to the peer device 115 to enable or cancel the suspension of the peer device 115's data packet transmission.

[0063] The receive buffer 135 may be, for example, a first-in, first-out (FIFO) data buffer. The host device 105 may store data packets received from the peer device 115 (e.g., via relay device 110). For example, the transmission pipe 140 may be a data path comprising a set of logical connections, and the transmission pipe 140 may be compatible with the physical interface of the PCIe Architecture (PIPE) specification. The host device 105 may, for example, transmit data packets on the communication link 120 via the transmission pipe 140.

[0064] In one example, based on the amount of data stored in receive buffer 135 exceeding a threshold, paused FSM 130 may enter a first state (e.g., paused state), and host device 105 (paused FSM 130) may output a pause frame. In another example, based on the amount of data stored in receive buffer 135 being less than a threshold, paused FSM 130 may enter a second state (e.g., unpaused state), and host device 105 (paused FSM 130) may output a transmission command for peer device 115 to start or resume data packet transmission. Host device 105 may process (e.g., using a processor included in host device 105) data packets stored in receive buffer 135, and paused FSM 130 may enter the unpaused state based on detecting that the amount of data stored in receive buffer 135 is less than a threshold.

[0065] In another example, host device 105 may respond to a pause frame received by relay device 110. For example, peer device 115 may send a pause frame to relay device 110 via communication link 125, and relay device 110 may send a corresponding pause frame (or the same pause frame) to host device 105 via communication link 120. Host device 105 may pause (e.g., data packet transmission) via transmission pipe 140 based on the pause frame. In one example, the pause frame may include a specified time period for pausing data packet transmission. Host device 105 may pause transmission (e.g., data packet transmission) via transmission pipe 140 based on the pause frame.

[0066] Alternatively or additionally, host device 105 may respond to a transmission command received from relay device 110. For example, peer device 115 may send a transmission command (also referred to herein as a start transmission command) to relay device 110 via communication link 125, and relay device 110 may send a transmission command to host device 105 via communication link 120. Host device 105 may initiate or resume (e.g., data packet transmission) transmission via transmit pipe 140 based on the transmission command.

[0067] Examples of the aspects described herein may differ from some packet-switched network implementations where a host device (e.g., host device 105) can receive and respond to pause frames and / or transmission commands directly from a peer device (e.g., peer device 115). For example, in some other implementations (e.g., without relay device 110), a host device (e.g., host device 105) can receive pause frames or transmission commands directly from a peer device (e.g., peer device 115) via communication link 116.

[0068] Peer device 115 may include a paused FSM 165 (also referred to herein as a finite state automaton, finite automaton, or state machine), a receive buffer 170 (also referred to herein as a data buffer), and a transmit pipe 175 (also referred to herein as a transmit pipe). The paused FSM 165, receive buffer 170, and transmit pipe 140 may each include examples of aspects of the paused FSM 130, receive buffer 135, and transmit pipe 140, respectively.

[0069] The receive buffer 170 may be, for example, a FIFO data buffer. Peer device 115 may store data packets received from host device 105 (e.g., via relay device 110). For example, transmission pipe 175 may be a data path comprising a set of logical connections, and transmission pipe 175 may be compatible with the PIPE specification. Peer device 115 may transmit data packets over communication link 125, for example, via transmission pipe 175.

[0070] Suspending FSM 165 can support flow control between peer device 115, relay device 110, and peer device 115. In some aspects, suspending FSM 165 can support flow control in both directions via communication link 125 (e.g., between peer device 115 and relay device 110, between host device 105 and peer device 115 (via relay device 110), etc.).

[0071] For example, based on the state of suspended FSM 165, peer device 115 (suspended FSM 165) can output a pause frame to suspend the transmission of host device 105 (e.g., transmission of data packets). Alternatively or additionally, peer device 115 can respond to a pause frame received from another device (e.g., host device 105). In some cases, based on the state of suspended FSM 165, peer device 115 can send a transmission command (also referred to herein as a start transmission command) to host device 105 to enable or cancel the suspension of host device's data packet transmission 105. In some aspects, peer device 115 can send pause frames and / or transmission commands to host device 105 directly or indirectly (e.g., via relay device 110).

[0072] In one example, based on the amount of data stored in receive buffer 170 exceeding a threshold, paused FSM 165 can enter a first state (e.g., paused state), and peer device 115 (paused FSM 165) may output a pause frame. In another example, based on the amount of data stored in receive buffer 170 being less than a threshold, paused FSM 165 can enter a second state (e.g., unpaused state), and peer device 115 (paused FSM 165) may be given a transmission command by host device 105 to start or resume data packet transmission. Peer device 115 can process (e.g., using a processor included in peer device 115) data packets stored in receive buffer 170, and paused FSM 165 can enter the unpaused state based on detecting that the amount of data stored in receive buffer 170 is less than a threshold.

[0073] In another example, peer device 115 may respond to a pause frame received by host device 105. For example, peer device 115 may receive a pause frame from host device 105 to pause a transmission (e.g., data packet transmission) performed by peer device 115. In one example, peer device 115 may receive a pause frame indirectly from host device 105 via communication link 125 (e.g., via relay device 110). Peer device 115 may pause a transmission (e.g., data packet transmission) via transmission pipe 175 based on the pause frame.

[0074] In another example, peer device 115 can respond to a pause frame received by relay device 110. For example, host device 105 can send a pause frame to relay device 110 via communication link 120, and relay device 110 can send a corresponding pause frame (or the same pause frame) to peer device 115 via communication link 125. Peer device 115 can pause (e.g., data packet transmission) transmission via transmission pipe 175 based on the pause frame.

[0075] Alternatively or additionally, peer device 115 may respond to a transmission command received from host device 105. For example, peer device 115 may receive a transmission command (also referred to herein as a start transmission command) from host device 105 to initiate or resume data packet transmission by peer device 115. In this example, peer device 115 may receive the transmission command from host device 105 via communication link 125.

[0076] In another example, peer device 115 can respond to a transmission command received from relay device 110. For example, host device 105 can send a transmission command to relay device 110 via communication link 120, and relay device 110 can send a corresponding transmission command (or relay the same transmission command) to peer device 115 via communication link 125. Peer device 115 can initiate or resume (e.g., data packet transmission) transmission via transmission pipe 175 based on the transmission command.

[0077] Relay device 110 may include, for example, a MACsec engine configured to relay data packets between host device 105 and peer device 115. In some aspects, relay device 110 may support one or more encryption or conversion processes on data packets or signaling received from host device 105 and / or peer device 115. For example, relay device 110 may perform signal processing operations on signaling received from host device 105 or peer device 115, such as signal amplification, signal conversion (e.g., from electrical signals to optical signals, from one set of specifications to another), and / or protocol conversion (e.g., relay device 110 may act as a repeater). Therefore, in some examples, the input bandwidth at relay device 110 may differ from the output bandwidth. Relay device 110 may include a transmission pipe 145, a receive buffer 150, a pause aggregation engine 155, a pause FSM 160, and a pause FSM 161.

[0078] Transmission pipe 145 may be, for example, a data path comprising a set of logical connections, and transmission pipe 140 may be compatible with the PIPE specification. Relay device 110 may transmit data packets via communication link 120 and / or communication link 125, for example, via transmission pipe 145.

[0079] The receive buffer 150 may be, for example, a FIFO data buffer. The relay device 110 may store data packets received from the host device 105 in the receive buffer 150. In one example, the relay device 110 may store data packets received from the host device 105 (via the host side of the relay device 110) in the receive buffer 150. In some examples, the relay device 110 may remove data packets that have been successfully encrypted and relayed to the peer device 115 from the receive buffer 150. In one example, the relay device 110 may relay data packets via the line side of the relay device 110.

[0080] The pause aggregation engine 155 can monitor the buffer status (e.g., buffer utilization) of the receive buffer 150 and the status (e.g., state) of the paused FSM 160. The buffer status can, for example, indicate whether the buffer utilization exceeds the data storage capacity of the receive buffer 150. In some aspects, the buffer status can indicate whether the buffer utilization exceeds a data storage threshold. The data storage threshold can be different from (e.g., less than) the data storage capacity.

[0081] Alternatively or additionally, the buffer status can be based on the number of empty data byte positions in the receive buffer 150. For example, the buffer status can indicate whether the number of empty data byte positions is higher than a threshold. For example, based on the buffer status of the receive buffer 150 and / or the status of the paused FSM 160, the relay device 110 (e.g., paused aggregation engine 155) can send a pause frame or transmission command to the host device 105.

[0082] Suspended FSM 160 can support flow control between host device 105, relay device 110, and peer device 115. In some aspects, suspended FSM 160 can support flow control from host device 105 to peer device 115. Suspended FSM 160 may be referred to herein as a “modified suspended FSM,” a “peer suspended FSM shadow,” or a “peer suspended FSM reflection.” For example, suspended FSM 160 may be a shadow FSM capable of mirroring the state of suspended FSM 165. In some aspects, suspended FSM 160 may be a shadow FSM capable of predicting the FSM state of suspended FSM 165 of peer device 115. In some aspects, suspended FSM 160 may include a machine learning network (e.g., implemented by one or more processors of relay device 110 and / or program instructions stored in the memory of relay device 110) that can be trained during the runtime of relay device 110.

[0083] In the example, receive buffer 150 may be empty or nearly empty (e.g., buffer utilization is below a threshold, the amount of data packets stored in receive buffer 150 is below a threshold), and the receive state of peer device 115 may allow packets to be sent to peer device 115 (e.g., as indicated by Pause FSM 160 (“Peer Pause FSM Reflection”)). Based on the buffer utilization of relay device 110 and the receive state of peer device 115, relay device 110 may send a transmission command (also referred to herein as a “continue request”) to host device 105 to send data packets to peer device 115. Alternatively or additionally, as described herein, if receive buffer 150 is full of data packets from host device 105 (e.g., buffer utilization is above a threshold), relay device 110 may generate and output a pause frame (also referred to herein as a “pause command,” “stop indication,” or “pause packet”) to host device 105.

[0084] On the other hand, host device 105 can send a request (e.g., a pause frame) to peer device 115 via relay device 110 to stop sending data services. Relay device 110 can forward the request to peer device 115 and, for example, avoid absorbing data packets received from peer device 115. For example, instead of storing data packets from peer device 115 in a data buffer (e.g., "line-side data buffer", "peer-side data buffer"), relay device 110 can continue forwarding data packets to host device 105 until the data packet stream ends.

[0085] Suspended FSM 161 may include example aspects of Suspended FSM 160. For example, Suspended FSM 161 may support flow control between peer device 115, relay device 110, and host device 105. In some aspects, Suspended FSM 161 may support flow control from peer device 115 to host device 105. Suspended FSM 161 may be referred to herein as a “modified suspended FSM,” a “host suspended FSM shadow,” or a “host suspended FSM reflection.” For example, Suspended FSM 161 may be a shadow FSM capable of reflecting the state of Suspended FSM 130. In some aspects, Suspended FSM 161 may be a shadow FSM capable of predicting the FSM state of Suspended FSM 130 of host device 105. In some aspects, Suspended FSM 161 may include a machine learning network (e.g., implemented by one or more processors of relay device 110 and / or program instructions stored in the memory of relay device 110) that can be trained during the operation of relay device 110.

[0086] The pause aggregation engine 155 and / or pause FSM 160 can be implemented using program instructions (instruction set) stored in the memory of relay device 110. For example, the memory can be configured to store the instruction set and other data structures, in addition to temporarily storing data for the processor of relay device 110 to execute various types of routines or functions. In one example, the program instructions (instruction set) can be executed by the processor to provide the functionality of pausing aggregation engine 155 and / or pausing FSM 160 as described herein. Pausing aggregation engine 155 may include one or more engines.

[0087] According to an example aspect of this disclosure, relay device 110 can support (e.g., using pause aggregation engine 155 and / or pause FSM 160) lossless transmission of data packets between host device 105 and peer device 115. For example, relay device 110 can send a pause frame (also referred to herein as a pause message, pause command, etc.) to host device 105 to pause data packet transmission of host device 105. The pause frame, for example, can indicate a specified period of time for suspending data packet transmission. In some other examples, relay device 110 can send a transmission command (also referred to herein as a start transmission command) to host device 105 to enable or cancel the suspension of data packet transmission of host device 105. In some examples, relay device 110 can periodically (based on intervals) transmit pause frames and / or transmission commands. In one example, relay device 110 can transmit pause frames and / or transmission commands to host device 105 via communication link 120.

[0088] Relay device 110 (e.g., pause aggregation engine 155) can send a pause frame or transmission command to host device 105 based on the state of paused FSM 160. In the example, paused FSM 160 can transition to a first state (e.g., paused state) or a second state (e.g., unpaused state) based on the utilization of receive buffer 150 relative to data storage capacity (e.g., the amount of data stored). In some examples, paused FSM 160 can transition to a paused state or unpaused state based on the utilization of receive buffer 150 relative to a data storage threshold. The data storage threshold can be different from (e.g., less than) the data storage capacity. The data storage threshold can be referred to as a buffer threshold.

[0089] In another example, the paused FSM 160 can transition to a paused state or a de-pause state based on a pause frame or transmission command received by the relay device 110 from the peer device 115. In some other examples, the paused FSM 160 can transition to a paused state or a de-pause state based on the utilization rate of the receive buffer 150 relative to the data storage capacity (or data storage threshold). In some cases, the paused FSM 160 can transition to a paused state or a de-pause state based on the utilization rate of the receive buffer as described herein, combined with receiving a pause frame or transmission command.

[0090] In some aspects, relay device 110 (based on design parameters) can set a data storage threshold so as not to exceed the data storage capacity of receive buffer 150. For example, relay device 110 can set a data storage threshold such that if the data storage threshold at receive buffer 150 is exceeded and relay device 110 sends a pause frame to host device 105, relay device 110 can accept and process data packets (or frames) already transmitted by host device 105 via communication link 120 without exceeding the data storage capacity of receive buffer 150. That is, for example, host device 105 will have sufficient time to stop transmitting data packets (or frames) and relay device 110 can accept and process data packets (or frames) already on communication link 120 without exceeding the data storage capacity of receive buffer 150. In some aspects, relay device 110 can set a data storage threshold for receive buffer 150 to prevent packet loss (e.g., to prevent discarding received data packets).

[0091] In an example scenario, relay device 110 (e.g., pause aggregation engine 155) may send a pause frame to host device 105 based on the utilization of receive buffer 150 being equal to (e.g., reaching) the data storage capacity of receive buffer 150. In some aspects, relay device 110 may send a pause frame to host device 105 based on the utilization of receive buffer 150 being greater than or equal to a data storage threshold (e.g., a different threshold, such as less than a data storage capacity threshold). For example, based on the amount of data stored in receive buffer 150 being equal to the data storage capacity (or data storage threshold), relay device 110 (e.g., pause aggregation engine 155) may send a pause frame to host device 105 via communication link 120 (communication link 111).

[0092] In another example scenario, relay device 110 (e.g., in a paused FSM 160) can receive pause frames from peer device 115 via communication link 125. For example, based on the pause frame, relay device 110 (e.g., in a paused aggregation engine 155) can send a pause frame to host device 105 via communication link 120. In some other examples, relay device 110 may transmit pause frames to host device 105 based on both the utilization of receive buffer 150 being equal to the data storage capacity (or data storage threshold) and the pause frame received from peer device 115.

[0093] Alternatively or additionally, relay device 110 (e.g., pause aggregation engine 155) may send a transmission command to host device 105 based on the utilization rate of receive buffer 150 being lower than the data storage capacity (or data storage threshold). For example, based on the amount of data stored in receive buffer 150 being lower than the data storage capacity (or data storage threshold), pause FSM 160 may exit the pause state (e.g., enter the cancel pause state), and relay device 110 may send a transmission command to host device 105 via communication link 120.

[0094] In another example scenario, relay device 110 (e.g., in a paused FSM 160) can receive a transmission command (also referred to herein as a start transmission command) from peer device 115 via communication link 125. For example, based on the transmission command from peer device 115, relay device 110 (e.g., in a paused aggregation engine 155) can send a transmission command to host device 105 via communication link 120. In some other examples, relay device 110 may send a transmission command to host device 105 based on the utilization of receive buffer 150 being below data storage capacity (or data storage threshold) and the transmission command received from peer device 115.

[0095] The pause frames described herein (e.g., pause frames used by host device 105, relay device 110, and / or peer device 115 in communication) can be, for example, priority-based flow control (PFC) pause frames that support symmetric pauses. For example, the pause frames described herein may include PFC pause frames that support pausing incoming data traffic to devices (e.g., host device 105, relay device 110, peer device 115, etc.). In an example, a pause frame sent from relay device 110 to host device 105 may include a PFC pause frame instructing host device 105 to pause (e.g., stop) the transmission of data packets. In some aspects, based on the PFC pause frame, host device 105 can stop the transmission of data packets (or frames) associated with a priority corresponding to the PFC pause frame, while continuing the transmission of data packets (or frames) associated with different priorities.

[0096] In some respects, the pause frames described herein (e.g., transmitted by host device 105, relay device 110, and / or peer device 115) may be referred to as XOFF (e.g., "transmission off") commands or XOFF codes. Transmission commands described herein (e.g., transmitted by host device 105, relay device 110, and / or peer device 115) may be referred to as XON (e.g., "transmission on") commands or XON codes. Aspects of flow control described in the system 100 referred to herein may be referred to as software flow control or XON / XOFF flow control.

[0097] In some respects, the pause frame described herein can be, for example, an Ethernet pause frame that supports symmetric and asymmetric pauses. For example, the pause frame described herein can be an Ethernet pause frame that supports the suspension of transmission of any or all services (e.g., data services from relay device 110 to peer device 115, data services from peer device 115 to relay device 110, or both) on communication link 125.

[0098] According to an example aspect of this disclosure, if host device 105 is enabled (e.g., via shadow logic) and receive buffer 150 is full, relay device 110 (e.g., pause aggregation engine 155) can transmit a pause frame to host device 105. In some aspects, sending a pause frame can protect receive buffer 150 (e.g., prevent buffer overflow, prevent packet loss). Reference Figure 2 Further examples of relay device 110 are described below.

[0099] Figure 2 An example of a system 200 supporting Ethernet pause aggregation for relay devices according to aspects of this disclosure is shown. In some examples, system 200 may implement reference... Figure 1 The system 100 described herein. For example, system 100 may include host device 205, relay device 210, and peer device 215. Host device 205 and relay device 210 can communicate via communication link 220. Relay device 210 and peer device 215 can communicate via communication link 225. Host device 205, relay device 210, peer device 215, communication link 220, and communication link 225 may be referenced separately. Figure 1 Examples of host device 105, relay device 110, peer device 115, communication link 120 and communication link 125 described.

[0100] Relay device 210 may include relay component 245, receive buffer 250 (also referred to herein as data buffer), pause frame generator 255 (also referred to herein as pause packet generator), and pause FSM 260 (also referred herein as “modified pause FSM,” “peer-to-peer pause FSM shadow,” “pause FSM reflection,” or “peer-to-peer pause FSM reflection”). Relay component 245 may be, for example, a MACsec engine configured to perform one or more encryption or conversion processes on data packets or signaling received from host device 205 and / or peer device 215. For example, relay component 245 may perform signal processing operations such as signal amplification, signal conversion (e.g., from electrical signals to optical signals, from one set of specifications to another), and / or protocol conversion (e.g., relay device 210 may act as a repeater). The receive buffer 250 (also referred to herein as the “host-side buffer,” “host-side data buffer,” or “relay unit packet buffer”), pause frame generator 255, and pause FSM 260 may be referenced as follows: Figure 1 Examples of receive buffer 150, pause aggregation engine 155, and pause FSM 160 are described.

[0101] System 200 can support communication of data packets between host device 205 and peer device 215, for example, via relay device 210. In some aspects, system 200 can implement flow control aspects (e.g., avoiding dropped frames or data packets) to support lossless transmission between host device 205, relay device 210, and peer device 215. For example, system 200 can support stopping data packet flows at both the host side (e.g., a relatively short communication link) and the line side (e.g., a relatively long communication link) of relay device 210. In one example, system 200 can support a lossless operation mode from host device 205 to relay device 210 and a lossless operation mode from relay device 210 to peer device 215. In another example, system 200 can support a lossless operation mode from peer device 215 (via relay device 210) to host device 205.

[0102] refer to Figure 2 Based on the paused FSM status of host device 205 (e.g., reference...) Figure 1As described in the pause FSM 130, host device 205 can output a pause frame 230 to pause transmissions (e.g., data packets) of peer device 215 for a specified time period. Alternatively or additionally, based on the state of the paused FSM, host device 205 can output a transmission command (e.g., instead of pause frame 230) to start or resume data packet transmissions of peer device 215. In some aspects, host device 205 can indirectly send pause frame 230 and / or transmission command to peer device 215 via relay device 210 (e.g., via communication links 220 and 225). For example, in some systems (e.g., Ethernet), once relay device 210 is added between Ethernet nodes (e.g., between host device 205 and peer device 215, or between any other Ethernet nodes), there will be nodes without direct connections, and any communication between nodes will be forwarded through relay device 210.

[0103] In some aspects, any information (e.g., data packets) transmitted between host device 205 and relay device 210 is carried out via communication link 220. For example, the serving relay device 205 associated with the transmission of information (e.g., data packets) between host device 205 and relay device 210 can be implemented via communication link 220. In some aspects, any information (e.g., data packets) communicated between relay device 210 and peer device 215 is carried out via communication link 225. For example, the information (e.g., data packets) between serving relay device 210 and peer device 215 associated with communication can be implemented via communication link 225.

[0104] In one example, although in Figure 2 The arrows are different, but relay device 210 can receive pause frame 230 from host device 205 via communication link 220. Furthermore, although in Figure 2 As shown by different arrows, relay device 210 can forward pause frame 230 to peer device 215 via communication link 225.

[0105] In another example, although in Figure 2 Although shown as different arrows, relay device 210 can receive pause frame 235 from peer device 215 via communication link 225. Pause frame 235 can be fed to pause FSM 260. Furthermore, although in Figure 2As shown by different arrows, relay device 210 can forward pause frame 235 to host device 205 via communication link 220 (e.g., see pause frame 265). For example, relay device 210 can forward (e.g., transmit) pause frame 235 to host device 205 based on the status of receive buffer 250 (e.g., host-side buffer) and / or indications in pause frame 235 (e.g., pause command, transmission command), aspects of which are described herein.

[0106] In some examples, based on the state of the paused FSM of peer device 215 (e.g., reference...) Figure 1 As described in the pause FSM 165, peer device 215 can output a pause frame 235 to suspend host device 205 from transmitting data packets for a specified time period. Alternatively or additionally, based on the state of the paused FSM of peer device 215, peer device 215 can output a transmission command (e.g., instead of pause frame 235) to start or resume data packet transmission 205 of the host device.

[0107] Example aspects of this disclosure may support the indirect transmission of pause frames 235 and / or transmission commands from peer device 215 to host device 205. For example, peer device 215 may indirectly transmit pause frames 235 and / or transmission commands to host device 205 via relay device 210 (e.g., via communication links 225 and 220).

[0108] For example, peer device 215 may send a pause frame 235 to relay device 210, and relay device 210 may send a corresponding pause frame (e.g., pause frame 265) to host device 205 based on the pause frame 235. As another example, peer device 215 may send a transmission command to relay device 210, and based on the transmission command, relay device 210 may send a corresponding transmission command to host device 205. In some aspects, the indirect transmission of pause frame 235 and / or transmission commands between peer device 215 and host device 205 (e.g., via relay device 210) may differ from some other packet network implementations where the peer device directly transmits pause frames and / or transmission commands to the host device. For example, the indirect transmission of pause frame 235 and / or transmission command may differ from other implementations, wherein peer device 215 may transmit pause frame 235 and / or transmission command directly to host device 205 via a communication channel different from communication link 220 and communication link 225 (e.g., without relay device 210, bypassing relay device 210).

[0109] According to an example aspect of this disclosure, relay device 210 (e.g., pause frame generator 255) may transmit pause frame 265 to host device 205 based on the utilization of receive buffer 250 being equal to (e.g., reaching) the data storage capacity of receive buffer 250. In some aspects, relay device 210 may transmit pause frame 265 based on the utilization of receive buffer 250 being greater than or equal to a data storage threshold different from (e.g., less than) the data storage capacity. In some other aspects, relay device 210 (e.g., pause frame generator 255) may transmit pause frame 265 based on relay device 210 receiving (e.g., in pause FSM 260) pause frame 235 from peer device 215 via communication link 225. In some aspects, although in Figure 2 The arrows are different, but the relay device 210 can send a pause frame 265 to the host device 205 via the communication link 220.

[0110] Alternatively or additionally, relay device 210 (e.g., pause frame generator 255) may send a transmission command (e.g., instead of pause frame 265) to host device 205 based on the utilization rate of receive buffer 250 being less than the data storage capacity of receive buffer 250. In some aspects, relay device 210 may send a transmission command based on the utilization rate of receive buffer 250 being less than the data storage threshold of receive buffer 250. In some other aspects, relay device 210 (e.g., pause frame generator 255) may send a transmission command based on relay device 210 receiving a transmission command from peer device 215 via communication link 225 (e.g., instead of pause frame 235). In some aspects, relay device 210 may send a transmission command to host device 205 via communication link 220.

[0111] For example, relay device 210 (e.g., at pause frame generator 255) may output a pause frame 265 or a transmission command based on buffer state 251 of receive buffer 250. In another example, relay device 210 (e.g., at pause frame generator 255) may output a pause frame 265 or a transmission command based on the FSM state of paused FSM 260. In some other examples, relay device 210 (e.g., at pause frame generator 255) may output a pause frame 265 or a transmission command based on a combination of buffer state 251 and FSM state 261.

[0112] In some aspects, relay device 210 (e.g., at receive buffer 250) may output buffer state 251 based on a comparison of the amount of data stored in receive buffer 250 with the data storage capacity (or data storage threshold) of receive buffer 250. In one example, based on the comparison, if the amount of data stored in receive buffer 250 is equal to (e.g., reaches) the data storage capacity of receive buffer 250, buffer state 251 may indicate that receive buffer 250 is “full”. In another example, based on the comparison, buffer state 251 may indicate whether the amount of data stored in receive buffer 250 is greater than or equal to the data storage threshold of receive buffer 250. In some examples, based on the comparison, buffer state 251 may indicate whether the amount of data stored in receive buffer 250 is less than the data storage threshold.

[0113] FSM state 261 can indicate the state of the suspended FSM 260 (e.g., suspended state, unsuspended state). For example, the suspended FSM 260 can transition from the unsuspended state to the suspended state 210 based on the relay device (e.g., in the suspended FSM 260) receiving a pause frame 235 from the peer device 215. In the example, the suspended FSM 260 can set FSM state 261 to indicate the suspended state. Alternatively or additionally, the suspended FSM 260 can transition from the suspended state to the unsuspended state based on the relay device 210 (e.g., in the suspended FSM 260) receiving a transmission command (e.g., in place of the pause frame 235) from the peer device 215. In the example, the suspended FSM 260 can set FSM state 261 to indicate the unsuspended state. In some aspects, the suspended state and the unsuspended state can respectively correspond to different modes of the suspended FSM 260.

[0114] In one example scenario, relay device 210 (e.g., pause frame generator 255) may send pause frame 265 to host device 105 based on an indication in buffer state 251 that the utilization of receive buffer 250 is equal to the data storage capacity of receive buffer 250. In another example scenario, relay device 210 may send pause frame 265 to host device 205 based on an indication in buffer state 251 that the utilization of receive buffer 250 is greater than or equal to a data storage threshold of receive buffer 250. In some aspects, relay device 210 may send pause frame 265 without receiving pause frame 235 from peer device 215.

[0115] In other example scenarios, relay device 210 (e.g., at paused FSM 260) can receive pause frame 235 from peer device 215 via communication link 225. Based on pause frame 235, paused FSM 260 can enter a paused state. Relay device 210 (e.g., at pause frame generator 255) can determine that paused FSM 260 is in a paused state based on FSM state 261 (e.g., an indication of a paused state). Relay device 210 (e.g., pause frame generator 255) can send pause frame 265 to host device 105 based on FSM state 261.

[0116] In another example scenario, relay device 210 (e.g., at paused FSM 260) can receive a transmission command (also referred to herein as a start transmission command) from peer device 215 via communication link 225. Based on the transmission command, paused FSM 260 can enter a canceled pause state. Relay device 210 (e.g., at pause frame generator 255) can determine that paused FSM 260 is in a canceled pause state based on FSM state 261 (e.g., an indication of a canceled pause state). Relay device 210 (e.g., pause frame generator 255) can send a transmission command to host device 105 based on FSM state 261.

[0117] In another example, relay device 210 may send a transmission command to host device 105 based on FSM state 261 (e.g., an indication of canceling a pause state) combined with buffer state 251 indicating that the utilization of receive buffer 250 is less than the data storage threshold of receive buffer 250. In some examples, relay device 210 may send a transmission command to host device 105 based on FSM state 261 (e.g., an indication of canceling a pause state) combined with buffer state 251 indicating that the utilization of receive buffer 250 is less than the data storage capacity of receive buffer 250.

[0118] In some aspects, relay device 210 may store pause frame 235, an indication associated with pause frame 235, or both in its memory. In some aspects, relay device 210 may store received transmission commands, an indication associated with the transmission commands, or both in its memory. In some cases, the FSM state 261 described herein (e.g., pause state, cancel pause state) may indicate a characteristic associated with pause frame 235 (e.g., "do not send" data packets) or a transmission command (e.g., "send" data packets).

[0119] In this example scenario, relay device 210 may support a smaller buffer size compared to some other relay devices. For example, receive buffer 250 may have a smaller buffer size compared to the receive buffer of some other relay devices. In this example, even if buffer state 251 indicates that the utilization of receive buffer 250 is less than the data storage threshold (or data storage capacity) of receive buffer 250, relay device 210 may avoid sending a transmission command to host device 205. For example, relay device 210 may wait to receive a transmission command from peer device 215 before sending a transmission command to host device 205. Therefore, for example, relay device 210 may avoid accumulating an amount of data in receive buffer 250 that exceeds the data storage threshold (or data storage capacity) of receive buffer 250.

[0120] According to an example aspect of this disclosure, the size of the receive buffer 250 can be determined based on the interface bandwidth associated with communication link 225, the distance between relay device 210 and peer device 215, and / or the transmission speed associated with communication link 225. For example, relay device 210 can support various lengths and / or transmission speeds of communication link 225. In the example, the size of receive buffer 250 can be determined or set to support lossless data streaming from host device 205 to peer device 215 (e.g., via relay device 210). Relay device 210 can store data packets received from host device 205 in receive buffer 250 while avoiding dropping any received data packets.

[0121] In the example, communication link 225 may have a length of at least 5 meters (e.g., such that the round-trip distance between relay device 210 and peer device 215 is at least 10 meters), and communication link 225 may support a data transmission rate of at least 400 gigabits per second. Based on this example, relay device 210 may support a receive buffer size (e.g., a “host-side data buffer” for storing data packets received from host device 205 and forwarding data packets to peer device 215) that is smaller than the receive buffer (e.g., a “host-side data buffer”) in some relay devices. For example, the data storage capacity of receive buffer 250 may be less than or equal to 50 kb. In another example, the data storage capacity of receive buffer 250 may be less than or equal to 25 kb. In some aspects, relay device 210 may support a shared buffer for storing packets from peer device 215 (e.g., peer-end buffer) and from host device 205 (e.g., host-side buffer).

[0122] The pause frames described herein (e.g., pause frame 230, pause frame 235, pause frame 265) may include references Figure 1The description of a pause frame. For example, a pause frame can be, for instance, a PFC pause frame that supports symmetric pauses. In some aspects, a pause frame can be an Ethernet pause frame that supports both symmetric and asymmetric pauses.

[0123] Figure 3 An example of a system 300 supporting Ethernet pause aggregation according to aspects of this disclosure is shown. System 300 may include a relay device 305. Relay device 305 may include references to... Figure 1 and Figure 2 The aspects of relay device 110 or relay device 210 described herein. Relay device 305 can perform any or all of the operations described in this disclosure.

[0124] Relay device 305 may include a transmitter 310, a receiver 315, a communication interface 320, a controller 320, a memory 325, a processor 340, and a communication interface 360. In some examples, the components of relay device 305 (e.g., transmitter 310, receiver 315, controller 320, memory 325, processor 340, communication interface 360, etc.) may communicate via a system bus (e.g., control bus, address bus, data bus, etc.) included in relay device 305.

[0125] Transmitter 310 and receiver 315 can support the transmission and reception of signals to and from relay device 305. In some aspects, transmitter 310 and receiver 315 can support the transmission and reception of signals within relay device 305. Transmitter 310 and receiver 315 can be collectively referred to as transceivers. Antennas can be electrically coupled to transceivers. Relay device 305 may also include (not shown) multiple transmitters 310, multiple receivers 315, multiple transceivers, and / or multiple antennas.

[0126] Controller 320 may reside on the same chip (e.g., an ASIC chip) as transmitter 310 and / or receiver 315. In some cases, controller 320 may reside on a different chip than transmitter 310 and / or receiver 315. In some examples, controller 320 may reside on the same chip (or a different chip) as relay device 305. Controller 320 may instruct components in relay device 305 (e.g., processor 340, digital signal processor (DSP) 355) to perform one or more encryption processes and / or signal processing operations (e.g., signal amplification, signal conversion, and / or protocol conversion) on data packets or signaling received from host devices (e.g., host device 105, host device 205) and / or peer devices (e.g., peer device 115, peer device 215). In some examples, controller 320 may be a programmable microprocessor or microcontroller. In some aspects, controller 320 may include one or more CPUs, memories, and programmable I / O peripherals.

[0127] The memory 325 can be any electronic component capable of storing electronic information. The memory 325 can be, for example, random access memory (RAM), read-only memory (ROM), disk storage medium, optical storage medium, flash memory in RAM, onboard memory included in the processor, EPROM memory, EEPROM memory, registers, etc., including combinations thereof.

[0128] Memory 325 may include instructions 330 (computer-readable code) and data 335 stored thereon. Instructions 330 may be executed by processor 340 to implement the methods disclosed herein. In some aspects, execution of instructions 330 may involve one or more portions of data 335. In some examples, when processor 340 executes instructions 330, portions of instructions 330 and / or data 335 may be loaded into processor 340.

[0129] Processor 340 may correspond to one or more computer processing devices. For example, processor 340 may include silicon chips such as field-programmable gate arrays (FPGAs), ASICs, any other type of integrated circuit (IC) chip, a collection of IC chips, etc. In some aspects, the processor may include a microprocessor, a central processing unit (CPU), a graphics processing unit (GPU), or multiple microprocessors 305 configured to execute instruction sets stored in a corresponding memory (e.g., memory 325 of the relay device). For example, when executing the instruction set stored in memory 325, processor 340 may enable or perform one or more functions of relay device 305. In some examples, combinations of processors 340 (e.g., an Advanced Reduced Instruction Set Computer (RISC) machine (ARM) and a DSP 355) may be implemented in relay device 305.

[0130] The communication interface 360 ​​can support interaction between the user and the relay device 305 (e.g., via a physical or virtual interface).

[0131] Figure 4 An example of a process flow 400 supporting Ethernet pause aggregation for a relay device according to aspects of this disclosure is shown. In some examples, process flow 400 may implement aspects of system 100, system 200, or system 300. Furthermore, process flow 400 may be derived from references... Figures 1 to 3 This can be implemented using relay device 110, relay device 210, or relay device 305. In one example, processing flow 400 may support flow control in the network (e.g., LAN) described herein.

[0132] In the following description of processing flow 400, operations may be performed in a different order than those shown, or in a different order or at different times. Some operations may also be excluded from processing flow 400, or other operations may be added to processing flow 400. It should be understood that although relay device 110 is described as performing multiple operations of processing flow 400, any device (e.g., any relay device 110 communicating with host devices and peer devices) can perform the operations shown.

[0133] At 405, relay device 110 may receive a set of data packets. In the example, relay device 110 may store the set of data packets into its data buffer. In some examples, receiving the set of data packets, storing the set of data packets, or both may include avoiding discarding one or more of the data packets in the set.

[0134] At 410, relay device 110 can identify the number of empty data byte locations in its data buffer. In the example, relay device 110 can identify the number of empty data byte locations based on a stored set of data packets.

[0135] At 415, relay device 110 may receive an indicator (e.g., a pause frame or transmission command) associated with the transmission of data packets. In some examples, relay device 110 may transmit at least a subset of the set of data packets over the communication medium based on the indicator (e.g., a transmission command). In some aspects, relay device 110 may identify the number of empty data byte locations based on transmitting at least a subset of the set of data packets.

[0136] In 416, relay device 110 can identify the state of the state machine included in relay device 110 (e.g., suspend FSM 160). In some respects, the state of the state machine can be based on indicators.

[0137] In the examples, the communication medium may include the physical medium of the electrically coupled relay device 110 and a first device among at least two other devices. In some examples, the at least two other devices may include a host device and a peer device. In one example, the first device may be a peer device. In some cases, the relay device 110 may determine the size of the data buffer based on one or more of the following: the interface bandwidth associated with the communication medium; the distance between the device and the first device; and the transmission speed associated with the communication medium.

[0138] In some respects, relay device 110 can pause or enable lossless data streaming based on the number of empty data byte positions compared to a threshold. In other respects, relay device 110 can pause or enable lossless data streaming based on the state of the state machine. For example, in 420-a, relay device 110 can compare the number of empty data byte positions to a threshold. In another example, in 420-b, relay device 110 can determine whether the state machine is in a paused or non-paused state.

[0139] In the example, at 425, relay device 110 can pause the lossless data stream between relay device 110 and at least two other devices (e.g., a host device and a peer device). In some examples, relay device 110 can pause the lossless data stream based on the number of empty data byte positions falling below a threshold, the state of the state machine (e.g., a paused state), or both.

[0140] At 430, relay device 110 may send a pause request based on the number of empty data byte positions being below a threshold, the state of the state machine (e.g., a paused state), or both. In some examples, the pause request, indicator (e.g., a pause frame), or both may include a control frame.

[0141] In some respects, relay device 110 can pause the lossless data stream based on the number of empty data byte locations identified at 410, regardless of the state of the state machine. In other respects, relay device 110 can pause the lossless data stream based on a first state associated with the state machine.

[0142] Alternatively or additionally, at 435, relay device 110 may enable lossless data streaming between relay device 110 and at least two other devices (e.g., a host device and a peer device). In some examples, relay device 110 may enable lossless data streaming based on the number of empty data byte positions exceeding a threshold, the state of the state machine (e.g., canceling a pause state), or both.

[0143] At 440, relay device 110 may send an enable request based on the number of empty data byte positions exceeding a threshold, the state of the state machine (e.g., canceling a pause state), or both. In some examples, the enable request, an indicator (e.g., a transmission command), or both may include a control frame.

[0144] In some respects, relay device 110 can enable lossless data streaming based on the number of empty data byte locations identified at 410, regardless of the state of the state machine. In other respects, relay device 110 can enable lossless data streaming based on a second state associated with the state machine.

[0145] Specific aspects of the subject matter described herein can be implemented to achieve one or more advantages. The described techniques can support improvements to the packet broadcast framework, reduced signaling overhead, reduced memory buffer size, and improved reliability, among other benefits. Therefore, supported techniques can include improved network operation, and in some examples, can improve network efficiency and reduce overhead, among other benefits.

[0146] Any steps, functions, and operations discussed in this article can be performed continuously and automatically.

[0147] Exemplary systems and methods of this disclosure have been described with reference to examples of relay devices 110, 210, and 305. However, to avoid unnecessarily obscuring this disclosure, the foregoing description has omitted a number of known structures and devices. This omission should not be construed as a limitation on the scope of the claimed disclosure. Specific details have been set forth to provide an understanding of this disclosure. However, it should be understood that this disclosure can be practiced in a variety of ways beyond the specific details set forth herein.

[0148] Furthermore, while the exemplary embodiments shown herein illustrate various co-located components of the system, some components of the system may be remotely located in distant parts of a distributed network, such as a LAN and / or the Internet, or a dedicated system. Therefore, it should be understood that components of the system may be combined into one or more devices, such as servers, communication equipment, or co-located on specific nodes of a distributed network, such as analog and / or digital telecommunications networks, packet-switched networks, or circuit-switched networks. As can be understood from the foregoing description, and for computational efficiency reasons, components of the system may be arranged anywhere within the distributed network of components without affecting the operation of the system.

[0149] Furthermore, it should be understood that the various links connecting the elements can be wired or wireless links, or any combination thereof, or links capable of providing data to and from the connected elements and / or transmitting data to and from the connected elements. These wired or wireless links can also be secure links and may be capable of transmitting encrypted information. For example, the transmission medium used as a link can be any suitable electrical signal carrier, including coaxial cable, copper wire, and optical fiber, and can take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.

[0150] Although flowcharts have been discussed and described for a specific sequence of events, it should be understood that changes, additions, and omissions to the sequence may be made without materially affecting the operation of the disclosed embodiments, configurations, and aspects.

[0151] Many variations and modifications of this disclosure may be used. It will be possible to provide some features of this disclosure without providing others.

[0152] In yet another embodiment, the systems and methods of this disclosure may combine a dedicated computer, a programmable microprocessor or microcontroller and peripheral integrated circuit elements, an ASIC or other integrated circuit, digital signals to implement a processor, hardwired electronic or logic circuits such as discrete component circuits, programmable logic devices or gate arrays such as PLDs, PLAs, FPGAs, PALs, dedicated computers, any similar devices, etc. In general, any device or apparatus capable of implementing the methods described herein can be used to implement various aspects of this disclosure. Exemplary hardware that can be used with this disclosure includes computers, handheld devices, telephones (e.g., cellular, internet-enabled, digital, analog, hybrid, etc.), and other hardware known in the art. Some of these devices include processors (e.g., single or multiple microprocessors), memory, non-volatile memory, input devices, and output devices. Furthermore, alternative software implementations, including but not limited to distributed processing or component / object distributed processing, parallel processing, or virtual machine processing, can be constructed to implement the methods described herein.

[0153] In yet another embodiment, the disclosed method can be readily implemented using software that provides portable source code for object-oriented or object-oriented software development environments usable on various computer or workstation platforms. Alternatively, the disclosed system can be implemented in hardware, partially or entirely, using standard logic circuitry or VLSI designs. Whether a system according to this disclosure is implemented in software or hardware depends on the system's speed and / or efficiency requirements, specific functionalities, and the particular software or hardware system or microprocessor or microcomputer system used.

[0154] In yet another embodiment, the disclosed method can be implemented in part in software, which can be stored on a storage medium and executed on a programmed general-purpose computer in cooperation with a controller and memory, a dedicated computer, a microprocessor, or similar means. In these cases, the systems and methods of this disclosure can be implemented as programs embedded in a personal computer, such as applets. This can be implemented as a CGI script, a resource residing on a server or computer workstation, or as a routine, system component, etc., embedded in a dedicated measurement system. The system can also be implemented by physically integrating the system and / or method into the software and / or hardware system.

[0155] Although this disclosure describes components and functions implemented in embodiments with reference to specific standards and protocols, this disclosure is not limited to such standards and protocols. Other similar standards and protocols not mentioned herein exist and are considered to be included in this disclosure. Furthermore, the standards and protocols mentioned herein, as well as other similar standards and protocols not mentioned herein, are periodically replaced by faster or more efficient equivalents with substantially the same functionality. Such alternative standards and protocols with the same functionality are considered to be equivalents included in this disclosure.

[0156] In various embodiments, configurations, and aspects, this disclosure includes components, methods, processes, systems, and / or apparatuses that are essentially depicted and described herein, encompassing various embodiments, sub-combinations, and subsets thereof. Those skilled in the art will understand how to make and use the systems and methods disclosed herein upon understanding the contents of this disclosure. In various embodiments, configurations, and aspects, this disclosure includes providing devices and processes in the absence of items not depicted and / or described herein, or in the absence of items that may have been used in previous devices or processes, for example, to improve performance, achieve ease of use, and / or reduce implementation costs.

[0157] The foregoing discussion of this disclosure has been presented for purposes of illustration and description. The foregoing is not intended to limit this disclosure to one or more forms disclosed herein. For example, in the foregoing detailed description, various features of this disclosure have been combined in one or more embodiments, configurations, or aspects for the purpose of simplification. Features of embodiments, configurations, or aspects of this disclosure may be combined in alternative embodiments, configurations, or aspects other than those discussed above. This method of disclosure should not be construed as reflecting an intention that the claimed disclosure requires more features than expressly listed in each claim. Rather, as reflected in the following claims, the inventive aspect lies in fewer than all features of a single embodiment, configuration, or aspect of the foregoing disclosure. Therefore, the following claims are incorporated herein by reference, each claim existing independently as a separate preferred embodiment of this disclosure.

[0158] Furthermore, while the description of this disclosure includes descriptions of one or more embodiments, configurations, or aspects, as well as certain variations and modifications, other variations, combinations, and modifications are also within the scope of this disclosure, for example, perhaps after understanding this disclosure and within the skill and knowledge of those skilled in the art. It is intended to obtain rights, including alternative embodiments, configurations, or aspects within the permissible scope, including those alternative, interchangeable, and / or equivalent structures, functions, scopes, or steps to those claimed, whether such alternative, interchangeable, and / or equivalent structures, functions, scopes, or steps are disclosed herein, and it is not intended to disclose any patentable subject matter.

[0159] The phrases “at least one,” “one or more,” “or,” and “and / or” are open-ended expressions that are both conjunction and disjunction in operation. For example, “at least one of A, B, and C,” “at least one of A, B, or C,” “one or more of A, B, and C,” “one or more A, B, or C,” “A, B, and / or C,” and “A, B, or C” refer to a single A, a single B, a single C, A and B together, A and C together, B and C together, or A, B, and C together.

[0160] The term "a" or "an" refers to one or more of the entities in question. Therefore, the terms "a" (or "an"), "one or more," and "at least one" are used interchangeably herein. It should also be noted that the terms "comprising," "including," and "having" are used interchangeably.

[0161] As used herein, the term "automatic" and its variations refer to any process or operation that is typically continuous or semi-continuous and can be performed without significant human input. However, a process or operation can be automatic even if its execution uses material or non-material human input, provided that the input is received prior to the execution of the process or operation. Human input is considered material if it influences how the process or operation is performed. Human input used to perform a process or operation is not considered "material."

[0162] The aspects of this disclosure may take the form of a wholly hardware embodiment, a wholly software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be generally referred to herein as a "circuit," "module," or "system." Any combination of one or more computer-readable media may be used. The computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium.

[0163] Computer-readable storage media can be, for example, but not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatuses, or devices, or any suitable combination thereof. More specific examples (not an exhaustive list) of computer-readable storage media will include: electrical connections having one or more wires, portable computer floppy disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fiber, portable optical disc read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination thereof. In the context of this document, a computer-readable storage medium can be any tangible medium that can contain or store programs for use by or in connection with an instruction execution system, apparatus, or device.

[0164] Computer-readable signal media may include propagated data signals containing computer-readable program code, for example, in baseband or as part of a carrier wave. Such propagated signals may take any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium may be any computer-readable medium that is not a computer-readable storage medium but can communicate, propagate, or transmit a program for use by or in connection with an instruction execution system, apparatus, or device. Program code contained on a computer-readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic cable, RF, etc., or any suitable combination thereof.

[0165] As used herein, the terms “determine,” “calculate,” “compute,” and their variations are used interchangeably and include any type of method, process, mathematical operation, or technique.

Claims

1. A method for flow control in a network, the method comprising: identifying, by a device, a number of empty data byte positions in a data buffer of the device; receiving an indicator associated with transmitting a data packet, wherein the indicator comprises a control frame; identifying a state of a state machine included in the device, wherein the state machine enters the state based on the control frame; and suspending, based at least in part on the number of empty data byte positions being below a threshold and the state of the state machine, a lossless data flow between the device and at least two other devices, wherein suspending the lossless data flow comprises transmitting, to one or more of the at least two other devices, a suspension request comprising the control frame.

2. The method of claim 1, further comprising: enabling the lossless data flow between the device and the at least two other devices, wherein enabling the lossless data flow is based at least in part on the number of empty data byte positions exceeding the threshold, or the state of the state machine, or both.

3. The method of claim 2, wherein: suspending the lossless data flow is based at least in part on a first state associated with the state machine; and enabling the lossless data flow is based at least in part on a second state associated with the state machine.

4. The method of claim 1, further comprising: receiving a second indicator associated with transmitting the data packet, wherein the second indicator comprises a second control frame; identifying a second state of the state machine, wherein the state machine enters the second state based at least in part on the second indicator; and enabling the lossless data flow between the device and the at least two other devices based at least in part on the number of empty data byte positions exceeding the threshold, the state of the state machine, or both, wherein enabling the lossless data flow comprises transmitting an enablement request comprising the second control frame.

5. The method of claim 1, further comprising: receiving a set of data packets; and storing the set of data packets to the data buffer, wherein identifying the number of empty data byte positions is based at least in part on storing the set of data packets.

6. The method of claim 5, wherein receiving the set of data packets, storing the set of data packets, or both comprises avoiding discarding one or more data packets of the set of data packets.

7. The method of claim 5, further comprising: transmitting, based at least in part on the state of the state machine or a second state of the state machine, at least a subset of the set of data packets over a communication medium, wherein identifying the number of empty data byte positions is based at least in part on transmitting at least the subset of the set of data packets.

8. The method of claim 7, wherein the communication medium comprises a physical medium electrically coupling the device and a first device of the at least two other devices.

9. The method of claim 7, further comprising: determining a size of the data buffer based at least in part on one or more of: ​ an interface bandwidth associated with the communication medium; a distance between the device and the first device; and a transmission speed associated with the communication medium.

10. The method of claim 1, wherein the device comprises a relay device.

11. The method of claim 1, wherein the at least two other devices comprise a host device and a peer device.

12. The method of claim 1, wherein the network comprises a local area network.

13. A device for flow control in a network, comprising: a state machine; a processor; memory in electronic communication with the processor; and instructions stored in the memory, the instructions executable by the processor to: identify, by the device, a number of null data byte positions in a data buffer of the device; receive an indicator associated with a transmission data packet, wherein the indicator comprises a control frame; identify a state of a state machine included in the device, wherein the state machine enters the state based on the control frame; and suspend, based at least in part on the number of null data byte positions being below a threshold and the state of the state machine, a lossless data flow between the device and at least two other devices, wherein suspending the lossless data flow comprises transmitting a suspension request comprising the control frame to one or more of the at least two other devices.

14. The device of claim 13, wherein the instructions are further executable by the processor to: enable the lossless data flow between the device and the at least two other devices, wherein enabling the lossless data flow is based at least in part on the number of null data byte positions exceeding the threshold, or the state of the state machine, or both.

15. The device of claim 14, wherein: suspending the lossless data flow is based at least in part on a first state associated with the state machine; and enabling the lossless data flow is based at least in part on a second state associated with the state machine.

16. A system for flow control in a network, comprising: a data buffer; a controller, wherein the controller is configured to identify a number of null data byte positions in the data buffer; a transceiver, wherein the transceiver is configured to receive an indicator associated with a transmission data packet, wherein the indicator comprises a control frame; and a state machine configured to transition between a set of states based on the control frame, wherein the controller is further configured to suspend, based at least in part on the number of null data byte positions being below a threshold and a state of the state machine, a lossless data flow between the data buffer and at least two devices, wherein suspending the lossless data flow comprises transmitting a suspension request comprising the control frame to one or more of the at least two devices.

17. A relay device for flow control in a network, comprising: a first data interface coupled with a peer device; a second data interface coupled with a host device; a data buffer to store data packets received from the host device prior to transmission to the peer device; and a state machine that transitions between a set of states in response to control frames received at the relay device, wherein the relay device enables lossless data transmission between the host device and the peer device and transmits a pause request including the control frames to the host device based on the data buffer reaching a data storage capacity in utilization and the state of the state machine.

18. The relay device of claim 17, wherein the relay device receives the control frames from the peer device.

19. The relay device of claim 17, wherein the data buffer comprises a first-in-first-out data buffer.

20. The relay device of claim 17, wherein the data packets are received at a speed greater than 400 G / sec, and wherein the data buffer comprises a capacity of no more than 50 kb.

21. The relay device of claim 20, wherein the data buffer comprises a capacity of no more than 25 kb.

22. The relay device of claim 17, wherein a data cable connects the first data interface with the peer device, and wherein a line trace connects the second data interface with the host device.

23. The relay device of claim 22, wherein the data cable is at least 5 m in length.

24. The relay device of claim 17, wherein the first data interface comprises at least one of a PCIe interface and an Ethernet interface.

25. The relay device of claim 17, wherein the relay device is further configured to send a start transmission command to the host device in response to the data buffer utilization falling below a predetermined threshold.

Citation Information

Patent Citations

  • Flow control for universal serial bus (USB)

    CN101449254A

  • Data communication flow control device and methods thereof

    CN101460912A