Switching controller, transmission controller, and methods for switching controller and transmission controller

By setting forwarding bits and processing multicast messages in the switching controller and sending controller, only sending the header back to the sender, solving the problem that the sender is affected by a large number of negative acknowledge messages in the reliable multicast protocol, and realizing the problem of the sender being affected by a large number of negative acknowledgements. More efficient network communication.

CN119174153APending Publication Date: 2024-12-20HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280095982.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-05-20
Publication Date
2024-12-20

AI Technical Summary

Technical Problem

In a reliable multicast protocol, the transmitter is susceptible to congestion and processing power consumption of a large number of negative acknowledge messages, resulting in increased network load and network bandwidth consumption, affecting communication efficiency.

Method used

Through the design of the switching controller and the sending controller, try to forward multicast messages through multiple ports and set forward bits in the header. If the forwarding fails, only the header will be sent back to the sender to avoid the generation of a large number of negative confirmation messages. , thereby reducing network load and processing capacity consumption.

Benefits of technology

It effectively reduces the network load and processing capacity consumption of the transmitter, reduces the end-to-end delay of multicast message communication, saves network bandwidth, and improves communication efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119174153A_ABST
    Figure CN119174153A_ABST
Patent Text Reader

Abstract

A switching controller, a transmission controller, and a method for the switching controller and the transmission controller are provided. The switching controller is a device for sending a multicast message to a plurality of receivers, so that a sender only needs to send the multicast message to the switching controller, and then the multicast message can be provided for the plurality of receivers. Further, the switch controller attempts to forward the multicast message through one or more ports to transmit the multicast message to the plurality of receivers. Further, a header forwarding bit is set in the header, the header forwarding bit notifying the switch controller to send the header back to the transmitter upon failure of the attempt to forward the multicast message for at least one of the one or more ports. Thus, the switching controller prevents the occurrence of a large number of negative acknowledgement messages at the transmitter, thereby saving network bandwidth and reducing network load at the transmitter.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention generally relates to the field of distributed computing, and more particularly to a switching controller, a transmitting controller, a method for a switching controller, and a method for a transmitting controller to prevent a large number of negative acknowledgements in reliable multicast communications. Background Art

[0002] In today's world, sharing information quickly with multiple receivers becomes an essential requirement for many applications. Hence, multicast communication is one of the popular ways to send information from one source to multiple receivers. In multicast communication, the same message is sent to multiple receivers. Multicast communication is used in many applications such as distributed machine learning training, streaming media, etc.

[0003] Generally, Internet Protocol (IP) multicast is considered to be a partially efficient method for sending the same IP message to multiple receivers. In IP multicast, a multicast tree is formed between network switches, which covers multiple receivers. Thereafter, each IP message is forwarded through the multicast tree, so that the IP message reaches multiple receivers. IP multicast is relatively more efficient than unicast communication, in which a separate copy of each IP message is sent to each receiver through the shortest path between the sender and the receiver. However, during the transmission of IP messages in a computer network, one or more IP messages may be "lost" before reaching their respective destinations. The loss of one or more IP messages is mainly caused by network congestion. In order to ensure that each IP message reaches its respective destination group, one or more protocols are used, such as a reliable multicast protocol. In a reliable multicast protocol, the first copy of each IP message is usually sent through a multicast tree using IP multicast. If the first copy of each IP message is not received by all receivers, each receiver sends a negative acknowledgement (NACK) message to the sender. Therefore, the sender may receive a large number of NACK messages from receivers that did not receive the first copy of each IP packet. These NACK messages may cause congestion on the path to the sender and consume a large part of the processing power of the sender. Therefore, in a reliable multicast protocol, there is a technical problem of how to efficiently prevent a large number of NACK messages from appearing at the sender to reduce the network load of the sender and save network bandwidth.

[0004] Therefore, based on the above discussion, there is a need to overcome the above-mentioned disadvantages associated with conventional approaches to using reliable multicast protocols. Summary of the invention

[0005] The present invention provides a switching controller and a sending controller. The present invention also provides a method for a switching controller and a method for a sending controller. The present invention provides a scheme for solving the existing problem of how to prevent a large number of negative acknowledgment messages from appearing at a sender in a reliable multicast protocol. The purpose of the present invention is to provide a scheme that at least partially overcomes the problems encountered in the prior art and provides an improved switching controller, an improved sending controller and an improved method for the improved switching controller and the improved sending controller to prevent a large number of negative acknowledgment messages from appearing at a sender in a reliable multicast protocol.

[0006] One or more objects of the invention are achieved by what is presented in the attached independent claims. Advantageous implementations of the invention are further defined in the dependent claims.

[0007] In one aspect, the present invention provides a switch controller. The switch controller is used to receive a multicast message from a transmitter, wherein the multicast message includes a header and a payload, and attempt to forward the multicast message through one or more ports. The switch controller is also used to determine that the attempt to forward the multicast message for at least one of the one or more ports has failed, and in response to determining that the attempt has failed, determine to set a header forwarding bit in the header, and in response to setting the header forwarding bit in the header, send the header of the multicast message to the transmitter.

[0008] Advantageously, the use of a switch controller enables the transmission of a multicast message to multiple receivers through one or more ports. In addition, the switch controller determines whether an attempt to forward a multicast message to at least one of the one or more ports has failed. In response to determining that the attempt has failed, the switch controller determines the state of the header forwarding bit in the header. If the switch controller finds that the state of the header forwarding bit is set in the header, the switch controller sends the header back to the transmitter. In this way, the switch controller prevents a large number of negative acknowledgment messages from appearing at the transmitter by only sending the header of the multicast message back to the transmitter. This further saves network bandwidth and reduces the network load at the transmitter. In addition, since a large number of negative acknowledgment messages are prevented from appearing at the transmitter, the consumption of the transmitter's processing power is greatly reduced. In addition, the end-to-end delay in multicast message communication is significantly reduced. The switch controller can be used for the next generation remote direct memory access (RDMA) protocol on an intelligent network interface card (NIC). Therefore, the switch controller provides a system solution, rather than a single-point solution.

[0009] In one implementation, the switch controller is further configured to determine which port failed before sending the header to the transmitter, and include an indication of the port in the header.

[0010] Advantageously, an indication of a port that failed to forward the multicast message is included in the header so that the sender can receive information about the corresponding port and can perform reliable communication with the receiver connected by the corresponding port.

[0011] In another implementation, the switch controller is further configured to determine a number of failed ports before sending the header to the transmitter, and include an indication of the number of failed ports in the header.

[0012] Advantageously, an indication of the number of ports that failed to forward the multicast message is included in the header so that the sender can decide how to ensure reliable multicast.

[0013] In another implementation, the switch controller is further configured to determine a number of hops traversed by the received multicast message before sending the header to the transmitter, and include an indication of the number of hops in the header.

