arachne

package module
v0.0.0-...-7ede39d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 3, 2017 License: MIT Imports: 10 Imported by: 0

README

Arachne GoDoc Build Status Go Report Card

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="/etc/arachne/arachne.yaml"     Configuration file path
  (default: /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).


Released under the [MIT License](LICENSE).

Documentation

Overview

Package arachne provides 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.

Example (Run_arachne)
package main

import (
	"github.com/uber/arachne"
	"github.com/uber/arachne/config"
	"github.com/uber/arachne/metrics"
)

func main() {

	mc := new(metrics.StatsdConfiger)

	ec := &config.Extended{
		Metrics: metrics.Opt(*mc),
	}

	arachne.Run(
		ec,
		arachne.ReceiverOnlyMode(false),
	)

}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(ec *config.Extended, opts ...Option)

Run is the entry point for initiating any Arachne service.

Types

type Option

type Option func(*config.Global) Option

Option wraps a function to configure GlobalConfig.

func ReceiverOnlyMode

func ReceiverOnlyMode(b bool) Option

ReceiverOnlyMode sets receiver-only mode to `b`. To set this option temporarily and have it reverted, do:

prevRxOnlyMode := apply(&gl, ReceiverOnlyMode(true))
DoSomeDebugging()
apply(prevRxOnlyMode)

func SenderOnlyMode

func SenderOnlyMode(b bool) Option

SenderOnlyMode sets sender-only mode to `b.`

Directories

Path Synopsis
internal
log
tcp

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL