Now Reading
trippy | A community diagnostic device

trippy | A community diagnostic device

2023-12-09 21:46:43

Continuous integration
Crate
Packaging status
#trippy-dev:matrix.org

Trippy combines the performance of traceroute and ping and is designed to help with the evaluation of networking
points.

trippy

Options

  • Hint utilizing a number of protocols:
    • ICMP, UDP & TCP
    • IPv4 & IPv6
  • Customizable tracing choices:
    • packet measurement & payload sample
    • begin and most time-to-live (TTL)
    • minimal and most spherical length
    • spherical finish grace interval & most variety of unknown hops
    • supply & vacation spot port (TCP & UDP)
    • supply handle and supply interface
    • TOS (aka DSCP + ECN)
  • Help for traditional, paris
    and dublin Equal Cost Multi-path Routing
    methods (tracking issue)
  • RFC4884 ICMP Multi-Part Messages
    • Generic Extension Objects
    • MPLS Label Stacks
  • Unprivileged mode
  • Tui interface:
    • Hint a number of targets concurrently from a single occasion of Trippy
    • Per hop stats (despatched, obtained, loss%, final, avg, finest, worst, stddev & standing)
    • Per hop round-trip-time (RTT) historical past and frequency distributing charts
    • Interactive chart of RTT for all hops in a hint with zooming functionality
    • Interactive GeoIp world map
    • Isolate and filter by particular person tracing flows
    • Customizable coloration theme & key bindings
    • Configuration through each command line arguments and a configuration file
    • Present a number of hosts per hop with means to cap show to N hosts and present frequency %
    • Present hop particulars and navigate hosts inside every hop
    • Freeze/unfreeze the Tui, reset the stats, flush the cache, protect display on exit
    • Responsive UI with adjustable refresh price
    • Hop privateness
  • DNS:
    • Use system, exterior (Google 8.8.8.8 or Cloudflare 1.1.1.1) or customized resolver
    • Lazy reverse DNS queries
    • Lookup autonomous system quantity (ASN) and identify
  • GeoIp:
    • Lookup and show GeoIp info from native mmdb information
  • Generate tracing reviews:
    • json, csv & tabular (pretty-printed and markdown)
    • Tracing flows report
    • Graphviz dot charts
    • configurable reporting cycles
  • Runs on a number of platform (macOS, Linux, NetBSD, FreeBSD, Home windows)
  • Capabilities conscious software (Linux solely)

Variations

The next desk lists ths variations of Trippy which might be out there and hyperlinks to the corresponding launch observe and
documentation:

Model Launch Date Standing Launch Observe Documentation
0.10.0-dev n/a Growth n/a docs
0.9.0 2023-11-30 Present note docs
0.8.0 2023-05-15 Earlier note docs
0.7.0 2023-03-25 Deprecated note docs
0.6.0 2022-08-19 Deprecated note docs
[!NOTE] Solely the newest patch variations of each the present and earlier releases of Trippy are supported.

Distributions

Packaging status

Cargo

Crates.io

Snap (Linux)

trippy

Homebrew (macOS)

Homebrew package

WinGet (Home windows)

winget package

Scoop (Home windows)

Scoop package

NetBSD

pkgsrc current package

FreeBSD

FreeBSD port

Pacman (Arch Linux)

Arch package

Nix

nixpkgs unstable package

Docker

Docker Image Version (latest by date)

docker run -it fujiapple/trippy

Binary Asset Obtain

Privileges

Trippy usually requires elevated privileges on account of using uncooked sockets. Enabling the required privileges to your
platform could be achieved in a number of methods, as outlined beneath. Trippy will also be used with out elevated privileged on
sure platforms, with some limitations.

Unix

1: Run as root consumer through sudo:

2: chown journey because the root consumer and set the setuid bit:

sudo chown root $(which journey) && sudo chmod +s $(which journey)

3: [Linux only] Set the CAP_NET_RAW functionality:

