arachne

package module
v0.0.0-...-c5fcff7 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2019 License: MIT Imports: 12 Imported by: 2

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="/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.

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.

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.

Example
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:

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
ip
log
tcp

Jump to

Keyboard shortcuts

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