Hi
I met an issue when testing trustGuestRxFilters:
Attach a macvtap interface with trustGuestRxFilters=’yes’ to vm, then change interface mac address in vm.
Should libvirt update interface mac in live vm xml accordingly? If not, vm network will be broken after
managedsaving and restoring vm.
BR,
Fangge Jin
Steps:
- Start a vm
Attach a macvtap interface with trustGuestRxFilters=’yes’ to vm
<interface type='direct' trustGuestRxFilters='yes'> <source dev='enp175s0v0' mode='passthrough'/> <target dev='macvtap0'/> <model type='virtio'/> <alias name='net1'/> </interface>
Check vm xml:
# virsh dumpxml uefi --xpath //interface <interface type="direct" trustGuestRxFilters="yes"> <mac address="52:54:00:46:88:8b"/> <source dev="enp175s0v0" mode="passthrough"/> <target dev="macvtap2"/> <model type="virtio"/> <alias name="net0"/> <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> </interface>
Change interface mac in guest:
# ip link set dev enp1s0 address 52:54:00:9d:a1:1e # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 4: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:9d:a1:1e brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:46:88:8b inet 192.168.124.5/24 scope global enp1s0 valid_lft forever preferred_lft forever # ping 192.168.124.4 PING 192.168.124.4 (192.168.124.4) 56(84) bytes of data. 64 bytes from 192.168.124.4: icmp_seq=1 ttl=64 time=0.240 ms 64 bytes from 192.168.124.4: icmp_seq=2 ttl=64 time=0.138 ms --- 192.168.124.4 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
Check vm xml:
# virsh dumpxml uefi --xpath //interface <interface type="direct" trustGuestRxFilters="yes"> <mac address="52:54:00:46:88:8b"/> <source dev="enp175s0v0" mode="passthrough"/> <target dev="macvtap2"/> <model type="virtio"/> <alias name="net0"/> <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/> </interface>
Check on host:
16: macvtap1@enp175s0v0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 500 link/ether 52:54:00:9d:a1:1e brd ff:ff:ff:ff:ff:ff inet6 fe80::5054:ff:fe46:888b/64 scope link valid_lft forever preferred_lft forever
Do managedsave and restore
# virsh managedsave uefi Domain 'uefi' state saved by libvirt # virsh start uefi Domain 'uefi' started
Check vm network function:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 4: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:9d:a1:1e brd ff:ff:ff:ff:ff:ff permaddr 52:54:00:46:88:8b inet 192.168.124.5/24 scope global enp1s0 valid_lft forever preferred_lft forever # ping 192.168.124.4 PING 192.168.124.4 (192.168.124.4) 56(84) bytes of data. --- 192.168.124.4 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2036ms