PROTOCOL 1.8 KB
Unfortunetaly, on L2 all messages are sending to all members of the cluster.

unicast:	dst_node_id == node_id
broadcast:	dst_node_id == NOID

session example of two nodes (A and B):

"A" appears (getting node_id):

A -> hello	(serial: 0;	src: NOID	; dst: NOID;	name: A)		| cluster_init()
A -> register	(serial: 1;	src: 0		; dst: NOID;	name: A)		|

Trying to sync with somebody:

A -> updtree	(serial: 2;	src: 0		; dst: NOID;	[A modtree])

"B" appears (getting node_id):

B -> hello	(serial: 0;	src: NOID	; dst: NOID;	name: B)		| cluster_init()
A -> welcome	(serial: 3;	src: 0		; dst: NOID;	my_name: A; to_name: B)
B -> register	(serial: 1;	src: 1		: dst: NOID;	name: B)		|
A -> ack	(serial: 4;	src: 0		; dst: 1;	ack_serial: 1)

Initial syncing A <-> B:

B -> updtree	(serial: 2;	src: 1		; dst: NOID;	[B modtree])
A -> updtree	(serial: 5;	src: 0		; dst: NOID;	[A modtree])
A -> lock	(serial: 6:	src: 0		; dst: NOID;	[paths list])
B -> ack	(serial: 2;	src: 1		; dst: 0;	ack_serial: 6)
B -> lock	(serial: 3:	src: 1		; dst: NOID;	[paths list])
A -> ack	(serial: 7;	src: 0		; dst: 1;	ack_serial: 3)
A -> unlockall	(serial: 8:	src: 0		; dst: NOID)
B -> ack	(serial: 4;	src: 1		; dst: 0;	ack_serial: 8)
B -> unlockall	(serial: 5:	src: 1		; dst: NOID)
A -> ack	(serial: 9;	src: 0		; dst: 1;	ack_serial: 5)

Just syncing A -> B:

A -> lock	(serial: 10:	src: 0		; dst: NOID;	[paths list])
B -> ack	(serial: 6;	src: 1		; dst: 0;	ack_serial: 10)
A -> unlockall	(serial: 11:	src: 0		; dst: NOID)
B -> ack	(serial: 7;	src: 1		; dst: 0;	ack_serial: 11)

"A" disappers (shutdown)
"A" appears (registering with old node_id)

A -> hello	(serial: 0;	src: NOID	; dst: NOID;	name: A)
B -> welcome	(serial: 4;	src: 1		; dst: 0;	my_name: B; to_name: A)
A -> register	(serial: 1;	src: 0		; dst: NOID;	name: A)
B -> ack	(serial: 5;	src: 1		; dst: 0;	ack_serial: 1)

[...]