inquiry about differences between the tap and the vnet in the virt-manager Greetings! I encounter a problem about the network when using virt-manager to create and run a VM. when I want to establish a network bridge for the guest OS, I generally use two kinds of ways described as fellow : First method : create a bridge with the help of linux commad: brctl, or Second method : using virt-manager (1) create a bridge with the help of linux commad: brctl I use a script to establish a bridge, there are many script examples on the web to establish a bridge. when I restart the network service, I get the bridge : 1.1 create network bridge [root@localhost ~]# ifconfig br0 Link encap:Ethernet HWaddr C2:CD:89:61:2C:F0 inet addr:192.168.1.189 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::c0cd:89ff:fe61:2cf0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:1080 (1.0 KiB) eth2 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet addr:172.16.1.189 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::225:90ff:fe8e:c0f0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:918998 errors:0 dropped:0 overruns:0 frame:0 TX packets:2033 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:84486598 (80.5 MiB) TX bytes:148116 (144.6 KiB) Memory:fbe20000-fbe3ffff [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0025908ec0f0 no virbr0 8000.525400b1de42 yes virbr0-nic 1.2 add bridge interface the eth2 device is a physical ethernet device, [root@localhost ~]# brctl addif br0 eth2 [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0025908ec0f0 no eth2 virbr0 8000.525400b1de42 yes virbr0-nic 1.3 create tap and add it to the bridge create tap: tunctl -t tap0 -u root brctl addif br0 tap0 ifconfig tap0 up chmod a+rw /dev/net/tun echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -j MASQUERADE add it to the bridge [root@localhost ~]# brctl addif br0 tap0 [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0025908ec0f0 no eth2 tap0 virbr0 8000.525400b1de42 yes virbr0-nic [root@localhost kvm_img]# ifconfig br0 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet addr:172.16.1.189 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::c0cd:89ff:fe61:2cf0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:37947 errors:0 dropped:0 overruns:0 frame:0 TX packets:10485 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2581300 (2.4 MiB) TX bytes:40996927 (39.0 MiB) eth2 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet6 addr: fe80::225:90ff:fe8e:c0f0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:957962 errors:0 dropped:34 overruns:0 frame:0 TX packets:38466 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:87721507 (83.6 MiB) TX bytes:42551007 (40.5 MiB) Memory:fbe20000-fbe3ffff tap0 Link encap:Ethernet HWaddr F2:55:FC:F8:95:DC inet6 addr: fe80::f055:fcff:fef8:95dc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11 errors:0 dropped:0 overruns:0 frame:0 TX packets:1328 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:846 (846.0 b) TX bytes:173159 (169.1 KiB) 1.4 boot the guest (using the tap0) kvm -boot c -localtime -m 4G -hda /home/kvm_img/centos6p4.img -net nic -net tap,ifname=tap0,script=no -enable-kvm (2) using virt-manager 2.1 create network bridge [root@localhost ~]# ifconfig br0 Link encap:Ethernet HWaddr C2:CD:89:61:2C:F0 inet addr:192.168.1.189 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::c0cd:89ff:fe61:2cf0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:1080 (1.0 KiB) eth2 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet addr:172.16.1.189 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::225:90ff:fe8e:c0f0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:918998 errors:0 dropped:0 overruns:0 frame:0 TX packets:2033 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:84486598 (80.5 MiB) TX bytes:148116 (144.6 KiB) Memory:fbe20000-fbe3ffff [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0025908ec0f0 no virbr0 8000.525400b1de42 yes virbr0-nic 2.2 add bridge interface the eth2 device is a physical ethernet device, [root@localhost ~]# brctl addif br0 eth2 [root@localhost ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.0025908ec0f0 no eth2 virbr0 8000.525400b1de42 yes virbr0-nic 2.3 run the virt-manager and select the NIC option I find the bridge created above , configure it as fellow : in "Virtual Network Interface " setting: Source device: Host device tap0 (bridge br0) Device model: e1000 Mac address: 52:54:00:84:E3:62 2.4 I start the VM using virt-manager I get a vnet0 device created by virt-manager, [root@localhost ~]# ifconfig br0 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet addr:172.16.1.189 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::c0cd:89ff:fe61:2cf0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62160 errors:0 dropped:1 overruns:0 frame:0 TX packets:22071 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4007196 (3.8 MiB) TX bytes:59626981 (56.8 MiB) eth2 Link encap:Ethernet HWaddr 00:25:90:8E:C0:F0 inet6 addr: fe80::225:90ff:fe8e:c0f0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:982209 errors:0 dropped:47 overruns:0 frame:0 TX packets:61101 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:89496644 (85.3 MiB) TX bytes:61778801 (58.9 MiB) Memory:fbe20000-fbe3ffff vnet0 Link encap:Ethernet HWaddr FE:54:00:84:E3:62 inet6 addr: fe80::fc54:ff:fe84:e362/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:114 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:670 (670.0 b) TX bytes:13720 (13.3 KiB) both of the methods above seems that the network of guest OS is OK at most of environments, and I can get the attributes of the virtual network device . They are seemed to be the same. about the tap0: [root@localhost ~]# ethtool -i tap0 driver: tun version: 1.6 firmware-version: bus-info: tap supports-statistics: no supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no about the vnet0 created by virt-manager : [root@localhost ~]# ethtool -i vnet0 driver: tun version: 1.6 firmware-version: bus-info: tap supports-statistics: no supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no but the action between tap and vnet is not exactly the same!I will describe it in the following. this is my project environment: hardware : intel xeon E5 2600 server from supermicro host OS: centos 6.4 (kernel version is changed to 3.15.10 by me) virtual software : KVM+qemu 2.1.3 guest OS: centos 6.4 (kernel is not changed : 2.6.32 64bit) when I establish the network by the first method: create a bridge with the help of Linux commad: brctl, tap0 device is created in the host and assigned to the guest OS. tap0 device gets a name “eth0” in the guest OS. I use “ping ” command to test network state . I get the following result : concept explanation : local host: the OS where the guest OS is running remote host: another server which is connected to the local host using ethernet network . and this is my results: ping local host from guest OS is OK, I get reply from local host; ping remote host from local host is OK, I get reply from remote host; ping remote host from guest OS is not OK, I don’t get any reply from remote host; and this is my question. when I establish the network by the second method: using virt-manager, at this time , vnet0 device is created in the host and assigned to the guest OS. vnet0 device gets a name “eth0” in the guest OS. I also use “ping ” command to test network state . I get the following result : ping local host from guest OS is OK, I get reply from local host; ping remote host from local host is OK, I get reply from remote host; ping remote host from guest OS is OK, I get reply from remote host; my question is : why I cannot get reply when I ping remote host from guest OS using the first method? I use the same bridge: br0, so I think that the bridge: br0 is not responsible for the fault. and I have also stop the firewall . I guess the reason is that there are some differences between the tap device created by linux command and vnet device created by virt-manager. could you please kindly give my some advices to solve the problem ? I would be grateful if you could give me some advice . look forward to your reply !
weihua w...@foxmail.com
_______________________________________________ libvirt-users mailing list libvirt-users@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-users