This application claims priority to Chinese Patent Application No. 201110078469.3, filed on Mar. 28, 2011, which is hereby incorporated by reference in its entirety.
The present invention relates to the field of communications technologies, and in particular, to a method and an apparatus for locating a data frame.
With convergence of communications networks, intercommunication and interconnection between an optical transport network and an IP network, as well as other networks, are widely applied. When functioning as a physical layer network of a network of another type, an optical transport network must encapsulate data of the network of another type in a certain format, and the most common encapsulation form is GFP (Generic framing procedure, generic framing procedure) encapsulation.
Common GFP encapsulation is often applied to 1 G-10 G low rate code streams. Therefore, the maximum bit width of encapsulated data is 64 bits. However, with rapid development of networks, encapsulated data streams range from 40 G to 200 G and the data bit width then changes to range from 128 bits to 512 bits. As regards these data streams with large bit widths, a plurality of data frames may be encapsulated within a clock cycle. For example, when a data stream has a bit width of 521 bits, data of each clock cycle is 512/8=64 bytes, and usually the length of a GFP frame is 12 bytes, so that five data frames may be encapsulated within a clock cycle.
In the prior art, a method for performing a frame location on a GFP frame encapsulated within a clock cycle is: adopting a framing state machine to perform a hunt on a data stream within a current clock cycle byte by byte, and determine a starting byte of a header of a GFP frame. The framing state machine includes three states, which respectively are: a HUNT (hunt) state, a PRESYNC (preliminary synchronization) state, and a SYNC (synchronization) state.
The framing state machine is in the HUNT state when a hunt starts, and starts the hunt from a first byte of the data stream in the current clock cycle. After a byte conforming to features of a header of a first GFP frame is hunted out, the state of the framing state machine changes to the PRESYNC state. Then, according to length information of the GFP frame carried in the byte conforming to the features of the header of the GFP frame, the framing state machine hunts out a starting byte of a header of a second GFP frame. After authentication on the starting byte of the header of the GFP frame succeeds, the state of the framing state machine changes to the SYNC state. The framing state machine determines that the starting bytes of the header of the first GFP frame and the header of the second GFP frame are correct, and records the starting bytes of the header of the first GFP frame and the header of the second GFP frame and lengths of the frames in the hunt result. Then, the framing state machine continues the hunt from the starting byte of the header of the second GFP frame until a set hunt period corresponding to the current clock cycle ends.
When the framing state machine is in the PRESYNC state or SYNC state, if the starting byte of the header of the second GFP frame is hunted out, but authentication on the starting byte fails, the framing state machine changes to the HUNT state.
In the implementation of the present invention, the inventor finds that the method for performing a frame location on a GFP frame encapsulated within a clock cycle in the prior art at least has the following problem: since the period of a clock cycle is very short, the set hunt period corresponding to the current clock cycle is also very short. The framing state machine starts the hunt from the first byte of the data stream within the current clock cycle. If the first byte is not the starting byte of the GFP frame, and when a plurality of data frames are encapsulated within the current clock cycle, the method may fail to hunt out a correct starting byte of the GFP frame, and as a result, cannot locate a GFP frame encapsulated in the data stream within the current clock cycle.
Embodiments of the present invention provide a method and an apparatus for locating a data frame, so as to efficiently locate a data frame encapsulated in a data stream within a clock cycle.
A method for locating a data frame includes:
obtaining a data stream within a current clock cycle, and allocating a framing state machine to each byte of the date stream within the current clock cycle;
respectively starting, by the framing state machines, hunting for data frames from respective corresponding bytes, and obtaining a plurality of data frame hunt results, where the hunt result includes a starting byte of a first data frame hunted out by each framing state machine;
determining a starting byte of a first data frame within the current clock cycle according to a data frame hunt result within a previous clock cycle; and
matching the plurality of data frame hunt results respectively with the starting byte of the first data frame within the current clock cycle, and using a successfully-matched hunt result as a data frame hunt result within the current clock cycle.
An apparatus for locating a data frame includes:
a hunt processing module, configured to obtain a data stream within a current clock cycle, and allocate a framing state machine to each byte of the data stream within the current clock cycle, where the framing state machines respectively start hunting for data frames from respective corresponding bytes and obtain a plurality of data frame hunt results, and the hunt result includes a starting byte of a first data frame hunted out by each framing state machine; and
a hunt result determining module, configured to determine a starting byte of a first data frame within the current clock cycle according to a data frame hunt result within a previous clock cycle, match the plurality of data frame hunt results obtained by the hunt processing module respectively with the starting byte of the first data frame within the current clock cycle, and use a successfully-matched hunt result as a data frame hunt result within the current clock cycle.
From the technical solutions provided by the embodiments of the present invention, it can be seen that, in the embodiments of the present invention, a framing state machine is allocated to each byte of a data stream within a current clock cycle, and the framing state machines respectively start hunting for data frames from respective corresponding bytes concurrently, so that a starting byte of a data frame encapsulated in the data stream within the current clock cycle can be quickly hunted out, thereby quickly hunting out a plurality of data frames encapsulated in the data stream within the current clock cycle, and accurately locating the data frames encapsulated in the data stream within the current clock cycle.
To illustrate the technical solutions according to the embodiments of the present invention more clearly, the accompanying drawings for describing the embodiments are introduced briefly in the following. Apparently, the accompanying drawings in the following description are only some embodiments of the present invention, and persons of ordinary skill in the art may further derive other drawings according to these accompanying drawings without creative efforts.
In order to make the objectives, technical solutions, and advantages of the present invention more comprehensible, the technical solutions according to embodiments of the present invention are clearly and completely described in the following with reference to the accompanying drawings. Apparently, the embodiments in the following description are merely a part rather than all of the embodiments of the present invention. All other embodiments obtained by persons of ordinary skill in the art based on the embodiments of the present invention without creative efforts should fall within the protection scope of the present invention.
To make the embodiments of the present invention more comprehensible, the present invention is further illustrated in the following with reference to the accompanying drawings and several specific embodiments, and the embodiments are not intended to limit the present invention.
A processing flowchart of a method for locating a data frame according to the embodiment is as shown in
Step 11: Allocate a framing state machine to each byte of a data stream within a current clock cycle, and the framing state machines respectively start hunting for data frames from respective corresponding bytes and obtain a plurality of data frame hunt results.
The data frame in the embodiment of the present invention may be a GFP frame. The GFP frame is used as an example to illustrate the embodiment of the present invention in the following.
When a hunt period corresponding to a previous clock cycle ends, the state of the framing state machine is: a PRESYNC state or a SYNC state. The embodiment of the present invention assumes that each byte of the data stream within the current clock cycle may be a starting byte of a GFP frame, adopts a plurality of framing state machines with a number equal to the total number of bytes in the data stream within the current clock cycle, and allocates a framing state machine to each byte of the data stream within the current clock cycle, where the framing state machines respectively start hunting for data frames from respective corresponding bytes and obtain a plurality of GFP frame hunt results, and the hunt results correspond to different starting bytes.
The previous clock cycle may be a last clock cycle.
Step 12: Determine a starting byte of a first data frame within the current clock cycle according to a data frame hunt result within a previous clock cycle. Match the plurality of data frame hunt results respectively with the starting byte of the first data frame within the current clock cycle, and use a successfully-matched hunt result as a data frame hunt result within the current clock cycle.
The starting byte of the first data frame within the current clock cycle is determined according to the data frame hunt result within the previous clock cycle.
The plurality of data frame hunt results are respectively matched with the starting byte of the first data frame within the current clock cycle, and the successfully-matched hunt result is determined as the data frame hunt result within the current clock cycle.
A schematic diagram of a match performed between a GFP frame hunt result within a previous clock cycle and GFP frame hunt results within a current clock cycle according to the embodiment is as shown in
Then, the GFP frame hunt result within the current clock cycle and the state of the framing state machine when the hunt ends are transmitted to a next clock cycle.
From the technical solution provided by the embodiment, it can be seen that, in the embodiment of the present invention, a framing state machine is allocated to each byte of a data stream within a current clock cycle, and the framing state machines respectively start hunting for data frames from respective corresponding bytes concurrently, so that a starting byte of a header of a data frame, such as a first GFP frame, encapsulated in the data stream within the current clock cycle can be quickly hunted out, thereby quickly hunting out a plurality of data frames, such as GFP frames, encapsulated in the data stream within the current clock cycle, and accurately locating the data frames, such as the GFP frames, encapsulated in the data stream within the current clock cycle.
Specifically, the allocating the framing state machine to each byte of the data stream within the current clock cycle, and concurrently starting, by the framing state machines, hunting for the data frames respectively from the respective corresponding bytes in step 11 may include:
after receiving each byte of the data stream within the current clock cycle, first preprocessing the data stream, performing an HEC (hybrid error control, hybrid error control) calculation on values of every two adjacent bytes of the data stream, and storing obtained HEC calculation results of the values of every two adjacent bytes. As regards a specific operation, the HEC calculation may be performed concurrently on the values of the every two adjacent bytes by using a plurality of arithmetic logics. The preprocessing process may improve the speed of HEC authentication calculation in a hunting process of the subsequent GFP frame.
In practical applications, different GFP frame header hunt results may be obtained by adopting a framing state machine to start hunting from different bytes of a data stream within a clock cycle. When a hunt period corresponding to a previous clock cycle ends, the state of the framing state machine is: a PRESYNC state or a SYNC state. The embodiment of the present invention assumes that each byte of the data stream within the current clock cycle may be a header of a GFP frame. Assuming that the number of bytes of the data stream within the current clock cycle is N, N framing state machines are selected and each framing state machine corresponds to a frame hunting channel. Each framing state machine utilizes the stored HEC calculation results of the values of every two adjacent bytes to simultaneously start hunting for a header of a GFP frame from each byte and obtains N GFP frame header hunt results. For example, if the data stream has a bit width of 512 bits, the date stream within the current clock cycle includes 512/8=32 bytes, 32 framing state machine which respectively correspond to frame hunting channel 1, frame hunting channel 2, . . . , and frame hunting channel 32 are adopted. The first framing state machine starts a hunt from the first byte in frame hunting channel 1, the second framing state machine starts a hunt from the second byte in frame hunt channel 2, . . . , and the 32nd framing state machine starts a hunt from the 32nd byte in frame hunt channel 32.
The state of each framing state machine when starting a hunt may be the same as the state of the framing state machine when a hunt period corresponding to a previous clock cycle ends, namely, the PRESYNC state or the SYNC state, or may be randomly set as one of all possible states of the framing state machine.
Each framing state machine selects four consecutive adjacent bytes starting from a first byte of starting a hunt, compares HEC calculation results of values of first two adjacent bytes in the four consecutive adjacent bytes with values of last two adjacent bytes, and in case of equivalence, determines that a first byte in the first two adjacent bytes is the starting byte of the first GFP frame. Then, a length of the first GFP frame is determined according to the values of the first two adjacent bytes, and a starting byte of a second GFP frame is determined according to the length of the first GFP frame. Starting from the starting byte of the second GFP frame, HEC calculation results of values of first two adjacent bytes are compared with values of last two adjacent bytes, and in case of equivalence, the framing state machine determines that positions of the first GFP frame and the second GFP frame are correct, and records the starting bytes and length information of the first GFP frame and the second GFP frame in the hunt result. The state of the framing state machine is set to the SYNC state.
Then, the framing state machine continues the data frame hunting process starting from the starting byte of the second data frame until a set hunt period corresponding to the current clock cycle ends. Therefore, if a plurality of GFP frame headers is hunted out in a hunt process, the hunt result includes starting bytes of the plurality of GFP frames and length information of the GFP frames.
Specifically, step 11 may further include the following.
When the hunt period corresponding to the previous clock cycle ends, the state of the framing state machine is: the HUNT state. Since according to a GFP frame hunt result within the previous clock cycle, neither a starting byte of the last GFP frame within the previous clock cycle nor a starting byte of the first GFP frame within the current clock cycle can be obtained, a framing state machine in the HUNT state is adopted to start a hunt from the first byte of the data stream within the current clock cycle.
Specifically, the determining the starting byte of the first data frame within the current clock cycle according to the data frame hunt result within the previous clock cycle in step 12 may include the following.
A schematic diagram of a GFP frame format is as shown in
When the hunt period corresponding to the previous clock cycle ends, the state of the framing state machine is: the PRESYNC state or the SYNC state. According to a frame hunt result within the previous clock cycle, the value of the PLL field of the header of the last GFP frame and a starting byte of the last GFP frame within the previous clock cycle are obtained. A length of the last GFP frame within the previous clock cycle is determined according to the value of the PLL field, and then the starting byte of the first GFP frame within the current clock cycle is determined according to the length and the starting byte of the last GFP frame within the previous clock cycle.
Specifically, in step 12, the plurality of data frame hunt results is respectively matched with the starting byte of the first data frame within the current clock cycle, and the successfully-matched hunt result is used as a data frame hunt result within the current clock cycle.
The plurality of GFP frame hunt results is respectively matched with the starting byte of the first GFP frame within the current clock cycle determined according to the length and the starting byte of the last GFP frame within the previous clock cycle. If a starting byte of a first GFP frame in a hunt result is the same as the starting byte of the first GFP frame within the current clock cycle determined according to the length and the starting byte of the last GFP frame within the previous clock cycle, and the hunt result is obtained by starting a hunt from the starting byte of the first GFP frame, it is determined that the hunt result is the GFP frame hunt result within the current clock cycle, and a GFP frame encapsulated in the data stream within the current clock cycle may be located according to the hunt result.
From the technical solution provided by the embodiment of the present invention, it can be seen that, the embodiment of the present invention does not limit the number of data frames, such as GFP frames, encapsulated in a data stream within a clock cycle, and it is unnecessary to fill in an empty frame for locating the data frame, thereby saving the data transmission bandwidth of the network.
By first preprocessing a data stream within a clock cycle and storing HEC calculation results of values of every two adjacent bytes, the embodiment of the present invention may improve the speed of HEC authentication calculation in the subsequent GFP frame hunting process, thereby further improving the efficiency of locating a data frame, such as a GFP frame, within the current clock cycle.
Persons of ordinary skill in the art may understand that, all or a part of processes in the method according to the embodiments may be accomplished by a computer program instructing relevant hardware. The program may be stored in a computer-readable storage medium. When the program is executed, the process of the method according to the embodiments of the present invention is performed. The storage medium may be a magnetic disk, an optical disk, a read-only memory (Read-Only Memory, ROM), a random access memory (Random Access Memory, RAM), or the like.
An embodiment of the present invention further provides an apparatus for locating a data frame, having a specific structure as shown in
a hunt processing module 41, configured to obtain a data stream within a current clock cycle, and allocate a framing state machine to each byte of the data stream within the current clock cycle, where the framing state machines respectively start hunting for data frames from respective corresponding bytes and obtain a plurality of data frame hunt results, and the hunt result includes a starting byte of a first data frame hunted out by each framing state machine; and
a hunt result determining module 42, configured to determine a starting byte of a first data frame within the current clock cycle according to a data frame hunt result within a previous clock cycle, match the plurality of data frame hunt results obtained by the hunt processing module 41 respectively with the starting byte of the first data frame within the current clock cycle, and use a successfully-matched hunt result as a data frame hunt result within the current clock cycle.
From the technical solution provided by the embodiment, it can be seen that in the embodiment of the present invention, a framing state machine is allocated to each byte of a data stream within a current clock cycle, and the framing state machines respectively start hunting for data frames from respective corresponding bytes concurrently, so that a starting byte of a header of a data frame encapsulated in the data stream within the current clock cycle can be quickly hunted out, thereby quickly hunting out a plurality of data frames encapsulated in the data stream within the current clock cycle, and accurately locating the data frames encapsulated in the data stream within the current clock cycle.
An embodiment of the present invention further provides another apparatus for locating a data frame; a schematic diagram of the implementation principles thereof is as shown in
a hunt processing module 61, configured to obtain a data stream within a current clock cycle, and allocate a framing state machine to each byte of the data stream within the current clock cycle, where the framing state machines respectively start hunting for data frames from respective corresponding bytes and obtain a plurality of data frame hunt results, and the hunt result includes a starting byte of a first data frame hunted out by each framing state machine; and
a hunt result determining module 62, configured to determine a starting byte of a first data frame within the current clock cycle according to a data frame hunt result within a previous clock cycle, match the plurality of data frame hunt results obtained by the hunt processing module 61 respectively with the starting byte of the first data frame within the current clock cycle, and use a successfully-matched hunt result as a data frame hunt result within the current clock cycle.
Specifically, the hunt processing module 61 may include:
a preprocessing module 611, configured to, after receiving each byte of a data stream within a clock cycle, first perform a hybrid error control HEC calculation on values of every two adjacent bytes of the data stream, and store obtained HEC calculation results of the values of every two adjacent bytes; and
an HEC authentication module 612, configured to enable each framing state machine to select four consecutive adjacent bytes starting from a first byte of starting a hunt, compare HEC calculation results of values of first two adjacent bytes in the four consecutive adjacent bytes with values of last two adjacent bytes, and in case of equivalence, determine that a first byte in the first two adjacent bytes is the starting byte of the first data frame;
determine a length of the first data frame according to the values of the first two adjacent bytes, then determine a starting byte of a second data frame according to the length of the first data frame and the starting byte of the first data frame, comparing HEC calculation results of values of first two adjacent bytes with values of last two adjacent bytes starting from the starting byte of the second data frame, and in case of equivalence, determine that positions of the first data frame and the second data frame are correct, and record the starting bytes and length information of the first data frame and the second data frame in the hunt result; and
continue the data frame hunting process starting from the starting byte of the second data frame until a set hunt period corresponding to the current clock cycle ends.
Specifically, the hunt result determining module 62 may include:
a previous hunt result processing module 621, configured to obtain a value of a payload length indicator field of a header of a last data frame within the previous clock cycle and a starting byte of the last data frame according to the data frame hunt result within the previous clock cycle, and determine a length of the last data frame within the previous clock cycle according to the value of the payload length indicator field; and
determine the starting byte of the first data frame within the current clock cycle according to the length and the starting byte of the last data frame within the previous clock cycle;
a match processing module 622, configured to, when the starting byte of the first data frame in the hunt result obtained by the hunt processing module 61 is the same as the starting byte of the first data frame within the current clock cycle obtained by the previous hunt result processing module 621 according to the length and the starting byte of the last data frame within the previous clock cycle, and the hunt result is obtained by starting the hunt from the starting byte of the first data frame, determine that the hunt result is the data frame hunt result within the current clock cycle; and
a hunt result transmitting module 623, configured to deliver the data frame hunt result within the current clock cycle and a state of the framing state machine when the hunt ends to a next clock cycle.
Based on the above, from the technical solutions provided by the embodiments of the present invention, it can be seen that in the embodiments of the present invention, a framing state machine is allocated to each byte of a data stream within a current clock cycle, and the framing state machines respectively start hunting for data frames from respective corresponding bytes concurrently, so that a starting byte of a header of a data frame, such as a first GFP frame, encapsulated in the data stream within the current clock cycle can be quickly hunted out, thereby quickly hunting out a plurality of data frames, such as GFP frames, encapsulated in the data stream within the current clock cycle, and accurately locating the data frames, such as the GFP frames, encapsulated in the data stream within the current clock cycle.
The embodiments of the present invention do not limit the number of data frames, such as GFP frames, encapsulated in a data stream within a clock cycle, and it is unnecessary to fill in an empty frame for locating the data frame, thereby saving the data transmission bandwidth of the network.
By first preprocessing a data stream within a clock cycle and storing HEC calculation results of values of every two adjacent bytes, the embodiments of the present invention may improve the speed of HEC authentication calculation in the subsequent GFP frame hunting process, thereby further improving the efficiency of locating a data frame, such as a GFP frame, within the current clock cycle.
The above descriptions are merely exemplary embodiments of the present invention, but not intended to limit the protection scope of the present invention. All variations or substitutions that can be easily figured out by persons skilled in the art within the technical scope of the present invention should fall within the protection scope of the present invention. Therefore, the protection scope of the invention is subject to the protection scope of the claims.
Number | Date | Country | Kind |
---|---|---|---|
2011 1 0078469 | Mar 2011 | CN | national |
Number | Name | Date | Kind |
---|---|---|---|
5530806 | Condon et al. | Jun 1996 | A |
7630399 | Shang | Dec 2009 | B2 |
7983308 | Johnston et al. | Jul 2011 | B1 |
20020159483 | Clauberg | Oct 2002 | A1 |
20040213248 | Okuda et al. | Oct 2004 | A1 |
20090080564 | Haas | Mar 2009 | A1 |
20090180479 | Powers | Jul 2009 | A1 |
Number | Date | Country |
---|---|---|
1556593 | Dec 2004 | CN |
101605012 | Dec 2009 | CN |
872085 | Dec 2004 | EP |
Entry |
---|
Search Report issued in corresponding Chinese Patent Application No. 2011100784693, mailed Apr. 24, 2013, 2 pages. |
Number | Date | Country | |
---|---|---|---|
20120250700 A1 | Oct 2012 | US |