Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test utp against utplib #72

Open
carver opened this issue Jun 8, 2023 · 4 comments
Open

Test utp against utplib #72

carver opened this issue Jun 8, 2023 · 4 comments
Assignees

Comments

@carver
Copy link
Contributor

carver commented Jun 8, 2023

No description provided.

@KolbyML
Copy link
Member

KolbyML commented Jun 10, 2023

Here is a #74 PR with a basic send/recv for major implementations of utp except for a recv for nim.

Interesting obervations

An interesting obervations is libutp will send keep connection alive ack packets.
Well ethereum/utp will try to shutdown the connection the first chance it gets instead of trying to be a long lived connection like TCP.

Concerns

We can find weird behavior from doing interop testing like this, but is it worth it? Since it seems like our main concern has to do with starvation of tokio async tasks + the interaction ethereum uTP idle timeout

@KolbyML
Copy link
Member

KolbyML commented Jun 10, 2023

I am going to look into why connect_with_id acts weird

@KolbyML
Copy link
Member

KolbyML commented Jun 13, 2023

    0x7fff4b7b7010:  fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
    0x7fff4b7b7020:  fe fe fe fe fe fe fe fe
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debug: Wrote 692 bytes, 0 left
debug: Received 20 byte UDP packet from 127.0.0.1:9077
    0x7fff4b7b6d60:  11 00 e3 45 dd db 23 f4 00 00 00 00 00 10 00 00
    0x7fff4b7b6d70:  97 f6 45 66
debug: state 3: UTP_STATE_EOF
4052Z DEBUG uTP{send=58181 recv=58180}: utp_rs::conn: uTP conn starting...
hi2023-06-13T20:41:55.796863Z DEBUG uTP{send=58181 recv=58180}: utp_rs::conn: uTP conn initiating shutdown...
2023-06-13T20:41:58.873119Z DEBUG uTP{send=58181 recv=58180}: utp_rs::conn: transmitting FIN seq=38902
2023-06-13T20:42:08.885867Z  WARN uTP{send=58181 recv=58180}: utp_rs::conn: idle timeout expired, closing... unacked=[]
2023-06-13T20:42:08.886484Z DEBUG uTP{send=58181 recv=58180}: utp_rs::conn: uTP conn closing... err=Some(TimedOut)
2023-06-13T20:42:08.886652Z DEBUG utp_rs::socket: uTP conn shutdown cid.send=58181 cid.recv=58180
2023-06-13T20:42:27.914907Z DEBUG utp_rs::socket: received uTP packet for non-existing conn cid=58180 packet=State seq=17767 ack=38901

I was able to cause a "timeout" quickly and reliably

c recv r sender let data = vec![0xfe; 1_000_000]; sent this

@KolbyML
Copy link
Member

KolbyML commented Jul 3, 2023

Removed tracking since this avenue is no longer under search

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants