Summary: | [sctp] SCTP connection hangs on COOKIE_ECHOED | ||
---|---|---|---|
Product: | Base System | Reporter: | jau |
Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> |
Status: | Open --- | ||
Severity: | Affects Only Me | CC: | markj, tuexen |
Priority: | Normal | ||
Version: | 9.2-BETA1 | ||
Hardware: | Any | ||
OS: | Any |
Description
jau
2013-07-26 09:40:00 UTC
Responsible Changed From-To: freebsd-bugs->freebsd-net Over to maintainer(s). Which addresses are you binding? Are the programs you use available? I'm pretty sure the problem is related to the address scopes in IPv6. I haven't done testing link local addresses at all, I think. Best regards Michael Responsible Changed From-To: freebsd-net->tuexen The problem seems to be SCTP specific. For bugs matching the following criteria: Status: In Progress Changed: (is less than) 2014-06-01 Reset to default assignee and clear in-progress tags. Mail being skipped Is it known whether this is still a problem? Is there any sample reproducible that could be used to verify? The reason is known. When one binds the local addresses explicitly one by one before calling connect() the system activates all of the local addresses right after the INIT and INIT-ACK before COOKIE-ECHO and COOKIE-ACK. Because at this phase the system has not seen any other traffic between the endpoints but the couple of packets needed for a successful INIT and INIT-ACK it only knows about one single pair of operational addresses. Activating the other potential local addresses at this phase causes the COOKIE processing being attempted using a different local address which may not be routable at all to the one known peer address. The local addresses can be activated only when they have been used for a successful INIT + INIT-ACK or they have been tested and proven to be routable to at least one of the reported peer addresses. This testing of functional address pairs works only through successful pairs of HEARTBEAT + HEARTBEAT-ACK. The current logic is opportunistic and wrong. (In reply to jau from comment #6) A way to fix it to rewrite the handling of the local addresses. At least this was the outcome of a discussion with rrs. It just requires a fair amount of changes and fixes a specific issue. The current address handling was optimised for end-points binding against the wildcard address. |