Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tools for experimental Protocol Design & Development?

Are there any open source, high level tools that would facilitate and simplify development of experimental network protocols (TCP/UDP) using a GUI?

Basically, something like a dynamic state machine editor that would allow you to define "packets", "messages", "states", "validators", "handlers" etc.

Preferably, such a tool would be comprehensive enough to deal with all relevant aspect of the protocol (i.e. client & server), so that the high level protocol description could be serialized out to an XML/RDF file where it could be used to dynamically create application code to implement the protocol (i.e. in Python).

like image 440
none Avatar asked Mar 13 '09 22:03

none


People also ask

What are the components of experimental design protocol?

The components of experimental design are control, independent variable and dependent variable, constant variables, random assignment and manipulation. These are the components that also help you define if the experiment is valid.

What are the 4 types of experimental design?

Four major design types with relevance to user research are experimental, quasi-experimental, correlational and single subject. These research designs proceed from a level of high validity and generalizability to ones with lower validity and generalizability.


2 Answers

Give up the GUI for a text editor and enter the world of protocol specification languages. Most of these tools take a description of some protocol, try to prove it's not broken, and generate an implementation and tests. Here's a few to get you started, but there's many more:

  • Ragel
  • APC
  • SPIN
like image 197
timday Avatar answered Oct 16 '22 00:10

timday


If you are going to aim for an eventually python target anyway, who not roll your own test rig (in python) from the start?

State machines aren't that hard to build in code, and their a heck of a lot easier to read unambiguously and verify than pictures in a GUI, especially when they get complex.

It sounds to me you'd do better with an embedded DSL than a GUI based designer.

Edit: If, as you said in the comments, you just threw python out as an example, I'd suggest you go with timday's answer. If you're not actually worried about embedding in python, go with a pre-existing DSL as he suggests.

like image 32
MarkusQ Avatar answered Oct 16 '22 00:10

MarkusQ