PROTOCOL
1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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)
[...]