Re: 2 nics, 1 network, puzzle?
> > What everybody seems to be telling me is that because IP is routable,
> > ARP replies are also routable, and the kernel is free to mix and match
> > IP addresses with Ethernet interfaces however it likes according to
> > it's IP routing conventions. I don't agree with this.
> You don't agree that it's what's happening, or you don't agree that it
> should be the way that the kernel operates?
The latter, as you guessed correctly.
I think the kernel is applying IP routing rules to ethernet ARP replies.
I don't think it should be doing this, because an ARP reply is clearly
related to a physical ethernet address. ARP has nothing to do with IP
networks, only with ethernet networks and with a single IP address.
At least that's how I understand ARP.
Or is an ARP reply actually an IP packet? Maybe it is, but I don't think
so, I'm assuming it's an ethernet packet.
> What you're doing with those two cards is somewhat analogous to going
> scuba diving with two snorkels. You have two interfaces (snorkels) to
> the same network (air), but have arbitrarily assigned them addresses
> (left and right). Air comes in through one or both snorkels, but your
> lungs don't know which they came from. When you exhale, your lungs
> have no power to specify which snorkel the air escapes from.
> What you're trying to do is say something like "air that enters
> through my left snorkel must only exit through my left snorkel".
No, that's not what I'm looking for at all. Exhaling doesn't interest me
right now, although I do think the kernel could and should evenly
distribute outgoing packets across the two network cards. Also I think it
would be cool for some server bound to eth1 to have all it's transmissions
go out of eth1, even when eth0 is another valid route to the destination.
But that's an entirely different problem from my current one.
In your analogy, inhaling is where my problem lies. In theory I should be
able to hook up the left snorkle to a room containing cold air and the
right snorkle to another room containing warm air, and that should
guarantee that my left and right nostrils get cold and warm air,
It's not happening though, because the kernel, involving what I believe
are mangled ARP replies, is giving wrong instructions to whoever hooks up
the snorkles, and both hot and cold air are entering the same nostril,
while the other nostril is going unused for inhaling.
That all the air gets mixed up inside the lungs is another matter entirely
that I'm not concerning my self with right now. Where air gets exhaled
doesn't concern my right now, either.
All I care about is that when ethernet address E1 is bound to IP address
I1, everybody else on the network knows it. The kernel is telling
everybody else on the network that E0 = I1, which is wrong.
E0 = I0 and E1 = I1. The kernel should tell the network that E1 = I1, and
I don't really even care if it physically transmits that little message
over network card E0, as long as the message itself is correct.
[ But given that the ARP reply must (I assume) contain the address E1, it
seems like it would be really easy for the kernel to figure out that the
ARP packet should be transmitted over E1. ]
Why do I want this? At this point it's mostly academic, I know I can get
my system working using only one network card + IP aliasing. However, I
think this ARP problem is a glaring problem that should be easy to fix and
will also have benefits for people doing load balancing.
To UNSUBSCRIBE, email to email@example.com
with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org