SCTP related issue with recent ARP changes?

Li, Qing qing.li at bluecoat.com
Fri Jan 2 22:15:08 UTC 2009


Hi Michael,

The SCTP problem you were having was attributed to the arp-v2 changes.
The reason TCP and UDP works well is because the TCP and UDP
modules does not supply a route entry when calling ip_output().
Consequently in ip_output() the destination (sockaddr) was reinitialized 
and the sin_port field is 0.

The destination sockaddr supplied in the route entry from the SCTP
module has the actual port value in it.

The new L2 search was (initially) written as a generic function.
So the L3 address comparison was performed using bcmp() of sockaddr_len
bytes. The L2 entry was created with a sockaddr object that includes
the port value, however, on ARP input the port value does not
apply. The mismatch in port value causes the ARP lookup to fail
and the SCTP connection never complete its negotiation.

Please apply the patch for IPv4 in my home directory at
http://people.freebsd.org/~qingli/in.c.diff

I did the basic testing using the programs you gave me and now
the client connects successful and completes the transfer. I also
verified the packets in wireshark trace.

Please let me know if this patch fixes your SCTP problems.

Thank you for your help.

-- Qing


> -----Original Message-----
> From: owner-freebsd-current at freebsd.org [mailto:owner-freebsd-
> current at freebsd.org] On Behalf Of Li, Qing
> Sent: Thursday, January 01, 2009 12:17 PM
> To: Michael Tüxen; FreeBSD Net
> Cc: qingli at freebsd.org; current at freebsd.org
> Subject: RE: SCTP related issue with recent ARP changes?
> 
> 
> Hi Michael,
> 
> Your problem could be related to the recent ARP changes.
> I will investigate further to confirm.
> 
> Thanks,
> 
> -- Qing
> 
> 
> -----Original Message-----
> From: owner-freebsd-net at freebsd.org on behalf of Michael Tüxen
> Sent: Thu 1/1/2009 8:59 AM
> To: FreeBSD Net
> Subject: SCTP related issue with recent ARP changes?
> 
> Dear all,
> 
> I'm running the current CVS version of FreeBSD 8 in a virtual
> machine using VMWare 2.0.1 on a Mac (not sure if this is relevant)
> and bridged networking having an em interface on the virtual machine.
> I'm using a similar setup with older FreeBSD machines and they are
> running fine.
> 
> Loopback communication based on UDP, TCP, SCTP or ICMP works fine.
> 
> Communicating with other hosts using UDP, TCP or ICMP works fine.
> 
> Communicating with other hosts using SCTP does not work.
> The SCTP stack calls ip_output() and an ARP request for the
> correct destination IP address is send out. A corresponding
> ARP reply is visible in Wireshark (running on the FreeBSD 8 box)
> and looks good. However, the corresponding SCTP packet it never
> sent out. I'm not sure, but this might be related to the
> recent ARP changes. Is there anything required from the
> transport layer to be done when calling ip_output() that
> was not required before?
> 
> Best regards
> Michael
> 




More information about the freebsd-current mailing list