ethereum / ethereum/utp

Fix timestamp_difference_microseconds, it is always sending 1000000 microseconds even on long transfers

Open
#82 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
40
Forks
20
PR merge metrics
No merged PRs in 30d

Description

```c
log: 0x5558be365860 127.0.0.1:9077 057733 Got ST_DATA. seq_nr:17517 ack_nr:17766 state:CONNECTED timestamp:4289278524 reply_micro:1000000
log: 0x5558be365860 127.0.0.1:9077 057733 acks:0 acked_bytes:0 seq_nr:17767 cur_window:0 cur_window_packets:0 relative_seqnr:0 max_window:1382 min_rtt:2783138807 rtt:0
log: 0x5558be365860 127.0.0.1:9077 057733 fast_resend_seq_nr:17767
log: 0x5558be365860 127.0.0.1:9077 057733 acks:0 acked_bytes:0 seq_nr:17767 cur_window:0 cur_window_packets:0
log: 0x5558be365860 127.0.0.1:9077 057733 Got Data len:960 (rb:0)
```
``timestamp_difference_microseconds`` or ``reply_micro:1000000`` is always 1 second when sending ``ethereum/utp`` to ``bittorrent/libutp``

```c
log: 0x55e16d23f860 127.0.0.1:9077 051863 Got ST_DATA. seq_nr:20615 ack_nr:17766 state:CONNECTED timestamp:1513208380 reply_micro:4221
log: 0x55e16d23f860 127.0.0.1:9077 051863 acks:0 acked_bytes:0 seq_nr:17767 cur_window:0 cur_window_packets:0 relative_seqnr:0 max_window:1382 min_rtt:2783138807 rtt:0
log: 0x55e16d23f860 127.0.0.1:9077 051863 fast_resend_seq_nr:17767
log: 0x55e16d23f860 127.0.0.1:9077 051863 acks:0 acked_bytes:0 seq_nr:17767 cur_window:0 cur_window_packets:0
log: 0x55e16d23f860 127.0.0.1:9077 051863 Got Data len:449 (rb:0)
```

This ^ is ``fluffy-utp`` to ``bittorrent/libutp`` which is sending accurate ``timestamp_difference_microseconds``

We noted before this happened on small transfers, this issue is to confirm that the issue affects every data packet send by ``ethereum/uTP`` which this would cause our congestion protocol to not work properly?

To my knowledge it doesn't matter if the numbers are werid as long as they display the relative different on the local system. Which we currently not doing

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating timestamp_difference_microseconds and the packet path that emits reply_micro. Compare its values with the local relative timestamp behavior shown in the libutp logs. Done means ethereum/uTP reports the actual timestamp difference instead of 1000000 microseconds on every packet, including long transfers.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.