[0014] Advantageously, an indication of the number of hops traversed by a received multicast message is included in the header so that the sender receives an accurate count of the number of hops traversed by the received multicast message and decides how to ensure reliable multicast.

[0015] In another implementation, the switching controller is further configured to set the header forwarding bit in the header before sending the header to the transmitter, so as to indicate that the header is a failed multicast message header.

[0016] It is advantageous to set the header forward bit in the header before sending it to the sender, because the header forward bit helps provide confirmation to the sender about the failed multicast message. The confirmation helps the sender to perform reliable communication.

[0017] In another implementation, the switch controller is further configured to determine whether a second header forwarding bit is set, and if so, attempt to send the header through the failure port.

[0018] Advantageously, a second header forwarding bit is set in the header, which notifies the switch controller to send the header to the receiver only through the failed port, so that the receiver receives notification of the failed attempt to forward the multicast message, and the receiver sends a negative acknowledgement (NACK) message to the sender without waiting for a timeout. In addition, after analyzing that the number of failed ports is very small, the sender notifies the switch controller to send the header through the failed port, so that the NACK message will be very small.

[0019] In another aspect, the present invention provides a sending controller, the sending controller being used to: generate a multicast message, the multicast message comprising a header and a payload; set a header forwarding bit in the header; and transmit the multicast message.

[0020] The sending controller is used to generate a multicast message that facilitates rapid sharing of information with multiple receivers, and the generated multicast message includes a header and a payload. The payload is information stored in the multicast message, and the header is an attachment to the multicast message, and the header is detachable as needed. In addition, the multicast message is forwarded via a header forwarding bit set in the header, and the header forwarding bit helps to send the header back to the sending controller when an attempt to forward the multicast message to at least one receiver fails.

[0021] In one implementation, the sending controller is further configured to receive the header as a response and determine that the multicast transmission has failed.

[0022] Advantageously, the header is received by the sending controller, since the receipt of the header confirms to the sending controller that the transmission of the multicast message has failed.

[0023] In another implementation, the transmission controller is further configured to retransmit the multicast message as a multicast message and receive the header as a response. The transmission controller is further configured to receive one or more NACK messages from corresponding receivers and retransmit the multicast message as a unicast message to each of the corresponding receivers.

[0024] Due to the first reception of the header, the sending controller retransmits the multicast message as a multicast, so the multicast message is retransmitted to multiple receivers. In addition, the sending controller receives the header again, which provides the sending controller with a confirmation that the transmission of the multicast message has failed again. In addition, the receiver that did not receive the multicast message also sends a NACK message to the sending controller in the second attempt. In addition, the sending controller performs a third transmission, but in this scenario, the sending controller transmits the unicast message to the corresponding receiver separately instead of transmitting the multicast message as a multicast.

[0025] In another implementation, the transmission controller is further configured to retransmit the multicast message as a multicast, set a second header forwarding bit in the header, and receive the header as a response. The transmission controller is further configured to receive one or more NACK messages from corresponding receivers, and retransmit the multicast message as a unicast message to each of the corresponding receivers.

[0026] Advantageously, a second header forwarding bit is set in the header before the multicast message is retransmitted as a multicast, because the second header forwarding bit notifies the switching controller to send the header to the receiver that did not receive the multicast message so that the corresponding receiver receives a confirmation of the failure of the attempt to forward the multicast message and sends a NACK message to the sending controller.

[0027] In yet another aspect, the present invention provides a method for a switching controller. The method includes receiving a multicast message from a transmitter, wherein the multicast message includes a header and a payload, and attempting to forward the multicast message through one or more ports. The method also includes determining that the attempt to forward the multicast message for at least one of the one or more ports has failed, and in response to determining that the attempt has failed, determining to set a multicast bit in the header, and in response to setting the multicast bit in the header, sending the header of the multicast message to the transmitter.

[0028] The method achieves all the advantages and technical effects of the switching controller of the present invention.

[0029] In another aspect, the present invention also provides a method for a sending controller, wherein the method comprises: generating a multicast message, wherein the multicast message comprises a header and a payload; setting a header forwarding bit in the header; and transmitting the multicast message.

[0030] The method realizes all the advantages and technical effects of the sending controller of the present invention.

[0031] It should be noted that all devices, elements, circuits, units and modules described in this application can be implemented in software or hardware elements or any type of combination thereof. All steps performed by various entities described in this application and the functions described to be performed by various entities are intended to indicate that the corresponding entities are used to perform the corresponding steps and functions. Although in the description of the following specific embodiments, the specific functions or steps performed by the external entity are not embodied in the description of the specific detailed elements of the entity performing the specific steps or functions, it should be clear to the technician that these methods and functions can be implemented by corresponding hardware or software elements or any combination thereof. It should be understood that, without departing from the scope of the present invention defined in the appended claims, various combinations of features of the present invention can be performed.

[0032] Additional aspects, advantages, features and objects of the present invention will become apparent from the accompanying drawings and detailed description of illustrative implementations interpreted in conjunction with the following appended claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0033] The above summary and the detailed description of the following illustrative embodiments may be better understood by reading in conjunction with the accompanying drawings. In order to illustrate the present invention, exemplary structures of the present invention are shown in the accompanying drawings. However, the present invention is not limited to the specific methods and tools disclosed herein. In addition, it should be understood by those skilled in the art that the accompanying drawings are not drawn to scale. Where possible, the same elements are represented by the same numbers.

[0034] Embodiments of the present invention will now be described by way of example only with reference to the following drawings, in which:

[0035] Figure 1 is a network diagram for performing multicast message communication using a switching controller provided by an embodiment of the present invention;

[0036] Figure 2 is a block diagram of various exemplary components of a switch controller provided by an embodiment of the present invention;

[0037] Figure 3 is a flow chart of a method for exchanging controllers provided by an embodiment of the present invention;

[0038] Figure 4 is a block diagram of a sending controller provided by an embodiment of the present invention;

[0039] Figure 5 is a block diagram of various exemplary components of a transmitter provided by an embodiment of the present invention;

[0040] Figure 6 It is a flowchart of a method for sending a controller provided by an embodiment of the present invention.

[0041] In the drawings, an underlined number is used to indicate the item in which the underlined number is located or an item adjacent to the underlined number. A non-underlined number refers to the item identified by the line connecting the non-underlined number to the item. When a number is not underlined and has an associated arrow, the non-underlined number is used to identify the general item to which the arrow points. DETAILED DESCRIPTION

[0042] The following detailed description describes embodiments of the invention and ways in which these embodiments may be implemented. Although some modes of implementing the invention have been disclosed, those skilled in the art will recognize that there may be other embodiments for implementing or practicing the invention.

[0043] Figure 1FIG. 1 is a network diagram of using a switching controller to perform multicast message communication according to an embodiment of the present invention. Figure 1 , shows a network diagram 100 including a switch controller 102, a transmitter 104, and one or more ports 106. The one or more ports 106 include a first port 106A to an Nth port 106N.

