paullouisageneau / libjuice

JUICE is a UDP Interactive Connectivity Establishment library
Mozilla Public License 2.0
410 stars 76 forks source link

After libjuice p2p succeeds, what is the default mtu of UDP? #175

Closed fengshangren closed 1 year ago

fengshangren commented 1 year ago

After libjuice p2p succeeds, what is the default mtu of UDP?

fengshangren commented 1 year ago

Can juice_add_remote_candidate only be added line by line, not all together?

fengshangren commented 1 year ago

Why is libjuice's NAT penetration of the same computer not 100% successful, only about 50% success rate?

fengshangren commented 1 year ago

Does libjuice have examples used in the public network?

fengshangren commented 1 year ago

Why can I penetrate the NAT, but the success rate is not %100? Is it necessary to restart ICE several times to penetrate?

paullouisageneau commented 1 year ago

Please prefer the discussions GitHub feature if you want to ask questions rather than reporting an issue.

After libjuice p2p succeeds, what is the default mtu of UDP?

The MTU is the actual network path MTU as libjuice does not add overhead, except when relayed it is the path MTU minus 4 bytes. libjuice only implements the ICE protocol to establish connectivity and does not probe the path MTU.

Can juice_add_remote_candidate only be added line by line, not all together?

The juice_add_remote_candidate function must be called for each candidate if you send the description before candidates gathering is done. If you wait for gathering done, you only need to call juice_set_remote_description with the whole description and you should not call juice_add_remote_candidate.

Why is libjuice's NAT penetration of the same computer not 100% successful, only about 50% success rate?

Even with the same two computers, the connection process is expected not to be 100% reproductible without TURN server as NAT mapping types are not always deterministic. However, with such a low success rate, it is also possible the STUN/TURN servers you use are partially blocked (typically if attempting to connect from China with Google servers).

Does libjuice have examples used in the public network?

Not in the repository, but libjuice is used as ICE backend for https://github.com/paullouisageneau/libdatachannel, which has various examples.

fengshangren commented 1 year ago

In an environment where P2P can be used, why does libjuice use relay instead of P2P by default?

fengshangren commented 1 year ago

The juice_add_remote_candidate function must be called for each candidate if you send the description before candidates gathering is done. If you wait for gathering done, you only need to call juice_set_remote_description with the whole description and you should not call juice_add_remote_candidate.

I have collected all the candidates, if you just call juice_set_remote_description, P2P will always fail, I have to call juice_add_remote_candidate when I test, P2P will succeed

paullouisageneau commented 1 year ago

In an environment where P2P can be used, why does libjuice use relay instead of P2P by default?

It does not, direct connection is always preferred when it succeeds.

I have collected all the candidates, if you just call juice_set_remote_description, P2P will always fail, I have to call juice_add_remote_candidate when I test, P2P will succeed

Please open a specific issue for this with code to reproduce the problem.

paullouisageneau commented 1 year ago

I'm closing this as the original question has been answered.