none
RDP: FEC with Reliable UDP RRS feed

  • Question

  • Hello !

    I try to develop a RDP client with UDP enabled feature. Specification of MS-RDPEUDP describes a Reliable UDP protocol with enabled FEC encoding/decoding.

    Specification provides a samples which can be used to check implementation. in short it can be checked for first two bytes where length is encoded.

    example: S1:length = 10, S2: len=20, S3 and S4 has length 15 and S5 has len = 20 bytes

    with two bytes in FEC payload are 0x00 and 0x42

    index=0, StartSeq=1, Range=5

    reconstructed coefficients C = [0x00, 0xFE, 0xE6, 0xFD, 0xCD]

    and first byte of recovered length of S5-packet is = Div256( mul256(S1[0], C[0]) xor (mul256(S2[0], C[1]) xor mul256(s3[0],C[2]) xor mul256(s4[0], c[3]) xor FEC[0], C[4]) == 0x00, similar operation to recover second byte and others

    div256, mul256 is division and multiplication in finite field GF(256).

    but in real network communication a Windows 10 sends in FEC payload byte-sequences that it looks like computed in other way.

    as example I had received 5 DATA packets { A1, A2, A3, A4, A5} with length 1198, and FEC=0x37, 0x4D, 0x17, 0x33, ...

    index= 0, range=5, start=3620160855

    reconstructed coefs = 0x39, 0xFC, 0x20, 0xcc, 0x11

    if I suppose to lost a A3-packets then it recovers with wrong bytes in length = { 0x95, 0x76 }, expected a { 0x04, 0xAE }

    How I should correct FEC decoding algorithm to fit a real environment and recover packets with  FEC generated by Win10 ?

    Tuesday, May 31, 2016 10:54 AM

Answers

  • Answer for this issue is provided in the errata for MS-RDPEUDP (See https://msdn.microsoft.com/en-us/library/mt242380.aspx). 

    Next main release of specifications after 2016/08/15 will have this change in the specification.

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications

    Monday, August 29, 2016 5:56 PM
    Moderator

All replies

  • Hello Sergey,
    Thank you for this question. One of our engineers will review this and follow-up soon.
    Thanks,
    Edgar
    Tuesday, May 31, 2016 3:59 PM
    Moderator
  • Hello Sergey, I will be assisting you with your issue. Can you confirm if this issue is only specific to windows 10 ? If you have the network trace you are using to decode, would you be able to email me at dochelp at microsoft dot com ?

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications
    Tuesday, May 31, 2016 9:21 PM
    Moderator
  • I haven't tested it with Win8.1.

    Yes, I have cap-traces, and lua-plugin for wireshark.

    I will send them to you by email. 

    Wednesday, June 1, 2016 11:08 AM
  • Working with Sergey offline. Will post the solution here after our investigation.

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications

    Tuesday, June 7, 2016 8:07 PM
    Moderator
  • Answer for this issue is provided in the errata for MS-RDPEUDP (See https://msdn.microsoft.com/en-us/library/mt242380.aspx). 

    Next main release of specifications after 2016/08/15 will have this change in the specification.

    Regards,
    Sreekanth Nadendla
    Microsoft Windows Open Specifications

    Monday, August 29, 2016 5:56 PM
    Moderator