Sorry, Mathiaz, that recipe tests for connections which just
pause randomly. We need to test when a guest shuts down,
or, in other words, when the veth device is removed from the
bridge. So:
1. fire up a guest with libvirt. Monitor its network
continuously (i.e. fire up a screen session over ssh doing
while [ 1 ]; do echo -n .; sleep 5s; done
and keep that open so you can see any pauses.
2. Get a usable ns_exec:
git clone git://git.sr71.net/~hallyn/cr_tests.git
cd cr_tests
git checkout ns_exec
make ns_exec
cp ns_exec /bin/
3. Create a veth tunnel
sudo ip link add type veth
4. Open two root terminals to configure a network namespace for our test
terminal 1:
ip link add type veth
terminal 2:
/bin/ns_exec -cmn /bin/bash
echo $$ # call this $pid henceforth
terminal 1:
ifconfig veth0 0.0.0.0 up
brctl addif virbr0 veth0
ip link set veth1 netns $pid # use pid from above
terminal 2:
ifconfig veth1 up
dhclient veth1
5. Now we want to emulate shutting down a libvirt guest. Let's try
several ways:
A. From the host root shell, just remove veth0 from the bridge:
brctl delif virbr0 veth0
B. Shut down the veth interfaces. Try veth0 and veth1 on separate
runs (ifconfig veth0 down).
C. Just exit the child shell.
D. Shut down the child shell, and then remove the veth interfaces
altogether, by doing:
ip link del veth0
After each test please remove the veth devices:
ip link del veth0
Just to make sure that the commands in step 4 (referencing veth0/veth1) stay
correct.
Sorry, Mathiaz, that recipe tests for connections which just
pause randomly. We need to test when a guest shuts down,
or, in other words, when the veth device is removed from the
bridge. So:
1. fire up a guest with libvirt. Monitor its network
continuously (i.e. fire up a screen session over ssh doing
while [ 1 ]; do echo -n .; sleep 5s; done
and keep that open so you can see any pauses.
2. Get a usable ns_exec:
git clone git://git. sr71.net/ ~hallyn/ cr_tests. git
cd cr_tests
git checkout ns_exec
make ns_exec
cp ns_exec /bin/
3. Create a veth tunnel
sudo ip link add type veth
4. Open two root terminals to configure a network namespace for our test
terminal 1:
ip link add type veth
terminal 2:
/bin/ns_exec -cmn /bin/bash
echo $$ # call this $pid henceforth
terminal 1:
ifconfig veth0 0.0.0.0 up
brctl addif virbr0 veth0
ip link set veth1 netns $pid # use pid from above
terminal 2:
ifconfig veth1 up
dhclient veth1
5. Now we want to emulate shutting down a libvirt guest. Let's try
several ways:
A. From the host root shell, just remove veth0 from the bridge:
brctl delif virbr0 veth0
B. Shut down the veth interfaces. Try veth0 and veth1 on separate
runs (ifconfig veth0 down).
C. Just exit the child shell.
D. Shut down the child shell, and then remove the veth interfaces
altogether, by doing:
ip link del veth0
After each test please remove the veth devices:
ip link del veth0
Just to make sure that the commands in step 4 (referencing veth0/veth1) stay
correct.