From owner-freebsd-net@FreeBSD.ORG Fri May 2 07:10:48 2014 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B6E90F9C for ; Fri, 2 May 2014 07:10:48 +0000 (UTC) Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mail-n.franken.de", Issuer "Thawte DV SSL CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7822112DD for ; Fri, 2 May 2014 07:10:48 +0000 (UTC) Received: from [192.168.1.200] (p548190F2.dip0.t-ipconnect.de [84.129.144.242]) (Authenticated sender: macmic) by mail-n.franken.de (Postfix) with ESMTP id 7EB0D1C0AC854; Fri, 2 May 2014 09:10:43 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\)) Subject: Re: How to create an SCTP association From: Michael Tuexen In-Reply-To: <20140501220418.GC52252@cicely7.cicely.de> Date: Fri, 2 May 2014 09:10:41 +0200 Content-Transfer-Encoding: 7bit Message-Id: <9597BCA1-4551-4C16-9949-534DF47775BA@lurchi.franken.de> References: <20140501124908.GA50185@cicely7.cicely.de> <20140501204249.GB52252@cicely7.cicely.de> <20140501220418.GC52252@cicely7.cicely.de> To: ticso@cicely.de X-Mailer: Apple Mail (2.1874) Cc: freebsd-net@freebsd.org, Bernd Walter X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 May 2014 07:10:48 -0000 On 02 May 2014, at 00:04, Bernd Walter wrote: > On Thu, May 01, 2014 at 11:06:09PM +0200, Michael Tuexen wrote: >> On 01 May 2014, at 22:42, Bernd Walter wrote: >> >>> On Thu, May 01, 2014 at 08:07:19PM +0200, Michael Tuexen wrote: >>>> On 01 May 2014, at 14:49, Bernd Walter wrote: >>>> >>>>> I have an SOCK_SEQPACKET socket and want to setup an association >>>>> without sending a message. >>>> Just call connect() or sctp_connectx(). >>> >>> Cool - I wasn't sure about using *connect*() because tutorials only >>> mention it for 1to1 sockets. >> You might want to take a look at >> http://tools.ietf.org/html/rfc6458#section-3.1.6 >> http://tools.ietf.org/html/rfc6458#section-9.9 >> sctp_connectx() also provides you a way to get the association id, >> which is needed for 1-to-many style sockets. > > Ah - there it is. > So many sources to get things running, SCTP still is too new to > easily find good sample code beyound basics. > About the association id - so far I'm always using socket_addr. > I may be able to track association IDs, but are they really unique? > E.g. association shuts down and a new one gets the ID? http://tools.ietf.org/html/rfc6458 guarantees them to be unique between all existing associations on a given socket. So two associations on different sockets can have the same id. The spec also allows them to be reused, as indicated at the end of: http://tools.ietf.org/html/rfc6458#section-8.1.8 In FreeBSD the assoc ID is a 32-bit counter which gets incremented and wrapped around. So it is reused after a long time... > I also use it to get the RTT, which is untested code so far. > >>>>> The background is that I want to keep the round-trip times of peer >>>>> servers. >>>>> I've enabled regular heartbeat and can use SCTP_GET_PEER_ADDR_INFO >>>>> to get the RTT. >>>>> But in case a host is down or services are restarted I don't have >>>>> an association to ask, so I will need some way to (re)establish >>>>> associations. >>>>> This is done in a different thread as the normal socket operation, >>>>> which uses EOR to write. >>>>> If I send a (dummy)message to the socket I would have to add a mutex >>>>> to not disturb the sending thread. >>>> Does the above solve your issue? >>> >>> Yes. >>> >>> But I have another question. >>> Which resources will connecting an unreachable peer use on my one to >>> many socket? >> Basically the resources for an association and it will run a timer for >> retransmitting the INITs. > > Great - that's what I was hoping for. > I may have enough troubles already with data for down hosts stuck in > socket buffer, but this is a one time thing until the data times out. If you enable the SCTP_SEND_FAILED_EVENT you can get that data back if you want... Best regards Michael > > Thank you > > -- > B.Walter http://www.bwct.de > Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm. >