[0044] The switching controller 102 may include appropriate logic, circuitry, interfaces, or code for receiving a multicast message from a source and transmitting the corresponding multicast message to a plurality of receivers. In addition, if the multicast message does not arrive at at least one of the plurality of receivers, the switching controller 102 also provides confirmation to the source by sending a header to the source. An example of the switching controller 102 is that a broadcast message is sent from a mobile device, and then the broadcast message first arrives at a nearby mobile switching center and is further transmitted to a plurality of receivers selected by the mobile device. In this scenario, the mobile switching center is the switching controller 102. In one implementation, the switching controller 102 may be a software module or a hardware module (e.g., a router), or a combination of a software module and a hardware module.

[0045] The transmitter 104 may include suitable logic, circuitry, interfaces or code for generating a multicast message to transmit information to multiple receivers. In addition, the transmitter 104 first forwards the multicast message to the switch controller 102, and the switch controller 102 further transmits the multicast message to each receiver. An example of the transmitter 104 is that when a message is sent from a mobile device or a computer to another device, the mobile device or computer sending the message is considered to be the transmitter 104. For example, in Figure 5 The transmitter 104 is described in detail in .

[0046] The one or more ports 106 may comprise suitable logic, circuitry, interfaces or code that may be operable to transmit multicast messages from the switch controller 102 to a plurality of receivers.

[0047] In operation, the switching controller 102 is used to receive a multicast message from the transmitter 104, and the multicast message includes a header and a payload. The multicast message is received by the switching controller 102 from the transmitter 104 to forward the corresponding multicast message to multiple receivers through one or more ports 106. The switching controller 102 acts as an intermediary to perform the task of sending the multicast message from the transmitter 104 to multiple receivers. For example, in order to send a multicast message to multiple receivers, the transmitter 104 first forwards the multicast message to the switching controller 102, and then the switching controller 102 transmits the corresponding multicast message to the receiver through one or more ports 106. In addition, the multicast message is divided into two parts, one part is the header and the other part is the payload. The header is a detachable part that can be used for confirmation purposes, and the payload contains the main information that needs to be sent to multiple receivers.

[0048] The switch controller 102 is configured to attempt to forward the multicast message through the one or more ports 106. After receiving the multicast message, the switch controller 102 forwards the multicast message to the plurality of receivers through the one or more ports 106. The one or more ports 106 provide a path to the switch controller 102 for sending the multicast message to the receivers, because the one or more ports 106 are connected to the plurality of receivers, which facilitates the switch controller 102 to forward the multicast message to the plurality of receivers. For example, in order to send the multicast message to the plurality of receivers, the switch controller 102 first forwards the multicast message to the one or more ports 106, and then transmits the corresponding multicast message to the plurality of receivers.

[0049] The switch controller 102 is configured to determine that an attempt to forward a multicast message for at least one of the one or more ports 106 has failed. In one example, the multicast message is forwarded by the switch controller 102 to a plurality of receivers via the one or more ports 106, and the task of forwarding the multicast message for at least one of the one or more ports 106 has failed, and then the switch controller 102 operates according to the situation described later in the present invention.

[0050] In response to a failure to forward the multicast message, the switch controller 102 determines to set a header forwarding bit in the header. The multicast message includes the address of its destination. In addition, the address of the destination also discloses that the message is a multicast message. In addition, the header is part of the multicast message, and the header forwarding bit is set in the header. The header forwarding bit is stored with instructions that the switch controller 102 follows when forwarding the multicast message fails.

[0051] In response to determining that the header forwarding bit is set in the header, the switching controller 102 is used to send the header of the multicast message to the transmitter 104. For example, the multicast message forwarded by the switching controller 102 fails to reach at least one of the one or more ports 106, and then the switching controller 102 follows the instructions stored in the header forwarding bit and accordingly sends the header of the failed multicast message back to the transmitter 104. In addition, the switching controller 102 receives the multicast message from the transmitter 104 via a first path and sends the header to the transmitter 104 via a second path. In addition, the first path is different from the second path. In addition, the transmitter 104 receives the header, which notifies the transmitter 104 that the task of forwarding the multicast message to at least one of the multiple receivers has failed.

[0052] According to one embodiment, the switching controller 102 is also used to determine which port failed before sending the header to the transmitter 104, and include an indication of the corresponding port in the header. The multicast message is forwarded from one or more ports 106, and the first port 106A cannot forward the multicast message, and then the switching controller 102 is used to truncate the header of the multicast message forwarded from the first port 106A. In addition, the switching controller 102 provides an indication of the first port 106A in the header to notify the transmitter 104 that the first port 106A cannot forward the multicast message. In one implementation, one or more ports 106 may not be able to forward the multicast message, and then the switching controller 102 truncates the header of the multicast message forwarded from the one or more ports 106. In addition, the switching controller 102 provides an indication of the one or more ports 106 in the header to notify the transmitter 104 that the one or more ports 106 cannot forward the multicast message.

[0053] According to one embodiment, the switch controller 102 is further configured to determine the number of failed ports and include an indication of the number of failed ports in the header before sending the header to the transmitter 104. The multicast message is forwarded from one or more ports 106, and the switch controller 102 provides an indication of the number of ports that failed to forward the multicast message, and the indication is included in the header sent back to the transmitter 104. For example, the multicast message is forwarded from one or more ports 106, and ten ports fail to forward the multicast message, and then the switch controller 102 truncates the header of the multicast message forwarded from the corresponding ten ports. In addition, the switch controller 102 provides an indication of the corresponding ten ports that failed to forward the multicast message in the header and sends the corresponding header to the transmitter 104.

[0054] According to one embodiment, the switching controller 102 is also used to determine the number of hops traversed by the received multicast message before sending the header to the transmitter 104, and include an indication of the number of hops in the header. Before reaching the receiver, the multicast message will traverse a certain number of hops. For example, the multicast message stops after traversing a certain number of hops, and the task of forwarding the multicast message fails, so the switching controller 102 provides an indication of the number of hops traversed by the multicast message before the failure. The indication is included in the header sent back to the transmitter 104. In one example, the multicast message is forwarded from one or more ports 106, and after five hops, the multicast message stops, the task of forwarding the multicast message fails, and then the switching controller 102 truncates the header of the multicast message. In addition, before sending the header back to the transmitter 104, the switching controller 102 provides an indication of the five hops traversed by the corresponding multicast message in the header.

[0055] According to one embodiment, the switching controller 102 is further configured to set a header forwarding bit in the header before sending the header to the transmitter 104, to indicate that the header is a failed multicast message header. The switching controller 102 sets the header forwarding bit in the header, not only to notify the switching controller 102 to send back the header when at least one of the one or more ports 106 fails to forward the multicast message, but also to indicate to the transmitter 104 that the received header is a failed multicast message. For example, the multicast message forwarded by the switching controller 102 cannot be further forwarded from at least one of the one or more ports 106, and then the switching controller 102 sets the header forwarding bit in the header and sends the header of the failed multicast message back to the transmitter 104 accordingly. In addition, the transmitter 104 receives the header with the header forwarding bit set, and the header forwarding bit notifies the transmitter 104 that the received header is a failed multicast message.

