#testing #networking #protocols #measurement #rfc #active #dns-client

network_commons

Low level code for the server and client applications

9 releases (breaking)

0.7.0 Feb 26, 2024
0.6.0 Jan 21, 2024
0.5.1 Dec 29, 2023
0.4.0 Oct 24, 2023
0.1.0 Jul 3, 2023

#1448 in Network programming

Download history 8/week @ 2023-12-18 4/week @ 2023-12-25 19/week @ 2024-02-19 208/week @ 2024-02-26 3/week @ 2024-03-04 38/week @ 2024-03-11 60/week @ 2024-04-01

98 downloads per month
Used in twamp

MIT license

83KB
1.5K SLoC

Network Tests Readme

Welcome to the Network-Tests project!

Introduction

The aim of this project is to support the main network tests used by the industry to monitor network quality and service assurance. At the moment, the project only includes the implementation of the TWAMP (Two-Way Active Measurement Protocol) test as per RFC 5357, but it is still a work in progress. The plan is to have a FULL TWAMP implementation along with updated functionalities from RFCs 5618, 5938, 7717, and 7750. Additionally, the project will support other tests such as Ping, Traceroute, DNS Client, STAMP, and TCP Throughput (RFC 6349) in the future.

Implementation

The project is implemented in Rust programming language. The implementation uses an event loop based on the mio crate.

One of the project's goals is to depend on as few crates as possible to reduce package size and dependencies. This will be done as the implementation evolves.

Usage

The project is divided into workspace projects, and all tests can be run using the command line with a configuration JSON file as input.

To run the TWAMP test, use the following command:

cargo run --release --example twamp_example -- -c twamp/examples/configurations/sender_config.json

Configuration

Creating a TWAMP sender can be done with the following configuration:

{
  "hosts": [
    "127.0.0.1:45571",
    "127.0.0.1:45572"
  ],
  "mode": "LIGHT_SENDER",
  "source_ip_address": "127.0.0.1:45573",
  "collection_period": 10,
  "packet_interval": 100,
  "padding": 41,
  "ref_wait": 1,
  "last_message_timeout": 1
}

You'll also need a reflector:

{
  "mode": "LIGHT_REFLECTOR",
  "source_ip_address": "0.0.0.0:45572",
  "ref_wait": 2
}

Future Development

The Network-Tests project is still in progress, and there is a plan to support other network tests as mentioned above. The project will be updated regularly, and new features will be added to improve the network quality and service assurance tests.

Thank you for using the Network-Tests project.

Disclaimer

Please note that the Network-Tests project is a work in progress, and the TWAMP test implementation is currently in the LIGHT mode with no control session. We are continually working on improving the project, and your contributions to the project would be greatly appreciated.

Additionally, we cannot guarantee the accuracy or completeness of the results obtained from the tests. Please use the results at your own discretion.

Thank you for your interest in the Network-Tests project, and we welcome any feedback or suggestions you may have.


lib.rs:

This crate provides a library for implementing the Two-Way Active Measurement Protocol (TWAMP), which is a protocol for measuring the performance of IP networks. The library provides various abstractions and utilities for customizing and running TWAMP tests.

Usage

To use this crate, add the following to your Cargo.toml file:

[dependencies]
twamp = "*"

Dependencies

~6–18MB
~252K SLoC