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, tools, and much more.