[0056] According to one embodiment, the switching controller 102 is also used to determine that the second header forwarding bit is set, and if it is set, the header is attempted to be sent through the failed port. The second header forwarding bit is set in the header and determined by the switching controller 102. In this scenario, if the multicast message cannot be forwarded from at least one of the one or more ports 106, the switching controller 102 truncates the header of the failed multicast message and sends the truncated header to the receiver from the corresponding port that failed to forward the multicast message. After the header is forwarded to the receiver, in response, the receiver sends a negative acknowledgement (NACK) message to the transmitter 104. In addition, after the transmitter 104 analyzes the number of failed ports, the switching controller 102 sends the header to the receiver through the failed port. In this case, if the number of failed ports is very small, the received NACK message is also very small. In this case, each corresponding receiver can receive the unicast message sent by the transmitter 104.

[0057] Therefore, the switch controller 102 prevents a large number of negative acknowledgement messages from appearing at the sender 104 by sending only the header of the multicast message back to the sender 104, which helps save network bandwidth and reduce the network load at the sender 104. In addition, the switch controller 102 helps reduce the consumption of processing power of the sender 104. In addition, the switch controller 102 greatly reduces the end-to-end delay in the communication of multicast messages.

[0058] Figure 2 FIG. 1 is a block diagram of various exemplary components of a switching controller provided by an embodiment of the present invention. Figure 1 Component Description Figure 2 . refer to Figure 2, a block diagram 200 of the switch controller 102 is shown. The switch controller 102 includes a network interface card 202, a memory 204, and a processor 206.

[0059] The network interface card 202 may include suitable logic, circuitry, and / or interfaces for communicating with the transmitter 104 and the Figure 1 The network interface card 202 may also be referred to as a network interface. Examples of the network interface card 202 include, but are not limited to, a data terminal, a transceiver, a fax machine, a virtual server, and the like.

[0060] The memory 204 may include appropriate logic, circuitry, and / or interfaces for storing information (or multicast messages) required for the transmitter 104 to transmit. In one implementation, the memory 204 may also be used to store data and instructions executable by the processor 206. Examples of implementations of the memory 204 may include, but are not limited to, electrically erasable programmable read-only memory (EEPROM), dynamic random access memory (DRAM), random access memory (RAM), read-only memory (ROM), hard disk drive (HDD), flash memory, secure digital (SD) card, solid-state drive (SSD), and / or CPU cache memory. The memory 204 may store an operating system or other program product (including one or more operating algorithms) to operate the switch controller 102.

[0061] The processor 206 may include suitable logic, circuitry, interfaces, or code for executing instructions stored in the memory 204. In one implementation, the operations performed by the switch controller 102 may be performed and controlled by the processor 206. Examples of the processor 206 may include, but are not limited to, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a central processing unit (CPU), a state machine, a data processing unit, and other processors or circuits. In addition, the processor 206 may refer to one or more individual processors, processing devices, processing units as part of a machine, such as the switch controller 102.

[0062] The switch controller 102 is connected to the transmitter 104 through the network interface card 202. Alternatively, the switch controller 102 receives the multicast message from the transmitter 104 through the network interface card 202. The multicast message can be stored in the memory 204 of the switch controller 102 after being received from the transmitter 104. In one implementation, the memory 204 can reside outside the network interface card 202. In another implementation, the memory 204 can reside inside the network interface card 202. In addition, the switch controller 102 transmits the corresponding multicast message to multiple receivers. The operation of transmitting the corresponding multicast message to one or more ports 106 can be controlled by the processor 206. The processor 206 can be located inside or outside the network interface card 202. In addition, if the multicast message cannot reach the receiver, the switch controller 102 also provides an acknowledgment to the transmitter 104 by sending a header to the transmitter 104.

[0063] Figure 3 FIG. 1 is a flow chart of a method for switching controllers provided by an embodiment of the present invention. Figure 1 and Figure 2 Component Description Figure 3 . Combined Figure 3 , a flow chart of a method 300 including steps 302 to 310 is shown. Figure 1 The switching controller 102 is used to execute the method 300.

[0064] A method 300 for a switch controller 102 is provided. The method 300 provides an improved reliable multicast protocol to prevent a large number of negative acknowledgement (NACK) messages from appearing at a transmitter 104 when a multicast message fails to reach a destination. In the method 300, when a multicast message fails, a header of the multicast message is sent back to the transmitter 104. In other words, the header of the failed multicast message is truncated and sent back to the transmitter 104 to prevent the transmitter 104 from receiving multiple NACK messages.

[0065] At step 302, the method 300 includes receiving a multicast message from the transmitter 104, the multicast message including a header and a payload. The multicast message is received by the switch controller 102 from the transmitter 104 to forward the corresponding multicast message to multiple receivers through one or more ports 106. For example, in order to send the multicast message to multiple receivers, the transmitter 104 first forwards the multicast message to the switch controller 102, and then the switch controller 102 transmits the corresponding multicast message to the receivers through one or more ports 106. The header disclosed in the method 300 is a detachable part that can be used for confirmation purposes, and the payload contains the main information that needs to be sent to the multiple receivers.

[0066] At step 304, the method 300 includes attempting to forward the multicast message through the one or more ports 106. After receiving the multicast message, the switch controller 102 forwards the multicast message to the plurality of receivers through the one or more ports 106. For example, to send the multicast message to the plurality of receivers, the switch controller 102 first forwards the multicast message to the one or more ports 106, and then transmits the corresponding multicast message to the plurality of receivers.

[0067] At step 306, the method 300 includes determining that an attempt to forward a multicast message for at least one of the one or more ports has failed. In one example, the multicast message is forwarded by the switch controller 102 to multiple receivers via the one or more ports 106, and the task of forwarding the multicast message for at least one of the one or more ports 106 has failed, and then the switch controller 102 operates according to the situation.

[0068] At step 308, the method 300 includes, in response to a failure to forward the multicast message, determining to set a header forwarding bit in the header. In the event of a failure to forward the multicast message to at least one of the plurality of receivers, the switch controller 102 is configured to determine whether the header forwarding bit is set in the header. In addition, the header forwarding bit is stored with an instruction that the switch controller 102 follows when forwarding the multicast message fails.

[0069] At step 310, method 300 includes, in response to determining that the header forwarding bit is set in the header, sending a header of the multicast message to transmitter 104. For example, the multicast message forwarded by switch controller 102 fails to reach one of the plurality of receivers through at least one of the one or more ports 106, and then switch controller 102 follows the instructions stored in the header forwarding bit and accordingly sends a header of the failed multicast message back to transmitter 104. In addition, transmitter 104 receives a header that notifies transmitter 104 that a task of forwarding the multicast message to at least one of the plurality of receivers has failed.

