-
Notifications
You must be signed in to change notification settings - Fork 560
SetParam QUIC_PARAM_CONN_LOCAL_ADDRESS returns errno 97 #2034
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
Comments
Practically, once you connect to a server of a given IP address, you're not going to be able to change address family (i.e. from IPv6 to IPv4) because you can't guarantee you will still be sending packets to the same server. So we're always going to need to return an error in this case. We could continue to let the UDP stack return its error, or we could check at our layer and return a |
@nibanks thanks for reply, I have some considerations wheather msquic should support IPv4/IPv6 migration. If the server is running with dual stack, as in this case on After I change the address family, msquic should start to probing a new In case the address is routed to different host that could not migrate this connection to, it is ok for msquic to return error. I am not sure if this call should be a sync call or async call, consider it takes time for probing the new I do think there are some scenarios that user switch networks from ipv4 to ipv6, like at home my mobile phone use wifi with ipv4 addr behind NAT, while when I move out of home the 4G/5G mobile network uses ipv6 that changes the address family. |
The problem is the server side, not on the client side. If you are currently communicating over So if even if you have an address from DNS (which might return lots of possibilities) for So, for the time being, I'd like to limit things to the same address family for #1946. |
I think it is the loadbancer's job that supports quic protocol awareness that it can look into the quic packet's connection id and find the backend server? The client may not need to take that into consideration (if the new path is reachable or not), just probe the path.
True I agree, path should be probed first then switch if I understand RFC9000 correctly.
Does msquic support on listener listen on more than one address? or could two listeners share the info of connection, so a client could switch connection in between? I feel I should move the discussion to #1946 😃 |
For the time being, I'm going close this issue as "By design". If we have a good solution for cross-address family, we can continue discussion on #1946. |
Describe the bug
This has been discussed in the discord channel but create the ticket for reference and visibility.
SetParam QUIC_PARAM_CONN_LOCAL_ADDRESS returns 97 when it changes the local addr address family from v6 to v4.
Lttng trace shows that
Affected OS
Additional OS information
No response
MsQuic version
prerelease/1.6
Steps taken to reproduce bug
::1
because ipv6 is preferred on the OSAt this point, client doesn't know the Addr inuse.
Expected behavior
In step3, if addr family is changed, msquic should attempt to create a new path with a new local binding with ipv4 addr family
In step3, SetParam should return the existing QUIC status code whatever the binding success or not.
Actual outcome
SetParam in step 3. returns
97
(EAFNOSUPPORT)Additional details
This has been discussed in the discord channel but create the ticket for reference and visibility.
relates to the PR:
#2032
This issue is a missing feature as in:
#1946
API doc should be updated to reflect the missing feature.
The text was updated successfully, but these errors were encountered: