All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: linux-sctp@vger.kernel.org
Subject: Re: Source IP not corresponding to interface
Date: Wed, 26 May 2010 13:57:17 +0000	[thread overview]
Message-ID: <4BFD28BD.6070704@hp.com> (raw)
In-Reply-To: <4BFBFB26.6050209@kth.se>



Georgios Cheimonidis wrote:
> Hi Vlad!
> 
> I have applied the patch and repeated the same test. The results are
> good. I don't see any packets with wrong source IP in the wlan interface
> any more. Most of the times the switchover from 3G to wlan (when wlan's
> IP is made available and added to the association) is quite fast.
> Sometimes, I observe a small delay between the ASCONF_ACK received from
> the server (corresponding to the ASCONF for adding the wlan's IP
> address) and the first packet (SACK or ASCONF for setting peer's
> primary) transmitted from the wlan interface. The maximum value of this
> delay is about 1 second. During this small delay, no packets are
> transmitted from wlan or 3G interface.

Interesting...  Can you send a log when this occurs?

Also,  does this 1 second delay occur if you disable debug output?  I now
sometimes the output itself can cause delays.

-vlad

> 
> Best regards,
> George
> 
> On 05/25/2010 09:12 PM, Vlad Yasevich wrote:
>> Hi George
>>
>> Georgios Cheimonidis wrote:
>>> Hi Vlad!
>>>
>>> Thanks for the quick reply!
>>> - The default route is recreated with a different metric but always
>>> smaller than the metric corresponding to the default route of the 3G
>>> interface.
>>> - The IP addresses were all IPv4, but I used AF_INET6 sockets, since in
>>> some other tests I add and remove IPv6 addresses as well. I don't know
>>> if this matters.
>>> - I am also attaching the kernel log from the client host. Address X of
>>> the previous description is 192.XXX.XXX.XXX (client's wlan), Y is
>>> 95.YYY.YYY.YYY (client's 3G) and Z is 213.ZZZ.ZZZ.ZZZ (server's single
>>> IP address). I will also try to examine it and check the
>>> sctp_v4_get_dst() calls.
>>>
>>> Nice to hear about the v6 patch! I will also do some testing and let you
>>> know about the results. Have you already published it in the mailing
>>> list?
>>>
>>
>> Ok, so here is a simple patch to try along with the explanation.
>>
>> When you add a address we send an ASCONF, but the new address is not
>> usable
>> for anything other then Heartbeats util ASCONF_ACK is received.
>>
>> Also, the addition of a new default route causes something to timeout
>> or change
>> such that the transport looses a route.  When we look up the new
>> route, we get
>> an updated route with the lower metric; however, we can't use the source
>> provided by that route because we have not received the ASCONF_ACK yet.
>> So, we try to do a lookup with the source addresses provided.  We
>> still can only
>> use 1 of the addresses (the 3G one).  The routing table still appears
>> to return
>> us the route with a lower metric.  I can reproduce this with a simple
>> 'ip route get' command.  Try it on your system:
>>
>>     ip route get<dest>  from<second source>
>>
>> You will see a route that will have the source set to 'second source',
>> but using
>> the interface that the preferred source is configured on (since that
>> one has a
>> lower metric).
>>
>> Thus we end up using the wrong interface, with the 'correct' source
>> address.
>>
>> I don't think there is anything we can do about this before ASCONF_ACK is
>> received.  However, when we receive the ASCONF_ACK, we can trigger a
>> route
>> lookup and source address selection again.
>>
>> I've attached the patch.  So, looks like you will still see this strange
>> condition for a short duration, but once ASCONF_ACK is received it
>> should clear up.
>>
>> Let me know how if this works.  I'll look back in history to see why
>> the code is
>> the way it is.
>>
>> -vlad
>>
>>> Best regards
>>> George
>>>
>>>
>>>
>>> On 05/25/2010 07:11 PM, Vlad Yasevich wrote:
>>>>
>>>> Georgios Cheimonidis wrote:
>>>>
>>>>> Hi!
>>>>>
>>>>> I have observed a problem while doing some tests with dynamic address
>>>>> reconfiguration. Let me first describe my setup and application.
>>>>>
>>>>> Setup: I have two hosts, one that acts as a client and another that
>>>>> acts
>>>>> as a server. The client has two IPv4 addresses (one on wlan, let's
>>>>> call
>>>>> it X, and another on a 3G p-to-p connection, let's call it Y).
>>>>> There are
>>>>> two default routes on the client, and the wlan default has a smaller
>>>>> metric than the 3G default. The server is single homed. All addresses
>>>>> belong to different subnets.
>>>>> Both hosts are running the net-next kernel, downloaded from David
>>>>> Miller's net-next source tree on 12-May-2010). I have also applied two
>>>>> extra patches found in: (a)
>>>>> http://www.spinics.net/lists/linux-sctp/msg00881.html and
>>>>> (b)http://www.spinics.net/lists/linux-sctp/msg00882.html. I have also
>>>>> enabled SCTP debugging messages.
>>>>>
>>>>>
>>>> Hi George
>>>>
>>>> Thanks for this report.  I am setting up a reproduction environment
>>>> now.
>>>> Will let you know what I find.
>>>>
>>>> It sounds like the routing might get kind-of funky after you add the
>>>> address back.  Does the default route get recreated with the right
>>>> metric?
>>>>
>>>> Kernel logs are always nice to have.  You can even look through them
>>>> and try finding references to sctp_v4_get_dst() call to see what
>>>> it shows you.  Thats where routing and source address selection
>>>> is done.
>>>>
>>>> I am also assuming that this is all v4, right?  I've got v6 patch
>>>> ready finally.  Passed all the tests I could throw at it.
>>>>
>>>> -vlad
>>>>
>>>
> 
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  parent reply	other threads:[~2010-05-26 13:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-25 16:30 Source IP not corresponding to interface Georgios Cheimonidis
2010-05-25 17:11 ` Vlad Yasevich
2010-05-25 19:12 ` Vlad Yasevich
2010-05-25 19:53 ` Georgios Cheimonidis
2010-05-26 13:49 ` Georgios Cheimonidis
2010-05-26 13:57 ` Vlad Yasevich [this message]
2010-05-26 15:50 ` Vlad Yasevich
2010-05-26 20:21 ` Georgios Cheimonidis
2010-05-26 20:31 ` Vlad Yasevich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BFD28BD.6070704@hp.com \
    --to=vladislav.yasevich@hp.com \
    --cc=linux-sctp@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.