Page MenuHomeVyOS Platform

NETEM (Network Emulator) - Please add configurable jitter
Open, WishlistPublicFEATURE REQUEST

Description

NETEM allows for configurable jitter, and I would like to be able to configure and use this in VyOS. I'm wondering if support is already there in the version of NETEM you have, and could possibly just add the VyOS CLI support for configuring and managing it.

This feature would be very useful for using VyOS to emulate WAN connections more accurately and thoroughly. For example, I have an SD-WAN test bed that can react to not only delay and packet loss, but also different jitter (variability in delay) behaviors on the network and steer traffic accordingly. I would LOVE to be able to do this on VyOS directly, and support may already be in the kernel. See the synopsis / options section of the tc-netem man-page. Jitter is a parameter that comes after Delay on the command line. There are potentially a LOT of additional options here that could be added to VyOS, but jitter seems to be the "main" one that would be helpful to have. If possible, having the delay distribution would be extremely useful as well, but probably not critical.

I'd be happy to help test this once there is a build available. Thank you for this awesome project and your work!

Details

Difficulty level
Unknown (require assessment)
Version
-
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Improvement (missing useful functionality)

Event Timeline

Do you have any idea for the CLI?

I would find something like this very easy to use:

# set qos policy network-emulator <policy-name> delay <delay> [jitter <jitter> [distribution { uniform | normal | pareto | paretonormal } ] ]

From Sagitta traffic policy (QoS) documentation, I suggest adding the stuff in bold:

"Use this command to configure a Network Emulator policy defining its name and the fixed amount of time you want to add to all packet going out of the interface. The latency will be added through the Token Bucket Filter qdisc. It will only take effect if you have configured its bandwidth too. You can use secs, ms and us. Default: 50ms." To specify jitter (variation in the delay), specify the delay first, then use the keyword jitter with the value in ms. Distribution is optional and will be set by use of the keyword distribution followed by the distribution type. Default distribution is normal.

Distribution type support probably isn't as important IMO, but if the support is there already, perhaps adding it would be pretty easy with the four distribution options. If not specified, the default distribution type should be normal.

Thoughts?

syncer triaged this task as Wishlist priority.Jul 24 2023, 11:07 PM