Project summary (posted 20130214)
VALE is a software Virtual Local Ethernet whose ports are accessible using the netmap API. Designed to be used as the interconnect between virtual machines (or as a fast local bus), it works as a learning bridge and supports speeds of up to 20 Mpps with short frames, and an aggregate 70 Gbit/s with 1514-byte packets.
VALE is implemented as a small extension of the netmap module, and is available for FreeBSD and Linux. The source code includes a backend for qemu and KVM, so you can use VALE to interconnect virtual machines launching them with
(the "-m 512" is because you need a large amount of memory if you want to run multiple instances of the sender and receiver)
Processes can talk to a VALE switch too, so you can use the pkt-gen or bridge tools that are part of the netmap distribution, or even the pcap.c module that maps libpcap calls into netmap equivalents. This lets you use VALE for all sort of pcap-based applications.
For testing, you can run the picobsd image linked on the top of the page on your machine, and then in two different shells run
to see how quickly you can send and receive traffic. Interface names (vale-foo, vale-bar, ...) must start with "vale" and be less than 16 characters, otherwise they are completely arbitrary. You can use pkt-gen options to change source and destination addresses, and run multiple instances to see how traffic goes through.
The freebsd sources, in the examples/ directory, contain a qemu patch (patch-zz-netmap-1) and a qemu backend (qemu-netmap.c, to be put in work/qemu-1.0.1/net/) that you can use to build a VALE-enabled version of qemu.