GitHub - uber/arachne: An always-on framework that performs end-to-end functiona...
source link: https://github.com/uber/arachne
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Arachne
Arachne is a packet loss detection system and an underperforming path detection system. It provides fast and easy active end-to-end functional testing of all the components in Data Center and Cloud infrastructures. Arachne is able to detect intra-DC, inter-DC, DC-to-Cloud, and DC-to-External-Services issues by generating minimal traffic:
- Reachability
- Round-trip and 1-way latency
- Silent packet drops and black holes
- Jitter (average of the deviation from the network mean latency)
- PMTU or Firewall issues too related possibly to network config changes (accidental or not)
- Whether network-level SLAs are met
Usage
There are two ways to use the Arachne package.
As a standalone program
Run Arachne as a standalone program (it's Debian packaged already too).
As a library in your own program
Import this package and call Arachne from your program/service with
arachne.Run(config, arachne.ReceiverOnlyMode(false))
where the option provided above is among the few optional ones.
Below is the list of all the CLI options available, when Arachne is used as a standalone program. The default options should be good enough for most users.
$ arachne --help
____________________________________________________________/\\\______________________________________
___________________________________________________________\/\\\______________________________________
___________________________________________________________\/\\\______________________________________
__/\\\\\\\\\_____/\\/\\\\\\\___/\\\\\\\\\________/\\\\\\\\_\/\\\__________/\\/\\\\\\_______/\\\\\\\\__
_\////////\\\___\/\\\/////\\\_\////////\\\_____/\\\//////__\/\\\\\\\\\\__\/\\\////\\\____/\\\/////\\\_
___/\\\\\\\\\\__\/\\\___\///____/\\\\\\\\\\___/\\\_________\/\\\/////\\\_\/\\\__\//\\\__/\\\\\\\\\\\__
__/\\\/////\\\__\/\\\__________/\\\/////\\\__\//\\\________\/\\\___\/\\\_\/\\\___\/\\\_\//\\///////___
_\//\\\\\\\\/\\_\/\\\_________\//\\\\\\\\/\\__\///\\\\\\\\_\/\\\___\/\\\_\/\\\___\/\\\__\//\\\\\\\\\\_
__\////////\//__\///___________\////////\//_____\////////__\///____\///__\///____\///____\//////////__
Usage: arachne [--foreground] [-c=<config_file>] [--receiver_only] [--sender_only]
Arachne is a packet loss detection system and an underperforming path detection
system for Data Center and Cloud infrastructures.
Options:
-v, --version Show the version and exit
--foreground=false Force foreground mode
-c, --config_file="/usr/local/etc/arachne/arachne.yaml" Config file path
(default: /usr/local/etc/arachne/arachne.yaml)
--receiver_only=false Force TCP receiver-only mode
--sender_only=false Force TCP sender-only mode
Note on required privileges to run
Arachne is granted access to raw sockets without the need to run with sudo or
as root user, by being granted CAP_NET_RAW
capability
(see: capabilities).
Note on BPF filtering
When receiving packets, Arachne attempts to apply a BPF filter to the raw socket so that processing of packets occurs on a much smaller set (ones destined specifically for Arachne agent testing). This is currently supported only on Linux and thus performance will be worse on BSD-based systems where a larger number of packets must be inspected.
Released under the MIT License.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK