All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Landley <rob@landley.net>
To: Vincent Palatin <vpalatin@chromium.org>
Cc: blauwirbel@gmail.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] -net interface association behavior change in current -git.
Date: Thu, 12 May 2011 20:10:59 -0500	[thread overview]
Message-ID: <4DCC8523.2000501@landley.net> (raw)
In-Reply-To: <BANLkTikmWSbjXO1+E8fkwXgFY1eO2cuZKg@mail.gmail.com>

On 05/12/2011 08:20 AM, Vincent Palatin wrote:
> Hi,
> 
> On Wed, May 11, 2011 at 22:39, Rob Landley <rob@landley.net> wrote:
>> In 1.14.0, if I did this:
>>
>>  qemu -net nic,blah -net user -net nic,blah -net tun,blah
>>
>> Then the first nic would be -net user, and the second nic would be -net
>> tun.    In current -git, -net user attaches to the second interface and
>> -net tun attaches to the first, I.E. the order is reversed.
>>
>> Either way the first -nic becomes eth0 in Linux and the second becomes
>> eth1 (I can manually assign mac addresses in order to confirm which is
>> which), but eth0 used to be the -net user interface and now eth1 is the
>> -net user interface.
>>
>> I bisected this to commit 60c07d933c66c4b30a83b but I don't know why it
>> changed the behavior, and I can't find _documentation_ on having
>> multiple interfaces transports hooked up to the same qemu instance
>> anyway.  (It used to work, but possibly that was an accident?)
>>
>> Any ideas?
> 
> First of all, as you have 2 totally separated subnets in your setup, I
> think your command-line should use "vlan=" parameter to isolate them,
> else you will end up with some random routing/broadcasting (and random
> tends to change over time).

Does the kernel need some sort of vlan support compiled into it for this
to work, or can the kernel not care?

> I'm not using setup with multiple NICs but I would have written something like :
> qemu -net nic,vlan=1,blah -net user,vlan=1 -net nic,vlan=2,blah -net
> tun,vlan=2,blah
> 
> In addition to this, which type of NIC are you using ?

The actual command line is various permutations of:

~/qemu/qemu/x86_64-softmmu/qemu-system-x86_64 -m 512 -kernel
~/linux/linux/arch/x86/boot/bzImage -no-reboot -hda squeeze.ext3 -append
"root=/dev/hda rw" -net nic,model=e1000,macaddr=52:54:00:11:11:11 -net
user -redir tcp:9876::22 -net nic,model=e1000,macaddr=52:54:00:22:22:22
-net tap,ifname=kvm0,script=no,downscript=no

With the parameters reordered to try to beat some controllable behavior
out of it.  (It had a deterministic behavior before the above commit,
going back at least 2 years.  The behavior was changed by the commit.)

> In my understanding, the Linux kernel might assign interface number
> depending on the order the interfaces are appearing.

It's going in PCI bus order.  And the _interfaces_ are still happily in
PCI bus order both before and after this commit.  What's changing is the
association between interface and -net user or -net tap.

The first one, with macaddr 11:11:11, is always eth0.  But before the
patch, eth0 is -net user, and after the patch eth0 is -net tap.

> Without my change, when a packet arrives and should be distributed to
> multiple interfaces (that seems to be the case in your setup even
> though it is not intended)

That that I know of.  DHCP was doing broadcast out of eth0, but ignoring
eth1.  (It's still attempting to do that, it's just not getting a
response unless I hook the tun/tap plumbing up to a dhcp server on the
host.)

> if one of the interface is not ready, the
> packet is only forwarded to the ready interface (and the other never
> receives it). This produces interesting timing effects where packets
> are routed according to obscure race conditions, but in your former
> setup, that might cause the packet to be routed to the interface you
> want.

That does not seem to match what I'm seeing.

Rob

  reply	other threads:[~2011-05-13  1:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-12  2:39 [Qemu-devel] -net interface association behavior change in current -git Rob Landley
2011-05-12 13:20 ` Vincent Palatin
2011-05-13  1:10   ` Rob Landley [this message]
2011-05-13  1:19     ` Vincent Palatin
2011-05-13  1:49       ` Rob Landley
2011-05-13  6:39         ` Jan Kiszka
2011-05-13 10:31           ` Rob Landley
2011-05-13 10:57             ` Jan Kiszka
2011-05-13  6:15       ` Brad Hards
2011-05-12 14:10 ` Markus Armbruster
2011-05-13  1:48   ` Rob Landley
2011-05-13  6:54     ` Markus Armbruster
2011-05-13 10:34       ` Rob Landley
2011-05-13 12:19         ` Markus Armbruster
2011-05-13 21:45           ` Rob Landley
2011-05-16 14:12             ` Markus Armbruster

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=4DCC8523.2000501@landley.net \
    --to=rob@landley.net \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=vpalatin@chromium.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.