I need to measure the latency, jitter and packet-loss per link in a network, as opposed to end-to-end, e.g. like this:

s1-eth0 <--> s2-eth0 (~ 20µs avg. latency, standard derivation 10µs, 57 % packet loss /last sec)

s2-eth1 <--> s3-eth0 (~ 25µs avg. latency, standard derivation 5µs, 21 % packet loss / last sec)


All solutions i was able to find were either academic proposals or involve using dedicated hardware for active probing.

Here is a summary what according to my research does no work out:

  • NetFlow: No latency information, only end-to-end
  • Active Probing: It's Not possible for me to change the configuration of the network
  • Measure Roundtrip-Time: does not provide per-link-statistics

Is there any network protocol, measurement tool or other functionality providing all or at least some of the above statistics?


4 Answers 4


On Cisco devices, you can use Cisco IP SLA. You need to first configure and enable it, and then monitor the results.


1. ip sla monitor operation-number

2. type echo protocol ipIcmpEcho {destination-ip-address | destination-hostname} [source-ipaddr {ip-address | hostname} | source-interface interface-name]

3. frequency seconds

4. ip sla monitor schedule operation-number [life {forever | seconds}] [start-time {hh:mm[:ss] [month day | day month] | pending | now | after hh:mm:ss] [ageout seconds] [recurring]

Configuration example took from Cisco: IP SLAs--Analyzing IP Service Levels Using the ICMP Echo Operation.

Router> enable
Router# configure terminal
Router(config)# ip sla monitor 10
Router(config-sla-monitor)# type echo protocol ipIcmpEcho
Router(config-sla-monitor-echo)# frequency 300
Router(config-sla-monitor-echo)# exit
Router(config)# ip sla monitor schedule 10 start-time now life forever

To monitor:

show ip sla monitor statistics

On juniper hardware you can use the RPM service to get those measurements. The service can be configured to monitor specific interfaces which will help with the 'per-link' requirement.


Check out Y.1731 protocol (or IEEE 802.1ag, or OAM). It's fairly easy to implement in software (I'm guessing that's what you're aiming at), and it's supported by all the physical network elements.

There is a very naive open-source Y.1731 implementation in C, which you can look at.

Please note that Y.1731 is not designed to cross physical network boundary (i.e. requires that MAC addresses of both MEPs are known), so if you need to go through IP routing, you would want to encapsulate your Y.1731 frames within some tunneling protocol, like VXLAN or GRE.

Hope this helps.


Etherate enables you to measure throughput, latency and packet (frame) loss down at layer 2 directly over Ethernet (which sounds like what you are looking for). It doesn’t measure jitter at present but it will do in the future.

Using it you can generate layer 2 Ethernet traffic in a controlled manner which you can measure.

You can specify traffic flow duration, frame size, bits per second / bytes per second, total bytes to transfer, ethertype, VLAN ID, and PCP value. You can also ACK the layer 2 frames if you want to test loss down at layer 2.

When the test is complete the Rx host displays a count of test frames received (if this is less that the number of frames sent from the Tx host, that gives you the frame loss figure), non-test frames received, test frames received in order and test frames received out of order (early or late).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.