RLink topologies and testing #2094
Replies: 8 comments 6 replies
-
++1! oh yes, I couldn't agree more! what I mean is: to complete and to make rlink robust and ready for large scale production use, this is absolutely the approach we have to take. we wouldn't be able to hash out bugs without regressions, and we wouldn't really increase confidence in correct working without. rlinks are by far the most complex piece of crossbar. it is significant LOCs, but that's not even the major problem, it is the complexity of what should happen (the routing semantics), and the complexity of features that rlinks build upon (e.g. meta API, router embedded client session, etc)
++1! again, I very much agree, this is a very good approach. for 2 reasons (in my mind): a) precise communication: and this again is essential, given the complexity and flexibility that ultimately will result if we can complete it) b) functional test automation: if we can nail a DSL for describing topologies and node networks, we can add automation on top, which would create node networks on the fly, and fully integrated into CI/CD. and only with full (functional) test automation all of this is sustainable. and we will need that to survive without getting crazy;) there are some functional test setups and such here in the repo, but it is not currently active .. I got bogged down by the dependency dark hole. anyways .. This is all fantastic! rgd topologies: I will draw some pics of the most important topologies, and of some topologies that mark the ends/borders of the intended target design space (how far rlinks would ultimately carry), and also annotate/match your DSL to that! I'll come back later;) |
Beta Was this translation helpful? Give feedback.
-
thanks a lot for your analysis and thoughts! IMO this is the right track / way to think about this stuff, and hash out the remaining issues to make rlinks complete. just a few quick/preliminary comments, I'm working on the topology figures.
|
Beta Was this translation helpful? Give feedback.
-
alright, I'll split up my figures, step by step;) to start, rgd naming of owners / operators of router nodes and clients, my proposal would be to follow the established names (and respective first letters to abbreviate) from the cryptography community described e.g. here https://en.wikipedia.org/wiki/Alice_and_Bob#Cast_of_characters
mapping to WAMP: |
Beta Was this translation helpful? Give feedback.
-
sorry, took a while as I was busy with other stuff. I've boiled down the topologies or elements thereof to target for rlinks and for rlink testing to the most important ones (in my eyes). @DZabavchik pls let me know what you think, let's discuss! |
Beta Was this translation helpful? Give feedback.
-
note: also filed this (the figures) here wamp-proto/wamp-proto#503 |
Beta Was this translation helpful? Give feedback.
-
alright, I've translated the architecture that is used in a real-world project I am currently involved. this is the last one, promised;) however, it is the one I am actually using in an application and hence the topology I'm really interested in. if I could test that automatically, that would be awesome of course. and it basically uses all the elements from above. it consists of
this diagram only shows router nodes, no clients, no network and cross-network link details like firewalls/NATs to keep it simple. |
Beta Was this translation helpful? Give feedback.
-
To illustrate the difference between solid arrows (forwarding from others), consider these diagrams of a mesh (TP4) Yeah, I need a break too. Have a great weekend. |
Beta Was this translation helpful? Give feedback.
-
I was working on a PR that fixes some issues with RLinks (errors, lost and zombie registrations/subs, prefix/wildcard support).
I realized that I was targeting one topology (full mesh with reciprocal local forwarding from all to all)
Need some guidance on testing: Which topologies are realistic and should be tested?
I tried to codify topologies so configurations can be generated from simple spec. So here is the write up.
RLinks
Nomenclature
- 1..9, A..F - nodes with RLinks
- U,V,W,X,Y,Z - nodes without RLinks
- l - local
- r - remote
- lr - local and remote (both)
Node specification N(<target>[l | r | lr]), where N is the node number, target is the target node number, and l | r | lr - Local/Remote/Both
.. note::
Topologies
Two routers
Chain
Chain with reciprocal links
Ring
Ring with reciprocal links
Star
Star with reciprocal links
Mesh
Beta Was this translation helpful? Give feedback.
All reactions