- Protocol: TCP
- Port: 3333
- Type: Unstructed Network
- Join network over Lead Peer
- Peer list with max 4 Peers
- sending Messages in Byte Array
- Heartbeat (min. 1 per minute to leader)
- unique IDs for every Peer (1-25)
new Client → Leader (EntryMSG):
Tag: 1 (1 byte)
Version: 0 (1 byte)
IPv4+Port (6 byte)
Leader → new Client (EntryResponseMsg):
Tag: 2 (1 byte)
Version: 1 (1 byte)
ID (2 byte / Leader give IDs from 1-25)
4 * IPv4+Port+ID (4 * 8 byte)
Peer1 → Peer2 (NodeRequestMsg):
Tag: 3 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Peer2 → Peer1 (NodeResponseMsg):
Tag: 4 (1 byte)
Version: 1 (1 byte)
4 * IPv4+Port+ID (4 * 8 byte)
Peer → Server (IAmAliveMsg):
Tag: 5 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Peer1 → Peer2 (NodeSearchMsg):
Tag: 6 (1 byte)
Version: 1 (1 byte)
IPv4+Port (6 byte)
SourceID (2 byte / Peer who start search)
SearchID (2 byte / given by Peer who start search)
DestinationID (2 byte / PeerID who is searched)
DestinationPeer → AskingPeer (IAmFoundMsg):
Tag: 7 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
SearchID (2 byte / copy from Tag 6 message)
Peer → Peer (TextMsg):
Tag: 8 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
LengthMsg (2byte / length from xbytes)
Msg (xbyte)
Peer → Peer (AreYouAliveMsg):
Tag: 9 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Peer → Peer (IAmLeaderMsg):
Tag: 10 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Leader → Peer (TellMeYourTimeMSG):
Tag: 11 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Peer → Leader (HereIsMyTimeMSG):
Tag: 12 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Time (8 byte)
Leader → Peer (HereIsYourNewTimeMSG):
Tag: 13 (1 byte)
Version: 1 (1 byte)
IPv4+Port+ID (8 byte)
Time (8 byte)
- Peer fragt die Nachbarn
- Fall 1: Nachbar hat SearchID bekommen
- Fall 2: Nachbar hat SearchID nicht bekommen
2.1 bin ich der Knoten?
→ Antwort an Suchenden
2.2 Bin ich nicht der Knoten
→ Nachricht an alle meine Nachbarn, außer SuchendenListe
2 ways of starting leader election:
- we want (manually)
- we get Tag 9 message and answer with Tag 5
- The Peer asks all higher IDs with Tag 9
- If a higher ID answer with Tag 5, this peer will take the leader election. we are finish
- We are leader, when we cannot find a peer with higher ID. We send Tag10 (IAmLeaderMessage) to all Peers
- Leader asks every Peer for the time
- Peers answer the Leader
- Leader calculate the Time and tell tell the all Peers
SourceID: ID des suchenden Knoten
DestinationID: ID des zu suchenden Knoten
SearchID: eindeutige ID der jeweiligen Suche