Kernel does not send SCTP_PEER_ADDR_CHANGE notification for blocked peer
Issue
- Kernel does not send
SCTP_PEER_ADDR_CHANGEnotification for blocked peer - Kernel does not send transport status change to ULP in assocition setup stage when HB fails
- Our customer configuration uses a multi-homed endpoint at each side of the association. We refer to the local IP address pair as
PandSand refer to the remote IP address pair asPrandSr.- The reproduce scenario is per below:
- 1) Bring up the SCTP association. After successful initiation, our application shows
PrandSras accessible. Traces show successful heart-beating to both peer addresses. This is normal steady-state operation. - 2) Block traffic to
Sr. We used iptables to cause the blocking. This will cause heart-beating to fail. The kernel provides a notification to the application ofSrbeing inaccessible. - 3) Take down the entire association. This can be done from either side. The kernel notifies the application of inaccessibility of
PrandSr. - 4) Allow the association to re
INITsuccessfully. After the successful cookie exchange, our application marksPrandSras accessible. - Issue: After step 4, the traffic to
Sris still blocked in the iptables. Wireshark traces show that noHB/HB_ACKis taking place withSr. The application does not receive a kernel notification thatSris inaccessible. Hence, the application believes thatSris accessible. - 5) When remove this block using iptables,
HB/HB_ACKworks but the application does not receive a kernel notification thatSris accessible. - In step2, if we block/unblock secondary path,
Sraccessible/inaccessible notification from kernel works well.
Environment
- Red Hat Enterprise Linux 7.3 (
kernel-3.10.0-514.el7) and later - SCTP Streaming Control Transmission Protocol
- Application which checks
SCTP_PEER_ADDR_CHANGE
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
