Skip to main content

Icmp Tool

Icmp Tool provides a straight-forward way to characterize the responsiveness to TTL-limited probes of routers close to you. The tool is based on code we used for a large scale campaign on PlanetLab. For details on how the router classification works, refer to our paper “Characterizing ICMP Rate Limitation on Routers”: http://goo.gl/cU004b Typical usage looks like this:

#!/usr/bin/env python

from icmptool import icmptool

routers_by_hop = icmptool(dest='8.8.8.8', ttls=[1,2,3], min_rate=1, max_rate=500, n_of_rates=5, duration=8)
# extract and print rate-limitation parameters
for hop in routers_by_hop:
    for router in routers_by_hop[hop]:
        print "router %s at hop %s is of type %s for the tested probing rates" % (
                                                router, hop, routers_by_hop[hop][router]['rtype_description'])
        if 'fr-onoff' in routers_by_hop[hop][router]['rtype_str']:
            print("\tOn-off parameters are:\n\t\tBurst Size: "
                  "%s packets\n\t\tInter Burst Time: %s seconds"
                  "\n\t\t=> max answering rate %d pps " % (routers_by_hop[hop][router]['onoff_parameters']['bsize'],
                                                           routers_by_hop[hop][router]['onoff_parameters']['iat'],
                                                           routers_by_hop[hop][router]['onoff_parameters']['bsize']))
        elif 'fr-rl' in routers_by_hop[hop][router]['rtype_str']: #generically rate-limited
            print "\tMaximum answering rate is %s" % routers_by_hop[hop][router]['extra_info']['limited_ans_rate']

By doing that, we probed routers at hops 1, 2, 3 on the path to 8.8.8.8, at 5 exponentially-spaced probing rates between 1 pps and 500 pps, for 8 seconds each time. routers_by_hop will now contain at key i details of the responsiveness of the router on hop i.

Alternatively, the script icmp_tool.py can be called from the shell to perform the same task. The above example simply becomes:

$ ./icmp_tool.py --dest 8.8.8.8 --ttls 1 2 3 --min_rate 1 --max_rate 500 --n_of_rates 5 --duration 8

Icmp Tool sends TTL-limited probes at constant rate(s) to the routers at the specified hops and by studying the timeseries of the received ICMP time-exceeded replies it determines the responsiveness of nearby routers to these probes. A responsive router typically shows 3 responsiveness phases in the following order:

[fully-responsive]  [rate-limited] [irregular]

Depending on the chosen probing rates and on the configuration of the router, not all phases might appear. The most common implementation of rate limitation is with an on-off pattern, of which we provide the parameters: burst size, period length and resulting answering rate. In some cases, rate limitation is implemented with a maximum constant answering rate, but no such pattern is observable. We call this a generically rate-limited router (rl). The irregular phase, if any, might appear whether or not rate limitation has been configured. After a certain threshold, the responsiveness of the router might simply not follow any pattern and become less predictable.

The tool uses tcpdump to capture outgoing probes and incoming replies. It requires sudo privileges.

Metadata

Release files for IcmpTool 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for IcmpTool 0.1.8
File Size Uploaded
IcmpTool-0.1.8.tar.gz 36.6 kB Details

Release files / IcmpTool-0.1.8.tar.gz

Download URL IcmpTool-0.1.8.tar.gz
Size 36.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f5af6a89d9f168a2537902fb666cf7554b023c7e56c1de355ea22227f656a089
BLAKE2b-256 checksum
How to use checksums
6660cd92c87c2353ede7937c4ebc26d5a2e030e2df9587dd6de3a65dd26261f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.8 This release

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.2

1 release file

0.1.1

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page