about the feedback packet direction

Asked by sleepswallow

hello Didier:

     I build the rohc test scenario using O mode : three nodes A -B-C. if A send data1 to B ,and B send data2 to C, if the B down and resarting, I discovery data2 piggybacking the feedback packet1 of data1 to C . but the feedback packet1 in fact is B to A, so A and B are not synchronous and data1 are not decompressed.

    I want to know you also meet this question or not, and how to resolve this question.

    thank Didier very much~~

    Regards,
    sleepswallow

Question information

Language:
English Edit question
Status:
Solved
For:
rohc Edit question
Assignee:
No assignee Edit question
Solved by:
sleepswallow
Solved:
Last query:
Last reply:
Revision history for this message
Didier Barvaux (didier-barvaux) said :
#1

Hello,

If you have three nodes, you have to create ROHC compressor/decompressor per couple of nodes. For example, node B shall have a compressor and decompressor to exchange packets with A, and it shall have another compressor and decompressor to exchange packets with C. ROHC does not identify the destination nodes, so if you use the same compressor for 2 different destination nodes, the compressed packets and feedbacks will be mixed.

Regards,
Didier

Revision history for this message
sleepswallow (sleepswallow128) said :
#2

Hello:
        thanks very much.
        Now I want to know which way to resolve this question relatively easy.

       one : all packets and feedbacks use the same compressor and decompressor, but modify the structs of c_generic_context and rohc_comp so on,for example , in c_generic_context structs inserts the next_dest_id to identify the destination nodes,and feedbacks is the same too, last, deciding the next_dest of comppacket and feedback to avoid the mixed question.

    second: use the way you said. Every node creates the ROHC compressor/decompressor array, for example ,
  Node B :
         struct rohc_comp_dest
           {
                  unit32_t rohc_comp_dest;
                 struct rohc_comp* compressor;
             }Rohc_comp_dest;

   struct rohc_decomp_src
           {
                  unit32_t rohc_decomp_src;
                 struct rohc_comp* compressor;
             }Rohc_decomp_src;

 struct Rohc_comp_dest * rohc_comp_next_dest[10];
 struct Rohc_decomp_src* rohc_decomp_before_src[10];
then
          according the rohc_comp_dest and rohc_decomp_src (feedback packet's dest) is the same or not , create ROHC compressor/decompressor per couple of nodes and ......

        I need you help to judgement which way is better, thanks~~

  another question ,have you the code to realize the second way ? or above the realizing way about the second way is ok?

         thanks ~~~

 Regards,
  Didier

Revision history for this message
Didier Barvaux (didier-barvaux) said :
#3

Hello,

Your first solution does not fit well with the ROHC protocol. The ROHC communication is a point-to-point communication, not a point-to-multipoint communication. You have to create several ROHC compressor/decompressor pairs to achieve point-to-multipoint communications.

Regards,
Didier

Revision history for this message
sleepswallow (sleepswallow128) said :
#4

Hello:

              thank you very much , I have resolved the problem by using the second solution.

      Regards,
    sleepswallow