RE: RFC3080 MSG/RPY Window
"Rainer Gerhards" <[email protected]> Tue, 16 Sep 2003 11:02:08 +0200
| Newsgroups | gmane.ietf.beep |
|---|---|
| Message-ID | <[email protected]> |
Thanks to all for helping me understand and your patience. I think I finally understood. I am just summing it up in this mail so that it can a) proove if I really understood ;) and b) (if I did) serve as a reference for others with the same question. There are two advancing "message ids" in BEEP. One is the seqno, the other is the msgno. Msgno is used at the application layer to correlate requests and responses. A peer may issue many MSGs without necessarily receiving RPYs, but the remote peer MUST send RPYs in the same sequence that it received MSGs for. This is detailled under "Asynchrony" in RFC3080, 2.6. Msgno is NOT intended to be used for flow control. Hence, there is no and must no window be defined for it. In contrast, seqno is the one used for actual flow control. Windowing is defined in RFC3081 and carried out via SEQ frames. So if I implement a BEEP-based server AND I need to limit the amount of data that an application sends to me, I do not do this via MSG/RPY but via SEQ only. So it is vital that a robust server design includes some type of communication of the upper app layers with the lower 3081 layers so that the later will receive feedback from the upper layers when it is time to stop sending SEQs. The good thing about this is that flow control follows a single paradigm, no matter if MSG/RPY or MSG/ANS semantics are used. I hope this understanding is right now. I will implement it this way. Thanks again for your patience. You saved the world at least one partial incompliant implementation ;) Rainer