[0070] According to an embodiment, the method 300 further includes, before sending the header to the transmitter 104, determining which port failed and including an indication of the port in the header. The multicast message is forwarded from one or more ports 106, and the first port 106A is unable to forward the multicast message, and then the switch controller 102 is used to truncate the header of the multicast message forwarded from the first port 106A. In addition, the switch controller 102 provides an indication of the first port 106A in the header to notify the transmitter 104 that the first port 106A is unable to forward the multicast message.

[0071] According to one embodiment, the method 300 further includes, before sending the header to the transmitter 104, determining the number of failed ports and including an indication of the corresponding number of failed ports in the header. For example, a multicast message is forwarded from one or more ports 106, and ten ports are unable to forward the multicast message, and then the switch controller 102 truncates the header of the multicast message forwarded from the corresponding ten ports. In addition, the switch controller 102 provides an indication of the corresponding ten ports that are unable to forward the multicast message in the header and sends the corresponding header to the transmitter 104.

[0072] According to one embodiment, the method 300 also includes, before sending the header to the transmitter 104, determining the number of hops traversed by the received multicast message and including an indication of the number of hops in the header. For example, the multicast message stops after traversing a certain number of hops, and the task of forwarding the multicast message fails, so the switching controller 102 provides an indication of the number of hops traversed by the multicast message before the failure. The indication is included in the header sent back to the transmitter 104. In one example, the multicast message is forwarded from one or more ports 106, and after five hops, the multicast message stops, the task of forwarding the multicast message fails, and then the switching controller 102 truncates the header of the multicast message. In addition, before sending the header to the transmitter 104, the switching controller 102 provides an indication of the five hops traversed by the corresponding multicast message in the header.

[0073] According to one embodiment, the method 300 further includes, before sending the header to the transmitter, setting a header forwarding bit in the header to indicate that the header is a failed multicast message header. The switch controller 102 sets the header forwarding bit in the header not only to notify the switch controller 102 to send a return header when at least one of the one or more ports 106 fails to forward a multicast message, but also to indicate to the transmitter 104 that the received header is a failed multicast message.

[0074] According to one embodiment, the method 300 also includes determining that the second header forwarding bit is set, and if set, attempting to send the header through the failed port. The second header forwarding bit is set in the header and is determined by the switching controller 102. In this scenario, if the multicast message cannot be forwarded from at least one of the one or more ports 106, the switching controller 102 truncates the header of the failed multicast message and sends the truncated header to the receiver from the corresponding port that failed to forward the multicast message. After the header is forwarded to the receiver, in response, the receiver sends a negative acknowledgement (NACK) message to the transmitter 104. In this case, each corresponding receiver can receive the unicast message sent by the transmitter 104.

[0075] By using the method 300 in the reliable multicast protocol, the transmitter 104 is protected from the influence of a large number of NACK messages. The switching controller 102 in the method 300 sends the multicast message to multiple receivers, so the transmitter 104 only sends the multicast message to the switching controller 102 for providing the multicast message to multiple receivers. In addition, the multicast message includes a header and a payload. The payload carries the information stored in the multicast message, and the header is an attachment of the multicast message, and the header is separated as needed. In addition, the switching controller 102 attempts to forward the multicast message through one or more ports 106 to send the multicast message to multiple receivers. One or more ports 106 provide a path for the multicast message to reach the receiver. In addition, a header forwarding bit is set in the header, and when an attempt to forward the multicast message to at least one of the one or more ports 106 fails, the header forwarding bit notifies the switching controller 102 to send the header back to the transmitter 104. The header is sent back to the transmitter 104 to provide the transmitter 104 with an acknowledgment of the failure of the attempt to forward the multicast message to at least one of the one or more ports 106, thereby preventing a large number of NACK messages from appearing at the transmitter 104, which helps to protect the path of the transmitter 104 from network congestion and reduce the processing power consumption of the transmitter 104.

[0076] Steps 302 to 310 are merely illustrative, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the scope of the claims herein.

[0077] Figure 4 is a block diagram of a sending controller provided by an embodiment of the present invention. Figure 1 and Figure 2 Component Description Figure 4 . refer to Figure 4 , a block diagram 400 of a transmitting controller 402 is shown. The transmitting controller 402 is used to generate a multicast message 404. The multicast message 404 includes a header 406 and a payload 408. The header 406 includes header data 406A, a header forwarding bit 406B, and a second header forwarding bit 406C. One or more receivers 410 are also shown.

[0078] The sending controller 402 is used to generate a multicast message 404, which includes information about a header 406 and a payload 408, and the information will be transmitted to one or more receivers 410. In addition, the sending controller 402 first forwards the multicast message 404 to ( Figure 1 ) switching controller 102, used to provide the multicast message 404 to each receiver of one or more receivers 410.

[0079] The header 406 is a separable portion of the multicast message 404 for confirmation purposes. The sending controller 402 receives the header 406 when the multicast message 404 cannot reach the corresponding destination.

[0080] In operation, the transmission controller 402 is used to generate a multicast message 404 including a header 406 and a payload 408. The multicast message 404 is generated by the transmission controller 402 to forward the corresponding multicast message 404 to one or more receivers 410. In addition, the multicast message 404 is divided into two parts, one part is the header 406, and the other part is the payload 408. The header 406 is a detachable part for confirmation purposes, and the payload 408 contains the main information that needs to be sent to the one or more receivers 410. For example, information needs to be sent to one or more receivers 410, and then it becomes quite time-consuming to send the information to each of the one or more receivers 410 individually, so the transmission controller 402 generates a multicast message 404, which can be transmitted to the one or more receivers 410 at one time. In addition, the multicast message generated by the transmission controller 402 has a header 406 and a payload 408. The header 406 can be separated from the multicast message 404 as needed, and the header 406 also includes header data 406A. In one implementation, the header data 406A can store the address of the destination to which the multicast message 404 needs to be forwarded. In addition, the information to be sent through the multicast message 404 is carried by the payload 408.

[0081] The sending controller 402 is used to set a header forwarding bit 406B in the header 406. The header forwarding bit 406B is set in the header 406 by the sending controller 402. The header forwarding bit 406B is used to notify the switching controller 102 to transmit the header 406 to the sending controller 402 when the multicast message 404 cannot reach at least one of the one or more receivers 410. In addition, the header forwarding bit 406B indicates to the sending controller 402 that the received header 406 is a failed multicast message 404. For example, the multicast message 404 generated by the sending controller 402 cannot reach at least one of the one or more receivers 410, and then the header forwarding bit 406B notifies the switching controller 102 to send the header 406 of the failed multicast message 404 back to the sending controller 402 accordingly. In addition, the header forwarding bit 406B also notifies the sending controller 402 that the received header 406 is a failed multicast message 404. In addition, the sending controller 402 sends the multicast message 404 from the first path, and receives the header 406 from the second path. In addition, the first path is different from the second path.