sudo setcap CAP_NET_RAW+p $(which journey)
[!NOTE]Trippy is a functionality conscious software and can add CAP_NET_RAW to the efficient set whether it is current within the
allowed set. Trippy will drop all capabilities after creating the uncooked sockets.

Home windows

Trippy have to be run with Administrator privileges on Home windows.

Unprivileged mode

Trippy permits working in an unprivileged mode for all tracing modes (ICMP, UDP and TCP) on platforms which assist
that characteristic.

[!NOTE] Unprivileged mode is at present solely supported on macOS. Linux assist is feasible and could also be added sooner or later.
Unprivileged mode shouldn’t be supported on NetBSD, FreeBSD or Home windows as these platforms don’t assist
the IPPROTO_ICMP socket sort. See #101 for additional info.

The unprivileged mode could be enabled by including the --unprivileged (-u) command line flag or by including
the unprivileged entry within the trippy part of the configuration file:

[trippy]
unprivileged = true
[!NOTE] The paris and dublin ECMP methods will not be supported in unprivileged mode as these require
manipulating the UDP and IP and headers which in flip requires using a uncooked socket.

Utilization Examples

Fundamental utilization with default parameters:

Hint with out requiring elevated privileges (supported platforms solely, see privileges):

journey instance.com --unprivileged

Hint utilizing the udp (or tcp or icmp) protocol (additionally aliases --icmp, --udp & --tcp):

