{"id":21035037,"url":"https://github.com/sque/nsts","last_synced_at":"2025-03-13T20:17:29.206Z","repository":{"id":11616610,"uuid":"14113280","full_name":"sque/nsts","owner":"sque","description":"Net SpeedTest Suite","archived":false,"fork":false,"pushed_at":"2014-05-04T13:26:51.000Z","size":488,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-20T15:58:10.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sque.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-04T15:12:12.000Z","updated_at":"2014-05-04T13:26:52.000Z","dependencies_parsed_at":"2022-09-23T00:42:42.211Z","dependency_job_id":null,"html_url":"https://github.com/sque/nsts","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sque%2Fnsts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sque%2Fnsts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sque%2Fnsts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sque%2Fnsts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sque","download_url":"https://codeload.github.com/sque/nsts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243475371,"owners_count":20296714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T13:09:25.701Z","updated_at":"2025-03-13T20:17:29.160Z","avatar_url":"https://github.com/sque.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Network SpeedTest Suite\n=======================\n\nNSTS is network meta-benchmarking suite, that was created to automate and standardize network performance estimation process, without defining explicit algorithms. As a meta-benchmarking tool it knows how to execute other established benchmarking tools and gather results, or even run real scenario network services and monitor their performance.\n\nInstallation\n------------\nBefore installing NSTS ensure that you have python 2.7+ on your system.\n\nDownload the latest release of NSTS from https://github.com/sque/nsts/releases, and then unzip it in a folder. You can execute nsts, by executing `nsts.py`\n```\ncd nsts-latest-release/src\npython nsts.py --help\n```\n\nConcepts\n--------\nNSTS uses some terms and concepts to describe benchmarking procedure. It would be best to familiarize yourself before starting using NSTS.\n\n### Profile\nProfile is a \"wrapper\" around other benchmarking tools or network services. A *profile* describes the \"wrapped\" tool, possible results, profile options and provides the needed scripts to execute it.\n\n### Sampling\nAlthough you could run a profile and gather results, this is not always the best idea. The results have a variance due to system/network state, and other parameters that we cannot control. To overcome this problem, NSTS executes multiple times a profile and return statistical data on the results (average, minimum, maximum, deviation). Every execution of a profile is called a *sample*, and there is a dead-time *interval* between samples.\n\n### Execution Direction\nEach profiles define a one way speed test. This means that the one end will transmit data and the other will receive them. When you execute a profile you need to define *direction* of execution, nsts will organize both peers to achieve it.\n\n### Test\nA test is a complete description of how to execute a profile in a reprodusable way. It involves *options* of the profile, *direction* of execution, number of *samples*, *interval* time between samples and some other parameters.\n\n### Suite\nA test suite, is a list of multiple tests, that can be described a *suite file*. A speed suite provides a way to standardize a benchmarking procedure in a given enviroment. You can have suite that target more on transfer rates, or packet loss, or latency depending the scenarion you want to benchmark.\n\n### Suite File\nA suite file is an *ini* file that contains all tests for the given suite. (check \"suite syntax\" section). Instead of defining test from command line you can pass a suite file to execute.\n\n\n\nUsage\n-----\nAfter downloading and unzipping the software you can run NSTS by executing\n```\npython nsts.py --help\n```\n\nTo run NSTS you have to run the server in one endpoint and the client in the other endpoint of the link that you want to benchmark.\n\n### Example: Get list of installed profiles and their options\n```\npython nsts.py --list-profiles\n```\n\n### Example: Run simple TCP throught\n\nServer:\n```\npython nsts.py -s\n```\n\nClient:\n```\npython nsts.py -c servername --tests=iperf_tcp\n```\n\n### Example: Run transmission latency tests\n\nServer:\n```\npython nsts.py -s\n```\n\nClient:\n```\npython nsts.py -c servername --tests=iperf_jitter-s,ping-s\n```\n\n### Example: Run a suite\n\nServer:\n```\npython nsts.py -s\n```\n\nClient:\n```\npython nsts.py -c servername --suite=filename.ini\n```\n\n### Example: Run on IPv6 and different port\n\nServer:\n```\npython nsts.py -s -6 -p 15000\n```\n\nClient:\n```\npython nsts.py -6 -p 15000 -c servername --suite=filename.ini\n```\n\nSuite Files\n-----------\nA suite file is an configuration file (ini format) that contains all tests for the given suite. Each section of the *ini* file is a test except section \"global\" which is used for suite options. The name of each section defines also the `id` of the test so it must be unique inside a suite.\n\n\nExample:\n```ini\n[global]\ninterval = 1 sec\nsamples = 10\n\n[short_tcp]\nprofile = iperf_tcp\nname = Fast connections\nsamples = 30\ninterval = 0\niperf_tcp.time = 1 sec\n\n[long_tcp]\nprofile = iperf_tcp\nname = Long last connections \nsamples = 5\ninterval = 20 sec\niperf_tcp.time = 20 sec\n\n[low_rate_latency]\nname = Low Rate latency jittering\nprofile = iperf_jitter\nsamples = 6\ninterval = 0\niperf_jitter.time = 10\niperf_jitter.rate = 1 Mbps\n\n[fast_rate_latency]\nname = Fast Rate latency jittering\nprofile = iperf_jitter\nsamples = 6\ninterval = 0\niperf_jitter.time = 10\niperf_jitter.rate = 10 Mbps\n\n[estimate_latency]\nname = Latency estimations\nprofile = ping\n\n```\n* **interval**      : Is the time between samples. You can define it globaly and overide its value per test.\n* **samples**       : Is the number of profile execution per test. You can define it globaly and overide its value per test.\n* **name**          : Is the friendly name of test, it will be shown on the results section\n* **profile**       : (mandatory) The id of the profile\n* **direction**     : By default tests are run bidirectional. You can define \"send\" or \"receive direction .\n* **foo.bar** : Set the **option** *bar* of the **profile** *foo*. Foo is the id of the profile and must be the same as at the **profile** option. **bar** must be an id of a valid option of profile foo.\n\n\nFeedback\n========\n\nPlease file your ideas, bugs, comments at https://github.com/sque/nsts\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsque%2Fnsts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsque%2Fnsts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsque%2Fnsts/lists"}