[0082] The sending controller 402 is used to transmit a multicast message 404. The multicast message 404 is transmitted by the sending controller 402 to one or more receivers 410. For example, in order to share information with one or more receivers 410 at one time, the sending controller 402 transmits the multicast message 404 to the one or more receivers 410. If the multicast message 404 fails, the header 406 of the multicast message 404 is returned to the sending controller 402 through the header forwarding bit 406B.

[0083] According to one embodiment, the sending controller 402 is further configured to receive a header 406 as a response. When forwarding the multicast message 404 fails, the sending controller 402 receives the header 406. For example, the multicast message 404 forwarded by the sending controller 402 cannot reach at least one of the one or more receivers 410, and then the header forwarding bit 406B is set in the header 406 to notify the switching controller 102 to send the header 406 back to the sending controller 402. In one implementation, when multiple multicast messages cannot reach one or more receivers 410, one or more switching controllers may send one or more headers to one or more sending controllers. This further prevents a large number of one or more NACK messages from appearing at one or more sending controllers.

[0084] According to one embodiment, the sending controller 402 is further configured to determine that the multicast transmission has failed in response to receiving the header 406. The header 406 received by the sending controller 402 indicates that the multicast message 404 cannot reach at least one of the one or more receivers 410. For example, the multicast message 404 sent by the sending controller 402 cannot be transmitted at the one or more receivers 410, and then the header 406 is truncated from the failed multicast message 404 and sent back to the sending controller 402 to notify the transmission failure of the multicast message 404.

[0085] According to one embodiment, the transmission controller 402 is further configured to transmit the multicast message 404 as a multicast retransmission. In response to a first attempt to send the multicast message 404 to one or more receivers 410 failing, the transmission controller 402 receives the header 406 and performs another attempt to send the multicast message 404 to one or more receivers 410.

[0086] According to one embodiment, the sending controller 402 is further configured to receive a header 406 in response. For example, if another attempt to transmit the multicast message 404 fails again, the sending controller 402 receives the header 406. The received header 406 helps determine that the multicast message 404 also failed to reach at least one of the one or more receivers 410 in the second attempt. For example, the multicast message 404 sent by the sending controller 402 fails to be transmitted at at least one of the one or more receivers 410 in the second attempt, and then the header 406 is truncated again from the failed multicast message 404 and sent back to the sending controller 402 to notify that the transmission of the multicast message 404 failed again in the second attempt.

[0087] According to one embodiment, the sending controller 402 is further configured to receive one or more NACK messages from the corresponding receiver. After the forwarding of the multicast message 404 also fails in the second attempt, the one or more receivers 412 send one or more NACK messages to the sending controller 402. The one or more NACK messages received from the one or more receivers 410 inform the sending controller 402 that the corresponding receiver has not received the multicast message 404.

[0088] According to one embodiment, the sending controller 402 is further configured to retransmit the multicast message 404 as a unicast message to each corresponding receiver. After receiving a NACK message from the corresponding receiver, the sending controller 402 retransmits the multicast message 404 as a unicast message to each of the one or more receivers 410. For example, the second attempt to transmit the multicast message 404 fails, and then the sending controller 402 receives the header 406 again and also receives a NACK message from the one or more receivers 410. In addition, the sending controller 402 retransmits the information using a unicast message instead of the multicast message 404.

[0089] According to one embodiment, the sending controller 402 is further configured to treat the multicast message 404 as a multicast retransmission to set a second header forwarding bit 406C in the header 406. Before performing the retransmission of the multicast message 404, the sending controller 402 sets the second header forwarding bit 406C for the header 406. The second header forwarding bit 406C is also part of the header 406, which carries an instruction to send the header 406 to the destination.

[0090] According to one embodiment, the sending controller 402 is further configured to receive a header 406 in response. For example, if another attempt to transmit the multicast message 404 fails again, the sending controller 402 receives the header 406. The received header 406 helps determine that the multicast message 404 also failed to reach the one or more receivers 410 in the second attempt. For example, the multicast message 404 sent by the sending controller 402 fails to be transmitted at the one or more receivers 410 in the second attempt, and then the header 406 is truncated from the failed multicast message 404 again and sent to the sending controller 402 via the second header forwarding bit 406C to notify that the transmission of the multicast message 404 failed here in the second attempt.

[0091] According to one embodiment, the sending controller 402 is further configured to receive one or more NACK messages from the corresponding receiver. After the second attempt fails, the second header forwarding bit 406C notifies the switching controller 102 to send the header 406 to one or more receivers 410. In addition, the switching controller 102 sends the header 406 to the corresponding receiver. The sending controller 402 supports sending the header 406 to the corresponding receiver after analyzing that the number of NACK messages will be very small. By forwarding the header 406, a confirmation of the failed attempt to forward the multicast message 404 is provided to the corresponding receiver, and the corresponding receiver sends the NACK message to the sending controller 402.

[0092] According to one embodiment, the sending controller 402 is also used to retransmit the multicast message 404 as a unicast message to each corresponding receiver. After receiving a NACK message from the corresponding receiver, the sending controller 402 retransmits the unicast message to each corresponding receiver individually. For example, the second attempt to transmit the multicast message 404 fails, and then the sending controller 402 receives the header 406 again, and also receives a NACK message from the corresponding receiver. In addition, the sending controller 402 uses a unicast message instead of a multicast message 404 to retransmit information.

[0093] Therefore, the transmission controller 402 helps make the task of transmitting the multicast message 404 easier by retrying the transmission of the multicast message 404 after the first attempt fails. In addition, the transmission controller 402 analyzes the number of NACK messages before enabling the second header forwarding bit 406C to send the header 406 to the corresponding receiver after the second attempt fails. In addition, the transmission controller 402 helps forward the multicast message 404 as a unicast after the second attempt fails.

[0094] Figure 5 is a block diagram of various exemplary components of a transmitter provided by an embodiment of the present invention. Figure 1 and Figure 4 Component Description Figure 5 . refer to Figure 5 , a block diagram 500 of a transmitter 104 including a memory 502 and a network interface card 504 is shown. The network interface card 504 includes ( Figure 4 ) sending controller 402.

[0095] The memory 502 may include appropriate logic, circuitry, and / or interfaces for storing the multicast message 404 generated by the transmitting controller 402. In one implementation, the memory 502 may be used to store data and instructions executable by the transmitting controller 402. Examples of implementations of the memory 502 may include, but are not limited to, electrically erasable programmable read-only memory (EEPROM), dynamic random access memory (DRAM), random access memory (RAM), read-only memory (ROM), hard disk drive (HDD), flash memory, secure digital (SD) card, solid-state drive (SSD), and / or CPU cache memory. The memory 502 may store an operating system or other program product (including one or more operating algorithms) to operate the transmitter 104.

