I had a similar requirement to you Charlie and tried to tackle it with a similar solution to yours Tom;
I wanted to have all field engineers equiped with 1G testers to test every circuit as it is deployed (10G is less common for the average day to day office install so 10G for every field engineer wasn't a requirement but to have some sort of shared 10G tester(s) would be enough). Although there was no budget for this idea so I rolled me own; https://github.com/jwbensley/Etherate Etherate is a simple Linux CLI layer 2 testing tool that we can run in a central PoP and trunk circuits to that Pop (or pseudowire them across) for testing if there isn't an Etherate host in the required PoP. I'm a bit behind with the GitHub pushes, I have another version that’s nearly ready to go which adds in some MPLS features for testing pseudowires and label stacks etc. Once I've got that update pushed up I will focus on performance. In the lab at $dayjob we have boxes with 10G NICs and 8 core 2.4Ghz chips, Etherate is single threaded and the TX side can push 10G no problems however the RX side is only sustaining 9Gbps (since Ethernet is connectionless its dropping about 1Gbps of traffic because the RX loop can't check the incoming traffic fast enough, so after I've got these basic MPLS features in I will focus on performance). 1Gbps is no problem, my off-the-shelf laptop with built in copper 1Gbps Ethernet NIC can saturate a 1Gbps link using about 45-50% CPU usage. You can use something like iPerf for testing at Layer3/4 if the tail circuit is passing through NAT or over an IP subnet boundary (e.g the CPE does NAT), so iPerf back to a central iPerf server directly over the circuit and through the CPE (to check it can NAT as fast as is required). Or if you have time, this is much faster and better (IMO): https://github.com/Pktgen/Pktgen-DPDK/ If you do have a play with Etherate please let me know any feedback you have, I'm always keen to receive more. Cheers, James.