For those of you which perform some Aurora Tango tests (BERT, RFC 2544) you may know that a couple of these testers are really expensive ! The principle of these test is to place a tester in loopback and another is test mode. By means of this, you are able to qualify an Ethernet link (direct, Q-in-Q, VPLS, Xconnect).
During my readings of mailing-lists such as cisco-nsp or others, someone posts an URL to a really awesome Linux program : etherate. With modern CPU platform you are able to supply a throughput until 1G, and this program give you the possibility to test your L2 circuits.
You can do some tests by using it such as :
root@Loop_Host# etherate -r
And :
root@Tx_Host# etherate
To give some features :
root@pluton:~/COMPILE/Etherate-master# ./etherate -h Usage info; [Mode] [Destination] [Source] [Options] [Other] [Mode] By default run in transmit mode, not receive -r Change to receive (listening) mode. [Destination] -d Without this we default to 00:00:5E:00:00:02 as the TX host and :01 as the RX host. Specify a custom desctination MAC address, -d 11:22:33:44:55:66 [Source] Specify a custom source MAC address, -s 11:22:33:44:55:66 -i Set interface by name. Without this option we guess which interface to use. -I Set interface by index. Without this option we guess which interface to use. -l List interface indexes (then quit) for use with -i option. -s Without this we default to 00:00:5E:00:00:01 as the TX host and :02 as the RX host. [Options] -a Ack mode, have the receiver ack each frame during the test (This will significantly reduce the speed of the test). -b Number of bytes to send, default is 0, default behaviour is to wait for duration. Only one of -t, -c or -b can be used, both override -t, -b overrides -c. -c Number of frames to send, default is 0, default behaviour is to wait for duration. -e Set a custom ethertype value the default is 0x0800 (IPv4). -f Frame payload size in bytes, default is 1500 (1514 bytes is the expected size on the wire with headers). -m Max bytes per/second to send, -m 125000 (1Mbps). -t Transmition duration, integer in seconds, default is 30. [Other] -v Add an 802.1q VLAN tag. By default none is in the header. If using a PCP value with -p a default VLAN of 0 is added. -p Add an 802.1p PCP value from 1 to 7 using options -p 1 to -p 7. If more than one value is given, the highest is used. Default is 0 if none specified. (If no 802.1q tag is set the VLAN 0 will be used). -q Add an outter Q-in-Q tag. If used without -v, 1 is used for the inner VLAN ID. #NOT IMPLEMENTED YET# -o Add an 802.1p PCP value to the outer Q-in-Q VLAN tag. If no PCP value is specified and a Q-in-Q VLAN ID is, 0 will be used. If no outer Q-in-Q VLAN ID is supplied this option is ignored. -o 1 to -o 7 like the -p option above. #NOT IMPLEMENTED YET# -x Display examples. #NOT IMPLEMENTED YET# -V|--version Display version -h|--help Display this help text root@pluton:~/COMPILE/Etherate-master#
I really hope and try to help so that this project goes to his end. It could be really great to have L2 tests as this one as we have with bwping and iperf on L3/L4 layer of OSI model.