210 likes | 373 Views
RDA3 Transport. Joel Lauener on behalf of the CMW team 26th June , 2013 Joel.Lauener@cern.ch. Outline. Introduction Architecture Connection management Messaging Conclusions. 1. Introduction. Introduction. Provide connection management and asynchronous bi-directional communication
E N D
RDA3 Transport Joel Lauener on behalf of the CMW team 26th June, 2013 Joel.Lauener@cern.ch
Outline • Introduction • Architecture • Connection management • Messaging • Conclusions 1
Introduction Introduction • Provide connection management and asynchronous bi-directional communication • Keep it simple & stupid! • Abstraction of the underlying communication library • Independent from other librairies 2
Architecture Public API 3
Architecture Dispatcher • Push sockets from high level to transport • Callback from transport to high level 4
Architecture Channels • Admin socket: • Management • Small message size • Small message count • Data socket: • Application data • Might block/overflow 5
Architecture Frames 0x01 SERVER_CONNECT_ACK 0x02 SERVER_REP 0x03 SERVER_HB 0x20 CLIENT_CONNECT 0x21 CLIENT_REQ 0x22 CLIENT_HB 6
Architecture Message • Used to pass data between high layer and transport layer • Wrapper around ZMQ message with custom free function 0 copy 7
Connection Management Connect (success) 8
Connection Management Heartbeating 9
Connection Management Connect (fail) 10
Connection Management Client reconnect 11
Connection Management Server disconnect 12
Connection Management Client close 13
Connection Management Connection states 14
Messaging Request 15
Messaging Replies 16
Messaging What about pub/sub? • Each data point can be multiplexed • Authorization layer (RBAC) • Cannot send first updates through the same channel • We do not use pub/sub for notifications • But we have 2 use cases for a pub/sub based transport: Timing and Orbit Feedback 17
Conclusions ZeroMQ • Powerful, easy to use, well documented • However… • In terms of error handling ROUTER is inconsistent compared to DEALER, REQ and REP • ZMQ doesn’t give means to inspect/modify the content of queues 18
Conclusions Future plans • Improve disconnection detection on the server side (ZMQ monitor or async HB) • Implement graceful close • Investigate pub/sub • Think about replies priority • Performance testing and profiling • Should be ready by September ’13 19
Conclusions Summary • Transport is almost implemented • Working version in C++ and Java • 90% done, 90% of work left ;) • Some work left on error detection • Pub/sub is not used for sending notifications • No showstoppers on the ZeroMQ side • Preliminary scalability tests are promising 20