Abstract:
A method comprises receiving a predetermined length of information, the information including a first MAC Protocol Data Unit (MPDU) being of variable length and including at least one Sub-MPDU; independently decoding the first Sub-MPDU and a plurality of additional portions of the received information, each portion having a length equal to the length of one Sub-MPDU; processing data from the first Sub-MPDU; and determining from the processed data how many of the other decoded portions constitute Sub-MPDUs of the received MPDU.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority from U.S. Provisional Patent Application Ser. No. 61/160,986 filed Mar. 17, 2009, which is incorporated herein by reference in its entirety. 
    
    
     FIELD OF DISCLOSURE 
     The disclosed system and method relate to the transmission of data through a network. More particularly, the disclosed system and method relate to recovering from failing to receive or correctly process data packets in networks. 
     BACKGROUND 
     In a conventional Multimedia Over Coaxial Alliance (MoCA) network, data packets are transmitted over a coaxial communication channel. Communication through the network is managed by a Network Coordinator node (NC) that transmits Beacons and Media Access Plan (MAP) packets. The Beacons are transmitted at regular intervals (e.g., every 10 ms) and identify the channel time clock (CTC), the MoCA network version, the time of the next admission control frame (ACF), and when a NC handoff will occur (e.g., when the NC changes from one node to another node). 
     MAP packets are transmitted more frequently by the NC than are Beacons and provide scheduling information that identify when each network node will be transmitting data through the network. Each node connected to the network relies on the MAPs in order to transmit and receive data through the network. Many factors may prevent a network node from correctly receiving a MAP. For example, GSM interference caused by a cellular phone operating near a network node may corrupt a MAP by creating co-channel and/or adjacent channel interference with the network node. Due to the length of GSM interference, e.g., approximately 0.577 ms, a network node may miss or incorrectly process one or more MAPs. 
     In conventional MoCA networks, losing a MAP packet will prevent a network node from receiving the subsequently transmitted MAPs as each MAP identifies a MAP packet transmission interval, e.g., the interval when the next MAP will be transmitted.  FIG. 1  is a timing diagram illustrating a network node failing to receive a MAP and then recovering from this failure in a conventional MoCA network. As illustrated in  FIG. 1 , NODE 1  fails to receive MAP 2  from the NC. The NC continues to broadcast MAPs over the network; but NODE 1  fails to receive or correctly process MAP 3  thru MAP 6  because NODE 1  failed to receive or correctly process MAP 2 . In a conventional MoCA network, NODE 1  must wait until it receives and processes the next Beacon, BEACON 2 , to determine the MAP transmission interval and once again receive and correctly process MAP packets, e.g., MAP 7 . Since MAPs are more frequently transmitted than the Beacons, a node that fails to receive or correctly process one MAP packet may not receive the next several MAPs as it will have to wait for the next Beacon. Thus, once a node fails to receive a MAP, the node is essentially disconnected from the network for a period (from MAP 2  to MAP 7  for the example of  FIG. 1 ) as it will not receive subsequent MAP packets and determine when data is going to be transmitted through the network until the node receives the next Beacon. In addition, the node will not be able to request any time slots from the NC for transmitting any buffered data packets until the next Beacon is received. 
     Accordingly, an improved method for recovering from missing a MAP transmission is desirable. 
     SUMMARY 
     In some embodiments, a method comprises receiving a predetermined length of information, the information including a first MAC Protocol Data Unit (MPDU) being of variable length, the MPDU including at least one Sub-MPDU; independently decoding the first Sub-MPDU and a plurality of additional portions of the received information, each portion having a predetermined length. In one embodiment, each additional portion has a length equal to the length of the first Sub-MPDU. The method further comprises processing data from the first Sub-MPDU; and determining from the processed data how many of the other decoded portions constitute Sub-MPDUs of the received MPDU and in one embodiment, determining from the processed data the length of the additional Sub-MPDUs. 
     In some embodiments, a network node, comprises a computer readable storage medium and a processor in data communication with the computer readable storage medium. The processor is configured to receive a predetermined length of information, the information including a first MAC Protocol Data Unit (MPDU) being of variable length and including at least one Sub-MPDU, independently decode the first Sub-MPDU and a plurality of additional portions of the received information, each portion having a length equal to the length of one Sub-MPDU, process data from the first Sub-MPDU, and determine from the processed data how many of the other decoded portions constitute Sub-MPDUs of the received MPDU. 
     In some embodiments, a method comprises using information received in a previously received packet of interest to determine the interval between transmission of the last received packet of interest and the next packet of interest, and thus identify the time at which a next packet of interest will arrive, the information being used after a failure to find and decode a previously transmitted information packet of interest that was transmitted after the previously received packet of interest; upon determining when the next packet of interest will arrive, decoding the next packet of interest in portions, each portion being independently encoded; and using information from the first of the portions of the next packet of interest to determine how many such decoded portions are actually part of the next packet of interest. Since each portion is independently encoded, each can be independently decoded. 
     The methods may be embodied in a computer readable storage medium encoded with computer program code that may be loaded to a processor, such that when the processor executes the code it performs the method. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a timing diagram of a failure recovery in a conventional MoCA network. 
         FIG. 2  illustrates one embodiment of a MAP MAC Protocol Data Unit (MPDU). 
         FIG. 3  is a flow chart illustrating one embodiment of a method of processing a MAP packet. 
         FIG. 4  is a flow chart illustrating one embodiment of a method of recovering from a failure. 
         FIG. 5  is a timing diagram of one embodiment of a recovery of a node in a network after missing a packet. 
         FIG. 6  illustrates a fixed packet transmission interval in an asynchronous data network. 
         FIG. 7  illustrates one embodiment of a network node configured to process data packets and recover from failing to receive a packet in accordance with the method illustrated in  FIGS. 3 and 4 . 
     
    
    
     DETAILED DESCRIPTION 
     A system and method for recovering from failing to receive or correctly process MAPs are now described. One embodiment of the disclosed system and method is implemented in networks in which the MAPs are transmitted at predetermined fixed intervals. The network may include a Network Coordinator (NC) that manages data transmission between the network nodes.  FIG. 7  illustrates a simplified block diagram of one example of a network node. As shown in  FIG. 7 , network node  700  may include a processor  702  in communication with a computer readable storage medium  704  and a physical interface that enables the node  700  to send and receive data through a network. Processor  702  may be any computational device including, but not limited to, a central processing unit (CPU), a microcontroller, or like device. Computer readable storage medium  704  may be any type of memory including, but not limited to, random access memory (RAM), read only memory (ROM), Flash memory, a hard disk drive, or like device configured to store data and instructions that may be executed by the processor  702 . 
     As illustrated in  FIG. 2 , in one embodiment of the disclosed method and apparatus, a MAP MAC Protocol Data Unit (MPDU)  201  includes a plurality of Sub-MPDUs  200  that are successively appended to each other. The header  202  of the first Sub-MPDU  200  identifies the exact number of the Sub-MPDUs in this series of Sub-MPDUs, each having the same length and each having been independently encoded. Alternatively, the length of each Sub-MPDU can vary in a predetermined manner. Since each Sub-MPDU  200  has been independently encoded, each can also be independently decoded. Alternatively, each Sub-MPDU can be encoded together in a single encoding process. However, each Sub-MPDU would not then be able to be independently decoded and the benefit of having the header carry the number of Sub-MPDUs  200  that are contained within the MPDU  201  would be lost. Each Sub-MPDU  200  may have a length of 400 bytes including the header  202  (for the first Sub-MPDU only) and payload  204 . Accordingly, the MPDU  201  may have a length of 1600 bytes and each Sub-MPDU  200  may have a length of 400 bytes. One skilled in the art will appreciate that other lengths may be implemented for the MPDU  201  and the Sub-MPDUs  200 . 
     In one embodiment, the NC transmits the MAP MPDUs  201  at constant intervals in an asynchronous network as illustrated in  FIG. 6 . Transmitting MAPs at constant intervals enables a network node  700  to more rapidly recover from missing a MAP than can be done in a conventional MoCA network, as explained in greater detail below. The constant intervals may be changed by providing notice to each of the network nodes of the impending change. The notice may be included in the header  202  or payload  204  of MAPs as a next packet transmission interval value in conjunction with a countdown value that identifies a number of MAPs after which the packet transmission interval will change. The countdown value may be decremented in each successively transmitted MAP MPDU until the value reaches a zero, after which the MPDU transmission interval is changed. For example, the MPDU transmission interval may be changed from a 1 ms interval to a 0.75 ms interval after the next MAP MPDU is received by communicating a next packet transmission value of 0.75 and a countdown value of ‘2’ in a MAP. 
     Regardless of the format of the MAP that is implemented in the network, a network node  700  receiving an MPDU  201  may use the information from the MPDU  201  to accurately calculate the arrival of the next MAP or a subsequent MAP if an intervening MAP is not received or correctly processed, e.g., if a failure occurs. In one embodiment, that information includes the current value of the constant interval or the value of a new constant interval communicated as shown in  FIG. 6 . For example, if the NC transmits MAPs having multiple Sub-MPDUs  200  as illustrated in the embodiment of  FIG. 2 , then the network node will decode each of the Sub-MPDUs  200  and check the first Sub-MPDU header to determine if there are any successive Sub-MPDUs  200 . If the first Sub-MPDU header  202  identifies that there are no successive Sub-MPDUs  200 , then the node  700  has processed all of the Sub-MPDUs that were sent, having processed only the first Sub-MPDU. However, if the first Sub-MPDU header  202  identifies that there are additional successive Sub-MPDUs  200 , then the node  700  will process these Sub-MPDUs as well. In this manner, the node will be able to correctly identify and receive each MAP. 
     Alternatively, if the NC transmits MAPs in a single Sub-MPDU  200 , then a node  700  assumes that the next MAP MPDU  201  has the largest possible size (e.g., 1600 bytes) and calculates the ending transmission time of the MAP MPDU  201  based on this assumption. The network node  700  receives all of the bits for the calculated MAP transmission interval and decodes the received bits of each Sub-MPDU  200  one by one. As the network node  700  processes the bits of the Sub-MPDU header  202  it identifies the actual length of the MAP MPDU  201  and then recovers the MAP MPDU  201  bytes from the received bits. The network node  700  may disregard and not process any bits identified by the MAP Sub-MPDU header  202  as not including payload data. 
       FIG. 3  is a flow diagram illustrating one example of a method  300  of processing the MAP Sub-MPDUs  200  at a network node  700 . As shown in  FIG. 3 , a MAP is received at a network node  700  at block  302 . The network node  700  decodes each Sub-MPDU  200  of the MAP at block  304 . At block  306 , the network node  700  processes the header  202  and payload  204  of the first Sub-MPDU  200 . The network node  700  will process the next Sub-MPDU  200  or sub-Sub-MPDUs, if the processed data of the first Sub-MPDU  200  identifies that the subsequent Sub-MPDUs  200  include data to be processed at block  308 . However, the network node  700  may skip block  308  and not process data from the subsequent Sub-MPDU  200  if the processed data of the first Sub-MPDU  200  identifies that the subsequent Sub-MPDUs  200  do not include data to be processed. 
     At block  310 , a packet transmission interval value, a countdown value, and a next packet transmission interval value are read from the processed data. The packet transmission interval value, countdown value, next packet transmission interval value, and the arrival time of the packet may be stored in a computer readable storage medium  704  of the network node  700 , so that it may be used in the event of a failure as described in greater detail below. The network node  700  may calculate the arrival of the next MAP based on the interval value, the countdown value, and the arrival of the previous MAP MPDU  201 . In this manner, the network node  700  processes each of the MAP Sub-MPDUs and stores the interval, countdown value, and arrival time of the last packet to enable the network node  700  to recover from failing to receive or correctly process a subsequent MAP Sub-MPDU  200 . 
       FIG. 4  is a flow diagram illustrating one example of a method  400  for recovering from failing to receive or correctly process a packet of interest, such as a MAP Sub-MPDU  200 . At block  402 , a network node  700  receives a packet of interest. The packet of interest is decoded and processed as described above with respect to  FIG. 3 . The information from the packet of interest, such as, for example, the arrival time of the packet, the current packet transmission interval, a countdown identifier, and a next packet transmission interval value are saved in computer readable storage medium  704 . 
     At block  404 , the network node  700  determines that it has failed to receive or correctly process a packet of interest. Once the network node  700  determines that it has not received a packet of interest, then the node  700  commences failure recovery by reading the information received in the previously received packet of interest from computer readable storage medium  704  at block  406 . As described above, the information may include the arrival of the previously received packet of interest, the current packet transmission interval, a countdown identifier, and a next packet transmission interval value. The network node  700  may then use the information read from the computer readable storage medium  704  to determine when the next packet of interest will arrive. 
     For example, if the interval between successive packets of interest is not going to change, then the network node  700  will use the arrival time of the previously received packet and the current packet transmission interval value to determine the arrival time of the next packet of interest. If the calculated arrival time of the next packet of interest has already passed, then the network node  700  may double, triple, or otherwise multiply the packet transmission interval value to identify the time of arrival of the next packet of interest as will be understood by one skilled in the art. 
     The network node  700  may also check the countdown value to determine if the interval between packets was going to be changed after the next packet. For example, if the previously received packet of interest had a countdown value of ‘1’, then the subsequent packet of interest, e.g., the packet which was not received by the network node  700 , had a countdown value of ‘0’. Accordingly, the network node  700  determines that the next packet of interest is going to be transmitted at a different packet transmission interval, and the network node  700  will use the new packet transmission interval value in conjunction with the previous packet transmission interval value and the arrival time of the last received packet to determine the arrival of the next packet of interest. For example, if the previously received packet arrived at time t, the previous packet transmission interval value was 1 ms, and the new packet transmission interval value is 0.7 ms, then the network node  700  would calculate that the next packet of interest will arrive at t+1.7 ms. 
     At block  408 , the network node  700  receives the next packet of interest. Upon receipt of the next packet of interest, the network node  700  decodes each portion of the packet at block  410  as described above. The network node  700  determines the number of portions that are included in the packet of interest at block  412 . If the first portion identifies that each portion of the packet includes data, then the network node  700  will process each of the packet portions. However, if the first portion of the packet identifies that one or more of the packet portions do not include data, then the network node  700  may discard these portions of the packet. At block  414 , the network node  700  may store information included in the packet of interest in the computer readable storage medium  704 . As described above, the information may include a current packet transmission interval value, a countdown value, a next packet transmission interval value, and the arrival time of the previously received packet of interest. One skilled in the art will understand that other information may be stored in the computer readable storage medium  704 . 
     The system and method described above enables network nodes to be able to recover from conditions in which the node misses important data packets in networks in which data is transmitted faster than in conventional systems. Faster recovery from missed data packets reduces the amount of data missed by a network node in the event of a failure, thus improving the efficiency of the network. 
     Although the disclosed method and apparatus has been described in terms of particular embodiments, the claimed invention is not limited thereto. Rather, the appended claims should be construed broadly, to include other variants and embodiments of the disclosed method and apparatus which may be made by those skilled in the art without departing from the scope and range of equivalents of the claimed invention. Delimiters used in the claims—such as ‘a)’ and ‘i)’—should not be taken as imputing any order to the claims, but rather are provided only to serve as visual cues to add in the parsing of the claims and as identifiers in the event that a particular portion of the claim is to be later referenced.