The libevl tree comes with an example illustrating a basic usage of the EVL network stack implementing an ICMPv4(ECHO) responder, named oob-net-icmp. In order to run this example, you need two computers on the same ethernet LAN, one is the target system running EVL (the responder), the other may be any box which can issue ICMPv4 packets (the issuer).
You need to set up a basic out-of-band network as described by this document. For this example, we only need a single out-of-band enabled target system running EVL, therefore a single VLAN device active there which also provides an out-of-band port.
Now let’s run a ping command from some host to the target system (that host does not have to run EVL). All you need is to create a peer VLAN device on that host attached to the same LAN, then ping the target machine which runs the responder program, e.g. assuming ’eno2’ is the name of the real network interface on such host, and 10.10.10.10 is the IPv4 address of the EVL-enabled VLAN interface on the target system (which runs EVL):
# sudo ip link add link eno2 name eno2.42 type vlan id 42
# sudo ip addr add 10.10.10.11/24 dev eno2.42
# sudo ip link set eno2.42 up
# ping 10.10.10.10
Some NICs (e.g. Intel e1000) may need a delay between the moment the VLAN filter is updated and the link is enabled in their hardware. If in doubt, make sure to pause for a short while between both operations, especially if the corresponding ‘ip’ commands are part of a shell script.
Eventually, this test program running on the EVL-enabled machine should output traces as it replies to the ICMPv4(ECHO) requests, e.g.:
# /usr/bin/oob-net-icmp -i eth0.42
listening to interface eth0.42
[0] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
[1] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
[2] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
[3] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
[4] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
[5] count=84, proto=0x800, ifindex=2, type=0, halen=6, mac=xx:xx:xx:xx:xx:xx
ping
statisticsEven in favorable LAN setup and traffic conditions (small lan, fast
switch, few hosts, low collision rate), do not over- or misinterpret
the roundtrip times reported by the ping
command on the issuer:
stdout
those traces go
through might saturate, blocking the caller until it drains. At the
very least, turn on the silent mode (’-s’ option switch) for the
responder program to prevent this.ping
is normally
the remote kernel, not an application running in user-space. The
fact that such application gains real-time support with EVL may not
fully compensate for the cost of transitioning from kernel to
user-space on average when the responder system is stressed.In other words, if you want to accurately compare the latency figures between the EVL-enabled network stack and the regular one in a roundtrip test, you must have out-of-band capable NIC drivers on both sides. The list of available Ethernet drivers with out-of-band capabilities is available in this document.