Hint to a number of targets concurrently (icmp protocol solely,
see #72):

journey instance.com google.com crates.io

Hint with a minimal spherical time of 250ms and a grace interval of 50ms:

journey instance.com -i 250ms -g 50ms

Hint with a customized first and most time-to-live:

journey instance.com --first-ttl 2 --max-ttl 10

Use customized vacation spot port 443 for tcp tracing:

journey instance.com -p tcp -P 443

Use customized supply port 5000 for udp tracing:

journey instance.com -p udp -S 5000

Use the dublin (or paris) ECMP routing technique for udp with fastened supply and vacation spot ports:

journey instance.com -p udp -R dublin -S 5000 -P 3500

Hint with a customized supply handle:

journey instance.com -p tcp -A 127.0.0.1

Hint with a supply handle decided by the IPv4 handle for interface en0:

journey instance.com -p tcp -I en0

Hint utilizing IPv6:

Generate a json (or csv, fairly, markdown) tracing report with 5 rounds of knowledge:

journey instance.com -m json -C 5

Generate a Graphviz DOT file report of all tracing flows for a TCP hint after 5 rounds:

journey instance.com --tcp -m dot -C 5

Generate a textual report of all tracing flows for a UDP hint after 5 rounds:

journey instance.com --udp -m flows -C 5

Carry out DNS queries utilizing the google DNS resolver (or cloudflare, system, resolv):

journey instance.com -r google

Lookup AS info for all found IP addresses (not but out there for the system resolver,
see #66):

journey instance.com -r google -z

Lookup and show brief (or lengthy or location or off) GeoIp info from a mmdb file:

journey instance.com --geoip-mmdb-file GeoLite2-Metropolis.mmdb --tui-geoip-mode brief

Parse icmp extensions:

Disguise the IP handle, hostname and GeoIp for the primary two hops:

journey instance.com --tui-privacy-max-ttl 2

Customise the colour theme:

journey instance.com --tui-theme-colors bg-color=blue,text-color=ffff00

Record all Tui gadgets that may have a customized coloration theme:

journey --print-tui-theme-items

Customise the important thing bindings:

journey instance.com --tui-key-bindings previous-hop=okay,next-hop=j,give up=shift-q

Record all Tui instructions that may have a customized key binding:

journey --print-tui-binding-commands

Specify the placement of the Trippy config file:

journey instance.com --config-file /path/to/trippy.toml

Generate a template configuration file:

journey --print-config-template > trippy.toml

Generate bash shell completions (or fish, powershell, zsh, elvish):

Run in silent tracing mode and output compact hint logging with full span occasions:

See Also

journey instance.com -m silent -v --log-format compact --log-span-events full

Command Reference

[!NOTE] Trippy command line arguments could also be given in any order and my happen each earlier than and after the targets.

A community diagnostic device

Utilization: journey [OPTIONS] [TARGETS]...

Arguments:
  [TARGETS]...
          An area delimited record of hostnames and IPs to hint

Choices:
  -c, --config-file <CONFIG_FILE>
          Config file

  -m, --mode <MODE>
          Output mode [default: tui]

          Attainable values:
          - tui:      Show interactive TUI
          - stream:   Show a steady stream of tracing knowledge
          - fairly:   Generate an fairly textual content desk report for N cycles
          - markdown: Generate a markdown textual content desk report for N cycles
          - csv:      Generate a CSV report for N cycles
          - json:     Generate a JSON report for N cycles
          - dot:      Generate a Graphviz DOT file for N cycles
          - flows:    Show all flows
          - silent:   Don't generate any tracing output for N cycles

  -u, --unprivileged
          Hint with out requiring elevated privileges on supported platforms
          [default: false]

  -p, --protocol <PROTOCOL>
          Tracing protocol [default: icmp]

          Attainable values:
          - icmp: Web Management Message Protocol
          - udp:  Person Datagram Protocol
          - tcp:  Transmission Management Protocol

      --udp
          Hint utilizing the UDP protocol

      --tcp
          Hint utilizing the TCP protocol

      --icmp
          Hint utilizing the ICMP protocol

  -4, --ipv4
          Use IPv4 solely

  -6, --ipv6
          Use IPv6 solely

  -P, --target-port <TARGET_PORT>
          The goal port (TCP & UDP solely) [default: 80]

  -S, --source-port <SOURCE_PORT>
          The supply port (TCP & UDP solely) [default: auto]

  -A, --source-address <SOURCE_ADDRESS>
          The supply IP handle [default: auto]

  -I, --interface <INTERFACE>
          The community interface [default: auto]

  -i, --min-round-duration <MIN_ROUND_DURATION>
          The minimal length of each spherical [default: 1s]

  -T, --max-round-duration <MAX_ROUND_DURATION>
          The utmost length of each spherical [default: 1s]

  -g, --grace-duration <GRACE_DURATION>
          The time period to attend for added ICMP responses after the
          goal has responded [default: 100ms]

      --initial-sequence <INITIAL_SEQUENCE>
          The preliminary sequence quantity [default: 33000]

  -R, --multipath-strategy <MULTIPATH_STRATEGY>
          The Equal-cost Multi-Path routing technique (UDP solely) [default:
          classic]

          Attainable values:
          - traditional:
            The src or dest port is used to retailer the sequence quantity
          - paris:
            The UDP `checksum` subject is used to retailer the sequence quantity
          - dublin:
            The IP `identifier` subject is used to retailer the sequence quantity

  -U, --max-inflight <MAX_INFLIGHT>
          The utmost variety of in-flight ICMP echo requests [default: 24]

  -f, --first-ttl <FIRST_TTL>
          The TTL to begin from [default: 1]

  -t, --max-ttl <MAX_TTL>
          The utmost variety of TTL hops [default: 64]

      --packet-size <PACKET_SIZE>
          The scale of IP packet to ship (IP header + ICMP header + payload)
          [default: 84]

      --payload-pattern <PAYLOAD_PATTERN>
          The repeating sample within the payload of the ICMP packet [default: 0]

  -Q, --tos <TOS>
          The TOS (i.e. DSCP+ECN) IP header worth (TCP and UDP solely) [default: 0]

  -e, --icmp-extensions
          Parse ICMP extensions

      --read-timeout <READ_TIMEOUT>
          The socket learn timeout [default: 10ms]

  -r, --dns-resolve-method <DNS_RESOLVE_METHOD>
          Methods to carry out DNS queries [default: system]

          Attainable values:
          - system:     Resolve utilizing the OS resolver
          - resolv:     Resolve utilizing the `/and so forth/resolv.conf` DNS configuration
          - google:     Resolve utilizing the Google `8.8.8.8` DNS service
          - cloudflare: Resolve utilizing the Cloudflare `1.1.1.1` DNS service

  -y, --dns-resolve-all
          Hint to all IPs resolved from DNS lookup [default: false]

      --dns-timeout <DNS_TIMEOUT>
          The utmost time to attend to carry out DNS queries [default: 5s]

  -z, --dns-lookup-as-info
          Lookup autonomous system (AS) info throughout DNS queries [default:
          false]

  -a, --tui-address-mode <TUI_ADDRESS_MODE>
          Methods to render addresses [default: host]

          Attainable values:
          - ip:   Present IP handle solely
          - host: Present reverse-lookup DNS hostname solely
          - each: Present each IP handle and reverse-lookup DNS hostname

      --tui-as-mode <TUI_AS_MODE>
          Methods to render AS info [default: asn]

          Attainable values:
          - asn:          Present the ASN
          - prefix:       Show the AS prefix
          - country-code: Show the nation code
          - registry:     Show the registry identify
          - allotted:    Show the allotted date
          - identify:         Show the AS identify

      --tui-icmp-extension-mode <TUI_ICMP_EXTENSION_MODE>
          Methods to render ICMP extensions [default: off]

          Attainable values:
          - off:  Don't present `icmp` extensions
          - mpls: Present MPLS label(s) solely
          - full: Present full `icmp` extension knowledge for all identified extensions
          - all:  Present full `icmp` extension knowledge for all courses

      --tui-geoip-mode <TUI_GEOIP_MODE>
          Methods to render GeoIp info [default: short]

          Attainable values:
          - off:      Don't show GeoIp knowledge
          - brief:    Present brief format
          - lengthy:     Present lengthy format
          - location: Present latitude and Longitude format

  -M, --tui-max-addrs <TUI_MAX_ADDRS>
          The utmost variety of addresses to indicate per hop [default: auto]

  -s, --tui-max-samples <TUI_MAX_SAMPLES>
          The utmost variety of samples to document per hop [default: 256]

      --tui-max-flows <TUI_MAX_FLOWS>
          The utmost variety of flows to indicate [default: 64]

      --tui-preserve-screen
          Protect the display on exit [default: false]

      --tui-refresh-rate <TUI_REFRESH_RATE>
          The Tui refresh price [default: 100ms]

      --tui-privacy-max-ttl <TUI_PRIVACY_MAX_TTL>
          The utmost ttl of hops which will likely be masked for privateness [default: 0]

      --tui-theme-colors <TUI_THEME_COLORS>
          The TUI theme colours [item=color,item=color,..]

      --print-tui-theme-items
          Print all TUI theme gadgets and exit

      --tui-key-bindings <TUI_KEY_BINDINGS>
          The TUI key bindings [command=key,command=key,..]

      --print-tui-binding-commands
          Print all TUI instructions that may be certain and exit

  -C, --report-cycles <REPORT_CYCLES>
          The variety of report cycles to run [default: 10]

  -G, --geoip-mmdb-file <GEOIP_MMDB_FILE>
          The MaxMind Metropolis GeoLite2 mmdb file

      --generate <GENERATE>
          Generate shell completion

          [possible values: bash, elvish, fish, powershell, zsh]

      --print-config-template
          Print a template toml config file and exit

      --log-format <LOG_FORMAT>
          The debug log format [default: pretty]

          Attainable values:
          - compact: Show log knowledge in a compact format
          - fairly:  Show log knowledge in a reasonably format
          - json:    Show log knowledge in a json format
          - chrome:  Show log knowledge in Chrome hint format

      --log-filter <LOG_FILTER>
          The debug log filter [default: trippy=debug]

      --log-span-events <LOG_SPAN_EVENTS>
          The debug log format [default: off]

          Attainable values:
          - off:    Don't show occasion spans
          - energetic: Show enter and exit occasion spans
          - full:   Show all occasion spans

  -v, --verbose
          Allow verbose debug logging

  -h, --help
          Print assist (see a abstract with '-h')

  -V, --version
          Print model

Theme Reference

The next desk lists the default Tui coloration theme. These could be overridden with the --tui-theme-colors command
line choice.

Merchandise Description Default
bg-color The default background coloration Black
border-color The default coloration of borders Grey
text-color The default coloration of textual content Grey
tab-text-color The colour of the textual content in traces tabs Inexperienced
hops-table-header-bg-color The background coloration of the hops desk header White
hops-table-header-text-color The colour of textual content within the hops desk header Black
hops-table-row-active-text-color The colour of textual content of energetic rows within the hops desk Grey
hops-table-row-inactive-text-color The colour of textual content of inactive rows within the hops desk DarkGray
hops-chart-selected-color The colour of the chosen collection within the hops chart Inexperienced
hops-chart-unselected-color The colour of the unselected collection within the hops chart Grey
hops-chart-axis-color The colour of the axis within the hops chart DarkGray
frequency-chart-bar-color The colour of bars within the frequency chart Inexperienced
frequency-chart-text-color The colour of textual content within the bars of the frequency chart Grey
flows-chart-bar-selected-color The colour of the chosen circulate bar within the flows chart Inexperienced
flows-chart-bar-unselected-color The colour of the unselected circulate bar within the flows chart DarkGray
flows-chart-text-current-color The colour of the present circulate textual content within the flows chart LightGreen
flows-chart-text-non-current-color The colour of the non-current circulate textual content within the flows chart White
samples-chart-color The colour of the samples chart Yellow
help-dialog-bg-color The background coloration of the assistance dialog Blue
help-dialog-text-color The colour of the textual content within the assist dialog Grey
settings-dialog-bg-color The background coloration of the settings dialog blue
settings-tab-text-color The colour of the textual content in settings dialog tabs inexperienced
settings-table-header-text-color The colour of textual content within the settings desk header black
settings-table-header-bg-color The background coloration of the settings desk header white
settings-table-row-text-color The colour of textual content of rows within the settings desk grey
map-world-color The colour of the map world diagram white
map-radius-color The colour of the map accuracy radius circle yellow
map-selected-color The colour of the map chosen merchandise field inexperienced
map-info-panel-border-color The colour of border of the map data panel grey
map-info-panel-bg-color The background coloration of the map data panel black
map-info-panel-text-color The colour of textual content within the map data panel grey

The supported colours are:

  • Black, Pink, Inexperienced, Yellow, Blue, Magenta, Cyan, Grey, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White

Coloration names are case-insensitive and will comprise dashes. Uncooked hex values, corresponding to ffffff for white, may additionally be used.

Key Bindings Reference

The next desk lists the default Tui command key bindings. These could be overridden with the --tui-key-bindings
command line choice.

Command Description Default
toggle-help Toggle assist h
toggle-help-alt Toggle assist (various binding) ?
toggle-settings Toggle settings s
next-hop Choose subsequent hop down
previous-hop Choose earlier hop up
next-trace Choose subsequent hint proper
previous-trace Choose earlier hint left
next-hop-address Choose subsequent hop handle .
previous-hop-address Choose earlier hop handle ,
address-mode-ip Present IP handle solely i
address-mode-host Present hostname solely n
address-mode-both Present each IP handle and hostname b
toggle-freeze Toggle freezing the show ctrl+f
toggle-chart Toggle the chart c
toggle-map Toggle the GeoIp map m
toggle-flows Toggle the flows f
toggle-privacy Toggle the hop privateness p
expand-hosts Broaden the hosts proven per hop ]
expand-hosts-max Broaden the hosts proven per hop to the utmost }
contract-hosts Contract the hosts proven per hop [
contract-hosts-min Contract the hosts shown per hop to the minimum {
chart-zoom-in Zoom in the chart =
chart-zoom-out Zoom out the chart -
clear-trace-data Clear all trace data ctrl+r
clear-dns-cache Flush the DNS cache ctrl+k
clear-selection Clear the current selection esc
toggle-as-info Toggle AS info display z
toggle-hop-details Toggle hop details d
quit Quit the application q

The supported modifiers are: shift, ctrl, alt, super, hyper & meta. Multiple modifiers may be specified, for
example ctrl+shift+b.

Configuration Reference

Trippy can be configured with via command line arguments or an optional configuration file. If a given configuration
item is specified in both the configuration file and via a command line argument then the latter will take precedence.

The configuration file location may be provided to Trippy via the -c (--config-file) argument. If not provided,
Trippy will attempt to locate a trippy.toml or .trippy.toml configuration file in one of the following locations:

  • The current directory
  • The user home directory
  • the XDG config directory (Unix only): $XDG_CONFIG_HOME or ~/.config
  • the Windows data directory (Windows only): %APPDATA%

An annotated template configuration file is available
for 0.8.0
and 0.9.0.

Trippy (version 0.9.0 or later) can generate a template configuration file:

trip --print-config-template > trippy.toml

Frequently Asked Questions

Why does Trippy show “Awaiting data…”?

[!IMPORTANT]In case you are utilizing Home windows you
should configure
the Home windows Defender firewall to permit incoming ICMP visitors

When Trippy reveals “Awaiting knowledge…” it signifies that it has obtained zero responses for the probes despatched in a hint. This
signifies that both probes will not be being despatched or, extra usually, responses will not be being obtained.

Verify that native and community firewalls permit ICMP visitors and that the system traceroute (or tracert.exe on
Home windows) works as anticipated. Observe that on Home windows, even when tracert.exe works as anticipated, you
should configure the Home windows Defender
firewall to permit incoming ICMP visitors.

For deeper diagnostics you possibly can run instruments corresponding to https://www.wireshark.org and https://www.tcpdump.org to confirm that
icmp requests and responses are being ship and obtained.

How do I permit incoming ICMP visitors within the Home windows Defender firewall?

The Home windows Defender firewall rule could be created utilizing PowerShell:

New-NetFirewallRule -DisplayName "ICMP Trippy Permit" -Identify ICMP_TRIPPY_ALLOW -Protocol ICMPv4 -Motion Permit

The rule could be enabled and disabled as follows:

Allow-NetFirewallRule ICMP_TRIPPY_ALLOW
Disable-NetFirewallRule ICMP_TRIPPY_ALLOW

The Home windows Defender firewall rule may additionally be configured manually,
see here for a step-by-step information.

Acknowledgements

Trippy is made potential by ratatui (
previously tui-rs),
crossterm as effectively
as several foundational Rust libraries.

Trippy attracts closely from mtr and likewise incorporates concepts
from each libparistraceroute
& Dublin Traceroute.

The Trippy networking code is impressed by pnet and a few parts of that codebase
are included in Trippy.

The AS knowledge is retrieved from
the IP to ASN Mapping Service offered
by Team Cymru.

The trippy.cli.rs CNAME internet hosting is offered by cli.rs.

License

This undertaking is distributed underneath the phrases of the Apache License (Model 2.0).

Until you explicitly state in any other case, any contribution deliberately submitted for inclusion in time by you, as outlined
within the Apache-2.0 license, shall be licensed as above, with none extra phrases or situations.

See LICENSE for particulars.

Copyright 2022 Trippy Contributors

Source Link

What's Your Reaction?
Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0
View Comments (0)

Leave a Reply

Your email address will not be published.

2022 Blinking Robots.
WordPress by Doejo

Scroll To Top