Vearol / TalTech-Network-Protocol

A team project for Network Protocol class
0 stars 0 forks source link

Current status #26

Open Vearol opened 5 years ago

Vearol commented 5 years ago

Let's keep our current status here. I will write what is left to do, and "L" - if I'm going to do this, "?" - if I don't know who is going to do this... You can take whatever you want, even my parts if they are interesting for you to do. If I'm mistaken with status - please correct.

Task Responsible
Resend packets in case of NOT-ACK L
New group-chat feature(probably low priority) L
Using your functions for destination(it's not done yet) L
Have contacts list: nickname, ip, port, gpg ?
Ability to choose from contacts in console ?
Fix sequence number in file transfer L?
Implement Send/Request Identity ?
Keepalive + routing table update(if dead) ?
Using your functions for routing table send/update L
1n4r1 commented 5 years ago
Task Responsible status
Resend packets in case of NOT-ACK L
New group-chat feature(probably low priority) L
Using your functions for destination(it's not done yet) L merged on master branch
Have contacts list: nickname, ip, port, gpg ? kinda done in node.py
Ability to choose from contacts in console ?
Fix sequence number in file transfer L?
Implement Send/Request Identity ?
Keepalive + routing table update(if dead) ?
Using your functions for routing table send/update L
Vearol commented 5 years ago
Task Responsible Status
Resend packets in case of NOT-ACK L Done
New group-chat feature(probably low priority) L ...maybe, if have time
Using your functions for destination(it's not done yet) N Done
Have contacts list: nickname, ip, port, gpg N kinda done in node.py
Ability to choose from contacts in console ? ?
Fix sequence number in file transfer L Done
Implement Send/Request Identity ? ?
Keepalive + routing table update(if dead) ? ?
Using your functions for routing table send/update L haven't started
Vearol commented 5 years ago
Task Responsible Status
New group-chat feature(probably low priority) L Not done
Have contacts list: nickname, ip, port, gpg N Done
Ability to choose from contacts in console N Done
Implement Send/Request Identity L? info below
Keepalive + routing table update(if dead) L? info below
Using your functions for routing table send/update L Done, not tested
Route update ? info below
Rewrite sessions L done, not tested
  1. Implement Send/Request Identity
    • when we receive someone's identity - we update their nickname. If responseRequired=True - we send him our own. I take our own as nodes.get_nickname(SERVER_KEY) - Done
    • when we receive a full-routing-table, or route update - we check if we know nickname of nodes, if not - we send each unknown node Identity Request with responseRequired=True - Not done
  2. Keepalive
    • when we receive a keepalive from a neighbour - we send him ACK - Done
    • we send our keepalives to neighbours every 10 sec. If no ACK after 40sec - we consider it offline and send a Route Update to our neighbours with offline-node-Id : count=max 2byte value(0xffff)
  3. Route update
    • we receive a Route Update and Full Table ONLY from our neighbours
    • we receive Full Table only when we connect the first time, to get all info
    • all other cases of changes in our network is shared with Route Update. Someone new - added - route update with 10bytes - new node : count. Someone offline - dead node : 0xffff
Vearol commented 5 years ago

Update to the previous comment

Task Responsible Status
New group-chat feature(probably low priority) L Not done
Have contacts list: nickname, ip, port, gpg N Done
Ability to choose from contacts in console N Done
Implement Send/Request Identity L? info below
Keepalive + routing table update(if dead) L? info below
Using your functions for routing table send/update L Done, not tested
Route update ? info below
Rewrite sessions L Done

I will do this group chat feature, and maybe you could take the rest? I think, I have written specs clearly, but ask, if you have questions.

1n4r1 commented 5 years ago

Actually, not I'm not in Estonia right now and probably I can't take all the tasks what you mentioned. maybe I can take this task? image but takes time to understand your code at first.

Vearol commented 5 years ago

You can take this task, but maybe you will continue with routing part? I mean 'Route Update' messages. We will be receiving them most of the time, not full table, so we need full logic for it.

1n4r1 commented 5 years ago

image actually, I still don't understand what is "route update" exactly. I'll talk to Tarmo about it.

Vearol commented 5 years ago

I understand what it is - if you don't understand my describtion in the comment above - ask quiestion.

1n4r1 commented 5 years ago

no response from Tarmo so can u tell me what interface is needed?

Vearol commented 5 years ago

We receive route updates only from neighbors. btw, we need a function which returns a list of current neighbors, because we will need it for sending our Route Update and asking Routing Table. I guess our neighbors are preconfigured in our INIT_NOTES, but later new could be connected.

1n4r1 commented 5 years ago

for get_neighbors() https://github.com/Vearol/TalTech-Network-Protocol/pull/48

1n4r1 commented 5 years ago

image I think we should not do like one function does parse but one doesn't so I expect 10bytes bytearray (dest_id 8bytes + cost 2bytes)

and sorry, actually bit difficult for me to understand what you want

Vearol commented 5 years ago

As I said - we need only 1 function, just you choose if you parse or me, I'll write rest for how and where to call it. Ok, then you expect 10bytes bytearray... What is difficult to understand? Do you have questions?

1n4r1 commented 5 years ago

I feels like we don't need update_route and what we need is checking function which checks if received data is same as we have or not. function you suggested is like a mixture of checking and update the table. I guess what I mean is

1. modify add_table_bytes not to add route with cost 65535
2. create a new function which checks if the received data

this can fulfill what you want?

1n4r1 commented 5 years ago

https://github.com/Vearol/TalTech-Network-Protocol/pull/49

1n4r1 commented 5 years ago

If my understanding is right, "route_update" you suggested has 2 features should be separated

  1. check if update happened
  2. update the table that's the reason I did like this. if you had any question, tell me
1n4r1 commented 5 years ago

EX: if you wanna check if update happened and do update,

if is_updated(bytearray):
    update_table(src_id, bytearray)
Vearol commented 5 years ago

Ok, you are right, fine for me

Vearol commented 5 years ago

All from pending tasks are done. Not tested routing with multiple clients.