Hi,
I wanted to forward the email dialogue below - I find it very reassuring that this guy agrees with my split!
He implemented EFCP, which is the transport protocol in RINA, the Recursive InterNetworking Architecture. It’s a transport, all right, but differs from TCP in many ways. The “spec” (as much as a spec as it is…) is here:
I followed this dialogue by adding that I forgot about a block called “connection state management”, to which he answered that *he* doesn’t need that, good protocols have no connection state… well, that’s a different story, for a different day :-) Thinking more generally, I think we do need this, too.
I believe we can use the bachelor thesis from Brescia as a starting point, as it already implements many of the things below - and if we add the scoreboard + some timer logic (as a way to simplify the scoreboard!) to it, we end up with a modern, competitive TCP (and arguably, a scoreboard-like thing is necessary for all transports).
Cheers, Michael
Begin forwarded message:
Subject: Re: A transport protocol implementation question
Date: September 14, 2017 at 12:00:01 PM GMT+2
Dear Michael,
It's good to hear from you. How's everything going?
the list of functional blocks you identified pretty much covers everything in the EFCP. One thing a bit different is that checksum calculation, and in general, the mechanisms and policies for SDU protection (you remember the RINA parlance, I'm sure) are not part of EFCP, and are carried out independently. Another thing is that in EFCP fragmentation and reassembly of SDUs has to be taken into account, though the details about this are part of a different protocol. But for the rest, it sounds right.
Thinking about the code, these logical blocks are really separated. Of course, some of them are to be present in any instantiation of the protocol machines, and there are few things that are assumed to exist by several logical blocks. Though right now I can only come up with sequence numbers.
Regarding a possible hardware implementation, I have the inkling that this separation, though works well in software, should be simplified in hardware, grouping together some blocks.
I hope this helps you. Best luck with your efforts!
Best regards,
Miquel.
|