Shielded packet checksum for more efficient digital communications
By using the masked packet checksum and bitmask mechanism in computer network communication, error detection and correction are provided only for important parts of the packet, which solves the problem of inefficient retransmission in the prior art and achieves more efficient digital communication.
Patent Information
- Application Number
- CN202411906706.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-08-09
- Filing Date
- 2020-06-17
- Publication Date
- 2025-04-11
AI Technical Summary
In computer network communication, the prior art often leads to inefficient retransmission when detecting and correcting packet transmission errors, which reduces communication efficiency.
The blocked packet checksum mechanism is used to identify the grouped part through a bitmask, and only error detection and/or error correction are provided for important parts, and error detection of unimportant parts is eliminated, thereby avoiding inefficient retransmission.
By adjusting the application scope of error detection and error correction, more efficient digital communication is achieved, and the throughput and efficiency of network communication is improved.
Smart Images

Figure CN119814228A_ABST
Abstract
Description
[0001] Related Applications
[0002] This application is a divisional application of the invention patent application with application number 202080056348.6 and invention name “Shielded group checksum for more efficient digital communication”. Background Art
[0003] Computer network communications between a sending computing device and a receiving computing device typically require the sending computing device to divide the digital data to be transmitted into discrete packets and send the packets over the computer network, and typically require the receiving computing device to receive the packets from the computer network and reassemble the digital data therefrom. Because computer network communications can be sent over a lossy communication medium, error detection and / or error correction schemes are often used. A common error detection scheme may require the use of error detection codes on a per-packet basis. Received packets whose error detection codes do not match expected values may be discarded, and if appropriate, the receiving computing device may request the sending computing device to resend the discarded packets.
[0004] Each retransmission reduces the efficiency of the entire computer network communication, such as by reducing the throughput of digital data sent between the sending computing device and the receiving computing device. In some cases, error detection may not be applied to computer network communications, thereby increasing the throughput of digital data sent between the sending computing device and the receiving computing device. However, in this case, there is no mechanism to determine whether any part of the received packet was received correctly, and therefore, this mechanism can only be used correctly in the case where the receiving computing device does not know the correctness of any particular packet. Summary of the invention
[0005] The shielded packet checksum can be used to provide error detection and / or error correction only for discrete parts of the packet to exclude other parts, thereby avoiding inefficient retransmissions if errors in packet transmission only occur in the parts excluded by the shielded packet checksum. In this way, error detection and / or error correction can be adjusted based on specific communication needs, so that if complete error detection and / or error correction are not required, more efficient digital communication can be achieved. The bit mask can identify the part of the packet whose data will be protected by the error detection and / or error correction scheme, the part of the packet whose data will be excluded from such error detection and / or error correction scheme, or a combination thereof. The bit mask can be the specification of each packet and can be merged into one or more fields of a separate packet. A single bit mask can also be equally applied to multiple packets, which can be delimited based on a packet identifier, a source generating such a packet, a specific communication stream, or other similar communication structures. This bit mask can be sent separately from multiple packets, or can be derived independently of each other by a sending computing device and a receiving computing device based on shared seed information. The identification of the portions of the packet whose data will be protected by the error detection and / or correction scheme may be based on a coding enumeration that may be directly decrypted, or may be compressed and decrypted by reference to an external resource, such as a dictionary identifying the options. In the event that the error detection and / or correction provided by the lower layers is disabled, the bit mask may be generated at the highest layer where error detection and / or correction is still being performed, or may be generated at the lowest layer based on data passed down from the higher layers.
[0006] This Summary is provided to introduce some concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
[0007] Other features and advantages will become apparent from the following detailed description which proceeds with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0008] The following detailed description can be best understood when read in conjunction with the accompanying drawings, in which:
[0009] Figure 1 is a system diagram of an exemplary system using a masked packet checksum;
[0010] Figure 2 is a system diagram of an exemplary packet using a masked packet checksum;
[0011] Figure 3 is a system diagram of an additional exemplary packet using a masked packet checksum;
[0012] Figure 4is a system diagram of an exemplary transmission and reception of packets using a masked packet checksum;
[0013] Figure 5 is a system diagram of another exemplary transmission and reception of packets using masked packet checksums;
[0014] Figure 6 is a flow chart of an exemplary transmission of data using a masked packet checksum;
[0015] Figure 7 is a flow chart of an exemplary receiving data using a masked packet checksum; and
[0016] Figure 8 is a block diagram of an exemplary computing device. DETAILED DESCRIPTION
[0017] The following description relates to a mechanism for adjusting error detection and / or error correction to be applied only to a discrete portion of a packet's identity to exclude other portions, thereby avoiding inefficient retransmissions when errors in packet transmission only occur in the excluded portion. This adjustment can be performed using a shielded packet checksum. In this way, error detection and / or error correction can be adjusted based on specific communication needs, so that if complete error detection and / or error correction is not required, more efficient digital communication can be achieved. A bit mask can identify the portion of a packet whose data will be protected by an error detection and / or error correction scheme, the portion of a packet whose data will be excluded from such an error detection and / or error correction scheme, or a combination thereof. A bit mask can be a specification for each packet and can be incorporated into one or more fields of a separate packet. A single bit mask can also be equally applied to multiple packets, which can be delimited based on a packet identifier, a source that generates such a packet, a specific communication stream, or other similar communication structures. This bit mask can be sent separately from multiple packets, or can be derived independently from each other by a sending computing device and a receiving computing device based on shared seed information. The identification of the portions of the packet whose data will be protected by the error detection and / or correction scheme may be based on an encoding enumeration that is directly decryptable, or one that may be compressed and decrypted by reference to an external resource, such as a dictionary identifying the options. In the event that the error detection and / or correction provided by lower layers is disabled, the bit mask may be generated at the highest layer where error detection and / or correction is still being performed, or may be generated at the lowest layer based on data passed down from higher layers.
[0018] Although not required, the following will be described in the general context of computer-executable instructions, such as program modules, executed by computing devices. More specifically, unless otherwise indicated, the description will refer to symbolic representations of actions and operations performed by one or more computing devices or peripherals. As such, it should be understood that such actions and operations, sometimes referred to as computer-executed actions and operations, include the manipulation of electrical signals representing data in a structured form by a processing unit. Such operations transform the data or maintain it at a location in memory, which reconfigures or otherwise changes the operation of the computing device or peripheral in a manner well known to those skilled in the art. A data structure that maintains data is a physical location with specific properties defined by a data format.
[0019] Generally, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. In addition, those skilled in the art will appreciate that computing devices are not necessarily limited to traditional personal computers, and include other computing configurations, including servers, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, etc. Similarly, computing devices are not necessarily limited to stand-alone computing devices, as these mechanisms can also be practiced in distributed computing environments where tasks are performed by remote processing devices linked through a communications network. In a distributed computing environment, program modules may be located in local and remote memory storage devices.
[0020] refer to Figure 1 , an exemplary system 100 is shown to provide context for the following description. The exemplary system 100 includes an exemplary sending computing device 110 and an exemplary receiving computing device 120, which are communicatively coupled to each other via an exemplary network 190. For the purposes of the description provided below, the network 190 may be a packetized communication network, whereby digital data is transmitted over the network 190 in the form of discrete, individual data packets, such as sent from the exemplary sending computing device 110 to the exemplary receiving computing device 120.
[0021] Figure 1An exemplary sequence of packets 130 is shown, including an exemplary packet 140 transmitted from an exemplary transmitting computing device 110 to an exemplary receiving computing device 120. Typically, packets, such as exemplary packet 140, may include an error detection code, such as exemplary error detection code 150. Such an error detection code may be used to detect transmission errors in packet 140. More specifically, upon receiving (such as by exemplary receiving computing device 120) exemplary packet 140, receiving computing device 120 may independently derive the error detection code from the data of packet 140. If the error detection code derived by receiving computing device 120 based on the data of packet 140 received by receiving computing device 120 is different from the error detection code 150 received as part of packet 140 by receiving computing device 120, it may be determined that the digital data of packet 140 was incorrectly received by receiving computing device 120, and receiving computing device 120 may take appropriate steps, such as discarding the received packet 140.
[0022] If a packet, such as exemplary packet 140, is dropped by receiving computing device 120, a process executing on receiving computing device 120 may request that packet 140 be retransmitted from sending computing device 110 to receiving computing device 120, thereby reducing the overall throughput of data from sending computing device 110 to receiving computing device 120 over network 190. To avoid such a reduction in throughput, packets may be sent without an error detection code, such as exemplary error detection code 150, or receiving computing device 120 may perform checks on received packets, such as packet 140, without using error detection code 150. In this case, however, any portion of packet 140 may have been sent or received with incorrect data.
[0023] In some cases, if digital data sent between computing devices 110 and 120 over network 190 is incorrectly sent or received, some portions of such digital data may be sufficiently important to justify a retransmission, while other portions of the digital data sent between computing devices 110 and 120 may be less important such that receiving the incorrect data is not detrimental enough to justify the inefficiencies and throughput losses inherent in causing a request to retransmit the packet. For example, the transmission of a numerical value may seek to prevent transmission errors in bits with higher numerical significance while being unaware of transmission errors in bits with lower numerical significance. As a specific example, a system (such as exemplary system 100) may need to transmit the value 227 from a sending computing device 110 to a receiving computing device 120. The desired precision may be such that if the receiving computing device receives a value such as 231 or 224, such a value may be "close enough," and the difference between the received value (e.g., 231) and the sent value (e.g., 227) may not be detrimental enough to the process executing on the exemplary system 100 to justify the additional cost and inefficiency of resending the packet for such a small error. Conversely, receiving a value such as 99 instead of the sent value of 227 may be detrimental enough to justify the additional cost and inefficiency of discarding such an incorrect packet and requesting a retransmission. Numerically, the value 227 may be represented as the eight-bit number 11100011. If one of the least significant bits is flipped during transmission due to a transmission error, the transmitted bits may indeed be 11100011, while the received bits may end up being 11100111, with the third least significant bit flipped from a binary value of "0" to a binary value of "1" due to the transmission error. The result of such a bit flip may be that the value 227 is transmitted, but the value 231 is received. As previously discussed, this difference may not be detrimental enough to justify the added cost and inefficiency of discarding the received packet. Conversely, if one of the most significant bits is flipped during transmission, then, for example, the transmitted bits may indeed be 11100011, while the received bits may end up being 01100011, where the most significant bit flipped from binary value "1" to binary value "0" due to a transmission error. The result of such a bit flip may be that the value 227 is transmitted, but the value 99 is received. As previously discussed, this difference may be significant, and packets carrying the value 99 should be detected as containing a transmission error and discarded, rather than using such a significantly different value and adversely affecting subsequent operations.
[0024] According to one aspect, the bit mask can identify the part of the grouping protected by the error detection and / or error correction scheme, the part of the grouping excluded from such error detection and / or error correction scheme, or their combination.As a simple example, the bit mask can be used in the above example to specify that the four most significant bits are protected by the error detection and / or error correction scheme, while excluding the four least significant bits from such error detection and / or error correction scheme.For example, the bit mask can specify that only the error detection code is generated based on the four most significant bits, and the four least significant bits are excluded.In this example, if the eight-bit binary value 11100011 is sent, but the eight-bit binary value 01100011 is received, then, when the error detection code is generated using the four most significant bits received (i.e. 0110) and the error detection code generated by this generation is compared with the error detection code sent with the four most significant bits sent (i.e. 1110), the difference will be revealed, and the grouping can be discarded.In this way, the transmission of value 227 and the reception of meaningful different values (such as 99) can be detected and processed. In contrast, if the eight-bit binary value 11100011 is sent, but the eight-bit binary value 11100111 is received, then when an error detection code is generated using the four most significant bits received (i.e., 1110) and such generated error detection code is compared to the error detection code sent with the packet that was generated using the four most significant bits sent (also 1110), the comparison will reveal no difference, and the packet can be retained. Because such a comparison is based only on the four most significant bits, it will not detect a difference in the third least significant bit between the binary value sent and the binary value received. In this way, the transmission of the value 227 and the reception of a different value (such as 231) (which is not meaningfully different for the process in this example) can be avoided by using a different (but not meaningfully different) received value instead of requesting a retransmission of such a resident packet, to avoid inefficiencies and reduced throughput.
[0025] Go to Figure 1 , exemplary packet 140 may be divided into portions 141, 142, 143, 144, and 145. A bit mask, not shown, may identify specific portions, such as exemplary portions 142 and 144, from which error detection codes, such as exemplary error detection code 150, may be generated. Excluding portions 141, 143, and 145 from the generation of error detection code 150 may result in transmission errors occurring in the digital data of those portions remaining undetected without requesting a retransmission, and without experiencing a reduction in throughput or efficiency of network communications. Returning to the simple example above, for example, portion 142 may include the four most significant bits of an eight-bit binary value (such as those used in the simple example above), while continuing with this example, portion 143 may include the four least significant bits of the same eight-bit binary value.
[0026] Go to Figure 2 , wherein the system 200 shown shows exemplary packets 210, 220, and 250. Exemplary packet 210 can be a typical packet, wherein error detection code 213 can be based on digital data contained in all remaining portions of exemplary packet 210, including, for example, exemplary header 211 and exemplary payload 212. For illustrative purposes, the packets shown in the figures of the present application are described similarly to exemplary packet 210, wherein the rectangular portions represent continuous bit sequences of digital data arranged in a left-to-right manner. Thus, for example, exemplary packet 210 is shown to include exemplary header 211, exemplary payload 212, and exemplary error detection code 213, wherein exemplary header 211 includes eight bits of data, exemplary payload 212 includes twenty-three bits of data, and exemplary error detection code 213 includes a single data bit.
[0027] The error detection code (such as exemplary error detection code 213) can be generated according to any known error detection mechanism, including parity check, cyclic redundancy check (CRC), checksum or other similar error detection mechanisms. For example, the error detection code based on parity check can be a single bit, which indicates whether the data generating such parity check bit is an even number or an odd number, so that if the single bit is changed during transmission, as a result, a different parity check bit will be generated and an error will be detected. As another example, CRC is based on binary division of the data on which the error detection code is based, and the remainder of the data is the CRC error detection code. As used herein, the term "error detection code" refers to any one or more bits of data generated to detect errors in the transmission of other data. Because errors in the transmission of such other data can be detected based on the error detection code, such other data is sent to be "protected" by the error detection code. As used herein, the term "error correction code" refers to any one or more bits of data generated to correct errors in the transmission of other data, so that if the other data is sent with errors, the original error-free data can be reconstructed from the received data (with errors) in combination with the error correction code. Known error correction mechanisms include redundant codes and Hamming codes.
[0028] exist Figure 2In exemplary system 200 of the present invention, exemplary packet 210 includes an error detection code generated based on all remaining data of the packet. In contrast, exemplary packet 220 includes an error detection code, such as exemplary error detection code 223, which may be based only on specified portions of exemplary packet 220. For example, exemplary packet 220 may include exemplary header 221, exemplary payload 222, and exemplary error detection code 223. In addition, exemplary packet 220 may include a bit mask, such as exemplary bit mask 230. The bit mask may specify which portions of the packet are used to generate the error detection code, and thus, are protected by the error detection code in the sense that transmission errors occurring within those portions of the packet may be detected by reference to the error detection code, while transmission errors occurring outside those portions of the packet may not be detected, and therefore, retransmission of the packet will not be triggered, which would otherwise reduce the efficiency and throughput of network communications.
[0029] According to one aspect, a bit mask, such as exemplary bit mask 230, may include a sequence of digital bits of data, each digital bit indicating whether a corresponding portion of exemplary packet 220 is to be used in the generation of exemplary error detection code 223. For example, if exemplary packet 220 is divided into exemplary portions 231, 232, 233, and 234, then exemplary bit mask 230 may include four bits of data, each bit indicating whether a corresponding portion is to be used in the generation of exemplary error detection code 223. For example, exemplary bit mask 230 may be a sequence of four bits: 0101, which indicates that portions 232 and 234 are to be used in the generation of exemplary error detection code 223, such as Figure 2 The dashed arrows are intended to illustrate that there is an explicit indication (positive or negative) in the exemplary bit mask 230 indicating whether the corresponding portion of the exemplary packet 220 is included in the generation of the error detection code 223. This explicit indication may be a single bit, or may be multiple data bits that provide additional per-portion details for the portion of the packet to which such indication corresponds.
[0030] Alternatively, the bitmask may identify only portions of the packet to be used in the generation of the error detection code, wherein the absence of an indication of a portion of the packet in the bitmask is an indicator that the portion is not to be included in the generation of the error detection code. Figure 3 , where the exemplary packet 310 shown includes an exemplary header 311, an exemplary payload 312, and an exemplary error detection code 313. An exemplary bit mask 320 (which may be a portion of the exemplary packet 310) may include only indicators of those portions of the exemplary packet 310 that are to be used in the generation of the exemplary error detection code 313, such as exemplary portions 322 and 324. The absence of an indication of any of portions 321 and 323 in the exemplary bit mask 320 may be an implicit indication that the exemplary portions 321 and 323 are not to be used in the generation of the error detection code 313. Thus, as Figure 3 As shown by dashed arrows in FIG. 3 , example bit mask 320 may include only explicit indications that example portions 322 and 324 are to be used in the generation of example error detection code 313 , as shown by non-dashed arrows.
[0031] As another alternative, the bit mask may identify only portions of the packet that will not be used in the generation of the error detection code, wherein the absence of an indication of a portion of the packet in the bit mask is an indicator that the portion is to be included in the generation of the error detection code. Figure 3 The illustrated exemplary packet 330 includes an exemplary header 331, an exemplary payload 332, and an exemplary error detection code 333. An exemplary bit mask 340 (which may be a portion of the exemplary packet 330) may include only indicators of those portions of the exemplary packet 330 that are not to be used in the generation of the exemplary error detection code 313 (such as exemplary portions 341 and 343). The absence of an indication of any of portions 342 and 344 in the exemplary bit mask 340 may be an implicit indication that the exemplary portions 342 and 344 are to be used in the generation of the error detection code 333. Thus, as shown in FIG. Figure 3 As shown by dashed arrows in the example bit mask 320, the example bit mask 320 may only include a display indication that the example portions 341 and 343 will not be used in the generation of the example error detection code 333. Therefore, as further shown by non-dashed arrows, the example portions 342 and 344 may be used in the generation of the example error detection code 333.
[0032] Go to Figure 2, the exemplary portions 231, 232, 233, and 234 of the exemplary packet 220 may be divided in many different ways, and their specifications may be identified, recorded, and / or communicated in many different ways. For example, each of the portions 231, 232, 233, and 234 may be equal in size in terms of the number of bits, or they may be individually sized such that the number of bits in one of the portions 231, 232, 233, or 234 may be different from the number of bits in any one or more of the other portions of the portions 231, 232, 233, or 234. The specifications and / or delineations of the portions 231, 232, 233, and 234 may be part of a bit mask, such as the exemplary bit mask 230. Alternatively, the number of bits in each portion may be predetermined, or may be a set amount. For example, the bits of the packet may be divided into 32-bit segments, wherein the indicators in the bit mask (such as the exemplary bit mask 230) are understood to correspond to the sequential segments in the same order as the indicators. For example, the exemplary bit mask 230 may include a binary digital value of 0101, wherein the first digital bit ("0") is understood to correspond to the first thirty-two bits of the exemplary packet 220 (such as may be represented by the exemplary portion 231), the second digital bit ("1") is understood to correspond to the second thirty-two bits of the exemplary packet 220 (such as may be represented by the exemplary portion 232), the third digital bit ("0") is understood to correspond to the third thirty-two bits of the exemplary packet 220 (such as may be represented by the exemplary portion 233), and the fourth digital bit ("0") is understood to correspond to the fourth thirty-two bits of the exemplary packet 220 (such as may be represented by the exemplary portion 234). As yet another alternative, the delineation of the portions of the packet (such as the exemplary portions 231, 232, 233, and 234) may be part of the exemplary packet 220 itself. For example, data within a packet may indicate the end of a previous portion and the beginning of a subsequent portion. As another alternative, the delineation of portions of a packet (such as exemplary portions 231, 232, 233, and 234) may be independent of individual packets (such as exemplary packet 220). For example, the delineation of portions of a packet may be sent separately from any one packet, may be pre-agreed upon, or other similar explicit or implicit delineation mechanisms may be used.
[0033] Although shown as crossing boundaries of established portions of a packet (such as a header portion, a payload portion, etc.), demarcation of portions of a packet can be based on such boundaries. For example, a first demarcated portion can be demarcated based on the beginning or end of a payload portion. Other demarcations or identifications of portions of a packet can also be used.
[0034] According to one aspect, a bit mask (such as exemplary bit mask 230) can be sent independently of any one or more packets to which such bit mask can be applied. For example, as shown in exemplary system 240, bit mask 260 can be applied to multiple packets, such as exemplary packets 250, 271, 272, and 273. Exemplary packets 250, 271, 272, and 273 can be identified as corresponding to bit mask 260 in various ways. For example, bit mask 260 can identify the source of the sending application, or other sources of data to be grouped, or data packets, and can be applied to all packets originating from such sources. As another example, the identification of a flow, a process, a communication channel, a port, a message identifier, or other similar identifications of one or more packets to which bit mask 260 will be applied can also be used. Alternatively or in addition, each group (such as exemplary groups 250, 271, 272 and 273) may individually include an identification or correlation indicating that the error detection code of such exemplary group (such as exemplary error detection code 253 of exemplary group 250) is generated based on information of a bit mask 260 that primarily indicates which portions (such as exemplary portions 261, 262, 263 and 264) are used to generate the error detection code.
[0035] A bit mask (such as the exemplary bit mask 260) can be independently derived by the sending computing device and the receiving computing device, rather than being independently sent. For example, a commonly used bit mask can be pre-agreed, and the identification of a specific bit mask can be exchanged between computing devices. Similarly, a commonly used bit mask can be pre-exchanged, and a reference to such a bit mask can be included in a separate packet in place of the explicit indicator of the portion detailed above. Thus, for example, the exemplary bit mask 230 (rather than the bit sequence detailed above) can instead include an identification of a previously agreed bit mask, which can be identified using less digital data than the bit mask itself. As a simple example, if only two bit masks are used, where one bit mask specifies that only segments 232 and 234 are used when generating exemplary error detection code 223, such bit mask being in the form of binary digits 0101, as detailed above, and the other bit mask specifies that only segments 231 and 233 are used when generating exemplary error detection code 223, such bit mask being in the form of binary digits 1010, then, instead of specifying groups of all four binary digits, a code that references a previously agreed-upon mask may be used, where a code with a binary value of "0" represents the first bit mask and a code with a binary value of "1" represents the other bit mask, thereby saving space within each individual group.
[0036] Go to Figure 3, although reference has been made above to error detection codes, the descriptions apply equally to error correction codes. More specifically, a bit mask may be used to specify which segments or portions of a packet are protected by an error correction code, which may allow the original transmitted data in those portions to be reconstructed in the event of a transmission error. According to one aspect, the bit mask may include identification of segments of the packet to be included in the error detection code, and may also separately include identification of segments of the packet to be included in the error correction code. For example, exemplary packet 350 illustrates exemplary bit mask 360, which may identify which of segments 361, 362, 363, and 364 are used in the generation of error detection code 353, wherein exemplary bit mask 360 also identifies which of segments 361, 362, 363, and 364 are used in the generation of error correction code 354. For example, as shown, exemplary bit mask 360 may identify segments 362 and 364 to be used in the generation of error detection code 353, but may identify that only segment 362 will be used in the generation of error correction code 354. In this case, if a transmission error occurs in segment 362 or 364, the transmission error may be detected, but only the transmission error in segment 362 may be corrected without requiring retransmission. One mechanism by which a bit mask (such as exemplary bit mask 360) may identify which portions are to be used in the generation of error detection codes and which portions are to be used in the generation of error correction codes separately may be to include two bits for each portion, one bit indicating whether the portion is to be used in the generation of error detection codes, and a second bit indicating whether the portion is to be used in the generation of error correction codes. Thus, for example, the exemplary bit mask 360 may include a sequence of digital bits in the form of 00110010, wherein the first two digital bits identify whether the corresponding portion 361 will be used in the generation of the error detection code 353 and in the generation of the error correction code 354, respectively, and the next two digital bits identify whether the corresponding portion 362 will be used in the generation of the error detection code 353 and in the generation of the error correction code 354, and so on.
[0037] According to one aspect, in order to be used with existing network hardware and software (such as a network interface card driver), existing error detection mechanisms can be disabled at such lower levels of software and / or network hardware, and the above-mentioned mechanisms can be used to perform error detection and / or error correction at a higher level. As used herein, the terms "higher layers" or "lower layers" refer to common layered network communication models, such as the well-known OSI model, but do not refer to any specific layer of a specific model.
[0038] Go to Figure 4, wherein the exemplary system 400 shown illustrates the transmission of data from a sending computing device 110 to a receiving computing device 120 using the adjustable error detection mechanism detailed above. Initially, a higher-level application (such as an application executing on the exemplary sending computing device 110) may generate data (such as exemplary data 410), only a portion of which (such as exemplary portion 411) may need to be protected in transmission for accuracy. For example, returning to the simple example provided above, the data 410 may include an eight-bit binary value, of which the four most significant bits are portion 411 whose accuracy is to be protected in transmission, while the remainder of the data 410 (i.e., the four least significant bits) does not require such accuracy protection or error detection.
[0039] According to one aspect, identification 412 of portion 411 may be provided along with data 410 to a lower level process, such as a network transmission process. Such a process may group the data, such as into exemplary grouping 420. Figure 4 In the simplified illustration shown, exemplary data 410 may be part of an exemplary payload 422 of an exemplary packet 420, which may also include an exemplary header 421, an exemplary bit mask 423, and an exemplary error detection code 424. A lower-level process may use identification 412 to determine an appropriate bit mask (such as exemplary bit mask 423), which may identify an appropriate portion of payload 422 (such as exemplary portion 425) corresponding to data 411 whose accuracy is to be protected in transmission as the portion to be used in the generation of exemplary error detection code 424. Exemplary bit mask 423 may identify exemplary portion 425 according to the mechanisms detailed above. Exemplary error detection code 424 may then be generated based on exemplary portion 425, also as detailed above.
[0040] Subsequently, exemplary packet 420 may be provided to a transport layer, which may further group packet 420, such as by generating a packet, such as exemplary packet 430, that includes packet 420 as its payload 432. Furthermore, in accordance with known error detection code generation mechanisms, exemplary packet 430 may include header 431 and error detection code 433. Exemplary packet 430 may then be sent from sending computing device 110 to receiving computing device 120 over network 190.
[0041] The receiving computing device 120 may receive a packet 460 corresponding to the packet 430, despite the possible transmission errors as detailed above. According to one aspect, the error detection code 433 of the transmitted packet 430 may have been generated using a known mechanism that does not provide error detection adjustment, and the error detection code 433 of the transmitted packet 430 may be received as the error detection code 463 of the received packet 460. Accordingly, comparing the received error detection code 463 with the independently generated error detection code generated on the receiving computing device 120 may result in the entire packet 460 being discarded. Such action may invalidate the benefits of the adjustable error detection provided by the error detection code 424 in combination with the bit mask 423 as detailed above. In order to prevent such invalidation, and to be able to use the above-described adjustable error detection mechanism with existing network hardware and software, the error detection provided by such existing network hardware and software may be disabled. For example, the receiving computing device 120 can use straight-through routing 451 so that received packets (such as exemplary packet 460) are not error-checked and / or error-corrected at the data link layer, but are instead passed to a higher-level software process. Error detection code 463 generated by a known mechanism can be ignored and not used to check for errors in the packet, as shown by gray error detection code 463.
[0042] The payload 462 of the received packet 460 can be unpacked, and the packet 470 can be provided to a higher-level software process. Such a higher-level software process can implement the adjustable error detection mechanism detailed above. For example, the exemplary bit mask 473 of the exemplary packet 470 can be referenced to identify which parts of the exemplary packet 470 will be used to independently generate an error detection code, which can be compared with the exemplary error detection code 474 received as part of the received packet 470. Based on the bit mask 473, only a portion 475 of the packet 470 can be used to generate an error detection code, and the generated error detection code can be compared with the received error detection code 474. If the comparison reveals no difference, it can be determined that no transmission error affecting the data in the portion 475 has occurred. The payload 472 of the received packet 470 can then be unpacked into data 480, which can then be provided to the receiving application. The data 480 provided to the receiving application includes a portion 481 whose accuracy is protected during transmission. Thus, the provision of data 480 does not necessarily mean that all of data 480 is received without transmission errors, but only that the data within portion 481 is received without transmission errors. Returning again to the simple example provided above, if portion 481 is the four most significant bits of an eight-bit number, then the value of data 480 may differ slightly from the value of data 410 because errors may have been introduced into the four least significant bits as it travels over network 190, but this difference may be limited because the four most significant bits are received without error. In contrast, if the error detection code independently generated on the receiving computing device 120 using information from bit mask 473 does not match error detection code 474, it may be determined that portion 475 was likely sent in error, and accordingly, the received packet 470 may be discarded and retransmitted. Data 480 is shown in dashed lines to indicate that its provision to the receiving application is dependent on the matching of the error detection code, as described in detail herein. In this way, two applications can transmit data whose required accuracy can be used to adjust the error detection level, so that data requiring lower accuracy can be sent with error detection applied to only a smaller portion of the packet, thereby resulting in fewer retransmissions due to transmission errors and resulting in higher throughput and higher efficiency, while data requiring higher accuracy can be sent with error detection applied to a larger portion of the packet, thereby potentially resulting in more retransmissions due to transmission errors and correspondingly resulting in lower throughput and lower efficiency. Figure 4 The exemplary system 400 shown in illustrative embodiments illustrates one mechanism by which such adjustable error detection may be implemented using existing network hardware and software.
[0043] Go to Figure 5, wherein the exemplary system 500 shown illustrates sending data from a sending computing device 110 to a receiving computing device 120 using the adjustable error detection mechanisms detailed above, such as these adjustable error detection mechanisms may be implemented in software and / or hardware executed at lower layers of a network stack. More specifically, the exemplary system 500 also illustrates data sent by an application executing on the sending computing device 110, namely exemplary data 510, which may include data whose accuracy is to be protected in transmission, such as exemplary portion 511. Information identifying portion 511 (such as exemplary identification 512) may be passed down to lower layers of the network stack and may be used to generate a bit mask (such as exemplary bit mask 523) in the manner detailed above. The exemplary bit mask 523 may be part of an exemplary packet 520, which includes a header 521 and a payload 522 into which the data 510 is packetized. Exemplary bit mask 523 may identify a portion of packet 520 , such as exemplary portion 525 , that will be used to generate an error detection code to protect the accuracy of portion 511 , which may correspond to portion 525 of packet 520 .
[0044] However, the generation of error detection codes may not be performed as part of the generation of packet 520. Instead, according to one aspect, when packet 520 is passed down the network stack, it may be generated, such as in Figure 5 The manner shown is incorporated into the payload of the packet generated at the successively lower level. For example, exemplary packet 520 can be grouped into the payload 532 of a lower layer packet (such as exemplary packet 530), which can also include header 531 and bit mask 533, which specifies which parts of exemplary packet 530 will be used to generate error detection code 534. According to one aspect, the information of bit mask 523 of packet 520 can be passed down, such as the parameters provided to the "generate packet" function call passed down to such lower layers. The information of bit mask 523 can be incorporated into bit mask 533 as part of the generation of packet 530, which also requires that packet 520 be grouped into the payload 532 of packet 530. For example, exemplary bit mask 533 can include an indicator indicating that part 535 of packet 530 will be used in the generation of error detection code 534 of packet 530. As previously described, portion 535 may correspond to portion 525 of packet 520, which in turn may correspond to portion 511 whose accuracy is to be protected in transmission, as previously described.
[0045] According to one aspect, at the lowest level (such as represented by packet 530), bit mask 533 may include an identification of a portion of packet 530 that corresponds to at least header 531. In this manner, error detection code 534 of packet 530 may also protect header information 531 so that transmission errors occurring within header 531 may be detected. The portion of exemplary packet 531 indicated by exemplary bit mask 533 to be used in the generation of exemplary error detection code 534 is shown in FIG. Figure 5 is shown via a dotted line.
[0046] The exemplary packet 530 may be sent from the sending computing device 110 to the receiving computing device 120 via the network 190, where the exemplary packet 530 may be received as a received packet 560. The bit mask 563 may be used to determine which portions of the exemplary packet 560 will be used when independently generating an error detection code to compare with the received error detection code 564. As previously described, such portions may be used to independently generate an error detection code, and such independently generated error detection code is compared with the received error detection code 564. If such a comparison reveals a difference between the two, then it may be determined that a transmission error has occurred within one of the portions used to generate the error detection code, and the packet 560 may be discarded. A retransmission request may then be made, causing the sending computing device 110 to send the packet 530 again via the network 190 to the receiving computing device 120. However, if the generated error detection code matches the received error detection code 564, the exemplary payload 562 may be extracted into, for example, an exemplary higher-level packet 570, which includes a header 571 and a payload 572. In turn, exemplary higher-level packet 570 may be unpacked into exemplary data 580, which may be provided to a receiving application. As previously described, any transmission errors within portion 581 of data 581 (corresponding to portion 575 of packet 570, which corresponds to portion 565 of packet 560) may have been detected, and thus, the accuracy of the data within portion 581 may have been protected in transmission.
[0047] Go to Figure 6, wherein the exemplary flow chart 600 shown shows an exemplary series of steps that can be performed by a sending computing device. Initially, at step 610, data to be sent can be received for packetization and transmission. As part of the packetization of such data, at step 620, it can be determined whether any particular portion of the data of step 610 needs to be protected in transmission. Identification or determination. Subsequently, at step 630, a bit mask can be generated, which can identify a continuous range of data within a packet, which includes at least a portion of the data to be sent from step 610. As detailed above, the bit mask generated at step 630 can be any of many different formats, including, for example, a digital bit sequence, wherein each one or more bits are associated with a portion of the packet and indicate whether such portion will be included in the generation of an error detection code. At step 640, a packet can be generated, which includes at least a portion of the data from step 610. At step 640, the generation of such a packet can include the generation of an error detection code, which can be generated based on the portion identified by the corresponding bit mask from step 630. The packet generated at step 640 and the bitmask generated at step 630 may be sent at step 650. As previously detailed, the bitmask may be sent as part of the packet or separately, and may apply to one or more packets.
[0048] Go to Figure 7 , wherein the exemplary flowchart 700 shown shows an exemplary series of steps that can be performed by a receiving computing device. Initially, at step 710, the receiving computing device can receive one or more packets and corresponding bit masks. As previously described, such a bit mask can be included in the packet, can be sent separately, or can be independently derived based on shared or sent information. At step 720, using data from the received packet, an error detection code for such a packet can be generated based on a portion of the received packet, the portion of the received packet being identified by the bit mask corresponding to the packet. Subsequently, at step 730, the error detection code generated at step 720 can be compared with the received error detection code. If they are the same, as determined at step 740, processing can proceed to 760, and the received packet can be passed to a higher layer of the network stack of the receiving computing device. Conversely, if at step 740, it is determined that there is a difference between the error detection code generated at step 720 and the error detection code received with the packet, the packet can be discarded, such as at step 750, and the packet can be eventually retransmitted if appropriate. In this way, adjustable error detection can be used to improve network throughput and efficiency in situations where not all transmitted data needs to be transmitted without errors.
[0049] Go to Figure 8, shows an exemplary computing device 800 that can perform some or all of the above mechanisms and actions. The exemplary computing device 800 may include, but is not limited to, one or more central processing units (CPUs) 820, a system memory 830, and a system bus 821 that couples various system components including the system memory to the processing unit 820. The system bus 821 can be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The computing device 800 may optionally include graphics hardware, including, but not limited to, a graphics hardware interface 860 and a display device 861, which may include a display device capable of receiving touch-based user input, such as a touch-sensitive or multi-touch-enabled display device. Depending on the specific physical implementation, one or more of the CPU 820, system memory 830, and other components of the computing device 800 may be physically located in the same location, such as on a single chip. In this case, some or all of the system bus 821 may be simply silicon paths within a single chip structure, and for illustrative purposes, it is not shown in FIG. Figure 8 The illustrations in may be merely symbolic convenience.
[0050] The computing device 800 also generally includes computer-readable media, which may include any available media that can be accessed by the computing device 800, and includes volatile and non-volatile media and removable and non-removable media. As an example and not limitation, computer-readable media may include computer storage media and communication media. Computer storage media include media implemented by any method or technology for storing content (such as computer-readable instructions, data structures, program modules or other data). Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other storage technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, cassettes, tapes, disk storage or other magnetic storage devices, or any other media that can be used to store the required content and can be accessed by the computing device 800. However, computer storage media do not include communication media. Communication media generally contain other data in computer-readable instructions, data structures, program modules or modulated data signals (such as carriers or other transport mechanisms), and include any content delivery media. As an example and not limitation, communication media include wired media (such as wired networks or direct wired connections) and wireless media (such as acoustic, RF, infrared and other wireless media). Combinations of any of the above should also be included within the scope of computer readable media.
[0051] The system memory 830 includes computer storage media in the form of volatile and / or nonvolatile memory, such as read-only memory (ROM) 831 and random access memory (RAM) 832. A basic input / output system 833 (BIOS), containing basic routines such as those that help transfer content between elements within the computing device 800 during startup, is typically stored in ROM 831. RAM 832 typically contains data and / or program modules that are immediately accessible to and / or currently being operated on by the processing unit 820. By way of example and not limitation, Figure 8 Operating system 834 , other program modules 835 , and program data 836 are shown.
[0052] The computing device 800 may also include other removable / non-removable, volatile / non-volatile computer storage media. For example only, Figure 8 A hard disk drive 841 is shown that reads from or writes to a non-removable non-volatile magnetic medium. Other removable / non-removable, volatile / non-volatile computer storage media that can be used with the exemplary computing device include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital videotapes, solid-state RAM, solid-state ROM, and other computer storage media as defined and delineated above. The hard disk drive 841 is typically connected to the system bus 821 via a non-volatile memory interface such as interface 840.
[0053] Discussed above and in Figure 8 The drives and their associated computer storage media shown in FIG. 8 provide storage of computer readable instructions, data structures, program modules and other data for the computing device 800. For example, in FIG. Figure 8 844, other program modules 845, and program data 846. Note that these components may be the same as or different from operating system 834, other program modules 835, and program data 836. Operating system 844, other program modules 845, and program data 846 are given different numbers here to illustrate that at least they are different copies.
[0054] The computing device 800 can operate in a network environment using logical connections to one or more remote computers. The computing device 800 is shown connected to a general network connection 851 (to the network 190) through a network interface or adapter 850, which in turn is connected to a system bus 821. In a network environment, program modules described with respect to the computing device 800, or portions or peripherals thereof, can be stored in the memory of one or more other computing devices communicatively coupled to the computing device 800 through a general network connection 861. It should be understood that the network connections shown are exemplary and other means of establishing a communications link between computing devices may be used.
[0055] Although described as a single physical device, the exemplary computing device 800 may be a virtual computing device, in which case the functionality of the above-mentioned physical components (such as CPU 820, system memory 830, network interface 840, and other similar components) may be provided by computer executable instructions. Such computer executable instructions may be executed on a single physical computing device, or may be distributed across multiple physical computing devices, including being distributed across multiple physical computing devices in a dynamic manner, so that the specific physical computing device hosting such computer executable instructions may dynamically change over time as needed and available. In the case where the exemplary computing device 800 is a virtualized device, the underlying physical computing device hosting such virtualized computing device may itself include physical components similar to the above-mentioned components and operating in a similar manner. In addition, virtual computing devices may be used in multiple layers, where one virtual computing device is executed within the fabric of another virtual computing device. Therefore, the term "computing device" as used herein refers to a physical computing device or a virtualized computing environment, including a virtual computing device, in which computer executable instructions may be executed in a manner consistent with their execution by a physical computing device. Similarly, as used herein, terms referring to physical components of a computing device refer to those physical components or virtualizations thereof that perform the same or equivalent functions.
[0056] As a first example, the above description includes a system comprising: a sending computing device, comprising: one or more sending computing device processing units; and one or more sending computing device storage media, comprising computer executable instructions, which, when executed by at least some of the sending computing device processing units, cause the sending computing device to: generate a first bit mask, the first bit mask indicating that a first continuous data range of one or more packets associated with the first bit mask will be included in the generation of a packet error detection code, and a second continuous data range of one or more packets associated with the first bit mask will be excluded from the generation of the packet error detection code, wherein each of the one or more packets associated with the first bit mask has a corresponding packet error detection code, and the corresponding packet error detection code is generated according to the first bit mask; for a first packet, based on data of the first packet within the first continuous data range, generate a first packet error detection code to exclude data of the first packet within the second continuous data range, the first packet being one of the packets associated with the first bit mask. a first packet received by the receiving computing device; a first bit mask, a first packet, and a first packet error detection code; and a receiving computing device, comprising: one or more receiving computing device processing units; and one or more receiving computing device storage media, comprising computer executable instructions, which, when executed by at least some of the receiving computing device processing units, cause the receiving computing device to: receive the first bit mask, the first packet, and the first packet error detection code; generate another instance of the first packet error detection code based on the data of the first packet received by the receiving computing device within the first continuous data range to exclude the data of the first packet received by the receiving computing device within the second continuous data range; and discard the first packet from the receiving computing device if the generated instance of the first packet error detection code is different from the first packet error detection code received by the receiving computing device; wherein, if the difference between the first packet sent by the sending computing device and the first packet received by the receiving computing device is within the second continuous data range, the receiving computer will retain the first packet as a correctly received packet even if the difference exists.
[0057] The second example is a system according to the first example, wherein the first bit mask includes two data bits: a first data bit, which is set to a first binary value, the first data bit corresponds to a first continuous data range, and the first binary value indicates that the first continuous data range is included in the generation of the group error detection code; and a second data bit, which is set to a second binary value, which is different from the first binary value, the second data bit corresponds to a second continuous data range, and the second binary value indicates that the second continuous data range is excluded from the generation of the group error detection code.
[0058] A third example is the system according to the first example, wherein the first continuous data range includes a different amount of data than the second continuous data range.
[0059] The fourth example is a system according to the first example, wherein the first bit mask also indicates that a third continuous data range of one or more packets associated with the first bit mask will be included in the generation of the packet error detection code, and the second continuous data range is between the first continuous data range and the third continuous data range and is limited by the first continuous data range and the third continuous data range.
[0060] The fifth example is a system according to the first example, wherein the continuous data range indicated by the first bit mask to be included in or excluded from the generation of the packet error detection code includes only a portion of the data of one or more packets associated with the first bit mask.
[0061] A sixth example is the system according to the first example, wherein the first packet includes both the first bit mask and the first packet error detection code, and the one or more packets associated with the first bit mask have only the first packet.
[0062] A seventh example is the system of the first example, wherein the first bit mask is sent independently of the first packet and the first packet error detection code.
[0063] An eighth example is the system of the first example, wherein the one or more packets associated with the first bit mask are a sequence of packets sent after the first bit mask.
[0064] A ninth example is the system of the first example, wherein sending the first bit mask and receiving the first bit mask include exchanging information from which the sending computing device and the receiving computing device can independently derive the first bit mask.
[0065] A tenth example is the system according to the first example, wherein the first error detection code is an error correction code.
[0066] The eleventh example is a system according to the first example, wherein the first bit mask includes a first bit group and a second bit group, the first bit group indicating whether any data range in the first continuous data range and the second continuous data range will be included in the generation of the group error detection code, and the second bit group separately indicating whether any data range in the first continuous data range and the second continuous data range will be included in the generation of the group error correction code.
[0067] The twelfth example is a system according to the first example, wherein the first bit mask includes a code corresponding to an indication that a first continuous data range will be included in the generation of a group error detection code and a second continuous data range will be excluded from the generation of the group error detection code, and the code and the corresponding indication are part of a dictionary of codes and corresponding indications that can be accessed by both the sending computing device and the receiving computing device.
[0068] The thirteenth example is a system according to the first example, wherein the first bit mask indicates that the first continuous data range will be included in the generation of the group error detection code by omitting the identification of the first continuous data range, and the first bit mask only identifies the data range that will be excluded from the generation of the group error detection code.
[0069] The fourteenth example is a system according to the first example, wherein the first bit mask indicates that the second continuous data range will be excluded from the generation of the group error detection code by not including the identification of the second continuous data range, and the first bit mask only identifies the data range to be included in the generation of the group error detection code.
[0070] The fifteenth example is a system according to the first example, wherein the computer executable instructions for sending the first bit mask, the first packet, and the first packet error detection code include computer executable instructions that, when executed by at least some of the processing units of the sending computing device, cause the sending computing device to perform the following operations: encapsulate the first bit mask, the first packet, and the first packet error detection code into the payload of the second packet; and send the second packet.
[0071] The sixteenth example is a system according to the first example, wherein one or more sending computing device storage media also include computer executable instructions that, when executed by at least some of the sending computing device processing units, cause the sending computing device to perform the following operations: receive a second packet associated with a second bit mask, the second bit mask indicating that a first continuous data range of the second packet will be included in the generation of the packet error detection code, and a second continuous data range of the second packet will be excluded from the generation of the packet error detection code; and encapsulate the second packet into the payload of the first packet; wherein the generation of the first bit mask is based on the second bit mask.
[0072] The seventeenth example is a system according to the sixteenth example, wherein generating a first bit mask includes: delimiting a first continuous data range of the first packet associated with the first bit mask to correspond to a first continuous data range of the second packet, and the second packet is encapsulated into the payload of the first packet; and delimiting a second continuous data range of the first packet associated with the first bit mask to correspond to a second continuous data range of the second packet, and the second packet is encapsulated into the payload of the first packet.
[0073] An eighteenth example is the system of the first example, wherein the receiving computing device implements cut-through routing to avoid error detection of received packets at the data link layer.
[0074] The nineteenth example is a method for generating packets for sending digital data over a network, wherein only a portion of the payload of the packet is protected from transmission errors, the method comprising: generating a first bit mask at a sending computing device, the first bit mask indicating that a first continuous data range of one or more packets associated with the first bit mask will be included in the generation of a packet error detection code, and a second continuous data range of one or more packets associated with the first bit mask will be excluded from the generation of the packet error detection code, wherein each of the one or more packets associated with the first bit mask has a corresponding packet error detection code, which is generated according to the first bit mask; at the sending computing device, for a first packet, generating a first packet error detection code based on data within a first continuous data range of the first packet to exclude data within a second continuous data range of the first packet, the first packet being one of the packets associated with the first bit mask; and sending the first bit mask, the first packet, and the first packet error detection code from the sending computing device over the network.
[0075] The twentieth example is a method for receiving packets of digital data transmitted over a network, wherein only a portion of a payload of the packet is checked for transmission errors, the method comprising: receiving a first bit mask, a first packet, and a first packet error detection code at a receiving computing device, the first packet being associated with the first bit mask, the first bit mask indicating that a first continuous data range of the first packet is included in the generation of the first packet error detection code, and a second continuous data range of the first packet is excluded from the generation of the first packet error detection code; at the receiving computing device, generating another instance of the first packet error detection code based on the data within the first continuous data range of the received first packet to exclude the data within the second continuous data range of the received first packet; and if the instance of the generated first packet error detection code is different from the received first packet error detection code, discarding the received first packet from the receiving computing device; wherein, if the difference between the sent first packet and the received first packet is within the second continuous data range, the received first packet is retained as a correctly received packet even if the difference exists.
[0076] As can be seen from the above description, mechanisms for adjusting error detection and / or error correction to apply only to identified, discrete portions of a packet to the exclusion of other portions have been proposed. In view of the many possible variations of the subject matter described herein, we claim all such embodiments as our invention as may fall within the scope of the following claims and their equivalents.
Claims
1. A computing device, comprising: one or more processing units; as well as one or more storage media comprising computer-executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: generating, for a first packet associated with a first bit mask, a first packet error detection code based on data of the first packet that is within a portion indicated by the first bit mask to be included in the error detection code to the exclusion of at least some data within other portions of the first packet, the first packet having only a single corresponding packet error detection code; The portion indicated by the first bit mask to be included in the error detection code includes a header of the first packet and a first portion of the first packet that is discontinuous with the header of the first packet.
2. The computing device of claim 1, wherein the first bit mask indicates the portion to be included in the error detection code by explicitly indicating the portion to be included in the error detection code, the other portions being indicated only implicitly by omission.
3. The computing device of claim 1, wherein the first bit mask indicates the portion to be included in the error detection code by explicitly indicating the other portion, thereby implicitly indicating the portion to be included in the error detection code only by omitting it.
4. The computing device of claim 1 , wherein the first bit mask comprises a plurality of bits, each bit of the plurality of bits comprising a binary value, the binary value indicating whether the corresponding unique portion is to be included in the generation of the first group error detection code or to be excluded from the generation of the first group error detection code.
5. The computing device of claim 1, wherein the first packet error detection code is an error correction code.
6. The computing device of claim 1, wherein the first bit mask separately indicates a portion to be included in a packet error correction code in addition to indicating the portion to be included in the error detection code.
7. The computing device of claim 1 , wherein the one or more storage media include further computer executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: The first bit mask is transmitted along with the first packet and the first packet error detection code.
8. The computing device of claim 1 , wherein the one or more storage media include further computer-executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: For a second packet also associated with the first bit mask, a second packet error detection code is generated based on data of the second packet, the data of the second packet being within the portion indicated by the first bit mask to be included in the error detection code to exclude at least some data within other portions of the second packet, the second packet also having only a single packet error detection code.
9. The computing device of claim 8, wherein the one or more storage media include further computer executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: The first bit mask is transmitted separate from and before the first and second packets and the first and second packet error detection codes.
10. The computing device of claim 1 , wherein the one or more storage media include further computer-executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: receiving a second packet associated with a second bit mask; generating the first bit mask based on the second bit mask; as well as The second packet is encapsulated into the payload of the first packet.
11. The computing device of claim 1 , wherein the one or more storage media include further computer-executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: receiving the first packet before generating the first packet error detection code; receiving the received first packet error detection code together with the first packet; as well as If the received first packet error detection code is different from the first packet error detection code as generated, retransmission of the first packet is requested.
12. The computing device of claim 11, wherein the one or more storage media include further computer executable instructions that, when executed by at least some of the one or more processing units, cause the computing device to: The first packet is retained as correctly received even if there is a difference between the first packet as transmitted and the first packet as received, the difference being within the at least some data in the first packet that was excluded from generating the first packet error detection code.
13. The computing device of claim 11, wherein receiving the first packet is performed using cut-through routing.
14. A method for generating a packet error detection code that protects only a portion of a corresponding packet from transmission errors, the method comprising: generating, for a first packet associated with a first bit mask, a first packet error detection code based on data of the first packet that is within a portion indicated by the first bit mask to be included in the error detection code to the exclusion of at least some data within other portions of the first packet, the first packet having only a single corresponding packet error detection code; The portion indicated by the first bit mask to be included in the error detection code includes a header of the first packet and a first portion of the first packet that is discontinuous with the header of the first packet.
15. The method according to claim 14, further comprising: The first bit mask is transmitted along with the first packet and the first packet error detection code.
16. The method according to claim 14, further comprising: For a second packet also associated with the first bit mask, a second packet error detection code is generated based on data of the second packet, the data of the second packet being within the portion indicated by the first bit mask to be included in the error detection code to exclude at least some data in other portions of the second packet, the second packet also having only a single corresponding packet error detection code.
17. The method according to claim 16, further comprising: The first bit mask is transmitted separate from and before the first and second packets and the first and second packet error detection codes.
18. The method according to claim 14, further comprising: receiving the first packet before generating the first packet error detection code; receiving the received first packet error detection code together with the first packet; as well as If the received first packet error detection code is different from the first packet error detection code as generated, retransmission of the first packet is requested.
19. The method according to claim 18, further comprising: The first packet is retained as correctly received even if there are differences between the first packet as transmitted and the first packet as received, the differences being within the at least some data in the first packet that was excluded from the generating of the first packet error detection code.
20. One or more storage devices comprising computer-executable instructions that, when executed, cause a computing device to: generating, for a first packet associated with a first bit mask, a first packet error detection code based on data of the first packet, the data of the first packet being within a portion indicated by the first bit mask to be included in the error detection code to the exclusion of at least some data of the first packet within other portions, the first packet having only a single corresponding packet error detection code; The portion indicated by the first bit mask to be included in the error detection code includes a header of the first packet and a first portion of the first packet that is discontinuous with the header of the first packet.