Re: TUN/TAP hacking
flat view
From: Ignacy Gawedzki <hidden>
Date: 2008-07-24 09:15:29
On Thu, Jul 24, 2008 at 08:50:06AM +0200, thus spake Marek Kierdelewicz:
Hi Ignacy & netdev,quoted
I thought I'd be able to use the TAP interfaces to create some sort of a network emulator. For a start I just "bridged" two tap interfaces, much in the same way as the example of br_select.c from http://vtun.sf.net , assigned both interfaces different IPv4 addresses (both with a /32 prefix),As far as I understand you're trying to bridge two interfaces of the same host. It's no good for a test network, because local traffic (from/to the same host) will always be forwarded locally (via lo?) and will never reach any ethX or tapX interface (not without kernel hacking).
Well... surely this would happen without a little hack as you say. Here I
thought that I could use multiple routing tables + ip rules + iptables, but
I'm not 100% convinced that locally generated packets could be marked with
iptables and directed by ip rules to the correct routing table (which would
make no mention of the destination address as a local interface). I made a
few tests with ping (using -I to specify the outgoing interface), but ARP
resolution failed and I see no way to force the destination stack reply to
echo-requests using a specific routing table (as I intended to do for normal
applications).
There's another way... You can use QEMU[1]/KQEMU[2]/KVM[3] for guest system virtualization with options that create tapX interfaces on host and ethX on guests. Then you can bridge taps the way you want (even with eths on your host system) as described in [4][5]. For guest system I'd recommend openwrt kamikaze[6]. It's small in terms of system image size and memory consumption so you can build a complex virtual network of 10+ hosts using only 200MB of disk space and 320MB of ram.
Yeah, I also thought about that one, but if I could avoid the additional
overhead, it would be better.
Cheers, Marek Kierdelewicz
Dzięki anyway. =) -- NO CARRIER