Skip to Content.
Sympa Menu

ndt-dev - Re: [ndt-dev] Allowing protocol changes without losing backward compatibility

Subject: NDT-DEV email list created

List archive

Re: [ndt-dev] Allowing protocol changes without losing backward compatibility

Chronological Thread 
  • From: Sebastian Kostuch <>
  • To:
  • Subject: Re: [ndt-dev] Allowing protocol changes without losing backward compatibility
  • Date: Tue, 01 Apr 2014 11:28:23 +0200

Hi Tiziana

On 01.04.2014 10:10, Tiziana Refice wrote:
Hi Sebastian

On Mon, Mar 31, 2014 at 1:56 PM, Sebastian Kostuch <> wrote:
while working on Issue136 I have encountered some difficulties with making little changes in middlebox protocol
without making old client not working with new server. So after some investigation I would like to propose
following changes in order to solve this problem:

To make protocol changes possible in future versions without losing backward compatibility both server and client
need to know versions of each other. At this moment server has no information about client one. To fix this we
need our clients to sent such information before tests are being run but we can't either change currently sent messages
(such as the login message which could contain client version) either pass some new type of message from client to
server (old server would know nothing about it).

So probably it would be good to create some new test running before any other for only this versions exchange.
This test should be obligatory (when server will not receive id of this one in client's request then it will treat client as the
one with older versions, before proposed changes). On the other  hand  when new client will send such test request to
old server, then it would be just ignored (marked as not supported) and all will work ok also. This way backward
compatibility should be assured.

Having both server and client know about their versions we can then perform some changes in tests protocol. And
here goes the solution for Issue136: instead of always sending additional RTT and TCP buffer size values server will
just check which client he is connected to. If it is older one which does not support newest middlebox test protocol then
these values will not be attached to final results.

Also instead of checking only client/server version we could introduce numbering of individual tests protocols and server
would sent such information to client before tests (i.e. string containing entries such as "[testID]-[protocolVersion]").

What do you think about such solution? Is this good way to assure backward compatibility and making introducing
some protocol changes in future easier? Also if you have any questions feel free to ask them :).

Instead of solving this problem by introducing a client version, would it make sense to just use (and extend) the test suite negotiation step ( 

I have not looked into this in detail. So it's possible that my suggestion does not fully address what you are trying to solve.

We need to somehow inform new server that it can send these additional data during middlebox test. I thought about making it during
test suite negotiation but I have no idea how to exchange this info without losing backward compatibility. We can't  change message
which is sent itself because old server expects only id's of tests (sent as byte) and modifying this will result in old server not working properly.
Also we can't sent any additional message during this step as both old server and client expects only strictly specified amount of them and
one more/less also will make it not work.

Sebastian Kostuch

Archive powered by MHonArc 2.6.16.

Top of Page