Packet number gaps are never filled in QUIC, whether the packet contains ACK, 
or Stream data, or some other frame. A packet number is only used once. If it 
is lost, the frames in it may be resent, in one or several packets, with 
different packet numbers.

-- Christian Huitema 

> On Jun 30, 2023, at 9:23 AM, Xin Long <[email protected]> wrote:
> 
> Hi, Lars,
> 
> In QUIC, as the packet containing only ACK frame also consumes a packet 
> number,
> I have a question about how the peer manages its "ACK map" for making SACK and
> moves forward this gap?
> 
> For example, the Client sends data to the Server, and the Server sends SACKs.
> If the SACK with packet number 21 from the Server gets lost, the Client will
> not get the number-21 SACK packet.
> 
> Later when the Server sends data to the Client, there will always be a gap 
> (21)
> when the Client sends SACK , as the Client can never know if the lost 
> number-21
> packet is a stream DATA or SACK-only packet.
> 
> To make it more clear:
> 
>   Client                                 Server
>    ...                                    ...
> pkt 10 (DATA)                   --->
>                                <---    pkt 20 (ACK: [10..0])
> pkt 11 (DATA)                   --->
> pkt 12 (DATA)                   --->
> pkt 13 (DATA)                   --->
>                               !<---    pkt 21 (ACK: [12..11])
>                               !<---    pkt 22 (ACK: [13..11])
>                               !<---    pkt 23 (DATA)
>                               !<---    pkt 24 (DATA)
> pkt 14 (DATA)                   --->
>                                <---    pkt 25 (ACK: [14: 11])
>                                <---    pkt 26 (DATA)
> pkt 15 (ACK: [26..25] [20..0])  --->    ?
> 
> 
> pkt 21-24 from Server are all lost, what will Server do after receiving
> pkt 15 from Client, to tell Client that the lost pkt 21-22 are ACKs and
> the lost pkt 23-24 are DATA, and the gaps in ACK map in Client should
> keep 22-23 only?
> 
> Thanks.
> 

Reply via email to