[0096] The network interface card 504 may include suitable logic, circuitry, and / or interfaces for communicating with the transmitter 104, Figure 1 One or more ports 106, a sending controller 402 and Figure 4 The network interface card 504 can also be referred to as a network interface. Examples of the network interface card 504 include, but are not limited to, a data terminal, a transceiver, a fax machine, a virtual server, etc.

[0097] The transmitter 104 is connected to the switching controller 102 via the network interface card 504. In addition, the transmitter 104 generates a multicast message 404 using the transmission controller 402, and transmits it to the switching controller 102 via the network interface card 504. The operation of generating and transmitting the corresponding multicast message 404 is controlled by the transmission controller 402. The multicast message 404 can be stored in the memory 502 of the transmitter 104. In one implementation, the memory 502 can reside outside the network interface card 504. In another implementation, the memory 502 can reside inside the network interface card 504. In addition, the transmitter 104 transmits the corresponding multicast message 404 to multiple receivers. The operation of transmitting the corresponding multicast message 404 can be controlled by the transmission controller 402. In one implementation, the transmission controller 402 can reside outside the network interface card 504. In another implementation, the transmission controller 402 can reside inside the network interface card 504.

[0098] Figure 6FIG. 1 is a flow chart of a method for sending a controller provided by an embodiment of the present invention. Figure 4 and Figure 5 Component Description Figure 6 . Combined Figure 6 , a flow chart of a method 600 including steps 602 to 606 is shown. The sending controller 402 is used to execute the method 600.

[0099] A method 600 for a sending controller 402 is provided. The method 600 provides an improved reliable multicast protocol to prevent the sending controller 402 from receiving a large number of negative acknowledgement (NACK) messages when a multicast message 404 fails to reach a destination. In the method 600, a header 406 of a multicast message 404 is truncated and sent back to the sending controller 402 when the multicast message 404 fails. In other words, the header 406 of the failed multicast message 404 is truncated and sent to the sending controller 402 to prevent the sending controller 402 from receiving multiple NACK messages.

[0100] In step 602, the method 600 includes generating a multicast message 404, which includes a header 406 and a payload 408. The multicast message 404 is generated by the sending controller 402 to forward the corresponding multicast message 404 to one or more receivers 410. In addition, the multicast message 404 is divided into two parts, one part is the header 406, and the other part is the payload 408. The header 406 is a detachable part for confirmation purposes, and the payload 408 contains the main information that needs to be sent to multiple receivers. In addition, the multicast message 404 generated by the sending controller 402 has a header 406 and a payload 408. The header 406 can be separated from the multicast message 404 as needed, and the header 406 also includes header data 406A. In addition, the information sent by the multicast message 404 is carried by the payload 408.

[0101] At step 604, the method 600 includes setting a header forwarding bit 406B in the header 406. The sending controller 402 sets the header forwarding bit 406B for the header 406. The header forwarding bit 406B is used to notify the switch controller 102 to transmit the header 406 to the sending controller 402 when the multicast message 404 cannot reach one or more receivers 410. In addition, the header forwarding bit 406B indicates to the sending controller 402 that the received header 406 is a failed multicast message 404.

[0102] At step 606, method 600 includes transmitting multicast message 404. For example, to share information with one or more receivers 412 at one time, sending controller 402 transmits multicast message 404 to one or more receivers 410. If multicast message 404 fails, header 406 of multicast message 404 is returned to sending controller 402 via header forwarding bit 406B.

[0103] According to an embodiment, method 600 further includes receiving header 406 as a response. When forwarding of multicast message 404 fails, sending controller 402 receives header 406. Header forwarding bit 406B notifies that after forwarding multicast message 404 fails, header 406 of failed multicast message 404 needs to be sent back to sending controller 402.

[0104] According to one embodiment, method 600 further includes determining that the multicast transmission has failed. After the forwarding of multicast message 404 fails, header 406 is truncated from failed multicast message 404 and sent back to sending controller 402 to notify that the transmission of multicast message 404 has failed.

[0105] According to an embodiment, method 600 further includes retransmitting multicast message 404 as a multicast. After a first attempt to send multicast message 404 to one or more receivers 410 fails, transmission controller 402 receives header 406 and, in response, performs another attempt to send multicast message 404 to one or more receivers 410.

[0106] According to an embodiment, method 600 also includes receiving header 404 in response. For example, if another attempt to transmit multicast message 404 fails again, then sending controller 402 receives header 406. Received header 406 provides confirmation to sending controller 402 that multicast message 404 also failed to reach one or more receivers 412 in the second attempt.

[0107] According to an embodiment, the method 600 further includes receiving one or more NACK messages from the corresponding receiver. After the second attempt to forward the multicast message 404 also fails, the one or more receivers 412 send one or more NACK messages to the sending controller 402 to notify the sending controller 402 that the corresponding receiver has not received the multicast message 404.

[0108] According to an embodiment, method 600 also includes retransmitting multicast message 404 as a unicast message to each corresponding receiver. For example, the second attempt to transmit multicast message 404 fails, and then the sending controller 402 receives header 406 again and also receives a NACK message from the corresponding receiver. In addition, the sending controller 402 retransmits the information using a unicast message instead of a multicast message 404.

[0109] According to an embodiment, the method 600 further includes treating the multicast message 404 as a multicast retransmission and setting a second header forwarding bit 406C in the header 406. The second header forwarding bit 404C is also part of the header 406, which carries instructions for sending the header 406 to the destination. The sending controller 402 sets the second header forwarding bit 406C in the header 406.

[0110] According to an embodiment, method 600 also includes receiving a header in response. For example, if another attempt to transmit multicast message 404 fails again, then transmitting controller 402 receives header 406. Received header 406 helps determine that multicast message 404 also failed to reach one or more receivers 412 in the second attempt.

[0111] According to an embodiment, the method 600 also includes receiving one or more NACK messages from the corresponding receiver. The switching controller 102 sends the header 406 to the corresponding receiver after receiving the notification of the second header forwarding bit 406C. The sending controller 402 supports sending the header 406 to the corresponding receiver after analyzing that the number of NACK messages will be very small. By forwarding the header 406, the corresponding receiver is provided with a confirmation that the attempt to forward the multicast message 404 failed, and the corresponding receiver sends the NACK message to the sending controller 402.

[0112] According to an embodiment, method 600 also includes retransmitting multicast message 404 as a unicast message to each corresponding receiver. After the second attempt to transmit multicast message 404 fails, sending controller 402 receives header 406 again and also receives a NACK message from the corresponding receiver. In addition, sending controller 402 retransmits information by using unicast messages instead of multicast messages.

[0113] Method 600 protects the sending controller 402 from a large number of NACK messages in a reliable multicast protocol. In method 600, the sending controller 402 sends a multicast message 404 to one or more receivers 412. In addition, the multicast message 404 includes a header 406 and a payload 408. The payload 408 carries information stored in the multicast message 404, and the header 406 is an attachment to the multicast message 404, and the header 406 is separated as needed. In addition, the sending controller 402 attempts to forward the multicast message 404 to one or more receivers 412. In addition, a header forwarding bit 406B is set in the header 406, which is used to send the header 406 back to the sending controller 402 when the attempt to forward the multicast message 404 fails. The header 406 is sent back to the sending controller 402 to provide the sending controller 402 with a confirmation that the attempt to forward the multicast message 404 failed, thereby preventing the sending controller 402 from sending a NACK message. This further saves network bandwidth and reduces the network load at the sender. In addition, since a large number of negative acknowledgment messages are prevented from appearing at the sender 104, the consumption of the sender's processing power is greatly reduced. In addition, the end-to-end delay in the multicast message 404 communication is significantly reduced.

[0114] Steps 602 to 606 are merely illustrative, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the scope of the claims herein.

[0115] Without departing from the scope of the invention as defined by the appended claims, the embodiments of the invention described above may be modified. "Including", "combining", "having", "being" and the like used to describe and claim the present invention are intended to be interpreted in a non-exclusive manner, i.e., allowing items, components or elements not explicitly described to exist. References to the singular should also be interpreted as involving the plural. The word "exemplary" used herein means "as an example, instance or illustration". Any embodiment described as "exemplary" is not necessarily interpreted as being more preferred or more advantageous than other embodiments, or excluding the combination of features in other embodiments. The word "optionally" used herein means "provided in some embodiments and not provided in other embodiments". It should be understood that some features of the present invention described in the context of a single embodiment for the sake of clarity may also be provided in combination in a single embodiment. On the contrary, the various features of the present invention described in the context of a single embodiment for the sake of clarity may also be provided individually or in any suitable combination or as any other described embodiment of the present invention.

Claims

1. A switching controller (102), characterized in that: Used for: Receiving a multicast message (404) from a transmitter (104), wherein the multicast message (404) includes a header (406) and a payload (408); Attempting to forward the multicast message (404) through one or more ports (106); determining that the attempt to forward the multicast message (404) has failed for at least one of the one or more ports (106); In response to determining that the attempt failed, determining to set a header forwarding bit (406B) in the header (406); In response to setting the header forwarding bit in the header, the header (406) of the multicast message (404) is sent to the transmitter (104).

2. The switching controller (102) according to claim 1, characterized in that: The exchange controller (102) is also used for: Prior to sending the header (406) to the sender (104), it is determined which port failed and an indication of the port is included in the header.

3. The switching controller (102) according to claim 1 or 2, characterized in that: The switch controller (102) is further configured to determine a number of failed ports before sending the header (406) to the transmitter (104) and include an indication of the number of failed ports in the header (406).

4. The switching controller (102) according to any one of the preceding claims, characterized in that: The switch controller (104) is further configured to determine the number of hops traversed by the received multicast message (404) before sending the header (406) to the transmitter (104), and include an indication of the number of hops in the header (406).

5. The switching controller (102) according to any one of the preceding claims, characterized in that: The switching controller (102) is further configured to set the header forwarding bit (406B) in the header (406) before sending the header (406) to the transmitter (104) to indicate that the header (406) is a failed multicast message (404) header (406).

6. The switching controller (102) according to any one of the preceding claims, characterized in that: The switch controller is further configured to determine whether a second header forwarding bit (406C) is set, and if so, attempt to send the header (406) through the failure port.

7. A sending controller (402), characterized in that: Used for: Generate a multicast message, the multicast message including a header (406) and a payload (408); Setting a header forwarding bit (406B) in the header (406); The multicast message is transmitted (404).

8. The sending controller (402) according to claim 7, characterized in that: The sending controller (402) is further configured to: receiving the header (406) in response; It is determined that the multicast transmission fails.

9. The sending controller (402) according to claim 7 or 8, characterized in that: The sending controller (402) is further configured to: retransmitting the multicast message (404) as a multicast; receiving the header (406) in response; receiving one or more NACK messages from corresponding receivers; The multicast message (404) is retransmitted as a unicast message to each of the corresponding receivers.

10. The transmission controller (402) according to claim 7, 8 or 9, characterized in that: The sending controller (402) is further configured to: retransmitting the multicast message (404) as a multicast message to set a second header forwarding bit (406C) in the header (406); receiving the header (406) in response; receiving one or more NACK messages from corresponding receivers; The multicast message (404) is retransmitted as a unicast message to each of the corresponding receivers.

11. A method (300) for exchanging a controller (102), characterized in that: The method comprises: Receiving a multicast message (404) from a transmitter (104), wherein the multicast message (404) includes a header (406) and a payload (408); Attempting to forward the multicast message (404) through one or more ports (106); determining that the attempt to forward the multicast message (404) to at least one of the one or more ports (106) has failed, In response to determining that the attempt failed, determining to set a header forwarding bit (406B) in the header (406), In response to setting the header forwarding bit in the header, the header (406) of the multicast message (404) is sent to the transmitter (104).

12. The method (300) according to claim 11, characterized in that: The method (300) further comprises: Prior to sending the header (406) to the sender (104), a determination is made as to which port failed and an indication of the port is included in the header (406).

13. The method (300) according to claim 11 or 12, characterized in that: The method (300) also includes determining a number of failed ports before sending the header (406) to the transmitter (104), and including an indication of the number of failed ports in the header (406).

14. The method (300) according to claim 11, 12 or 13, characterized in that: The method (300) also includes determining a number of hops traversed by the received multicast message (404) prior to sending the header (406) to the transmitter (104), and including an indication of the number of hops in the header (406).

15. The method (300) according to claim 11, 12, 13 or 14, characterized in that The method (300) also includes setting the header forwarding bit (406B) in the header (406) to indicate that the header (406) is a failed multicast message (404) header (406) before sending the header (406) to the transmitter (104).

16. The method (300) according to any one of claims 11 to 15, characterized in that The method (300) also includes determining whether a second header forwarding bit (406C) is set, and if so, attempting to send the header (406) through the failure port.

17. A method (600) for sending a controller, characterized in that The method (600) comprises: Generate a multicast message, the multicast message including a header (406) and a payload (408); Setting a header forwarding bit (406B) in the header (406); The multicast message is transmitted (404).

18. The method (600) according to claim 17, characterized in that: The method (600) further comprises: receiving the header (406) in response; It is determined that the multicast transmission fails.

19. The method (600) according to claim 17 or 18, characterized in that: The method (600) further comprises: retransmitting the multicast message (404) as a multicast; receiving the header (406) in response; receiving one or more NACK messages from corresponding receivers; The multicast message (404) is retransmitted as a unicast message to each of the corresponding receivers.

20. The method (600) according to any one of the preceding claims 17 to 19, characterized in that: The method (600) further comprises: retransmitting the multicast message (404) as a multicast message to set a second header forwarding bit (406C) in the header (406); receiving the header (406) in response; receiving one or more NACK messages from corresponding receivers; The multicast message (404) is retransmitted as a unicast message to each of the corresponding receivers.