[PVE-User] Strange Behavior with multiple venet0 interfaces
Marc Aymerich
glicerinu at gmail.com
Wed Jul 8 18:44:09 CEST 2009
Hi all,
I have a server with various network interfaces connected on different
networks (eth0:77.178.25.0/24, eth1:10.0.0.0/24,eth2:10.0.10.0/24,
eth3:10.10.0.0/24, and more...). Today I have been doing tests with
an OpenVZ virtual machine with multiple venet0 interfaces (vente0:0,
venet0:1 and venet0:2), each interface belonging to a different network
(venet0:0 77.178.25.145/24, venet0:2 10.10.0.155/24, venet0:1
10.0.0.155/24).
I observe a strange behavior when I ping from OpenVZ VE to
another machines on the network. The source IP address
of the output packets for the VE is in all the cases 77.178.25.145,
in spite of being 10.10.0.155 or 10.0.0.155
In the worst case it causes packet lossing because some machines of
the private network doesnt know how/to route packets to
77.178.25.145.
Whats the reason of this behavior? is this a bug? Is there any way to
fix it? Perhaps a clue to solve the problem is that the interfaces are
called venet0:0,venet0:1, venet0:2 instead of venet0, venet1 and venet2?
I know this problem disappears when using the Veth interfaces instead
of Venet0, but I like to use the Venet0 system because it offer more
performance and security.
I leave an example to ping 10.0.0.10 from the virtual machine.
1) Tcpdump show as on the hardware node packets leave by the correct
interface (eth1: network 10.0.0.0/24) but with the source address
changed, 77.178.25.145 instead of 10.0.0.155
tcpdump -i eth1
14:20:13.939721 IP 77.178.25.145 > 10.0.0.10: ICMP echo request, id
63234, seq 2, length 64
14:20:14.939208 IP 77.178.25.145 > 10.0.0.10: ICMP echo request, id
63234, seq 3, length 64
Then the answers returns for another interface :( (eth0: network
77.178.25.0/24)
tcpdump -i eth0
14:22:46.075225 IP 10.0.0.10 > 77.178.25.145: ICMP echo reply, id
63490, seq 6564, length 64
14:22:46.075473 IP 10.0.0.10 > 77.178.25.145: ICMP echo reply, id
63490, seq 6565, length 64
finally the packets are relayed to the virtual machine.
tcpdump -i venet0
12:24:45.211486 IP 10.0.0.10 > 77.178.25.145: ICMP echo reply, id
10500, seq 21, length 64
12:24:46.211202 IP 77.178.25.145 > 10.0.0.10: ICMP echo request, id
10500, seq 22, length 64
Configuration of the Virtual Machine - OpenVZ
test:/# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.0.2.1 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
0.0.0.0 192.0.2.1 0.0.0.0 UG 0 0 0 venet0
test:/# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
venet0 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0
Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:177951 errors:0 dropped:0 overruns:0 frame:0
TX packets:179295 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:14947840 (14.2 MiB) TX bytes:15060736 (14.3 MiB)
venet0:0 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:77.178.25.145 P-t-P:77.246.179.123 Bcast:0.0.0.0
Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
venet0:1 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.0.155 P-t-P:10.0.0.155 Bcast:0.0.0.0
Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
venet0:2 Link encap:UNSPEC HWaddr
00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.10.0.155 P-t-P:10.10.0.155 Bcast:0.0.0.0
Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
----------------------------------------------------------------------------
Hardware Node configuration.
backup:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
77.178.25.145 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
10.0.0.155 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
10.10.0.155 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
77.178.25.0 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
10.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth4
0.0.0.0 77.178.25.1 0.0.0.0 UG 0 0 0 vmbr0
/etc/vz/conf/101.conf
# CPU fair sheduler parameter
CPUUNITS="1000"
CPUS="1"
VE_ROOT="/var/lib/vz/root/$VEID"
VE_PRIVATE="/var/lib/vz/private/$VEID"
OSTEMPLATE="debian-5.0-standard_5.0-1_i386"
ORIGIN_SAMPLE="pve.auto"
IP_ADDRESS="77.178.25.145 10.0.0.155 10.10.0.155"
HOSTNAME="test.xxxx.org"
DESCRIPTION="Debian 5.0 (standard)"
NAMESERVER="208.67.222.222"
SEARCHDOMAIN="xxxxx.org"
Thanks very much!
Marc
More information about the pve-user
mailing list