Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

first draft of parasitic traceroute spec #213

Draft
wants to merge 1 commit into
base: DPI-Fragmentation-Spec
Choose a base branch
from

Conversation

Myint96
Copy link

@Myint96 Myint96 commented Feb 20, 2021

No description provided.

Copy link

@pathomphong992494466 pathomphong992494466 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Specification version number

2017-10-29-000

Specification name

Parasitic Traceroute Test Helper

Helper description

The parasitic traceroute test helper behaves much the same as the reverse
traceroute helper - it listens for incoming connections on a TCP socket. Once
initiated, the server will respond with a response message modulating the
TTL of the connection until a successful ACK is received from the connecting
client. As such, the traceroute is performed on the initiated connection itself,
potentially revealing more network hops than are present on the public IP
that the remote destination visible to the helper suggests. The result of the
traceroute process is then returned on the same connection.

Helper preconditions

  • An Internet connection
  • An Internet-Reachable TCP Port
  • Raw socket access for monitoring and injecting packets

Expected impact

In addition to the core Internet traceroute data, parasitic traceroute has the
ability to shed light on the internal routing of ISPs in a way that is otherwise
difficult for a non-privileged client to obtain. While this data can be
sensitive, initial OONI tests using this helper can provide insights like the
number of hops within the local network, along with potential indicators of
multiple NAT devices in play, where RFC-1917 networks are observed, or when hops
after the public IP are seen, but do not trace all the way to the client.
Knowledge of the presence of these configurations within a network can allow
the overall OONI system do a better job of understanding the representativeness
of submitted reports.

Expected inputs

  • The initiation of a connection.

Expected output

  • The results of a traceroute giving the IP address of each hop and, if
    available, the ping times to each hop.

The result will be encoded using JSON, with an array where each element
represents a successive probe response when present. Each entry in the array
will be a JSON object, containing keys for the TTL of the probe, the IP
address(es) seen responding, and observed latencies.

Possible conclusions

A client will be able to better understand the network condition that it is in.
Submitted conclusions will allow (in addition to the conclusions from other
forms of traceroute) the conclusion that a client is in a multi-NAT
configuration, and the Internal IPs of some ISP gateways, which may not be
otherwise visible.

Notes

This test helper attempts to formalize the semantics of the Parasitic Traceroute
(https://github.com/david415/ParasiticTraceroute) program by David415, and the
Traceroute as a Service (https://github.com/willscott/traas) program by Will
Scott.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants