Code block processing method and apparatus, device, system, storage medium and program product
By adopting code block processing methods in the communication network, using fixed scheduling ratio and inserting placeholder code blocks, the docking problem of different transmission rate channels is solved, and efficient and reliable multiplexing from multiple low-speed channels to one high-speed channels is achieved, reducing the complexity and bandwidth waste of multiple connections.
Patent Information
- Application Number
- PCT/CN2025/071006
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-04-09
- Filing Date
- 2025-01-07
- Publication Date
- 2025-08-07
AI Technical Summary
In communication networks, there are problems with docking between channels with different transmission rates. The prior art leads to high complexity and waste of bandwidth through frame encapsulation operations, making it difficult to efficiently realize the multiplexing between multiple low-speed channels and one high-speed channels.
The code block processing method is adopted to schedule the code block stream through a fixed scheduling ratio, insert the placeholder code block or idle code block to avoid frame enclosure operations, and directly perform multiplexing at the code block granularity, and carry multiplexing information to support frequency deviation adjustment and control code block hiding, reducing the complexity of multiplexing and improving reliability.
It reduces the complexity of the multiplication process, improves the multiplication efficiency and reliability, avoids bandwidth waste, and simplifies the operation and maintenance management of backbone nodes.
Smart Images

Figure CN2025071006_07082025_PF_FP_ABST
Abstract
Description
Code block processing method, device, equipment, system, storage medium and program product
[0001] This application claims priority to Chinese patent application No. 202410128460.6, filed on January 29, 2024, with the invention name “A method for data multiplexing and transmission”, and priority to Chinese patent application No. 202410425565.8, filed on April 9, 2024, with the invention name “Code block processing method, device, equipment, system, storage medium and program product”, the entire contents of which are incorporated by reference into this application. Technical Field
[0002] The present application relates to the field of communication technology, and in particular to a code block processing method, apparatus, device, system, storage medium, and program product. Background Art
[0003] With the advancement of communication technology, networks may contain channels with different transmission rates, for example, a low-speed channel of 5 gigabits per second (Gbps) or a high-speed channel of 25 Gbps. Consequently, there are challenges in interoperating channels with different transmission rates. Multiplexing the traffic flows of multiple low-speed channels into the traffic flow of a single high-speed channel is a pressing issue. Multiplexing can also be called aggregation, convergence, or merging. Summary of the Invention
[0004] The present application provides a code block processing method, apparatus, device, system, storage medium and program product for multiplexing at least one service code block stream into one multiplexed code block stream for processing.
[0005] In a first aspect, a code block processing method is provided, the method comprising: obtaining at least one business code block stream; obtaining a multiplexed code block stream based on the at least one business code block stream, the multiplexed code block stream comprising a mixed code block and a multiplexed code block, the mixed code block being a code block obtained by scheduling code blocks in at least one business code block stream according to a first scheduling ratio, the multiplexed code block carrying multiplexing information, and the multiplexing information being used to process the multiplexed code block stream.
[0006] This method schedules the code blocks in at least one service code block stream according to a fixed scheduling ratio to obtain a multiplexed code block stream based on the scheduled code blocks, thereby multiplexing at least one service code block stream into a multiplexed code block stream. Because multiplexing is performed directly at the code block granularity, the multiplexing process does not require a frame sealing operation, avoiding the bandwidth waste caused by the frame sealing operation. Compared with multiplexing at the bit granularity, this reduces the complexity of the multiplexing process and improves multiplexing efficiency. In addition, the multiplexed code block stream carries multiplexing information, allowing nodes receiving the multiplexed code block stream to process the multiplexed code block stream based on the multiplexing information, thereby improving the reliability of processing the multiplexed code block stream.
[0007] In one possible implementation, during scheduling of code blocks in at least one service code block stream according to a first scheduling ratio, if a first number of code blocks included in the first service code block stream is less than a second number of code blocks scheduled in the first service code block stream, a third number of placeholder code blocks is inserted. The first service code block stream is a code block stream in the at least one service code block stream, and the third number is the difference between the second number and the first number.
[0008] It should be noted that the code blocks included in the first service code block stream do not include already scheduled code blocks. That is, the first number is the number of remaining code blocks included in the first service code block stream, or the first number refers to the number of code blocks currently included in the first service code block stream. The remaining code blocks included in the first service code block stream or the code blocks currently included in the first service code block stream can both refer to code blocks in the first service code block stream excluding already scheduled code blocks, that is, unscheduled code blocks.
[0009] As a result, when the number of code blocks in the service code block stream does not meet the number of code blocks to be scheduled under the first scheduling ratio, the first scheduling ratio between the service code block streams can be kept constant by inserting placeholder code blocks, thereby ensuring that the code block processing based on the first scheduling ratio is accurate. For example, the service code block stream is accurately decomposed according to the first scheduling ratio during the demultiplexing process.
[0010] In one possible implementation, a method for obtaining at least one service code block stream may include receiving a code block stream transmitted by at least one channel, wherein the code block stream transmitted by at least one channel includes a first code block stream; deleting all idle code blocks in the first code block stream to obtain a first service code block stream, wherein the first service code block stream is a code block stream in at least one service code block stream. If the scheduled code blocks include idle code blocks, the scheduled idle code blocks may be mistakenly deleted during the forwarding process due to the need for frequency offset adjustment, thereby causing the first scheduling ratio between the scheduled code blocks to be destroyed, making it difficult to perform corresponding code block processing according to the first scheduling ratio. For example, the service code block stream is demultiplexed and connected according to the first scheduling ratio. In this method, all idle code blocks in the received code block stream transmitted by at least one channel are deleted, so that the scheduled code blocks do not include idle code blocks, thereby avoiding the occurrence of this problem.
[0011] In one possible implementation, the method further includes inserting idle code blocks into the scheduled code blocks based on a frequency deviation, where the frequency deviation is a frequency deviation between nodes used to transmit the multiplexed code block stream. Optionally, inserting idle code blocks into the scheduled code blocks based on the frequency deviation may include sequentially transmitting the scheduled code blocks to obtain sequentially transmitted code blocks, and inserting the idle code blocks into the sequentially transmitted code blocks.
[0012] This approach supports frequency offset adjustment in the multiplexed block stream by inserting idle blocks, meeting inter-node frequency offset adjustment requirements. Furthermore, if all idle blocks in the received block stream transmitted by at least one channel are deleted, the idle blocks inserted based on the frequency offset can occupy the bandwidth saved by deleting the idle blocks, thereby avoiding the additional bandwidth overhead introduced by inserting idle blocks.
[0013] In one possible implementation, there are at least two idle code blocks, and the Hamming distance between the at least two idle code blocks meets a distance requirement. By using at least two idle code blocks whose Hamming distance meets the distance requirement, if some bits in any of the at least two idle code blocks are erroneous, the at least two idle code blocks can be distinguished based on the other idle code blocks in the at least two idle code blocks, thereby improving the reliability of the idle code blocks and reducing the risk of processing failure of the multiplexed code block stream caused by idle code block errors.
[0014] In one possible implementation, the mixed code block includes a hidden code block obtained by hiding a control code block in at least one service code block stream. The control code block in the at least one service code block stream can be hidden before scheduling the at least one service code block stream, or after scheduling the at least one service code block stream. By hiding the control code block in the at least one service code block stream, forwarding nodes transmitting the multiplexed code block stream are invisible to the control code blocks in the at least one service code block stream, thereby preventing the forwarding nodes from incorrectly processing the control code blocks in the service code block stream.
[0015] In one possible implementation, the multiplexing code block is a first overhead code block, and the multiplexing information is carried in a reserved field of the first overhead code block. The first overhead code block is used to extract the mixed code block from the multiplexing code block stream. The first overhead code block is a code block used to transmit control information in Flexible Ethernet. By extending the first overhead code block to carry the multiplexing information, the additional code block overhead incurred by carrying the multiplexing information is avoided, reducing the implementation complexity of carrying the multiplexing information.
[0016] In one possible implementation, the multiplexing code block is a multiplexing indicator code block, and the multiplexing information is carried in a designated field of the multiplexing indicator code block. In this case, the multiplexing code block stream also includes a second overhead code block, which is used to extract the multiplexing indicator code block and the mixed code block from the multiplexing code block stream. Thus, by using the newly added multiplexing indicator code block to carry the multiplexing information, the multiplexing information can be forwarded and processed along with the mixed code block in the multiplexing indicator code block.
[0017] In one possible implementation, the service block stream in the at least one service block stream is obtained by scheduling at least one sub-service block stream according to the second scheduling ratio. In other words, the service block stream for this multiplexing can be the multiplexed block stream, so that the method can achieve multiple multiplexing.
[0018] In one possible implementation, the first scheduling ratio is determined based on the bandwidth or transmission rate of at least one service code block stream, so that the bandwidth or transmission rate of the at least one service code block stream matches the frequency scheduled according to the first scheduling ratio.
[0019] In one possible implementation, after obtaining the multiplexed block stream, an egress port can be determined based on the first service identifier of the multiplexed block stream, and the multiplexed block stream can be transmitted through the egress port. The transmission rate of the multiplexed block stream is greater than the transmission rate of the at least one service block stream. By multiplexing the at least one service block stream into one multiplexed block stream for transmission, the transmission rate of the at least one service block stream is increased, effectively utilizing the large bandwidth of the egress port and avoiding bandwidth waste.
[0020] In one possible implementation, the multiplexing information includes at least one of a first service identifier or scheduling information for the multiplexed code block stream, and the scheduling information includes at least one of a first scheduling ratio or a second service identifier corresponding to at least one service code block stream. The first service identifier included in the multiplexing information can be used to forward the multiplexed code block stream, and the scheduling information included in the multiplexing information can be used to demultiplex the multiplexed code block stream. Carrying at least one of the first service identifier or scheduling information in the multiplexing information ensures more reliable processing of the multiplexed code block stream.
[0021] In a second aspect, a code block processing method is provided, which includes: obtaining a multiplexed code block stream, the multiplexed code block stream including a mixed code block and a multiplexed code block, the mixed code block being a code block obtained by scheduling code blocks in at least one service code block stream according to a first scheduling ratio, and the multiplexed code block carrying multiplexing information; and processing the multiplexed code block stream according to the multiplexing information.
[0022] In this method, after obtaining a multiplexed code block stream, the multiplexed code block stream can be processed according to the multiplexing information carried by the multiplexing code blocks in the multiplexed code block stream. This achieves the multiplexing of at least one service code block stream into a multiplexed code block stream for processing, and ensures the accuracy of the processing of the multiplexed code block stream through the multiplexing information.
[0023] In one possible implementation, the multiplexing information includes scheduling information, which includes a first scheduling ratio. Processing the multiplexed code block stream based on the multiplexing information may include extracting mixed code blocks from the multiplexed code block stream and demultiplexing at least one service code block stream from the mixed code blocks according to the first scheduling ratio. Thus, demultiplexing of the multiplexed code block stream can be achieved based on the scheduling information.
[0024] In one possible implementation, the multiplexing information includes scheduling information, and the scheduling information includes a second service identifier corresponding to at least one service code block stream; processing the multiplexed code block stream according to the multiplexing information may include determining a first scheduling ratio based on the second service identifier corresponding to at least one service code block stream; extracting a mixed code block from the multiplexed code block stream, and demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio.
[0025] In one possible implementation, demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio may include, if the mixed code block includes idle code blocks, deleting the idle code blocks from the mixed code block; and demultiplexing at least one service code block stream from the mixed code block after deleting the idle code blocks according to the first scheduling ratio. By deleting the idle code blocks from the mixed code block, the service code block stream demultiplexed according to the first scheduling ratio is more accurate.
[0026] In one possible implementation, demultiplexing at least one service code block stream from a mixed code block according to a first scheduling ratio may include: demultiplexing at least one initial code block stream from the mixed code block according to the first scheduling ratio, the at least one initial code block stream including a first initial code block stream; and, if the first initial code block stream includes placeholder code blocks, deleting the placeholder code blocks in the first initial code block stream to obtain a first service code block stream, the first service code block stream being a code block stream in the at least one service code block stream. By deleting the placeholder code blocks, the demultiplexed service code block streams are all service code blocks, and the demultiplexed service code blocks are more accurate.
[0027] In one possible implementation, the mixed code block includes a concealed code block. During demultiplexing of at least one service code block stream from the mixed code block according to the first scheduling ratio, the concealed code block is restored to a control code block. By restoring the control code block, the demultiplexed service code block stream remains unchanged.
[0028] In one possible implementation, the service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to a second scheduling ratio, and the multiplexing information also includes the second scheduling ratio. After demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio, the at least one sub-service code block stream is demultiplexed from the service code block stream according to the second scheduling ratio. Thus, multiple demultiplexing can be achieved using the multiplexing information.
[0029] In one possible implementation, the service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to a second scheduling ratio, and the multiplexing information further includes a third service identifier corresponding to each of the at least one sub-service code block streams. After demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio, a second scheduling ratio is determined based on the third service identifier corresponding to each of the at least one sub-service code block streams. At least one sub-service code block stream is demultiplexed from the service code block stream according to the second scheduling ratio. Thus, multiple demultiplexing can be achieved using the multiplexing information.
[0030] In one possible implementation, the multiplexing information includes a first service identifier of the multiplexed code block stream; and processing the multiplexed code block stream according to the multiplexing information may include forwarding the multiplexed code block stream according to the first service identifier. Thus, forwarding the multiplexed code block stream can be achieved according to the first service identifier.
[0031] In one possible implementation, the multiplexing code block is a first overhead code block, and the multiplexing information is carried in a reserved field of the first overhead code block. Forwarding the multiplexing code block stream based on the first service identifier may include stripping the first overhead code block from the multiplexing code block stream at an ingress port to obtain a mixed code block; sending the mixed code block to an egress port determined based on the first service identifier, inserting a third overhead code block into the mixed code block, and then sending the mixed code block through the egress port, the third overhead code block carrying the multiplexing information. By extending the first overhead code block, the multiplexing information is carried, avoiding the additional code block overhead caused by carrying the multiplexing information and reducing the implementation complexity of carrying the multiplexing information.
[0032] In one possible implementation, the multiplexing code block is a multiplexing indicator code block, the multiplexing information is carried in a designated field of the multiplexing indicator code block, and the multiplexing code block stream also includes a second overhead code block; forwarding the multiplexing code block stream based on the first service identifier may include stripping the second overhead code block from the multiplexing code block stream at an ingress port to obtain a mixed code block including the multiplexing indicator code block and a mixed code block; sending the mixed code block to an egress port determined based on the first service identifier, inserting the fourth overhead code block into the mixed code block, and then sending the mixed code block through the egress port. The multiplexing information is carried by the multiplexing indicator code block, so that the multiplexing information can be forwarded and processed along with the mixed code block in the multiplexing indicator code block, thereby avoiding duplication of the multiplexing information from the ingress port to the egress port.
[0033] In one possible implementation, obtaining a multiplexed code block stream may include receiving a multiplexed code block stream, the multiplexed code block stream also including idle code blocks inserted based on a frequency deviation; and processing the multiplexed code block stream based on the multiplexing information may include adjusting the frequency deviation of the multiplexed code block stream based on the frequency deviation. For example, when the arrival rate of the multiplexed code block stream is low, idle code blocks may be inserted to avoid interruption; when the arrival rate of the multiplexed code block stream is high, idle code blocks may be deleted from the multiplexed code block stream to avoid code block backlog. The frequency deviation adjustment allows the forwarding rate of the multiplexed code block stream to adapt to the forwarding node.
[0034] In a third aspect, a code block processing device is provided, comprising: a transceiver module for performing operations related to reception and / or transmission in the first aspect or any possible implementation of the first aspect; and a processing module for performing operations other than the operations related to reception and / or transmission in the first aspect or any possible implementation of the first aspect. Alternatively, a transceiver module for performing operations related to reception and / or transmission in the second aspect or any possible implementation of the second aspect; and a processing module for performing operations other than the operations related to reception and / or transmission in the second aspect or any possible implementation of the second aspect.
[0035] In a possible implementation, the transceiver module includes a receiving module and / or a sending module. The receiving module is used to perform reception-related operations, and the sending module is used to perform sending-related operations.
[0036] In the case where the transceiver module is used to perform operations related to reception and / or transmission in the first aspect or any possible implementation of the first aspect, and the processing module is used to perform operations other than the operations related to reception and / or transmission in the first aspect or any possible implementation of the first aspect, the processing module is used to obtain at least one business code block stream; based on the at least one business code block stream, a multiplexed code block stream is obtained, the multiplexed code block stream includes a mixed code block and a multiplexed code block, the mixed code block is a code block obtained by scheduling the code blocks in at least one business code block stream according to the first scheduling ratio, the multiplexed code block carries multiplexing information, and the multiplexing information is used to process the multiplexed code block stream.
[0037] In one possible embodiment, the processing module is further used to insert a third number of placeholder code blocks if a first number of code blocks included in the first business code block stream is less than a second number of code blocks scheduled in the first business code block stream during a process of scheduling code blocks in at least one business code block stream according to a first scheduling ratio, wherein the first business code block stream is a code block stream in at least one business code block stream, and the third number is the difference between the second number and the first number.
[0038] In one possible implementation, a transceiver module is configured to receive a code block stream transmitted by at least one channel, wherein the code block stream transmitted by at least one channel includes a first code block stream; and a processing module is configured to delete all idle code blocks in the first code block stream to obtain a first service code block stream, wherein the first service code block stream is a code block stream in the at least one service code block stream.
[0039] In one possible embodiment, the processing module is also used to insert idle code blocks in the scheduled code blocks based on the frequency deviation, where the frequency deviation is the frequency deviation between the nodes used to transmit the multiplexed code block stream, the number of idle code blocks is at least two, and the Hamming distance between at least two idle code blocks meets the distance requirement.
[0040] In a possible implementation, the mixed code block includes a hidden code block, and the hidden code block is obtained by hiding a control code block in at least one service code block stream.
[0041] In a possible implementation, the multiplexed code block is a first overhead code block, the multiplexing information is carried in a reserved field of the first overhead code block, and the first overhead code block is used to extract a mixed code block from the multiplexed code block stream.
[0042] In one possible implementation, the multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block, which is used to extract the multiplexing indication code block and the mixed code block in the multiplexing code block stream.
[0043] In a possible implementation manner, the service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to the second scheduling ratio.
[0044] In a possible implementation, the first scheduling ratio is determined based on the bandwidth or transmission rate of at least one service code block flow.
[0045] In a possible implementation, the transceiver module is further configured to determine an egress port based on the first service identifier of the multiplexed code block stream, and send the multiplexed code block stream through the egress port, wherein the transmission rate of the multiplexed code block stream is greater than the transmission rate of at least one service code block stream.
[0046] In a possible implementation, the multiplexing information includes at least one of a first service identifier or scheduling information of the multiplexed code block stream, and the scheduling information includes at least one of a first scheduling ratio or a second service identifier corresponding to at least one service code block stream.
[0047] In the case where the transceiver module is used to perform operations related to reception and / or transmission in the second aspect or any possible implementation of the second aspect, and the processing module is used to perform operations other than the operations related to reception and / or transmission in the second aspect or any possible implementation of the second aspect, the processing module is used to obtain a multiplexed code block stream, the multiplexed code block stream includes a mixed code block and a multiplexed code block, the mixed code block is a code block obtained by scheduling the code blocks in at least one service code block stream according to a first scheduling ratio, and the multiplexed code block carries multiplexing information; the multiplexed code block stream is processed according to the multiplexing information.
[0048] In one possible implementation, the multiplexing information includes scheduling information, and the scheduling information includes a first scheduling ratio; the processing module is used to extract a mixed code block from the multiplexed code block stream, and demultiplex at least one service code block stream from the mixed code block according to the first scheduling ratio.
[0049] In one possible implementation, the processing module is configured to, when the mixed code block includes an idle code block, delete the idle code block in the mixed code block; and demultiplex at least one service code block stream from the mixed code block after the idle code block is deleted according to the first scheduling ratio.
[0050] In one possible implementation, a processing module is configured to demultiplex at least one initial code block stream from a mixed code block according to a first scheduling ratio, wherein the at least one initial code block stream includes a first initial code block stream; and when the first initial code block stream includes placeholder code blocks, delete the placeholder code blocks in the first initial code block stream to obtain a first service code block stream, wherein the first service code block stream is a code block stream in the at least one service code block stream.
[0051] In a possible implementation, the mixed code block includes a hidden code block, and in the process of demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio, the hidden code block is restored to a control code block.
[0052] In one possible implementation, the service code block stream in at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to a second scheduling ratio, and the scheduling information also includes the second scheduling ratio; the processing module is also used to demultiplex at least one sub-service code block stream from the service code block stream according to the second scheduling ratio.
[0053] In a possible implementation, the multiplexing information includes a first service identifier of the multiplexed code block stream; and the processing module is configured to perform forwarding processing on the multiplexed code block stream according to the first service identifier.
[0054] In one possible implementation, the multiplexing code block is a first overhead code block, and the multiplexing information is carried in a reserved field of the first overhead code block; the processing module is used to strip the first overhead code block in the multiplexing code block stream at the input port to obtain a mixed code block; the transceiver module is used to send the mixed code block to the output port determined based on the first service identifier, and send it through the output port after inserting a third overhead code block, where the third overhead code block carries the multiplexing information.
[0055] In one possible implementation, the multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block; the processing module is used to strip off the second overhead code block in the multiplexing code block stream at the input port to obtain a multiplexing indication code block and a mixed code block; the transceiver module is used to send the multiplexing indication code block and the mixed code block to the output port determined based on the first service identifier, and send them through the output port after inserting the fourth overhead code block.
[0056] In a possible implementation, the transceiver module is configured to receive a multiplexed code block stream, which further includes idle code blocks inserted based on a frequency deviation; and the processing module is configured to perform frequency deviation adjustment on the multiplexed code block stream based on the frequency deviation.
[0057] In a fourth aspect, a network device is provided, comprising: a processor, the processor being coupled to a memory, the memory storing at least one program instruction or code, the at least one program instruction or code being loaded and executed by the processor, so that the network device implements the code block processing method described in any one of the first or second aspects above.
[0058] Optionally, there are one or more processors and one or more memories.
[0059] Optionally, the memory may be integrated with the processor, or the memory may be provided separately from the processor.
[0060] In the specific implementation process, the memory can be a non-transitory memory, such as a read-only memory (ROM), which can be integrated on the same chip as the processor or be set on different chips. This application does not limit the type of memory and the setting method of the memory and the processor.
[0061] In a fifth aspect, a communication device is provided, comprising: a transceiver, a memory, and a processor. The transceiver, the memory, and the processor communicate with each other via an internal connection path; the memory is used to store instructions; the processor is used to execute the instructions stored in the memory to control the transceiver to receive signals and to control the transceiver to send signals; and when the processor executes the instructions stored in the memory, the communication device executes the code block processing method according to the first aspect or any possible implementation of the first aspect, or executes the code block processing method according to the second aspect or any possible implementation of the second aspect.
[0062] In a sixth aspect, a code block processing system is provided, the code block processing system comprising a first communication device and a second communication device;
[0063] The first communication device is used to execute the code block processing method described in the first aspect or any possible implementation of the first aspect, and the second communication device is used to execute the code block processing method described in the second aspect or any possible implementation of the second aspect.
[0064] In the seventh aspect, a computer-readable storage medium is provided, wherein the storage medium stores at least one instruction, and the instruction is loaded and executed by a processor to enable the computer to implement the code block processing method in the above-mentioned first aspect or any possible implementation of the first aspect, or to implement the code block processing method in the above-mentioned second aspect or any possible implementation of the second aspect.
[0065] In an eighth aspect, a computer program (product) is provided, which includes: computer program code, which, when executed by a computer, enables the computer to execute the code block processing method in the above aspects.
[0066] In a ninth aspect, a chip is provided, comprising a processor for calling and executing instructions stored in a memory from the memory, so that a communication device equipped with the chip executes the code block processing method in the above aspects.
[0067] In the tenth aspect, another chip is provided, including: an input interface, an output interface, a processor and a memory, wherein the input interface, the output interface, the processor and the memory are connected through an internal connection path, and the processor is used to execute the code in the memory. When the code is executed, the processor is used to execute the code block processing method in the above aspects.
[0068] It should be understood that the beneficial effects achieved by the technical solutions of the second to tenth aspects of this application and the corresponding possible implementation methods can be referred to the technical effects of the first aspect and its corresponding possible implementation methods mentioned above, and will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0069] FIG1 is a schematic diagram of an open system interconnect (OSI) model and a flexible Ethernet (FlexE) framework provided in an embodiment of the present application;
[0070] FIG2 is a transmission diagram of a slicing packet network (SPN) provided by an embodiment of the present application;
[0071] FIG3 is a schematic diagram of a large- and small-size channel docking provided by the related art;
[0072] FIG4 is a schematic diagram of a large- and small-size channel docking according to an embodiment of the present application;
[0073] FIG5 is a schematic diagram of a data multiplexing process in a fine grain MTN (fgMTN) provided by the related art;
[0074] FIG6 is a schematic diagram of a multiplexing transmission process provided in an embodiment of the present application;
[0075] FIG7 is a schematic diagram of the structure of a network device provided in an embodiment of the present application;
[0076] FIG8 is a schematic diagram of the deployment of a multiplexing module and a demultiplexing module provided in an embodiment of the present application;
[0077] FIG9 is a flowchart of a code block processing method provided in an embodiment of the present application;
[0078] FIG10 is a schematic diagram of a format of a placeholder code block provided in an embodiment of the present application;
[0079] FIG11 is a schematic diagram of the format of another placeholder code block provided in an embodiment of the present application;
[0080] FIG12 is a schematic diagram of a format of an idle code block provided in an embodiment of the present application;
[0081] FIG13 is a schematic diagram of the format of another idle code block provided in an embodiment of the present application;
[0082] FIG14 is a schematic diagram of a format of a first overhead code block provided in an embodiment of the present application;
[0083] FIG15 is a schematic diagram of the format of a multiplexing indication code block provided in an embodiment of the present application;
[0084] FIG16 is a schematic diagram of the format of another multiplexing indication code block provided in an embodiment of the present application;
[0085] FIG17 is a system block diagram of a multiplexing process provided by an embodiment of the present application;
[0086] FIG18 is a flowchart of a multiplexing process provided by an embodiment of the present application;
[0087] FIG19 is a flowchart of another code block processing method provided in an embodiment of the present application;
[0088] FIG20 is a system block diagram of a forwarding processing process provided by an embodiment of the present application;
[0089] FIG21 is a flowchart of a forwarding process provided by an embodiment of the present application;
[0090] FIG22 is a system block diagram of a demultiplexing process provided by an embodiment of the present application;
[0091] FIG23 is a flowchart of a demultiplexing process provided by an embodiment of the present application;
[0092] FIG24 is a system block diagram of a multiplexing process and a demultiplexing process provided by an embodiment of the present application;
[0093] FIG25 is a schematic diagram of a scenario of a multiple-reconnection process provided by an embodiment of the present application;
[0094] FIG26 is a schematic diagram of a format of a service identifier provided in an embodiment of the present application;
[0095] FIG27 is a schematic structural diagram of a code block processing device provided in an embodiment of the present application;
[0096] FIG28 is a schematic diagram of the structure of a network device provided in an embodiment of the present application;
[0097] Figure 29 is a structural diagram of another network device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0098] In order to make the objectives, technical solutions and advantages of this application clearer, the implementation methods of this application will be further described in detail below with reference to the accompanying drawings.
[0099] In the field of communications technology, the transmission rates of transmission channels continue to increase, which can lead to problems connecting channels with different transmission rates within a communication network. For example, FlexE technology is a lightweight enhancement to traditional Ethernet that enables service isolation and network slicing. FlexE technology divides the bandwidth of an Ethernet interface into multiple data-carrying time slots, providing hard isolation between different slots. These slots can also be called channels.
[0100] As shown in Figure 1, the OSI model consists of the physical layer, data link layer, network layer, transport layer, session layer, presentation layer, and application layer, from lowest to highest. The application layer is the layer that users interact with directly, providing various network services and applications. The presentation layer is responsible for data formatting and conversion, ensuring that data from different systems can be correctly interpreted and understood, and handles data encryption and compression. The session layer manages sessions between different hosts, establishing, maintaining, and terminating communication connections to ensure reliable data transmission. The transport layer is responsible for end-to-end communication, providing functions such as data segmentation, flow control, and error recovery. The network layer is responsible for data routing and forwarding, transmitting data packets from the source host to the destination host. The data link layer organizes the raw bit stream into frames and identifies devices using physical addresses, which are also known as media access control (MAC) addresses. The data link layer can also be referred to as the MAC layer.
[0101] The physical (PHY) layer is the lowest layer of the network, responsible for transmitting the raw bit stream and transferring data from one device to another. It involves physical characteristics such as voltage and optical signals. The physical layer includes the physical coding sublayer (PCS), the physical medium attachment (PMA), and the physical media dependent (PMD). The PCS primarily includes line coding and cyclic redundancy check (CRC) encoding; the PMA integrates the SERDES, a serial-to-parallel converter primarily used for serialization and deserialization; and the PMD implements optical-to-electrical / electrical-to-optical conversion.
[0102] The core functionality of FlexE technology is implemented through a new intermediate layer, the FlexE shim, between the Ethernet L2 and L1 layers. The FlexE shim is also called the L1.5 layer. The L2 layer is the data link layer, and the L1 layer is the physical layer. As shown in Figure 1, the FlexE shim combines multiple Ethernet interfaces into a FlexE group. Ethernet interfaces are represented by PHYs. A FlexE group consists of PHY1 through PHYm, where m is a positive integer greater than 2. The FlexE shim divides each PHY in a FlexE group into multiple slots using time division multiplexing (TDM). The group of slots corresponding to each PHY is called a calendar. The Ethernet frames in the original data stream of the FlexE client are segmented into data blocks, for example, 64-bit / 66-bit encoded data blocks. The segmented data blocks are distributed through the FlexE shim to specific slots of specific PHYs in the FlexE group. Each FlexE client can specify one or more slots for exclusive use, thereby obtaining a certain bandwidth allocation and achieving conflict-free, hard isolation, and deterministic transmission with other FlexE clients.
[0103] For networks developed based on FlexE technology, such as SPNs or metropolitan transport networks (MTNs), FlexE channel cross-linking and dynamic, flexible operations administration and maintenance (OAM) capabilities are added to the Ethernet interface based on FlexE slicing, thereby enabling the creation of end-to-end, resource-exclusive transmission channels from the network ingress to the network egress, i.e., end-to-end network slicing. The FlexE channel cross-linking function is also known as the channel L1.5 layer forwarding function, which refers to forwarding based on bit blocks at the Ethernet physical layer. This eliminates the traditional L2 / L3 layer forwarding process of first restoring the L1 layer code blocks to packets, then forwarding the packets, and then converting the packets into code blocks, thereby reducing forwarding latency. The L3 layer is the network layer.
[0104] For example, for a 100 Gigabit Ethernet (GE) Ethernet interface, FlexE can be divided into 20 slots, each with a bandwidth of 5 Gigabits per second (Gbps). The SPN network shown in Figure 2 includes edge nodes, backbone nodes, and edge nodes. The nodes are connected via PHY groups, which include multiple 5 Gbps channels. Each network node can implement L1.5 forwarding based on the 5 Gbps channel.
[0105] As Ethernet interfaces advance toward 800GE / 1.6 terabit Ethernet (TE), FlexE slicing granularity is increasing from 5Gbps to 25Gbps and even 100Gbps. 800GE / 1.6TE high-bandwidth interfaces are often deployed primarily in backbone nodes, while other edge nodes continue to use 100GE / 200GE / 400GE low-bandwidth interfaces and maintain 5Gbps slicing granularity for a long time. This leads to the problem of interfacing two different channel specifications (5Gbps and 25Gbps) in SPN / MTN networks.
[0106] Related technologies solve the problem of interoperability between large and small granularity channels by normalizing to a basic granularity (or minimum granularity). As shown in Figure 3, taking a 5Gbps channel as an example, even if a backbone node uses a 25Gbps FlexE slice granularity for a high-bandwidth interface, in order to interface with the 5Gbps channel, the 25Gbps channel is further subdivided into multiple 5Gbps channels. This ensures that each 5Gbps service occupies a dedicated 5Gbps hard channel across the entire network end-to-end, meaning that the entire network is connected by small channels with a 5Gbps granularity.
[0107] However, this technology requires backbone nodes to parse each 5Gbps service and then perform switching and forwarding for each 5Gbps service. Consequently, backbone nodes face a significant amount of channel crosstalk and connection management, making the scale of backbone nodes a bottleneck for overall network capacity and, in turn, limiting access capacity. While this solves the problem of connecting large and small granularity channels, it also leads to an excessively large scale of backbone node operations and management.
[0108] In addition to the aforementioned issues with interoperating large and small granularity channels, the rapid growth of SPN networks has also led to the formation of a large number of 5Gbps channel connections at backbone nodes, posing challenges to network operation and maintenance management at backbone nodes. Therefore, it is necessary to multiplex multiple service channels along the same path into a single service channel to reduce the cross-channel management scale at backbone nodes.
[0109] As shown in Figure 4, the edge node at the network entrance multiplexes the services of multiple low-speed channels (for example, 5Gbps channels) into a single high-speed channel (for example, 25Gbps). The backbone node performs L1.5 layer forwarding through the high-speed channel, and the edge node at the network exit demultiplexes the services of multiple low-speed channels from the single high-speed channel. Multiplexing can also be referred to as aggregation, convergence, or merging, which means aggregating at least one low-speed service into one high-speed service, or allowing multiple low-speed services to reuse the transmission resources or processing resources belonging to a single high-speed service. Demultiplexing can also be referred to as deaggregation, deconvergence, or splitting. Demultiplexing is the reverse process of multiplexing, which means decomposing and recovering at least one low-speed service from a single high-speed service.
[0110] fgMTN utilizes multiplexing technology. It further subdivides the 5Gbps channel in the MTN into 480 10Mbps channels. The remaining 200Mbps of bandwidth is used as overhead. fgMTN multiplexes and demultiplexes the 480 10Mbps channels with the single 5Gbps channel. The fgMTN multiplexing process is shown in Figure 5. During each multiplexing process, each 10Mbps service provides two 64b / 66b-encoded blocks, with a fixed block length of 66 bits. This means that the 480 10Mbps services provide a total of 960 66-bit blocks, which fit neatly into the 64-bit payload field of 990 data (D) blocks. A D block consists of 66 bits, with the first two bits forming the block header and the remaining 64 bits forming the payload field.
[0111] After 960 66-bit code blocks are sequentially placed into the 64-bit payload field of 990 D code blocks, a start (S) code block and a tail (T) code block are added to the head and tail of the loaded 990 D code blocks, respectively. The S code block indicates the beginning of an Ethernet frame, and the T code block indicates the end of an Ethernet frame. Thus, by loading the encapsulated frame, the code blocks from 480 10Mbps services are hidden within the 990 data code blocks, forming a fixed code block combination of S+990*D+T, also known as a multiplex frame. The multiplex frame can be viewed as a single Ethernet service transmitted over a 5Gbps channel. That is, the 5Gbps channel is unaware of whether the code blocks it carries are from a single service or multiple services.
[0112] However, in the multiplexing technology used by fgMTN, the 66-bit code block for each service is loaded into the 64-bit payload field of the D code block of the multiplexing frame. Due to the length mismatch, the code block for each service does not correspond one-to-one with the D code block of the multiplexing frame. This results in the need for bit-granular splicing within the multiplexing frame during multiplexing, and the need to slide bits from the multiplexing frame to recover the code blocks for each service during demultiplexing. This results in high processing complexity and large cache overhead. In addition, the introduction of 64-bit payload loading, S code blocks, and T7 code blocks during the frame sealing process leads to high bandwidth overhead, resulting in a single 5Gbps channel only supporting the multiplexing of 480 10Mbps channels, wasting 200Mbps of bandwidth.
[0113] The embodiment of the present application provides a code block processing method, in which the sending end node does not need to load and seal frames, and can multiplex at least one low-speed service data into one high-speed service data for transmission, thereby reducing the processing scale of the intermediate forwarding node, and can demultiplex the low-speed service data at the receiving end node. For example, as shown in Figure 6, the code block streams of at least one service are first merged into one code block stream by a multiplexing method, and then sent to a transmission / processing unit. The code block streams of at least one service are multiplexed in the same transmission / processing unit. After processing, the code block streams of each service are restored by a demultiplexing method.
[0114] This data transmission method can be applied to any scenario where at least one data stream is merged and processed, such as the interconnection of transmission channels of different specifications in the aforementioned SPN / MTN network, or the scenario where at least one code block is sent to a decoder of a single input / output interface for decoding, or the scenario where at least one fixed-size photo is sent to a graphics processor for processing and then returned along the same route. Taking the image recognition scenario of subway gates as an example, multiple gates send facial photos to a single graphics processor for processing via a convergence switch. The convergence switch multiplexes the facial photos from multiple gates into a single photo stream. The network forwards the photo stream, and the graphics processor demultiplexes the photo stream, recovering the facial photos of each gate for image recognition.
[0115] In the scenario where this method is applied to the above-mentioned SPN / MTN network, referring to Figure 1, in the FlexE multiplexing scenario, a FlexE multiplexing layer may be included between the MAC layer and the FlexE shim. The FlexE multiplexing layer multiplexes multiple low-speed service code block streams into one high-speed service code block stream, which is then directly processed by the FlexE shim.
[0116] The code block processing method provided in the embodiment of the present application can be executed by a communication device. The communication device can be a network device such as a switch, a router, etc., such as the network device shown in Figure 7 or Figure 8 below; it can also be a component of the network device, and the component can be a single board or line card on the network device, or a functional module on the network device, such as the interface board or main control switch board shown in Figure 7, or the multiplexing module or demultiplexing module shown in Figure 8; it can also be a chip used to implement the method of the present application, and the embodiment of the present application does not make specific limitations. When the communication device is a chip, the transceiver module used to implement the method can be, for example, the interface circuit of the chip, and the processing module can be a processing circuit with processing functions in the chip. The connection method between communication devices includes but is not limited to direct connection via Ethernet cable or optical cable.
[0117] Refer to Figure 7, which is a schematic diagram of a network device provided in an embodiment of the present application. The network device includes an interface board and a main control switching board. The interface board includes a client-side interface chip and a network-side interface chip, and the main control switching board includes a switching network chip. The interface board is used to provide various service interfaces and implement data packet forwarding, and the main control switching board is used to control and manage the various components in the network device and implement pipe crossing between different service interfaces. The network device shown in Figure 7 can be used to execute the data transmission method provided in an embodiment of the present application. The network device can be any node in Figures 2 to 4, such as an edge node or a backbone node. As shown in Figure 7, the network device can be a box-type or frame-type switch or router in an SPN / MTN network. The multiplexing / demultiplexing module can be deployed by upgrading or replacing the interface board, specifically by upgrading the interface chip through software or refreshing the field-programmable gate array (FPGA) logic through hardware, thereby supporting the multiplexing / demultiplexing functions. The multiplexing module is used to implement multiplexing processing, and the demultiplexing module is used to implement demultiplexing processing.
[0118] Optionally, the multiplexing / demultiplexing module can be deployed at the inlet or the outlet of the network device, or at both the inlet and the outlet. The inlet can be an inbound port, and the outlet can be an outbound port. For example, as shown in FIG8(a), the multiplexing module is deployed at the inlet of the network device. Multiple FlexE modules on the inlet side obtain at least one low-speed service code block stream, and the multiplexing module combines the at least one service code block stream into a high-speed service code block stream, which is then sent to the channel cross-connect module for L1.5 layer forwarding. This method of combining first and then cross-connecting can reduce the number of services that cross channels during the L1.5 layer forwarding process, thereby reducing the cross-connection scale and the number of forwarding table entries. As shown in FIG8(b), the demultiplexing module is deployed at the inlet of the network device. The FlexE module on the inlet side obtains a high-speed service code block stream, and the demultiplexing module recovers at least one low-speed service code block stream. The at least one low-speed service code block stream is then cross-forwarded separately and sent to different destination ports of the network device.
[0119] As shown in Figure 8(c), the multiplexing module is deployed at the egress of the network device. This means that after at least one low-speed service code block stream is cross-channeled and sent to the same egress port, the at least one low-speed service code block stream is merged into a high-speed service code block stream and transmitted via the FlexE high-bandwidth channel. As shown in Figure 8(d), the demultiplexing module is deployed at the egress of the network device. This means that the high-speed service code block stream first completes channel cross-channeling before arriving at the same egress port. The high-speed service code block stream is then split into individual low-speed service code block streams and transmitted separately via the FlexE low-bandwidth channel. In addition to the four deployment methods shown in Figure 8, multiplexing units or demultiplexing units can also be deployed simultaneously on both the ingress and egress sides. Alternatively, some network devices in the network can deploy multiplexing modules on the ingress or egress side, while other network devices can deploy demultiplexing modules on the ingress or egress side.
[0120] See Figure 9, which is a flowchart of a data transmission method provided in an embodiment of the present application. This method is described using a first communication device executing the method as an example. The first communication device may be the network device shown in Figure 7 or Figure 8. As shown in Figure 9, the code block processing method includes, but is not limited to, the following steps 901 and 902.
[0121] Step 901: Obtain at least one service code block stream.
[0122] In an embodiment of the present application, any one of the at least one service code block streams includes a plurality of code blocks arranged in sequence. A code block is a data unit transmitted over an Ethernet physical layer link. The encoding method of the code block includes, but is not limited to, a bit block encoding method of a fixed-length code block such as 8b / 10b, 64b / 66b, 256b / 257b, or 512b / 513b. Optionally, the at least one service code block stream may be obtained by receiving the at least one service code block stream from the at least one service via multiple or single channels, or by generating the at least one service code block stream for the at least one service via an upper-layer application.
[0123] In one possible implementation, the sum of the transmission rates of at least one service code block stream is less than or equal to the transmission rate of the transmission channel of the first communication device. For example, taking the at least one service code block stream as three service code block streams, if the transmission channel of the first communication device is a 20 Gbps time slot, the transmission rates corresponding to the three service code block streams may be 5 Gbps, 10 Gbps, and 5 Gbps, respectively. Alternatively, the transmission rates corresponding to the three service code block streams may be 5 Gbps, 5 Gbps, and 5 Gbps, respectively. If the transmission channel of the first communication device is a 5 Gbps time slot, the transmission rates corresponding to the three service code block streams are 2 Gbps, 1 Gbps, and 1 Gbps, respectively.
[0124] Step 902: Obtain a multiplexed code block stream based on at least one service code block stream. The multiplexed code block stream includes mixed code blocks and multiplexed code blocks. The mixed code blocks are code blocks obtained by scheduling code blocks in at least one service code block stream according to a first scheduling ratio. The multiplexed code blocks carry multiplexing information, and the multiplexing information is used to process the multiplexed code block stream.
[0125] In an embodiment of the present application, the first scheduling ratio can be determined based on the bandwidth or transmission rate between at least one business code block stream, so that the bandwidth or transmission rate of at least one business code block stream matches the frequency scheduled according to the first scheduling ratio. For example, the transmission rates of three business code block streams are 5Gbps, 10Gbps, and 5Gbps, respectively, then the first scheduling ratio between the three business code block streams is 1:2:1. The code blocks in at least one business code block stream are scheduled according to the first scheduling ratio, that is, 1 code block in the first business code block stream, 2 code blocks in the second business code block stream, and 1 code block in the third business code block stream are scheduled respectively, and this scheduling process is repeated. Since the order of the scheduled code blocks determines the multiplexing mode between at least one business code block stream, if the first scheduling ratio is fixed, then the multiplexing mode between at least one business code block stream in the multiplexed code block stream is fixed. Exemplarily, if the first scheduling ratio is 1:2:1, then the multiplexing mode is 1:2:1.
[0126] In the process of scheduling the code blocks in at least one business code block stream according to the first scheduling ratio, if the first number of code blocks included in the first business code block stream is less than the second number of code blocks in the scheduled first business code block stream, a third number of placeholder code blocks is inserted, wherein the first business code block stream is the code block stream in at least one business code block stream, and the third number is the difference between the second number and the first number. It should be noted that the code blocks included in the above-mentioned first business code block stream do not include the code blocks that have been scheduled, that is, the first number is the number of remaining code blocks included in the first business code block stream, or the first number refers to the number of code blocks currently included in the first business code block stream. The remaining code blocks included in the first business code block stream or the code blocks currently included in the first business code block stream can refer to the code blocks in the first business code block stream excluding the code blocks that have been scheduled, that is, the code blocks that have not been scheduled. For example, the first service code block stream includes 10 code blocks, 3 code blocks have been adjusted, and the remaining code blocks are 7. The first number is 7. If the second number is 8, the third number is 1, and 1 placeholder code block is inserted.
[0127] As a result, when the number of code blocks in any business code block stream does not meet the number of code blocks to be scheduled under the first scheduling ratio, the first scheduling ratio between at least one business code block stream can be kept constant by inserting placeholder code blocks, thereby ensuring that the code block processing based on the first scheduling ratio is accurate. For example, the business code block stream can be accurately decomposed according to the first scheduling ratio during the demultiplexing process.
[0128] For example, in the process of scheduling code blocks in 3 service code block streams according to 1:2:1, if the first service code block stream includes 1 code block, then 1 code block in the first service code block stream is scheduled; if the second service code block stream includes 1 code block, then 1 code block in the second service code block stream is scheduled, and 1 placeholder code block is inserted, and the placeholder code block plays the role of replacing 1 code block in the second service code block stream; if the third service code block stream includes If the first service code block stream contains one code block, one code block in the third service code block stream is scheduled. Continuing, if the first service code block stream contains one code block, one code block in the first service code block stream is scheduled. If the second service code block stream contains two code blocks, two code blocks in the second service code block stream are scheduled. If the third service code block stream contains no code blocks, one placeholder code block is inserted to replace one code block in the third service code block stream. Code blocks in at least one service code block stream are continuously scheduled according to this scheduling method.
[0129] In one possible implementation, code blocks in at least one service code block stream are respectively placed in at least one code block queue, and the code blocks in the at least one service code block stream are scheduled according to a first scheduling ratio, that is, code blocks are scheduled from the at least one code block queue according to the first scheduling ratio. During the process of scheduling code blocks in the at least one code block queue according to the first scheduling ratio, if any code block queue does not contain any code block during the scheduling, a placeholder code block is inserted.
[0130] Optionally, the code block type of the placeholder code block is the same as the code block type in the service code block stream. The embodiment of the present application is described using the 64b / 66b bit block encoding method as an example, that is, the code blocks involved in the embodiment of the present application are all 64b / 66b bit blocks. In a 64b / 66b bit block, the first 2 bits are synchronization header (SH) bits, and the last 64 bits are payload bits, which can be used to carry payload data, etc.
[0131] Among them, if the synchronization header is "01", it means that the last 64 bits are all data, that is, the last 64 bits are 8 8-bit data bytes; if the synchronization header is "10", it means that the last 64 bits are a mixture of data and control information, where the 8 bits immediately following the synchronization header are the type field, and the 56 bits following the type field are the payload field, which is a mixture of control information or data. For example, when the field value of the type field is 0x1E, the 56 bits include 8 7-bit control bytes, each of which is used to carry a piece of control information; when the field value of the type field is 0x4B, the 56 bits include 3 8-bit data bytes, a 4-bit command (order, O) byte, and 4 7-bit control bytes, each of which is used to carry data information, and each control byte is used to carry control information.
[0132] The embodiment of the present application does not limit the format of the placeholder code block, and it only needs to be distinguishable from the existing control code block. For example, a schematic diagram of the format of the placeholder code block can be shown in Figure 10. Among them, the synchronization header is "10", the 8-bit type field is 0x1E, indicating that the type of the placeholder code block is a control (control, C) code block, and the values of the 8 control bytes of 7 bits are all 0x09. Therefore, by defining the values of 0x1E and 8 0x09s, the uniqueness of the C code block can be guaranteed, that is, the uniqueness of the placeholder code block can be guaranteed.
[0133] Alternatively, the format diagram of the placeholder code block can also be shown in Figure 11. Among them, the synchronization header is "10", the 8-bit type field is 0x4B, indicating that the type of the placeholder code block is an O code block, and 0x9 is a newly defined O code value. Therefore, by defining the two values 0x4B and 0x9, the uniqueness of the O code block can be guaranteed, that is, the uniqueness of the placeholder code block can be guaranteed. Optionally, of the three 8-bit data bytes, the first data byte, that is, the 11th to 18th bits, has a value of 0x00, and the last two data bytes are reserved (res) fields, which are used to carry other data information when needed later; the last four 7-bit control bytes, that is, the last 28 bits, have a value of 0x000_0000.
[0134] After the code blocks are obtained through the above scheduling method, the mixed code blocks can be obtained according to the scheduled code blocks. Optionally, the methods of obtaining the mixed code blocks according to the scheduled code blocks include but are not limited to the following.
[0135] Method 1: directly use the scheduled code blocks as mixed code blocks.
[0136] In this method, code blocks scheduled from at least one service code block stream are directly used as mixed code blocks. For example, the scheduled code blocks are transmitted sequentially, and the sequentially transmitted code blocks are used as mixed code blocks. The mixed code blocks include service code blocks sorted according to the first scheduling ratio, or the mixed code blocks include service code blocks and placeholder code blocks sorted according to the first scheduling ratio. This method is simple to operate and easy to implement. For example, according to the above scheduling process, the scheduled code blocks are code block 11 in the first service code block stream, code block 21 and placeholder code blocks in the second service code block stream, code block 31 in the third service code block stream, code block 12 in the first service code block stream, code block 22 and code block 23 in the second service code block stream, and placeholder code blocks in the third service code block stream. The mixed code blocks then include code block 11, code block 21, placeholder code blocks, code block 31, code block 12, code block 22, code block 23, and placeholder code blocks.
[0137] In the second method, idle code blocks are inserted into the scheduled code blocks based on the frequency deviation, where the frequency deviation is the frequency deviation between nodes used to transmit the multiplexed code block stream.
[0138] Wherein, a node refers to any network device in a transmission network, such as an edge node or backbone node shown in Figures 2 to 4, and the first communication device is a node in the network. Since a certain frequency deviation is allowed between Ethernet nodes, the frequency deviation can be referred to as frequency deviation. For example, the maximum frequency deviation allowed by a 50GE / 100GE / 200GE / 400GE Ethernet interface is ±100 parts per million (ppm). Therefore, the code block stream needs to have a certain scalability, that is, it can support the addition or deletion of a small number of idle code blocks to adapt to the bandwidth deviation caused by frequency deviation between nodes. The above-mentioned need to delete and / or add idle code blocks due to frequency differences between nodes is referred to as frequency deviation adjustment demand. In other words, due to the frequency deviation adjustment demand, the node needs to delete and / or add idle code blocks. Therefore, by inserting idle code blocks into the spliced code block stream, the mixed code block can support the addition or deletion of idle code blocks, that is, the mixed code block supports frequency deviation adjustment, which can meet the frequency deviation adjustment demand between nodes.
[0139] For example, when the sender's sending rate is faster than the receiver's, the receiver's cache data write rate will be faster than the read rate, causing a buffer overflow in the long run. Therefore, the receiver needs to remove idle code blocks to prevent the receiver's cache from overflowing. When the sender's sending rate is slower than the receiver's sending rate, the receiver's cache write rate will be slower than the read rate, causing a buffer empty in the long run. Therefore, the receiver needs to add idle code blocks to prevent the receiver's cache from emptying.
[0140] In one possible implementation, an idle code block is inserted into a scheduled code block based on a frequency deviation to obtain a mixed code block. The method of inserting an idle code into a sequentially transmitted code block stream based on a frequency deviation may include determining an insertion period based on a frequency deviation; and inserting an idle code into the scheduled code block stream according to the insertion period. Thus, in addition to the service code blocks and / or placeholder code blocks sorted according to the first scheduling ratio, the mixed code block also includes an idle code block inserted based on a frequency deviation. Optionally, inserting an idle code block into a scheduled code block based on a frequency deviation may include sequentially transmitting the scheduled code blocks to obtain sequentially transmitted code blocks, and inserting an idle code block into the sequentially transmitted code blocks.
[0141] Among them, the insertion period is determined based on the frequency deviation, that is, the insertion period is determined according to the frequency deviation adjustment requirements between nodes. In other words, the number of idle code blocks inserted in the mixed code block is sufficient for frequency deviation adjustment. Too many will lead to bandwidth waste, and too few will cause frequency deviation adjustment failure. Exemplarily, when the frequency deviation between nodes is ±100ppm, the insertion period of the idle code block can be 200 / 1000000=1 / 5000, and the idle code is inserted according to the insertion period, that is, i idle code blocks can be inserted every 4999*i code blocks, i=1, 2, 3... and other positive integers. Optionally, the position of the idle code block insertion is not limited in the embodiment of the present application. For example, the insertion position of the idle code block needs to be after a T code block.
[0142] In one possible embodiment, a method for obtaining at least one business code block stream may include receiving a code block stream transmitted by at least one channel, wherein the code block stream transmitted by at least one channel includes a first code block stream; deleting all idle code blocks in the first code block stream to obtain a first business code block stream, wherein the first business code block stream is a code block stream in at least one business code block stream. Thus, by deleting all idle code blocks in each code block stream of the code block stream transmitted by at least one channel, at least one business code block stream can be obtained. Due to the above-mentioned frequency offset adjustment requirement, the code block stream transmitted by at least one channel received may be a code block stream into which idle code blocks have been inserted. However, in order to ensure that the multiplexing mode between the code block streams transmitted by at least one channel is fixed, the idle code blocks in the code block stream transmitted by at least one channel cannot be used for frequency offset adjustment, because once the idle code blocks are deleted or added, the multiplexing mode error will be caused, which will further cause a demultiplexing error.
[0143] Therefore, the embodiment of the present application deletes all the idle code blocks in the code block stream originally received for transmission through at least one channel, and then inserts the idle code blocks according to the frequency deviation adjustment requirements, which can not only ensure that the multiplexing mode is fixed, but also meet the frequency deviation adjustment requirements. Since the idle code blocks inserted based on the frequency deviation can occupy the bandwidth saved by deleting the idle code blocks, the introduction of additional bandwidth overhead can also be avoided, that is, the overhead of inserting the idle code blocks required for the multiplexing code block stream is squeezed out by deleting the idle code blocks from the business code block stream, and there is no need to provide additional overhead for inserting idle code blocks. Optionally, the embodiment of the present application can also delete some idle code blocks in the first code block stream. In the case of deleting some idle code blocks, the idle code blocks that are not deleted in the first code block stream can also be hidden to avoid the idle code blocks that are not deleted from being mistakenly deleted during the transmission process due to the frequency deviation adjustment requirements. The hiding method of the idle code blocks can refer to the hiding method of the control code blocks described below, which will not be repeated here.
[0144] In the embodiment of the present application, the idle code block is also referred to as an I code block. The idle code block deleted from the code block stream transmitted by at least one channel is an idle code block defined by the Ethernet standard, and a format diagram of the idle code block defined by the Ethernet standard is shown in FIG12 . Among them, the synchronization header is "10", the 8-bit type field is 0x1E, indicating that the type of the placeholder code block is a C code block, and the values of the 8 control bytes of 7 bits are all 0x00, or the 8 control bytes of 7 bits can also be empty. Optionally, the idle code block inserted into the spliced code block stream based on the frequency deviation can also be an idle code block defined by the Ethernet standard shown in FIG12, so that the method of inserting the idle code block is simple and has good compatibility.
[0145] However, if an idle code block inserted during the multiplexing process goes wrong, the multiplexing mode will be destroyed, and the destruction of the multiplexing mode will cause the receiving end to be unable to correctly demultiplex at least one service code block stream. Therefore, the idle code block inserted during the multiplexing process of the embodiment of the present application can also be a customized idle code block, which has a more reliable encapsulation format to reduce the risk of idle code block errors. Optionally, the number of idle code blocks is at least two, and the Hamming distance between at least two idle code blocks meets the distance requirement. The distance requirement can be flexibly adjusted according to the application scenario, for example, the distance requirement is maximum. In this case, each time an idle code block is inserted into the spliced code block stream based on the frequency deviation, at least two idle code blocks are inserted continuously. Among them, the Hamming distance refers to the number of different bit values at corresponding bit positions in the bit stream of the same length.
[0146] For example, refer to the format diagram of the idle code block shown in Figure 13. Therein, two types of idle code blocks are defined, namely Class A idle code blocks and Class B idle code blocks. The synchronization header of both types of idle code blocks is "10", and the 8-bit type field is 0x4B. The first half of the 56-bit payload field of Class A idle code blocks is all 0s, and the second half is all 1s; the first half of the 56-bit payload field of Class B idle code blocks is all 1s, and the second half is all 0s. That is, the values of the payload fields of the two types of idle code blocks are exactly opposite, so that the two types of idle code blocks form the largest Hamming distance. Optionally, when the number of idle code blocks is one, the idle code block can be the Class A idle code block or the Class B idle code block shown in Figure 13; when the number of idle code blocks is two, the idle code blocks can be the Class A idle code block and the Class B idle code block shown in Figure 13.
[0147] When there are two idle code blocks, each time an idle code block is inserted into the spliced code block stream based on the frequency deviation, two idle code blocks are inserted consecutively (one is a Class A idle code block, and the other is a Class B idle code block). During the forwarding process of the multiplexed code block stream, additions or deletions are performed based on the two idle code blocks, and during the demultiplexing process, deletions are also performed based on the two idle code blocks. As a result, even if some bits of one of the two idle code blocks are erroneous, the two types of idle code blocks can still be distinguished, improving the reliability of the idle code blocks, reducing the risk of demultiplexing failure caused by idle code block errors, and enhancing the reliability of the multiplexing system.
[0148] In a third approach, the mixed code block includes a hidden code block, and the hidden code block is obtained by hiding the control code block in at least one service code block stream.
[0149] In the embodiment of the present application, the control code blocks in at least one service code block stream can be hidden before the at least one service code block stream is scheduled; or the control code blocks in at least one service code block stream can be hidden after the at least one service code block stream is scheduled. If the control code blocks are hidden after the at least one service code block stream is scheduled, the control code blocks in the scheduled code blocks are hidden.
[0150] Among them, the control code block includes but is not limited to the C code block and the O code block, etc. The C code block may refer to a 66-bit code block with a type field value of 0x1E, and the O code block may refer to a 66-bit code block with a type field value of 0x4B. If the control code blocks in at least one business code block stream are not hidden, it may lead to insufficient protection of at least one business code block stream. For example, the control code blocks in at least one business code block stream may be misoperated by the nodes in the multiplexed transmission channel. Therefore, the embodiment of the present application hides the control code blocks in at least one scheduled business code block stream, strengthens the protection of the control code blocks in the original at least one business code block stream, and makes the nodes of the transmission channel that transmits the multiplexed code block stream invisible to the hidden control code blocks.
[0151] Optionally, the method of hiding the control code block is not limited in the embodiment of the present application, and the hidden control code block can be prevented from being processed by the forwarding node in the transmission channel, and can be restored to the original control code block during the demultiplexing process. For example, all control code blocks in the scheduled code block are transcoded into corresponding hidden code blocks. Taking the control code block as an example, which includes a C code block and an O code block, the transcoding rules may include: changing the type field value 0x1E of the C code block to 0x00; changing the O code value 0x0 in the O code block to 0x3, changing the O code value 0x5 to 0x6, and changing the O code value 0xC to 0xA. Alternatively, the transcoding rules may also include: changing the first 2 bits of the control code block, i.e., the synchronization header value, to 00 or 11.
[0152] Regarding the above-mentioned situation where at least one service code block stream is obtained after deleting all idle code blocks in the code block stream received for at least one channel transmission, if not all idle code blocks are deleted but some idle code blocks, or if the idle code blocks are not deleted and the code block stream received for at least one channel transmission is directly used as at least one service code block stream, then the idle code blocks in the at least one service code block stream can be hidden by using the method of hiding the control code blocks. For example, the first 2 bits, i.e., the synchronization header, in the idle code blocks are modified to 00 or 11. This prevents the idle code blocks in the at least one service code block stream from being deleted by the intermediate forwarding node due to frequency offset adjustment requirements after being multiplexed into the multiplexed code block stream, thereby preventing the first scheduling ratio from being destroyed due to the deletion of the idle code blocks in the at least one service code block stream, thereby improving the success rate of demultiplexing the at least one service code block stream based on the first scheduling ratio.
[0153] The method for obtaining a mixed code block based on the code block after the control code block is hidden can be referred to in the above method 2, that is, directly using the code block after the control code block is hidden as the mixed code block; or, based on the frequency deviation, inserting idle code blocks into the code block after the control code block is hidden. This is not further described here. In this method 3, the mixed code block can include service code blocks, placeholder code blocks, hidden code blocks, and idle code blocks.
[0154] Thus, through the above scheduling process, a mixed code block can be obtained according to the first scheduling ratio. In the embodiment of the present application, after the mixed code block is obtained through the above scheduling process, a multiplexed code block is further inserted to obtain a multiplexed code block stream. In other words, the multiplexed code block stream includes the mixed code block and the multiplexed code block, and the multiplexed code block carries multiplexing information, which is used to process the multiplexed code block stream.
[0155] Optionally, the multiplexing information includes at least one of a first service identifier or scheduling information for the multiplexed code block stream, and the scheduling information includes at least one of a first scheduling ratio or a second service identifier corresponding to at least one service code block stream. The first service identifier included in the multiplexing information can be used to forward the multiplexed code block stream, and the scheduling information included in the multiplexing information can be used to demultiplex the multiplexed code block stream. Thus, by inserting multiplexing code blocks and having the multiplexing code blocks carry the multiplexing information, the multiplexed code block stream can be correctly forwarded and demultiplexed.
[0156] In the embodiments of the present application, two implementation methods of multiplexing code blocks are provided: one is that the multiplexing code block is an overhead (OH) code block defined in the FlexE standard, and the other is that the multiplexing code block is a multiplexing indicator code block. The multiplexing indicator code block is a custom code block in the embodiments of the present application and can be used to carry multiplexing information. The multiplexing indicator code block may also be referred to as a multiplexing code block, an indicator code block, or a custom code block. In different cases where the multiplexing code block is an OH code block or a multiplexing indicator block, the method of inserting the multiplexing code block is also different, and the resulting multiplexing code block stream is also different.
[0157] In case 1, the multiplexed code block is a first overhead code block, the multiplexing information is carried in a reserved field of the first overhead code block, and the first overhead code block is used to extract a mixed code block from the multiplexed code block stream.
[0158] In this case, the multiplexing information is carried by extending the reserved field of the OH code block in the FlexE standard, that is, the first overhead code block is the OH code block in the FlexE standard. For example, taking the multiplexing information including the first service identifier and scheduling information of the multiplexing code block stream as an example, refer to the format diagram of the first overhead code block shown in Figure 14. The first overhead code block includes 8 66-bit code blocks, namely BLK1-BLK8 in Figure 14. Among them, the synchronization header of BLK1 is "10", and the type field of BLK1 is 0x4B; the synchronization headers of BLK2 and BLK3 are both "01", and BLK2 includes a PHY map field, a PHY number (number, num) field and a reserved field. The reserved field is the res field shown in Figure 14.
[0159] The embodiment of the present application is expanded for BLK2 (see the dotted box portion in Figure 14), and the 17th-18th bits in the 64-bit payload field corresponding to BLK2 are defined as the multiplexing enable (MX_EN) field. If the MX_EN field takes the value "00" as the current default value, it means that there is no need to check the multiplexing field after the MX_EN field. If the MX_EN field takes the value "11", it means that the multiplexing field after the MX_EN field needs to be checked. The multiplexing field refers to the 19th-50th bit field. Among them, bits 19-34 are defined as the multiplex info for calendar A field, which indicates the scheduling information of the multiplexed code block stream formed after multiplexing under calendar A. Optionally, bits 35-50 are defined as multiplex info for calendar B, which represents the scheduling information of the multiplexed code block stream formed after multiplexing under calendar B.
[0160] Calendar A and calendar B represent two different slot groups. The definition of multiplex info for calendar A and multiplex info for calendar B enables this method to support FlexE's native configuration switching capabilities. BLK3 includes the client calendar A field and the client calendar B field. In this embodiment of the present application, the client calendar A field is used to carry the first service identifier of the multiplexed code block stream formed after multiplexing under calendar A, and the client calendar B field is used to carry the first service identifier of the multiplexed code block stream formed after multiplexing under calendar B.
[0161] In the FlexE standard, the transmission bandwidth occupied by the OH code block is reserved for transmitting FlexE control information. Specifically, the purpose of the OH code block is to leave sufficient space in the Ethernet frame for transmitting FlexE control information and synchronization information, ensuring frame format compatibility. This allows FlexE to function properly and transmit control information within the Ethernet frame. Because the OH code block is automatically inserted and recognized by the FlexE hardware, for example, by the FlexE shim layer shown in Figure 1, no manual configuration or programming is required. For one or more physical link interfaces (PHYs) within a FlexE Group, data on each PHY is periodically inserted with OH code blocks to achieve internal PHY time slot positioning and alignment between different PHYs. The OH code block insertion period can be flexibly adjusted based on the application scenario. For example, each PHY can insert an OH code block every 1023*20 66-bit payload data code blocks.
[0162] In this case, since the multiplexing code block is the OH code block, inserting the multiplexing code block is equivalent to inserting the OH code block. The operation of inserting the OH code block can be found in the relevant description of the FlexE standard and will not be repeated here. Therefore, by extending the OH code block to carry multiplexing information, the additional overhead caused by carrying multiplexing information is avoided, the maximum coupling with the FlexE protocol is achieved, and the implementation complexity of carrying multiplexing information is reduced.
[0163] However, in the FlexE standard, the OH code block is terminated hop by hop. That is, the ingress port strips the OH code block from the received code block stream, and the egress port regenerates and inserts the OH code block into the transmitted code block stream. As a result, the multiplexing information needs to be copied from the ingress port to the egress port at each forwarding node, which brings operational complexity. Therefore, the embodiment of the present application can also not use the OH code block in the FlexE standard to carry the multiplexing information, but instead newly define a dedicated multiplexing code block to carry the multiplexing information. See the relevant description of the second case below.
[0164] In case 2, the multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block, which is used to extract the multiplexing indication code block and the mixed code block in the multiplexing code block stream.
[0165] The embodiment of the present application does not limit the multiplexing indication code block, and can be distinguished from the existing code block, and can carry the multiplexing information through the designated field. For example, taking the multiplexing information including the first service identifier of the multiplexing code block stream as an example, the format diagram of the multiplexing indication code block can be shown in Figure 15 or Figure 16. In Figure 15, the multiplexing code block is defined as a unique C code block, and the type field value of its 3rd to 10th bits is 0x1E, the first three adjacent 7-bit control bytes are all 0x09, and the next two 7-bit control bytes are all 0x76, so that the multiplexing code block shown in Figure 15 can be distinguished from the station code block shown in Figure 10, and the last remaining 21 bits, that is, the designated field, is defined as Client Group ID, which is used to indicate the first service identifier of the multiplexed multiplexing code block stream. Alternatively, the last remaining 21 bits can also be used to carry the scheduling information of the multiplexing code block stream. For example, two multiplexing indication code blocks are inserted, one multiplexing indication code block is used to carry the first service identifier of the multiplexing code block flow, and the other multiplexing indication code block is used to carry the scheduling information of the multiplexing code block flow.
[0166] In Figure 16, the multiplexing code block is defined as a unique O code block, with the type field value of bits 3-10 being 0x4B, and the O code value of bits 35-38 being 0x9. Optionally, of the three 8-bit data bytes, the first data byte, bits 11-18, is 0xFF, allowing the multiplexing code block shown in Figure 16 to be distinguished from the station code block shown in Figure 11. The designated field of the last two data bytes, bits 19-34, is defined as the Client Group ID, which indicates the first service identifier of the multiplexed multiplexing code block stream. The last four 7-bit control bytes, i.e., the last 28 bits, are 0x000_0000. Optionally, the last 28 bits can be used to carry scheduling information for the multiplexing code block stream.
[0167] Optionally, the method of inserting the multiplexing indicator code block is not limited in the embodiment of the present application. The inserted multiplexing indicator code block can be used to delimit the mixed code block, or can be used as a reference point for the first scheduling ratio. For example, as shown in Figure 1, before reaching the FlexE shim layer, the FlexE multiplexing layer inserts the multiplexing indicator code block every N scheduling periods of the first scheduling ratio. N is an arbitrary positive integer, and the insertion position of the multiplexing indicator code block is at the beginning of a scheduling period. Therefore, demultiplexing can be performed according to the first scheduling ratio starting from the insertion position of the multiplexing indicator code block as a reference point. For example, if the first scheduling ratio is 1:2:1, the scheduling period is (service code block 1; service code block 2, service code block 2; service code block 3), and the insertion position of the multiplexing indicator code block is the previous code block of service code block 1.
[0168] Therefore, no matter whether the multiplexing code block is a multiplexing indication code block or an OH code block, the multiplexing code block can be used as a delimiter when forwarding or demultiplexing. Delimitation refers to determining the boundary between the code block streams transmitted by different transmission channels in the code block stream received through any Ethernet interface, and then extracting the code block streams transmitted by different transmission channels. For example, the 100GE Ethernet interface includes 5 20Gbps channels, and the multiplexing code block stream in the embodiment of the present application is transmitted through the first 25Gbps channel. Then, according to the first overhead code block, the mixed code block transmitted by the first 25Gbps channel can be delimited in the code block stream received through the 100GE Ethernet interface; according to the second overhead code block, the mixed code block and the multiplexing indication code block transmitted by the first 25Gbps channel can be delimited in the code block stream received through the 100GE Ethernet interface, and the mixed code block is further delimited according to the multiplexing indication code block.
[0169] In this second case, after using the multiplexing indicator code block as the multiplexing code block, the dependence on the FlexE protocol is reduced, and a clearer decoupling between functional modules is achieved, which is conducive to modular implementation. The intermediate forwarding node no longer needs to strip the multiplexing information at the entrance and reinsert the multiplexing information at the exit, that is, the multiplexing information does not need to be copied from the entrance to the exit. The multiplexing indicator code block will be forwarded along with the multiplexing code block flow as part of the multiplexing code block flow, directly passing through the forwarding node, thereby reducing the processing complexity of the forwarding node. The forwarding node does not modify the multiplexing indicator code block, but only reads the multiplexing information carried in the multiplexing indicator code block, which is used to search the routing table and forward according to the first service identifier in the multiplexing information. Optionally, the routing table includes a correspondence between the first service identifier and the output port, and the first service identifier is the service identifier after multiplexing.
[0170] Thus, through steps 901-903 described above, multiplexing processing of at least one service block stream is achieved. After obtaining the multiplexed block stream, the output port can be determined based on the first service identifier of the multiplexed block stream, and the multiplexed block stream can be sent through the output port. For example, the multiplexed block stream is sent to the second communication device through the output port. The transmission rate of the multiplexed block stream is greater than the transmission rate of the at least one service block stream. For example, the transmission rates of the at least one service block stream transmitted through a small-bandwidth channel are 5 Gbps, 10 Gbps, and 5 Gbps, respectively, while the transmission rate of the multiplexed block stream transmitted through a large-bandwidth channel is 20 Gbps, thereby increasing the transmission rate of the at least one service block stream to 20 Gbps. By multiplexing at least one service block stream into one multiplexed block stream for transmission, the transmission rate of the at least one service block stream is increased, effectively utilizing the large bandwidth of the output port and avoiding bandwidth waste. This achieves the aggregation of at least one low-speed service block stream into one high-speed service block stream, solving the problem of connecting large and small-bandwidth channels.
[0171] The following describes the multiplexing process in the code block processing method provided in the embodiment of the present application, taking a fixed first scheduling ratio and an overhead code block as an example, in conjunction with the system block diagram shown in FIG17 and the flowchart shown in FIG18. The multiplexing process includes but is not limited to the following steps 11 to 14.
[0172] Step 11: Receive at least one service code block stream and delete all idle code blocks in each service code block stream.
[0173] As shown in Figure 17 , at least one service block stream includes three. The first service block stream includes an O block, an S block, and a D block. The second service block stream includes three D blocks. The third service block stream includes a D block, a T block, and an I block. For each service block stream, after receiving a block, if it is an idle block, it is deleted. If it is not an idle block, it is placed in the service block queue.
[0174] Step 12: Schedule code blocks in at least one service code block stream according to a fixed ratio, and insert placeholder code blocks as needed.
[0175] As shown in Figure 17, scheduling code blocks in at least one service code block stream is equivalent to scheduling code blocks in multiple service code block queues. Inserting placeholder code blocks on demand means that if a service code block stream is temporarily without code blocks when scheduling the service code block stream, a specific placeholder code block provided in the embodiment of the present application is inserted.
[0176] Step 13: insert idle code blocks as needed to form mixed code blocks.
[0177] Inserting idle code blocks on demand means determining an insertion period based on the frequency offset adjustment requirement and inserting idle code blocks into the scheduled code blocks according to the insertion period. The obtained mixed code blocks are placed in the service group code block queue.
[0178] Step 14: Periodically insert OH code blocks and carry multiplexing information in overhead code blocks to form a multiplexed code block stream.
[0179] OH blocks are periodically inserted into the service group block queue to create a multiplexed block stream, which is then transmitted over a high-speed channel. In step 11, the channel receiving at least one service block stream is a low-speed channel. The multiplexed block stream transmitted over the high-speed channel, or multiplexed block stream, is shown in Figure 17 and may include placeholder blocks and idle blocks.
[0180] The implementation of steps 11 to 14 can refer to the implementation of steps 901 and 902 above, and will not be repeated here.
[0181] In summary, in the code block processing method shown in Figure 9, the code blocks in at least one service code block stream are scheduled according to a fixed scheduling ratio to obtain a multiplexed code block stream based on the scheduled code blocks, thereby multiplexing at least one service code block stream into a multiplexed code block stream. This multiplexing process does not require a frame sealing operation, avoiding the bandwidth waste caused by the frame sealing operation, and multiplexing is performed directly at the granularity of the code block. Compared with multiplexing at the bit granularity, this reduces the complexity of the multiplexing process and improves the multiplexing efficiency. In addition, the multiplexed code block stream carries multiplexing information, so that all nodes receiving the multiplexed code block stream can process the multiplexed code block stream according to the multiplexing information, ensuring the correct processing of the multiplexed code block stream.
[0182] See Figure 19, which is a flowchart of a data transmission method provided in an embodiment of the present application. This method is described using a second communication device as an example. The second communication device may be the network device shown in Figure 7 or Figure 8. The second communication device and the first communication device may be the same network device or two interconnected network devices. As shown in Figure 19, the code block processing method includes, but is not limited to, steps 1901 and 1902.
[0183] Step 1901: Acquire a multiplexed code block stream, which includes mixed code blocks and multiplexed code blocks. The mixed code blocks are obtained by scheduling code blocks in at least one service code block stream according to a first scheduling ratio. The multiplexed code blocks carry multiplexing information.
[0184] Optionally, the multiplexed code block stream may be obtained by receiving the multiplexed code block stream sent by the first communication device, or performing multiplexing processing according to the above steps 901 to 903 to obtain the multiplexed code block stream. For details about the multiplexed code block stream, refer to the details about the multiplexed code block stream involved in steps 901 to 903, and will not be repeated here.
[0185] Step 1902: Process the multiplexed code block stream according to the multiplexing information.
[0186] In an embodiment of the present application, processing the multiplexed code block stream based on the multiplexing information includes two steps: forwarding the multiplexed code block stream and demultiplexing the multiplexed code block stream. The second communication device can both forward the multiplexed code block stream and demultiplex the multiplexed code block stream. Alternatively, the second communication device forwards the multiplexed code block stream, and a third network device receives the multiplexed code block stream forwarded by the second communication device, and the third network device demultiplexes the multiplexed code block stream.
[0187] Processing method 1: forwarding the multiplexed code block stream according to the multiplexing information.
[0188] According to the above introduction to the overhead code block in the FlexE standard, the overhead code block is terminated hop by hop. Therefore, if the multiplexing code block is the first overhead code block, and the multiplexing information is carried in the reserved field of the first overhead code block, then forwarding the multiplexing code block stream may include: stripping the first overhead code block in the multiplexing code block stream at the ingress port to obtain a mixed code block; sending the mixed code block to the egress port, inserting the third overhead code block into the mixed code block, and then sending it through the egress port, where the third overhead code block carries the multiplexing information. That is, stripping the first overhead code block at the ingress port and reinserting the third overhead code block at the egress port. The third overhead code block may be the same as or different from the first overhead code block, so that the multiplexing information needs to be copied from the ingress port to the egress port.
[0189] If the multiplexing code block is a multiplexing indication code block, for example, the multiplexing indication code block shown in Figure 15 or 16, the multiplexing information is carried in a designated field of the multiplexing indication code block. In this case, the multiplexing code block stream also includes a second overhead code block, which is the overhead code block that needs to be carried in the original FlexE protocol transmission scenario. Then, forwarding the multiplexing code block stream according to the multiplexing information may include: stripping the second overhead code block in the multiplexing code block stream at the ingress port to obtain a mixed code block stream including a multiplexing indication code block and a mixed code block; sending the mixed code block stream to the egress port, inserting a fourth overhead code block into the mixed code block stream, and then sending it through the egress port. That is, stripping the second overhead code block at the ingress port and reinserting the fourth overhead code block at the egress port. The fourth overhead code block is the same as or different from the second overhead block, so that the multiplexing information is carried in the multiplexing indication code block and is directly forwarded following the mixed code block, that is, the multiplexing information does not need to be copied from the ingress port to the egress port.
[0190] In an embodiment of the present application, the multiplexing information includes the first service identifier of the multiplexing code block stream, and the method of determining the output port of the multiplexing code block stream may include determining the output port based on the service identifier. Exemplarily, the second communication device maintains a routing table, and the routing table includes a correspondence between the service identifier and the output port. Then, by querying the first service identifier of the multiplexing code block stream in the routing table, the output port of the multiplexing code block stream can be determined. Wherein, in the case where the multiplexing code block is the first overhead code block, the output port of the multiplexing code block stream is the output port of the mixed code block; in the case where the multiplexing code block is the multiplexing indication code block, the output port of the multiplexing code block stream is the output port of the mixed code block stream. The method of forwarding the information received by the input port to the corresponding output port through the routing table is called cross forwarding.
[0191] In one possible implementation, if the acquired multiplexed code block stream is a multiplexed code block stream received from other network devices, the multiplexed code block stream also includes idle code blocks inserted based on the frequency deviation. Then, forwarding the multiplexed code blocks according to the multiplexing information may include adjusting the frequency deviation of the multiplexed code block stream based on the frequency deviation. Optionally, the frequency deviation of the multiplexed code block stream is adjusted by adding or deleting idle code blocks based on the frequency deviation. For example, when the arrival rate of the multiplexed code block stream is low, interruption of the flow is avoided by inserting idle code blocks into the multiplexed code block stream; when the arrival rate of the multiplexed code block stream is high, code block backlog is avoided by deleting idle code blocks from the multiplexed code block stream. The type of idle code blocks added or deleted during the forwarding process is the same as the type of idle code blocks inserted during the above-mentioned multiplexing process, that is, if the idle code blocks inserted during the multiplexing process are the two types of idle code blocks shown in FIG13 , the idle code blocks added or deleted during the forwarding process are also the two types of idle code blocks shown in FIG13 .
[0192] Thus, by implementing forwarding processing for the multiplexed block stream through processing method one, intermediate forwarding nodes can forward the stream at the granularity of the multiplexed block stream, that is, at the transmission rate of the multiplexed block stream. For example, the transmission channel of the multiplexed block stream is a high-bandwidth channel, meaning that at least one service block stream can be transmitted through this high-bandwidth channel. Thus, by multiplexing at least one service block stream into one multiplexed block stream for forwarding, end-to-end forwarding of the multiplexed block stream is achieved, eliminating the need to demultiplex the multiplexed block stream into at least one service block stream and then forward them separately, thereby improving forwarding scale.
[0193] The following describes the forwarding process in the code block processing method provided by the embodiment of the present application, taking the multiplexed code block as an example, in conjunction with the system block diagram shown in Figure 20 and the flowchart shown in Figure 21. The forwarding process includes but is not limited to the following steps 21 to 24.
[0194] Step 21: Receive a code block stream, perform delimitation according to the OH code block, and extract multiplexing information from the OH code block.
[0195] Depending on the insertion rule of the OH code block, the code block streams of different transmission channels can be delimited according to the OH code block, and then the mixed code block can be extracted and written into the service group queue code block.
[0196] Step 22: Add or delete idle code blocks in the mixed code block according to the frequency offset adjustment requirement.
[0197] Therefore, frequency offset adjustment is achieved by adding or deleting idle code blocks.
[0198] Step 23: cross-forwarding the mixed code block.
[0199] Since the OH code block has been stripped, the cross forwarding of the mixed code block is the cross forwarding of the multiplexed code block stream. For example, the forwarding table is checked through the service identifier carried in the multiplexing information, and the mixed code block is sent to the correct egress port.
[0200] Step 24: inserting an OH code block into the code block stream of the outgoing port, where the OH code block carries multiplexing information.
[0201] That is, the multiplexing information sent out in advance by the ingress port needs to be copied to the egress port, so that the OH code block reinserted by the egress port carries the multiplexing information.
[0202] Processing method 2: demultiplexing the multiplexed code block stream according to the multiplexing information.
[0203] In one possible implementation, the multiplexing information includes scheduling information, and the scheduling information includes at least one of a first scheduling ratio or a second service identifier corresponding to at least one service code block stream; demultiplexing the multiplexed code block stream according to the multiplexing information may include determining the first scheduling ratio according to the scheduling information; extracting a mixed code block from the multiplexed code block stream, and demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio.
[0204] Optionally, when the scheduling information includes a first scheduling ratio, the first scheduling ratio in the scheduling information is directly read; when the scheduling information includes a second service identifier corresponding to at least one service code block stream, the first scheduling ratio can be determined based on the bandwidth or transmission rate corresponding to each of the multiple second service identifiers, or the scheduling ratios corresponding to each of the multiple second service identifiers are obtained based on the configuration information, and then the first scheduling ratio is determined based on the scheduling ratios corresponding to each of the multiple second service identifiers. The configuration information can be configured in advance by the control end and sent to the second communication device, or it can be obtained by the second communication device in real time from the control end. Optionally, the configuration information includes a correspondence between the second service identifier and the scheduling ratio. In this case, the first communication device can also determine the first scheduling ratio based on the configuration information.
[0205] For the method of extracting the mixed code block from the multiplexed code block stream, please refer to the relevant instructions in processing method one. For example, if the multiplexed code block is the first overhead code block, the mixed code block is delimited according to the insertion position of the first overhead code block, the mixed code block is extracted, and the multiplexing information in the first overhead code block is extracted; if the multiplexed code block is a multiplexing indicator code block, the mixed code block stream is delimited according to the insertion position of the second overhead code block, the mixed code block stream is extracted, and then the mixed code block is delimited according to the insertion position of the multiplexing indicator code block to extract the mixed code block and the multiplexing information in the multiplexing indicator code block.
[0206] After extracting the mixed code block, the mixed code block can be restored to at least one service code block stream according to the first scheduling ratio. This demultiplexing process corresponds to the aforementioned multiplexing process, that is, the demultiplexing process is the inverse of the multiplexing process. Therefore, the operation performed in the multiplexing process determines the inverse operation performed in the demultiplexing process. Optionally, if idle code blocks are inserted during the multiplexing process, that is, the mixed code block includes idle code blocks, demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio includes first deleting the idle code blocks from the mixed code block, and then demultiplexing at least one service code block stream from the code block stream after deleting the idle code blocks according to the first scheduling ratio.
[0207] If a mixed code block is directly obtained by scheduling according to the first scheduling ratio during the multiplexing process, then at least one service code block stream can be directly decomposed and restored from the code block stream after deleting the idle code blocks according to the first scheduling ratio. For example, taking a first scheduling ratio of 1:2:1 as an example, at least one service code block stream is demultiplexed from the mixed code block according to the first scheduling ratio. That is, the first code block in the mixed code block is restored to one code block in the first service code block stream, the second and third code blocks in the mixed code block are restored to two code blocks in the second service code block stream, and the fourth code block in the mixed code block is restored to one code block in the third service code block stream, and this restoration process is repeated.
[0208] When a mixed code block includes a concealed code block, the concealed code block is restored to a control code block during demultiplexing of at least one service code block stream from the mixed code block according to the first scheduling ratio. Optionally, the concealed code block in the mixed code block may be first restored to a control code block, and then at least one service code block stream may be demultiplexed from the mixed code block after being restored to the control code block. Alternatively, at least one initial code block stream may be first demultiplexed from the mixed code block according to the first scheduling ratio, and the concealed code blocks in the at least one initial code block stream may be restored to a control code block to obtain the at least one service code block stream.
[0209] The process of restoring the hidden code block to the control code block is the reverse process of the above-mentioned hidden control code block. Taking the above-mentioned transcoding rule of converting the control code block to the corresponding hidden code block as an example, the process of restoring the code block after the control code block is hidden may include restoring the type field value 0x00 to 0x1E to restore the C code block; restoring the O code value 0x3 in the O code block to 0x0, restoring the O code value 0x6 to 0x5, and restoring the O code value 0xA to 0xC to restore the O code block.
[0210] Optionally, if placeholder code blocks are inserted or control code blocks are hidden during the multiplexing scheduling process, at least one initial code block stream can be demultiplexed from the mixed code blocks according to the first scheduling ratio, and at least one service code block stream can be obtained based on the at least one initial code block stream. The step of obtaining the at least one service code block stream based on the at least one initial code block stream can include, for a first initial code block stream in the at least one initial code block stream, if the first initial code block stream includes placeholder code blocks, deleting the placeholder code blocks in the first initial code block stream to obtain the first service code block stream; or, if the first initial code block stream includes hidden code blocks, restoring the hidden code blocks to control code blocks to obtain the first service code block stream; or, if the first initial code block stream includes placeholder code blocks and hidden code blocks, deleting the placeholder code blocks in the first initial code block stream and restoring the hidden code blocks to control code blocks to obtain the first service code block stream. The first service code block stream is the code block stream in the at least one initial code block stream.
[0211] In this embodiment of the present application, the multiplexing information includes, in addition to the first scheduling ratio, the first service identifier corresponding to the at least one service code block stream. Therefore, after demultiplexing the at least one service code block stream from the multiplexed code block stream, the egress port corresponding to the at least one service code block stream can be determined based on the first service identifier corresponding to the at least one service code block stream, and the at least one service code block stream can be forwarded via the egress port corresponding to the at least one service code block stream. For example, forwarding can be performed by performing a table lookup based on the first service identifier corresponding to the at least one service code block stream.
[0212] Therefore, the demultiplexing process of the multiplexed code block stream is implemented through the second processing mode, so that each receiving node can recover at least one service code block stream from the multiplexed code block stream and realize the correct forwarding of at least one service code block stream.
[0213] The following describes the demultiplexing process in the code block processing method provided by the embodiment of the present application, taking the OH code block as an example, in conjunction with the system block diagram shown in Figure 22 and the flowchart shown in Figure 23. The demultiplexing process includes but is not limited to the following steps 31 to 34.
[0214] Step 31: Receive a code block stream, perform delimitation according to the OH code block, and extract multiplexing information from the OH code block.
[0215] For example, the code block stream received through the high-speed channel cross transmission is the multiplexed code block stream. The mixed code block is extracted from the multiplexed code block stream and added to the service group code block queue.
[0216] Step 32: Delete all idle code blocks in the mixed code block.
[0217] Step 33: Decompose the mixed code block into various code block streams according to the scheduling ratio.
[0218] Step 34: For each code block stream, delete all placeholder code blocks in each code block stream to obtain multiple service code block streams.
[0219] Optionally, in the scenario where control blocks are hidden during the multiplexing process, see the system block diagram shown in Figure 24. Compared to the system block diagram for multiplexing processing shown in Figure 22, after deleting all idle blocks in each service block stream, the control blocks in each service block stream are transcoded and hidden, and the blocks following the hidden control blocks, i.e., the hidden blocks, are placed in the service block queue. Compared to the system block diagram for multiplexing processing shown in Figure 23, after deleting all placeholder blocks in each block stream, the hidden control blocks in each block stream are restored.
[0220] The above process mainly introduces a single multiplexing process and a single demultiplexing process. The method provided in the embodiment of the present application can also be used for multiple multiplexing, so that the method can be used in more demand scenarios, and multiple multiplexing means multiple demultiplexing. In other words, the multiplexed code block stream after one multiplexing can be regarded as an ordinary business code block stream, and is multiplexed again with other business code block streams. In the demultiplexing process, the multiplexed code block stream is demultiplexed layer by layer until the original business code block stream is restored. Multiple multiplexing and multiple demultiplexing can be implemented on the same network device or on different network devices.
[0221] For example, referring to the scenario diagram of multiple multiplexing processes shown in Figure 25, node 1 sends business code block stream 1 to node 4, node 2 sends business code block stream 2 to node 4, and node 3 sends business code block stream 3 to node 4; node 4 multiplexes the three business code block streams into multiplexed code block stream 1 through the multiplexing module, and sends the multiplexed code block stream 1 to node 7, node 5 sends business code block stream 4 to node 7, and node 6 sends business code block stream 5 to node 7; node 7 multiplexes the two business code block streams with the multiplexed code block stream 1 into multiplexed code block stream 2, and sends the multiplexed code block stream 2 to node 8; node 8 demultiplexes the multiplexed code block stream 2 through the demultiplexing module, restores business code block stream 1-business code block stream 5, and sends business code block stream 1 to node 9, business code block stream 2 to node 10, business code block stream 3 to node 11, business code block stream 4 to node 12, and business code block stream 5 to node 13 respectively.
[0222] In one possible implementation, any one of the at least one service code block streams acquired by the first communication device in step 901 may be obtained by scheduling at least one sub-service code block stream according to the second scheduling ratio. That is, any one of the service code block streams is a code block stream obtained by multiplexing at least one sub-service code block stream. The process for multiplexing at least one sub-service code block stream into any one of the service code block streams can be seen in the multiplexing process shown in FIG. 9 and is not further described here.
[0223] In this case, any service code block stream is referred to as a sub-multiplexed code block stream, and the first service identifier of the sub-multiplexed code block stream is the second service identifier of any service code block stream. Optionally, the multiplexing information also includes at least one of a second scheduling ratio or a third service identifier corresponding to at least one sub-service code block stream. After demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio, at least one sub-service code block stream can be demultiplexed from any service code block stream according to the second scheduling ratio. The demultiplexing process for any service code block stream can be referred to the demultiplexing process for the multiplexed code block stream and will not be repeated here.
[0224] For example, in the case where the multiplexing information includes service identifiers corresponding to multiple multiplexing connections, the Client Group ID field shown in Figures 15 or 16 can be defined hierarchically. Referring to the schematic diagram of the hierarchical definition shown in Figure 26, the 16 bits of the Client Group ID field are divided into four 4-bit fields, each of which is used to indicate the service identifier of a first-level multiplexing connection. The least significant 4 bits correspond to the service identifier of the first multiplexing connection, i.e., L1 multiplexing, and the most significant 4 bits correspond to the service identifier of the fourth multiplexing connection, i.e., L4 multiplexing. Thus, the Client Group ID field supports carrying the service identifiers of up to four multiplexing connections.
[0225] In summary, in the block processing method shown in FIG19 , after obtaining a multiplexed block stream, the multiplexed block stream can be processed based on the multiplexing information carried by the multiplexed blocks in the multiplexed block stream. This achieves multiplexing of at least one service block stream into a single multiplexed block stream for processing, while ensuring the accuracy of the processing of the multiplexed block stream using the multiplexing information.
[0226] The above describes the code block processing method of the embodiment of the present application. Corresponding to the above method, the embodiment of the present application also provides a code block processing device. Figure 27 is a structural diagram of a code block processing device provided by an embodiment of the present application. Based on the following multiple modules shown in Figure 27, the code block processing device shown in Figure 27 can perform all or part of the operations performed by the first communication device or the second communication device. It should be understood that the device may include more additional modules than the modules shown or omit some of the modules shown therein, and the embodiment of the present application does not limit this. As shown in Figure 27, the device includes:
[0227] The transceiver module 2701 is configured to perform operations related to receiving and / or sending in the method shown in FIG9 , and the processing module 2702 is configured to perform operations other than the operations related to receiving and / or sending in the method shown in FIG9 . Alternatively, the transceiver module 2701 is configured to perform operations other than the operations related to receiving and / or sending in the method shown in FIG19 , and the processing module 2702 is configured to perform operations other than the operations related to receiving and / or sending in the method shown in FIG19 .
[0228] In a possible implementation, the transceiver module 2701 includes a receiving module and / or a sending module. The receiving module is used to perform reception-related operations, and the sending module is used to perform sending-related operations.
[0229] In the case where the transceiver module 2701 is used to perform operations related to reception and / or transmission in the method shown in Figure 9, and the processing module 2702 is used to perform operations other than the operations related to reception and / or transmission in the method shown in Figure 9, the processing module 2702 is used to obtain at least one business code block stream; and obtain a multiplexed code block stream based on the at least one business code block stream, the multiplexed code block stream including mixed code blocks and multiplexed code blocks, the mixed code blocks being code blocks obtained by scheduling code blocks in at least one business code block stream according to a first scheduling ratio, the multiplexed code blocks carrying multiplexing information, and the multiplexing information being used to process the multiplexed code block stream.
[0230] In one possible implementation, the processing module 2702 is further configured to, during a process of scheduling code blocks in at least one business code block stream according to a first scheduling ratio, insert a third number of placeholder code blocks if a first number of code blocks included in the first business code block stream is less than a second number of code blocks scheduled in the first business code block stream, wherein the first business code block stream is a code block stream in at least one business code block stream, and the third number is a difference between the second number and the first number.
[0231] In one possible implementation, the transceiver module 2702 is configured to receive a code block stream transmitted through at least one channel, where the code block stream transmitted through at least one channel includes a first code block stream; and the processing module 2702 is configured to delete all idle code blocks in the first code block stream to obtain a first service code block stream, where the first service code block stream is a code block stream in the at least one service code block stream.
[0232] In one possible implementation, the processing module 2702 is also used to insert idle code blocks into the scheduled code blocks based on the frequency deviation, where the frequency deviation is the frequency deviation between the nodes used to transmit the multiplexed code block stream, the number of idle code blocks is at least two, and the Hamming distance between at least two idle code blocks meets the distance requirement.
[0233] In a possible implementation, the mixed code block includes a hidden code block, and the hidden code block is obtained by hiding a control code block in at least one service code block stream.
[0234] In a possible implementation, the multiplexed code block is a first overhead code block, the multiplexing information is carried in a reserved field of the first overhead code block, and the first overhead code block is used to extract a mixed code block from the multiplexed code block stream.
[0235] In one possible implementation, the multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block, which is used to extract the multiplexing indication code block and the mixed code block in the multiplexing code block stream.
[0236] In a possible implementation manner, the service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to the second scheduling ratio.
[0237] In a possible implementation, the first scheduling ratio is determined based on the bandwidth or transmission rate of at least one service code block flow.
[0238] In a possible implementation, the transceiver module 2702 is further configured to determine an egress port based on the first service identifier of the multiplexed code block stream, and send the multiplexed code block stream through the egress port, wherein the transmission rate of the multiplexed code block stream is greater than the transmission rate of at least one service code block stream.
[0239] In a possible implementation, the multiplexing information includes at least one of a first service identifier or scheduling information of the multiplexed code block stream, and the scheduling information includes at least one of a first scheduling ratio or a second service identifier corresponding to at least one service code block stream.
[0240] In the case where the transceiver module 2701 is used to perform operations other than the operations related to receiving and / or sending in the method shown in Figure 19, and the processing module 2702 is used to perform operations other than the operations related to receiving and / or sending in the method shown in Figure 19, the processing module 2702 is used to obtain a multiplexed code block stream, the multiplexed code block stream includes a mixed code block and a multiplexed code block, the mixed code block is a code block obtained by scheduling the code blocks in at least one service code block stream according to a first scheduling ratio, and the multiplexed code block carries multiplexing information; the multiplexed code block stream is processed according to the multiplexing information.
[0241] In one possible implementation, the multiplexing information includes scheduling information, and the scheduling information includes a first scheduling ratio; the processing module 2702 is used to extract a mixed code block from the multiplexed code block stream, and demultiplex at least one service code block stream from the mixed code block according to the first scheduling ratio.
[0242] In one possible implementation, the processing module 2702 is configured to, when the mixed code block includes an idle code block, delete the idle code block in the mixed code block; and demultiplex at least one service code block stream from the mixed code block after the idle code block is deleted according to the first scheduling ratio.
[0243] In one possible implementation, the processing module 2702 is configured to demultiplex at least one initial code block stream from the mixed code block according to a first scheduling ratio, where the at least one initial code block stream includes a first initial code block stream; and when the first initial code block stream includes placeholder code blocks, the placeholder code blocks in the first initial code block stream are deleted to obtain a first service code block stream, where the first service code block stream is a code block stream in the at least one service code block stream.
[0244] In a possible implementation, the mixed code block includes a hidden code block, and in the process of demultiplexing at least one service code block stream from the mixed code block according to the first scheduling ratio, the hidden code block is restored to a control code block.
[0245] In one possible implementation, the service code block stream in at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to a second scheduling ratio, and the scheduling information also includes the second scheduling ratio; the processing module 2702 is also used to demultiplex at least one sub-service code block stream from the service code block stream according to the second scheduling ratio.
[0246] In a possible implementation, the multiplexing information includes a first service identifier of the multiplexed code block stream; and the processing module 2702 is configured to perform forwarding processing on the multiplexed code block stream according to the first service identifier.
[0247] In one possible implementation, the multiplexing code block is a first overhead code block, and the multiplexing information is carried in a reserved field of the first overhead code block; the processing module 2702 is used to strip the first overhead code block in the multiplexing code block stream at the input port to obtain a mixed code block; the transceiver module 2702 is used to send the mixed code block to the output port determined based on the first service identifier, and send it through the output port after inserting a third overhead code block, where the third overhead code block carries the multiplexing information.
[0248] In one possible implementation, the multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block; the processing module 2702 is used to strip off the second overhead code block in the multiplexing code block stream at the input port to obtain a multiplexing indication code block and a mixed code block; the transceiver module 2702 is used to send the multiplexing indication code block and the mixed code block to the output port determined based on the first service identifier, and send them through the output port after inserting the fourth overhead code block.
[0249] In a possible implementation, the transceiver module 2702 is configured to receive a multiplexed code block stream, which further includes idle code blocks inserted based on a frequency deviation; and the processing module 2702 is configured to perform frequency deviation adjustment on the multiplexed code block stream based on the frequency deviation.
[0250] It should be understood that the device provided in FIG. 27 is merely an example of the division of the functional modules described above when implementing its functions. In actual applications, the functions described above can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. In addition, the device and method embodiments provided in the above embodiments are based on the same concept. The specific implementation process and beneficial effects thereof are detailed in the method embodiments and will not be repeated here.
[0251] Referring to FIG. 28 , FIG. 28 illustrates a schematic diagram of the structure of a network device 2000 provided in accordance with an exemplary embodiment of the present application. The network device 2000 illustrated in FIG. 28 is configured to execute the operations described in the code block processing method illustrated in FIG. 9 or FIG. 19 . The network device 2000 is, for example, a switch or router, and may be implemented using a general bus architecture.
[0252] As shown in FIG. 28 , the network device 2000 includes at least one processor 2001 , a memory 2003 , and at least one communication interface 2004 .
[0253] The processor 2001 is, for example, a general-purpose central processing unit (CPU), a digital signal processor (DSP), a network processor (NP), a graphics processing unit (GPU), a neural-network processing unit (NPU), a data processing unit (DPU), a microprocessor, or one or more integrated circuits for implementing the solution of the present application. For example, the processor 2001 includes an application-specific integrated circuit (ASIC), a programmable logic device (PLD) or other programmable logic device, a transistor logic device, a hardware component, or any combination thereof. The PLD is, for example, a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), a generic array logic (GAL), or any combination thereof. It can implement or execute the various logic blocks, modules, and circuits described in conjunction with the disclosure of the embodiments of the present invention. The processor can also be a combination that implements computing functions, such as a combination of one or more microprocessors, a combination of a DSP and a microprocessor, and the like.
[0254] Optionally, network device 2000 also includes a bus. The bus is used to transmit information between the various components of network device 2000. The bus may be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, for example. Buses can be classified as address buses, data buses, control buses, etc. For ease of illustration, FIG28 shows only one line, but this does not mean that there is only one bus or only one type of bus.
[0255] The memory 2003 is, for example, a read-only memory (ROM) or other type of static storage device that can store static information and instructions, or a random access memory (RAM) or other type of dynamic storage device that can store information and instructions, or an electrically erasable programmable read-only memory (EEPROM), a compact disc read-only memory (CD-ROM) or other optical disc storage, optical disc storage (including compact disc, laser disc, optical disc, digital versatile disc, Blu-ray disc, etc.), a magnetic disk storage medium or other magnetic storage device, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and can be accessed by a computer, but is not limited thereto. The memory 2003 is, for example, independent and connected to the processor 2001 via a bus. The memory 2003 can also be integrated with the processor 2001.
[0256] The communication interface 2004 uses any transceiver-like device for communicating with other devices or communication networks. The communication network can be Ethernet, a radio access network (RAN), or a wireless local area network (WLAN). The communication interface 2004 can include a wired communication interface or a wireless communication interface. Specifically, the communication interface 2004 can be an Ethernet interface, a Fast Ethernet (FE) interface, a Gigabit Ethernet (GE) interface, an Asynchronous Transfer Mode (ATM) interface, a wireless local area network (WLAN) interface, a cellular network communication interface, or a combination thereof. The Ethernet interface can be an optical interface, an electrical interface, or a combination thereof. In the embodiment of the present application, the communication interface 2004 can be used for the network device 2000 to communicate with other devices.
[0257] In a specific implementation, as an embodiment, the processor 2001 may include one or more CPUs, such as CPU0 and CPU1 shown in FIG28 . Each of these processors may be a single-core CPU processor or a multi-core CPU processor. The processor herein may refer to one or more devices, circuits, and / or processing cores for processing data (e.g., computer program instructions).
[0258] In a specific implementation, as an embodiment, the network device 2000 may include multiple processors, such as the processor 2001 and the processor 2005 shown in FIG28 . Each of these processors may be a single-core CPU or a multi-core CPU. The processor herein may refer to one or more devices, circuits, and / or processing cores for processing data (such as computer program instructions).
[0259] In a specific implementation, as an embodiment, the network device 2000 may further include an output device and an input device. The output device communicates with the processor 2001 and can display information in a variety of ways. For example, the output device can be a liquid crystal display (LCD), a light emitting diode (LED) display device, a cathode ray tube (CRT) display device, or a projector. The input device communicates with the processor 2001 and can receive user input in a variety of ways. For example, the input device can be a mouse, a keyboard, a touch screen device, or a sensor device.
[0260] In some embodiments, the memory 2003 is used to store program code 2010 for executing the solution of the present application, and the processor 2001 can execute the program code 2010 stored in the memory 2003. That is, the network device 2000 can implement the code block processing method provided by the method embodiment through the processor 2001 and the program code 2010 in the memory 2003. The program code 2010 may include one or more software modules. Optionally, the processor 2001 itself may also store program code or instructions for executing the solution of the present application.
[0261] In a specific embodiment, the network device 2000 of the embodiment of the present application may correspond to the first communication device in the above-mentioned method embodiments. The processor 2001 in the network device 2000 reads the instructions in the memory 2003, so that the network device 2000 shown in Figure 28 can execute all or part of the operations performed by the first communication device.
[0262] Specifically, the processor 2001 is used to obtain at least one business code block stream; based on the at least one business code block stream, a multiplexed code block stream is obtained, the multiplexed code block stream includes a mixed code block and a multiplexed code block, the mixed code block is a code block obtained by scheduling the code blocks in at least one business code block stream according to a first scheduling ratio, and the multiplexed code block carries multiplexing information, and the multiplexing information is used to process the multiplexed code block stream.
[0263] For the sake of brevity, other optional implementations will not be described here in detail.
[0264] For another example, the network device 2000 of an embodiment of the present application may correspond to the second communication device in each of the above-mentioned method embodiments. The processor 2001 in the network device 2000 reads the instructions in the memory 2003, so that the network device 2000 shown in Figure 28 can execute all or part of the operations performed by the second communication device.
[0265] Specifically, processor 2001 is used to obtain a multiplexed code block stream, which includes a mixed code block and a multiplexed code block. The mixed code block is a code block obtained by scheduling the code blocks in at least one service code block stream according to a first scheduling ratio, and the multiplexed code block carries multiplexing information; the multiplexed code block stream is processed according to the multiplexing information.
[0266] For the sake of brevity, other optional implementations will not be described here in detail.
[0267] The network device 2000 may also correspond to the code block processing apparatus shown in FIG27 , and each functional module in the code block processing apparatus is implemented using software of the network device 2000. In other words, the functional modules included in the code block processing apparatus are generated by the processor 2001 of the network device 2000 after reading the program code 2010 stored in the memory 2003.
[0268] Among them, each step of the code block processing method shown in Figure 9 or Figure 19 is completed by the hardware integrated logic circuit or software instructions in the processor of the network device 2000. The steps of the method disclosed in conjunction with the embodiments of the present application can be directly embodied as being executed by a hardware processor, or can be executed by a combination of hardware and software modules in the processor. The software module can be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, etc. The storage medium is located in the memory, and the processor reads the information in the memory and completes the steps of the above method in combination with its hardware. To avoid repetition, it will not be described in detail here.
[0269] Referring to FIG. 29 , FIG. 29 shows a schematic diagram of the structure of a network device 2100 provided in another exemplary embodiment of the present application. The network device 2100 shown in FIG. 29 is configured to perform all or part of the operations involved in the code block processing method shown in FIG. 9 or FIG. 19 . The network device 2100 is, for example, a switch, a router, etc., and can be implemented using a general bus architecture.
[0270] As shown in FIG. 29 , the network device 2100 includes a main control board 2110 and an interface board 2130 .
[0271] The main control board (MCB), also known as the main processing unit (MPU) or route processor card, is used to control and manage various components in network device 2100, including routing calculations, device management, device maintenance, and protocol processing. MCB 2110 includes a central processing unit (CPU) 2111 and memory 2112.
[0272] Interface board 2130 is also known as a line processing unit (LPU), line card, or service board. It provides various service interfaces and implements data packet forwarding. Service interfaces include, but are not limited to, Ethernet interfaces and POS (Packet over SONET / SDH) interfaces. Ethernet interfaces, for example, are Flexible Ethernet Clients (FlexE Clients) interfaces. Interface board 2130 includes a central processing unit (CPU) 2131, a network processor (NPU) 2132, a forwarding table memory 2134, and a physical interface card (PIC) 2133.
[0273] The central processing unit 2131 on the interface board 2130 is used to control and manage the interface board 2130 and communicate with the central processing unit 2111 on the main control board 2110 .
[0274] The network processor 2132 is used to implement message forwarding processing. The network processor 2132 can be in the form of a forwarding chip. The forwarding chip can be a network processor (NP). In some embodiments, the forwarding chip can be implemented using an application-specific integrated circuit (ASIC) or a field programmable gate array (FPGA). Specifically, the network processor 2132 is used to forward received messages based on the forwarding table stored in the forwarding entry memory 2134. If the destination address of the message is the address of the network device 2100, the message is sent to the CPU (such as the central processing unit 2131) for processing. If the destination address of the message is not the address of the network device 2100, the next hop and outgoing interface corresponding to the destination address are searched in the forwarding table based on the destination address, and the message is forwarded to the outgoing interface corresponding to the destination address. The processing of uplink messages may include processing the message inbound interface and forwarding table lookup; the processing of downlink messages may include forwarding table lookup, etc. In some embodiments, the central processing unit may also perform the functions of the forwarding chip, such as implementing software forwarding based on a general-purpose CPU, thereby eliminating the need for a forwarding chip in the interface board.
[0275] Physical interface card 2133 implements physical layer interconnection. Raw traffic enters interface board 2130 through this card, and processed packets are sent out from this physical interface card 2133. Physical interface card 2133, also known as a daughter card, can be installed on interface board 2130. It converts optical and electrical signals into packets, performs a validity check on these packets, and then forwards them to network processor 2132 for processing. In some embodiments, central processing unit 2131 can also perform the functions of network processor 2132, such as implementing software forwarding based on a general-purpose CPU, thus eliminating the need for network processor 2132 in physical interface card 2133.
[0276] Optionally, the network device 2100 includes multiple interface boards. For example, the network device 2100 further includes an interface board 2140. The interface board 2140 includes a central processing unit 2141, a network processor 2142, a forwarding table entry memory 2144, and a physical interface card 2143. The functions and implementation of each component in the interface board 2140 are the same as or similar to those of the interface board 2130 and are not described in detail here.
[0277] Optionally, network device 2100 further includes a switching fabric board 2120. Switching fabric board 2120 may also be referred to as a switch fabric unit (SFU). If network device 2100 includes multiple interface boards, switching fabric board 2120 is used to exchange data between the interface boards. For example, interface board 2130 and interface board 2140 can communicate via switching fabric board 2120.
[0278] The main control board 2110 is coupled to the interface board. For example, the main control board 2110, the interface board 2130, the interface board 2140, and the switching network board 2120 are connected to the system backplane via a system bus to achieve intercommunication. In one possible implementation, an inter-process communication (IPC) channel is established between the main control board 2110 and the interface boards 2130 and 2140, and communication is performed between the main control board 2110 and the interface boards 2130 and 2140 via the IPC channel.
[0279] Logically, network device 2100 includes a control plane and a forwarding plane. The control plane includes a main control board 2110 and a central processing unit (CPU) 2111. The forwarding plane includes various components that perform forwarding, such as a forwarding table entry memory 2134, physical interface cards 2133, and a network processor 2132. The control plane performs routing functions, generates forwarding tables, processes signaling and protocol messages, and configures and maintains the network device's status. The control plane sends the generated forwarding tables to the forwarding plane. On the forwarding plane, the network processor 2132 forwards messages received by the physical interface card 2133 based on the forwarding tables sent by the control plane. The forwarding tables sent by the control plane can be stored in the forwarding table entry memory 2134. In some embodiments, the control plane and forwarding plane can be completely separate and not located on the same network device.
[0280] It's worth noting that there may be one or more main control boards (SPUs), which can include both active and standby SPUs. There may also be one or more interface boards. The higher the network device's data processing capabilities, the more interface boards it provides. Interface boards can also have one or more physical interface cards. There may be no SPUs, one or more SPUs, and multiple SPUs can provide load balancing and redundancy. In a centralized forwarding architecture, network devices may not require SPUs; the interface boards handle service data processing for the entire system. In a distributed forwarding architecture, network devices may have at least one SPU, which enables data exchange between multiple interface boards, providing high-capacity data exchange and processing capabilities. Therefore, network devices with distributed architectures have greater data access and processing capabilities than those with centralized architectures. Alternatively, a network device can consist of a single card, without a switching fabric board (SFB), integrating the functions of the interface board and the main control board. In this case, the central processing unit (CPU) on the interface board and the CPU on the main control board can be combined into a single CPU on this card, performing the combined functions of the two. This type of network device has lower data exchange and processing capabilities (for example, low-end network devices such as switches or routers). The specific architecture used depends on the specific network deployment scenario and is not specified here.
[0281] In a specific embodiment, the network device 2100 corresponds to the code block processing apparatus shown in FIG27 . In some embodiments, the transceiver module 2701 in the code block processing apparatus shown in FIG27 corresponds to the physical interface card 2133 in the network device 2100 , and the determination module 2702 corresponds to the central processing unit 2111 or the network processor 2132 in the network device 2100 .
[0282] The present application also provides a code block processing system, comprising: a first communication device and a second communication device. For example, the first communication device is the network device 2000 shown in FIG. 28 or the network device 2100 shown in FIG. 29 , and the second communication device is the network device 2000 shown in FIG. 28 or the network device 2100 shown in FIG. 29 . The code block processing method performed by the first communication device and the second communication device can be found in the description of the embodiment shown in FIG. 9 or FIG. 19 above, and will not be further described here.
[0283] An embodiment of the present application further provides a communication device, comprising: a transceiver, a memory, and a processor. The transceiver, the memory, and the processor communicate with each other via an internal connection path. The memory is used to store instructions, and the processor is used to execute the instructions stored in the memory to control the transceiver to receive signals and control the transceiver to send signals. When the processor executes the instructions stored in the memory, the processor executes the method required to be executed by the first communication device or the second communication device.
[0284] It should be understood that the processor may be a CPU, or other general-purpose processor, digital signal processor (DSP), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware component, etc. The general-purpose processor may be a microprocessor or any conventional processor, etc. It is worth noting that the processor may be a processor that supports the Advanced Reduced Instruction Set Machine (ARM) architecture.
[0285] Furthermore, in an optional embodiment, the memory may include a read-only memory and a random access memory, and provide instructions and data to the processor. The memory may also include a non-volatile random access memory. For example, the memory may also store device type information.
[0286] The memory may be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. Non-volatile memory may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory may be random access memory (RAM), which is used as an external cache memory. By way of example and not limitation, many forms of RAM are available. For example, static RAM (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), synchronized dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM).
[0287] An embodiment of the present application further provides a computer-readable storage medium, in which at least one instruction is stored. The instruction is loaded and executed by a processor to enable a computer to implement any of the above code block processing methods.
[0288] The embodiments of the present application further provide a computer program (product), which, when executed by a computer, can enable a processor or computer to execute the corresponding steps and / or processes in the above method embodiments.
[0289] An embodiment of the present application also provides a chip, including a processor, for calling and executing instructions stored in a memory from the memory, so that a communication device equipped with the chip executes any of the above code block processing methods.
[0290] An embodiment of the present application also provides another chip, including: an input interface, an output interface, a processor and a memory, wherein the input interface, the output interface, the processor and the memory are connected through an internal connection path, and the processor is used to execute the code in the memory. When the code is executed, the processor is used to execute any of the above code block processing methods.
[0291] In the above embodiments, all or part of the embodiments can be implemented by software, hardware, firmware, or any combination thereof. When implemented using software, all or part of the embodiments can be implemented in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions according to the present application are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via a wired (e.g., coaxial cable, optical fiber, digital subscriber line) or wireless (e.g., infrared, wireless, microwave, etc.) method. The computer-readable storage medium can be any available medium that can be accessed by a computer or a data storage device such as a server or data center that includes one or more available media. The available medium can be a magnetic medium (e.g., a floppy disk, a hard disk, a magnetic tape), an optical medium (e.g., a DVD), or a semiconductor medium (e.g., a solid state drive).
[0292] Those skilled in the art will appreciate that the various method steps and modules described in conjunction with the embodiments disclosed herein can be implemented in software, hardware, firmware, or any combination thereof. In order to clearly illustrate the interchangeability of hardware and software, the steps and components of each embodiment have been generally described in terms of function in the above description. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art may use different methods to implement the described functions for each specific application, but such implementation should not be considered to be beyond the scope of this application.
[0293] Those skilled in the art will understand that all or part of the steps of implementing the above embodiments may be accomplished by hardware, or may be accomplished by a program instructing the relevant hardware, and the program may be stored in a computer-readable storage medium, and the above-mentioned storage medium may be a read-only memory, a disk or an optical disk, etc.
[0294] When software is used for implementation, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer program instructions. As an example, the method of the embodiment of the present application can be described in the context of a machine executable instruction, and the machine executable instruction is such as included in the program module executed in the device on the real or virtual processor of the target. Generally speaking, a program module includes a routine, a program, a library, an object, a class, a component, a data structure, etc., which performs a specific task or realizes a specific abstract data structure. In various embodiments, the function of the program module can be merged or split between the described program modules. The machine executable instruction for the program module can be executed in a local or distributed device. In a distributed device, the program module can be located in both a local and a remote storage medium.
[0295] The computer program code for realizing the method for the embodiment of the application can be written in one or more programming languages.These computer program codes can be provided to the processor of general-purpose computer, special-purpose computer or other programmable data processing device, so that program code, when being executed by computer or other programmable data processing device, causes the function / operation specified in flow chart and / or block diagram to be implemented.Program code can be executed completely on computer, partly on computer, as independent software package, partly on computer and partly on remote computer or completely on remote computer or server.
[0296] In the context of the embodiments of the present application, computer program code or related data may be carried by any suitable carrier to enable a device, apparatus, or processor to perform the various processes and operations described above. Examples of carriers include signals, computer-readable media, and the like.
[0297] Examples of signals may include electrical, optical, radio, acoustic or other forms of propagated signals, such as carrier waves, infrared signals, etc.
[0298] A machine-readable medium may be any tangible medium that contains or stores a program for or in connection with an instruction execution system, apparatus, or device. A machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination thereof. More detailed examples of machine-readable storage media include an electrical connection with one or more wires, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical storage device, a magnetic storage device, or any suitable combination thereof.
[0299] Those skilled in the art will clearly understand that, for the sake of convenience and brevity of description, the specific working processes of the above-described systems, devices, and modules can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.
[0300] In the several embodiments provided in this application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are merely schematic. For example, the division of the modules is merely a logical function division. In actual implementation, there may be other division methods, such as multiple modules or components can be combined or integrated into another system, or some features can be ignored or not executed. In addition, the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or modules, or can be electrical, mechanical or other forms of connection.
[0301] The modules described as separate components may or may not be physically separate, and the components shown as modules may or may not be physical modules, that is, they may be located in one place or distributed across multiple network modules. Some or all of the modules may be selected according to actual needs to achieve the purpose of the embodiments of the present application.
[0302] In addition, the functional modules in the various embodiments of the present application may be integrated into a processing module, or each module may exist physically separately, or two or more modules may be integrated into a single module. The above-mentioned integrated modules may be implemented in the form of hardware or software functional modules.
[0303] If the integrated module is implemented in the form of a software functional module and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or the part that contributes to the prior art, or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for enabling a computer device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the method in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk.
[0304] In this application, the terms "first", "second", etc. are used to distinguish between identical or similar items that have substantially the same effects and functions. It should be understood that there is no logical or temporal dependency between "first", "second", and "nth", nor is there any limitation on quantity or execution order. It should also be understood that although the following description uses the terms first, second, etc. to describe various elements, these elements should not be limited by the terms. These terms are only used to distinguish one element from another. For example, without departing from the scope of the various examples, a first image may be referred to as a second image, and similarly, a second image may be referred to as a first image. The first image and the second image may both be images, and in some cases, may be separate and different images.
[0305] It should also be understood that in the various embodiments of the present application, the size of the serial number of each process does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.
[0306] In this application, the term "at least one" means one or more, and the term "plurality" means two or more. For example, "plurality of second messages" means two or more second messages. The terms "system" and "network" are often used interchangeably herein.
[0307] It should be understood that the terminology used in the description of the various examples herein is for the purpose of describing particular examples only and is not intended to be limiting. As used in the description of the various examples and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise.
[0308] It should also be understood that the term "and / or" as used herein refers to and encompasses any and all possible combinations of one or more of the listed items. The term "and / or" describes an association between associated objects, indicating that three possible relationships exist. For example, "A and / or B" can represent: A exists alone, A and B exist simultaneously, or B exists alone. Furthermore, the character " / " in this application generally indicates that the associated objects are in an "or" relationship.
[0309] It will also be understood that the term “comprise” (also known as “includes,” “including,” “comprises,” and / or “comprising”) when used in this specification specifies the presence of stated features, integers, steps, operations, elements, and / or components, but does not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.
[0310] It should also be understood that the terms “if” and “if” may be interpreted to mean “when” or “upon” or “in response to determining” or “in response to detecting.” Similarly, the phrases “if it is determined that ” or “if [stated condition or event] is detected” may be interpreted to mean “upon determining ” or “in response to determining ” or “upon detecting [stated condition or event]” or “in response to detecting [stated condition or event],” depending on the context.
[0311] It should be understood that determining B based on A does not mean determining B based solely on A. B can also be determined based on A and / or other information.
[0312] It should also be understood that references throughout this specification to "one embodiment," "an embodiment," or "one possible implementation" mean that specific features, structures, or characteristics associated with that embodiment or implementation are included in at least one embodiment of the present application. Therefore, the appearance of "in one embodiment," "in an embodiment," or "one possible implementation" throughout this specification does not necessarily refer to the same embodiment. Furthermore, these specific features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
[0313] The above description is only an optional embodiment of the present application and is not intended to limit the present application. Any modifications, equivalent replacements, improvements, etc. made within the principles of the present application should be included in the scope of protection of the present application.
Claims
1. A code block processing method, characterized in that: The method comprises: Obtain at least one service code block stream; A multiplexed code block stream is obtained based on the at least one business code block stream, the multiplexed code block stream includes a mixed code block and a multiplexed code block, the mixed code block is a code block obtained by scheduling the code blocks in the at least one business code block stream according to a first scheduling ratio, the multiplexed code block carries multiplexing information, and the multiplexing information is used to process the multiplexed code block stream.
2. The method according to claim 1, characterized in that The method further comprises: In the process of scheduling the code blocks in the at least one business code block stream according to the first scheduling ratio, if the first number of code blocks included in the first business code block stream is less than the second number of code blocks scheduled in the first business code block stream, a third number of placeholder code blocks is inserted, wherein the first business code block stream is the code block stream in the at least one business code block stream, and the third number is the difference between the second number and the first number.
3. The method according to claim 1 or 2, characterized in that The obtaining of at least one service code block stream includes: receiving a code block stream transmitted by at least one channel, wherein the code block stream transmitted by the at least one channel includes a first code block stream; All idle code blocks in the first code block stream are deleted to obtain a first service code block stream, where the first service code block stream is a code block stream in the at least one service code block stream.
4. The method according to any one of claims 1 to 3, characterized in that: The method further comprises: An idle code block is inserted into the scheduled code block based on the frequency deviation, where the frequency deviation is the frequency deviation between the nodes used to transmit the multiplexed code block stream, the number of the idle code blocks is at least two, and the Hamming distance between the at least two idle code blocks meets the distance requirement.
5. The method according to any one of claims 1 to 4, characterized in that: The mixed code block includes a hidden code block, and the hidden code block is obtained by hiding the control code block in the at least one service code block stream.
6. The method according to any one of claims 1 to 5, characterized in that: The multiplexed code block is a first overhead code block, the multiplexing information is carried in a reserved field of the first overhead code block, and the first overhead code block is used to extract the mixed code block in the multiplexed code block stream.
7. The method according to any one of claims 1 to 5, characterized in that: The multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream also includes a second overhead code block, which is used to extract the multiplexing indication code block and the mixed code block from the multiplexing code block stream.
8. The method according to any one of claims 1 to 7, characterized in that: The service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to the second scheduling ratio.
9. The method according to any one of claims 1 to 8, characterized in that: The first scheduling ratio is determined based on the bandwidth or transmission rate of the at least one service code block flow.
10. The method according to any one of claims 1 to 9, characterized in that: After acquiring the multiplexed code block stream based on the at least one service code block stream, the method further includes: An egress port is determined according to the first service identifier of the multiplexed code block stream, and the multiplexed code block stream is sent through the egress port. The transmission rate of the multiplexed code block stream is greater than the transmission rate of the at least one service code block stream.
11. The method according to any one of claims 1 to 10, characterized in that: The multiplexing information includes at least one of a first service identifier or scheduling information of the multiplexed code block stream, and the scheduling information includes at least one of the first scheduling ratio or a second service identifier corresponding to the at least one service code block stream.
12. A code block processing method, characterized in that: The method comprises: Acquire a multiplexed code block stream, where the multiplexed code block stream includes mixed code blocks and multiplexed code blocks, where the mixed code blocks are obtained by scheduling code blocks in at least one service code block stream according to a first scheduling ratio, and the multiplexed code blocks carry multiplexing information; The multiplexed code block stream is processed according to the multiplexing information.
13. The method according to claim 12, characterized in that The multiplexing information includes scheduling information, and the scheduling information includes the first scheduling ratio; and processing the multiplexed code block stream according to the multiplexing information includes: The mixed code block is extracted from the multiplexed code block stream, and the at least one service code block stream is demultiplexed from the mixed code block according to the first scheduling ratio.
14. The method according to claim 13, wherein: Demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio includes: In a case where the mixed code block includes an idle code block, deleting the idle code block in the mixed code block; The at least one service code block stream is demultiplexed from the mixed code blocks after the idle code blocks are deleted according to the first scheduling ratio.
15. The method according to claim 13, characterized in that Demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio includes: Demultiplexing at least one initial code block stream from the mixed code block according to the first scheduling ratio, the at least one initial code block stream including a first initial code block stream; In the case where the first initial code block stream includes placeholder code blocks, the placeholder code blocks in the first initial code block stream are deleted to obtain a first service code block stream, where the first service code block stream is a code block stream in the at least one service code block stream.
16. The method according to claim 13, characterized in that The mixed code block includes a hidden code block, and in the process of demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio, the hidden code block is restored to a control code block.
17. The method according to any one of claims 13 to 16, characterized in that: The service code block stream in the at least one service code block stream is obtained by scheduling at least one sub-service code block stream according to a second scheduling ratio, and the scheduling information also includes the second scheduling ratio; after demultiplexing the at least one service code block stream from the mixed code block according to the first scheduling ratio, the method further includes: The at least one sub-service code block stream is demultiplexed from the service code block stream according to the second scheduling ratio.
18. The method according to claim 12, wherein: The multiplexing information includes a first service identifier of the multiplexed code block stream; and processing the multiplexed code block stream according to the multiplexing information includes: The multiplexed code block stream is forwarded according to the first service identifier.
19. The method according to claim 18, characterized in that The multiplexing code block is a first overhead code block, and the multiplexing information is carried in a reserved field of the first overhead code block; and forwarding the multiplexing code block stream according to the first service identifier includes: stripping the first overhead code block from the multiplexed code block stream at an ingress port to obtain the mixed code block; The mixed code block is sent to an egress port determined based on the first service identifier, and is sent through the egress port after inserting a third overhead code block, wherein the third overhead code block carries the multiplexing information.
20. The method according to claim 18, wherein The multiplexing code block is a multiplexing indication code block, the multiplexing information is carried in a designated field of the multiplexing indication code block, and the multiplexing code block stream further includes a second overhead code block; and forwarding the multiplexing code block stream according to the first service identifier includes: stripping off the second overhead code block in the multiplexed code block stream at an ingress port to obtain the multiplexing indication code block and the mixed code block; The multiplexing indication code block and the mixed code block are sent to an egress port determined based on the first service identifier, and are sent through the egress port after inserting a fourth overhead code block.
21. The method according to claim 12, wherein The obtaining of the multiplexed code block stream includes: receiving a multiplexed code block stream, the multiplexed code block stream further comprising idle code blocks inserted based on the frequency deviation; The processing of the multiplexed code block according to the multiplexing information includes: Frequency offset adjustment is performed on the multiplexed code block stream based on the frequency offset.
22. A code block processing device, characterized in that: The device comprises: A transceiver module, configured to perform the operations related to receiving and / or sending in the method according to any one of claims 1 to 11, or configured to perform the operations related to receiving and / or sending in the method according to any one of claims 12 to 21; A processing module, used to perform other operations other than the operations related to receiving and / or sending in the method described in any one of claims 1-11, or used to perform other operations other than the operations related to receiving and / or sending in the method described in any one of claims 12-21.
23. A network device, characterized in that: The network device includes: a processor, the processor is coupled to a memory, the memory stores at least one program instruction or code, and the at least one program instruction or code is loaded and executed by the processor so that the network device implements the code block processing method described in any one of claims 1-21.
24. A code block processing system, characterized in that: The code block processing system includes a first communication device and a second communication device; The first communication device is used to execute the code block processing method described in any one of claims 1-11, and the second communication device is used to execute the code block processing method described in any one of claims 12-21.
25. A computer-readable storage medium, characterized in that The computer storage medium stores at least one instruction, and the at least one instruction is loaded and executed by the processor, so that the computer implements the code block processing method according to any one of claims 1 to 21.
26. A computer program product, characterized in that The computer program product includes: computer program code, which is loaded and executed by a computer to enable the computer to implement the code block processing method according to any one of claims 1 to 21.
Citation Information
Patent Citations
Code block processing method, device, equipment, system, storage medium and program product
CN120389827A
Data transmission method, communication equipment and storage medium
CN109995434A
Data transmission method, communication device and storage medium
CN110971531A
Data transmission method, communication device and storage medium
CN112953675A
Communication method and network device
WO2023141777A1