Re: packet->transport->asoc = NULL in sctp_packet_transmit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I know there is a draft for CMT. Altrough I'm new to kernel dev I
would be willing to spend time on it if more devs are interested.

Regarding my UDP encaspsulation extension: I think it solves a mayor
issue namely old NAT boxes which prevents SCTP from becoming
widespread. I don't know how it would be integrated as an option in
lksctp. Right now it just encapsulates every packet. I think someone
more initiated would have to take a look at it.

2016-07-22 1:01 GMT+02:00 Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx>:
>
> Em 21-07-2016 16:56, Fabian Bergmark escreveu:
>>
>> I tried using virtual box nat networks but couldn't get it to work. It
>> seemed like the host answered with ICMP port unreachable on the INIT ACK.
>>
>> Regarding multihoming. My setup will be a server with one interface and
>> a client with several. I was hoping to achieve load balancing. Is CMP
>> implemented in lksctp? If not, is there anyone working on that? I read
>
>
> Concurrent Multipath Transfer you mean? No, and not even in the charts that
> I know of.
>
>> that it's recently implemented in BSD. Is failover implemented in lksctp?
>
>
> We are usually a few steps behind BSD regarding SCTP.
>
> Yes, failover is implemented.
>
> Currently, the application may set the primary addr for it and for the peer,
> but not much more than that. (SCTP_PRIMARY_ADDR, SCTP_SET_PEER_PRIMARY_ADDR)
>
> I'm afraid lksctp won't match your goal for load balancing on sctp paths.
>
>>
>> Both interfaces of the client can reach the server IP. I could maybe
>> create a secondary interface for the server and force traffic to that IP
>> on the secondary IF. Is this necessary for failover/CMP to work?
>
>
> As long as both peers have at least 2 IPs to talk to each other, it should
> work fine.
>
> I have noted down to check this situation on having only 1 IP, will check
> when possible. Or maybe Neil or someone else knows better.
>
>>
>>
>> On Jul 21, 2016 19:12, "Marcelo Ricardo Leitner"
>> <marcelo.leitner@xxxxxxxxx <mailto:marcelo.leitner@xxxxxxxxx>> wrote:
>>
>>     Please don't top post..
>>
>>     On Thu, Jul 21, 2016 at 02:49:56PM +0200, Fabian Bergmark wrote:
>>     > Indeed the issue was solved by using virtual machines. The client no
>>     > longer treats the HEARTBEATS as OOTB.
>>
>>     Ok good.
>>
>>     > My current setup is one VM (the server) which is bridged to my LAN.
>> My
>>     > router is setup to forward all UDP traffic on port 5000 to the VM.
>>     > A second VM (the client) has two bridged interfaces (two tethering
>>     > mobile phones). The client connects to the server via the external
>> IP
>>     > of the router.
>>
>>     Ok. Yet, why don't you do it with 2 VMs, each with 2 NICs on distinct
>>     subnets?
>>
>>     > This works fine. However, I noticed that the client only seems to
>> use
>>     > one interface (probably the one with the lowest metric?). Looking
>>     > trough the debug log
>>     > of the client, it only mentions one IP (the one of the lower metric
>>     > interface). I thought SCTP would use all client interfaces? Is there
>>     > some configuration to achieve
>>
>>     Take a traffic capture and check INIT and INIT_ACK packets, they will
>>     contain which addresses the peer is announced.
>>
>>     > this or doesn't SCTP support multi-homing in this setup?
>>
>>     But yeah, as you are doing it, it looks more like multi-path than
>>     multi-homing and it protects only part of your connection, as there is
>>     some part of the path that is common to both routes. As I'm
>>     understanding, both interfaces on the guest have a default route that
>>     can reach the same IP address of the server.
>>
>>     I couldn't get to a root cause on why but I didn't have much luck with
>>     this setup either. If you manage to have 2 IPs for each peer, it
>> should
>>     work.
>>
>>     >
>>     > 2016-07-20 18:42 GMT+02:00 Marcelo Ricardo Leitner
>>     <marcelo.leitner@xxxxxxxxx <mailto:marcelo.leitner@xxxxxxxxx>>:
>>
>>     > > On Wed, Jul 20, 2016 at 05:30:15PM +0200, Fabian Bergmark wrote:
>>     > >> I'm now working on support for multi-homing. I noticed that
>>     when the
>>     > >> client has multiple interfaces, the client would treat the
>>     HEARTBEAT
>>     > >> sent by the server as ootb and abort. When I tried to compare
>>     to the
>>     > >> vanilla SCTP version I saw the same behavior.
>>     > >> My setup is a laptop with two network interfaces (192.168.2.64,
>>     > >> 192.168.2.168) acting as the client, a router (192.168.2.1) that
>>     > >> forwards protocol 132 to my stationary. My stationary has one
>>     > >> interface (192.168.2.9). The client connects on the routers
>>     external
>>     > >> IP (178.16.218.41)
>>     > >
>>     > > First of all, such setup requires some other adjustments on ip
>>     > > routes/rules/arp sysctl so you can actually use the two
>>     interfaces on
>>     > > the same subnet, otherwise Linux will end up issuing packets
>>     with src
>>     > > 192.168.2.64 on the interface with 192.168.2.168, or vice-versa.
>>     Same
>>     > > thing will happen on input, as it will reply ARP request on the
>>     first
>>     > > interface to receive the ARP request.
>>     > >
>>     > > I'd recommend you to switch to a true multi-homed situation,
>>     it's easier
>>     > > to get right and more alike to real world situations.
>>     > >
>>     > > You may even use netns for this, or virtual machines. Both would
>>     work.
>>     > >
>>     > >> Server log: http://pastebin.com/FE667m6t
>>     > >> Clientl log: http://pastebin.com/vu2YYkWJ
>>     > >>
>>     > >> Is this a bug, and if so, is it fixed in a recent commit? Both
>>     > >> computers are running recent kernels (client 4.5.4-1 and server
>>     > >> 4.6.3-1)
>>     > >
>>     > > The heartbeat was sent using 192.168.2.9 addr and not the
>>     external IP.
>>     > > Was this address negotiated on INIT handshake? It's the first
>>     hit of it
>>     > > on client log. If you don't bind the socket to a single IP
>>     address, it
>>     > > will use all addresses available on the host.
>>     > >
>>     > > Note that, if you are binding the socket to specific interfaces,
>>     what I
>>     > > mentioned in the beginning may also be affecting it, as
>>     sctp_rcv() will
>>     > > enforce that the packet came in through the right interface.
>>     > >
>>     > >   Marcelo
>>     > >
>>     > >>
>>     > >> 2016-07-19 16:42 GMT+02:00 Fabian Bergmark
>>     <fabian.bergmark@xxxxxxxxx <mailto:fabian.bergmark@xxxxxxxxx>>:
>>     > >> > Thanks. I solved the issue by having a per-transport tunnel.
>>     > >> >
>>     > >> > The code can be found here:
>>     > >> >
>>
>> https://github.com/fabianbergmark/linux-sctp/tree/v4.6-sctp-over-udp/net/sctp
>>     > >> >
>>     > >> > As this is the first time i write kernel code, I would really
>>     > >> > appreciate if someone looked at it.
>>     > >> > The encapsulation seems to work fine (inspected in
>>     wireshark), but I'm
>>     > >> > not sure if I close/free everything correctly.
>>     > >> >
>>     > >> > 2016-07-19 14:31 GMT+02:00 Neil Horman <nhorman@xxxxxxxxxxxxx
>>     <mailto:nhorman@xxxxxxxxxxxxx>>:
>>     > >> >> On Tue, Jul 19, 2016 at 12:15:47PM +0200, Fabian Bergmark
>> wrote:
>>     > >> >>> I'm adding experimental support for UDP encapsulation of
>>     SCTP packets.
>>     > >> >>> I got most of if working well. However, I noticed a NULL
>>     pointer
>>     > >> >>> dereference in sctp_packet_transmit as I assumed that
>>     > >> >>> packet->transport->asoc weren't NULL so I tried to access
>>     tunneling
>>     > >> >>> information that I store in
>>     packet->transport->asoc->ep->base. In what
>>     > >> >>> circumstances is asoc NULL in sctp_packet_transmit?
>>     > >> >>> --
>>     > >> >>> To unsubscribe from this list: send the line "unsubscribe
>>     linux-sctp" in
>>     > >> >>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>     <mailto:majordomo@xxxxxxxxxxxxxxx>
>>     > >> >>> More majordomo info at
>>     http://vger.kernel.org/majordomo-info.html
>>     > >> >>>
>>     > >> >>
>>     > >> >> There may be others, but the case that comes immediately to
>>     mind is when you
>>     > >> >> have an error in the construction of a new association (e.g.
>>     a state cookie, or
>>     > >> >> an abort during setup).  In those cases we call
>>     sctp_ootb_pkt_new, which sends a
>>     > >> >> packet with no assoction associated.
>>     > >> >>
>>     > >> >> Neil
>>     > >> >>
>>     > >> --
>>     > >> To unsubscribe from this list: send the line "unsubscribe
>>     linux-sctp" in
>>     > >> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>     <mailto:majordomo@xxxxxxxxxxxxxxx>
>>     > >> More majordomo info at
>> http://vger.kernel.org/majordomo-info.html
>>     > >>
>>     > --
>>     > To unsubscribe from this list: send the line "unsubscribe
>>     linux-sctp" in
>>     > the body of a message to majordomo@xxxxxxxxxxxxxxx
>>     <mailto:majordomo@xxxxxxxxxxxxxxx>
>>     > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>     >
>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux