1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2026-04-24 20:56:11 +02:00

Add traceroute streaming parser - traceroute-s (#669)

* test: split out test fixtures for long ipv6 traceroute for consistency

* refactor(jc/parsers/traceroute): remove duplicate ParseError class

* refactor(jc/parsers/traceroute): pre-process data in _loads() for easy-to-reuse

* refactor(jc/parsers/traceroute): split hop serialization into separate function to reuse

* refactor(jc/parsers/traceroute): simplify numeric conversion and make it reusable for traceroute_s

* fix(jc/parsers/traceroute): stricter regex to match traceroute headers only

* feat(jc/parsers/traceroute_s): v1.0 implementation

* fix(jc/parsers/traceroute): revert "_" prefix in function and class names

* fixup! fix(jc/parsers/traceroute): revert "_" prefix in function and class names

* chore(jc/parsers/traceroute): update the author information
This commit is contained in:
Shintaro Kojima
2025-10-13 02:21:16 +09:00
committed by GitHub
parent 467ad60e20
commit 07ef285b06
29 changed files with 5182 additions and 71 deletions
+1
View File
@@ -214,6 +214,7 @@ parsers: List[str] = [
'top-s',
'tracepath',
'traceroute',
'traceroute-s',
'tune2fs',
'udevadm',
'ufw',
+53 -63
View File
@@ -119,6 +119,7 @@ import re
from decimal import Decimal
import jc.utils
from copy import deepcopy
from jc.exceptions import ParseError
class info():
@@ -164,7 +165,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'''
RE_HEADER = re.compile(r'(\S+)\s+\((\d+\.\d+\.\d+\.\d+|[0-9a-fA-F:]+)\)')
RE_HEADER = re.compile(r'traceroute6? to (\S+)\s+\((\d+\.\d+\.\d+\.\d+|[0-9a-fA-F:]+)\)')
RE_PROBE_NAME_IP = re.compile(r'(\S+)\s+\((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[0-9a-fA-F:]+)\)+')
RE_PROBE_IP_ONLY = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+([^\(])')
RE_PROBE_IPV6_ONLY = re.compile(r'(([a-f0-9]*:)+[a-f0-9]+)')
@@ -291,8 +292,23 @@ def _get_probes(hop_string: str):
return probes
def _loads(data):
lines = data.splitlines()
def _loads(data: str, quiet: bool):
lines = []
# remove any warning lines
for data_line in data.splitlines():
if 'traceroute: Warning: ' not in data_line and 'traceroute6: Warning: ' not in data_line:
lines.append(data_line)
else:
continue
# check if header row exists, otherwise add a dummy header
if not lines[0].startswith('traceroute to ') and not lines[0].startswith('traceroute6 to '):
lines[:0] = ['traceroute to <<_>> (<<_>>), 30 hops max, 60 byte packets']
# print warning to STDERR
if not quiet:
jc.utils.warning_message(['No header row found. For destination info redirect STDERR to STDOUT'])
# Get headers
match_dest = RE_HEADER.search(lines[0])
@@ -330,13 +346,30 @@ def _loads(data):
return traceroute
class ParseError(Exception):
pass
########################################################################################
def _serialize_hop(hop: _Hop):
hop_obj = {}
hop_obj['hop'] = str(hop.idx)
probe_list = []
if hop.probes:
for probe in hop.probes:
probe_obj = {
'annotation': probe.annotation,
'asn': None if probe.asn is None else str(probe.asn),
'ip': probe.ip,
'name': probe.name,
'rtt': None if probe.rtt is None else str(probe.rtt)
}
probe_list.append(probe_obj)
hop_obj['probes'] = probe_list
return hop_obj
def _process(proc_data):
"""
Final processing to conform to the schema.
@@ -349,26 +382,20 @@ def _process(proc_data):
Dictionary. Structured to conform to the schema.
"""
int_list = {'hop', 'asn'}
int_list = {'hop', 'asn', 'max_hops', 'data_bytes'}
float_list = {'rtt'}
if 'hops' in proc_data:
for entry in proc_data['hops']:
for key in entry:
if key in int_list:
entry[key] = jc.utils.convert_to_int(entry[key])
for entry in proc_data.get('hops', []):
_process(entry)
for entry in proc_data.get('probes', []):
_process(entry)
if key in float_list:
entry[key] = jc.utils.convert_to_float(entry[key])
for key in proc_data:
if key in int_list:
proc_data[key] = jc.utils.convert_to_int(proc_data[key])
if 'probes' in entry:
for item in entry['probes']:
for key in item:
if key in int_list:
item[key] = jc.utils.convert_to_int(item[key])
if key in float_list:
item[key] = jc.utils.convert_to_float(item[key])
if key in float_list:
proc_data[key] = jc.utils.convert_to_float(proc_data[key])
return proc_data
@@ -393,48 +420,11 @@ def parse(data, raw=False, quiet=False):
raw_output = {}
if jc.utils.has_data(data):
# remove any warning lines
new_data = []
for data_line in data.splitlines():
if 'traceroute: Warning: ' not in data_line and 'traceroute6: Warning: ' not in data_line:
new_data.append(data_line)
else:
continue
# check if header row exists, otherwise add a dummy header
if not new_data[0].startswith('traceroute to ') and not new_data[0].startswith('traceroute6 to '):
new_data[:0] = ['traceroute to <<_>> (<<_>>), 30 hops max, 60 byte packets']
# print warning to STDERR
if not quiet:
jc.utils.warning_message(['No header row found. For destination info redirect STDERR to STDOUT'])
data = '\n'.join(new_data)
tr = _loads(data)
hops = tr.hops
tr = _loads(data, quiet)
hops_list = []
if hops:
for hop in hops:
hop_obj = {}
hop_obj['hop'] = str(hop.idx)
probe_list = []
if hop.probes:
for probe in hop.probes:
probe_obj = {
'annotation': probe.annotation,
'asn': None if probe.asn is None else str(probe.asn),
'ip': probe.ip,
'name': probe.name,
'rtt': None if probe.rtt is None else str(probe.rtt)
}
probe_list.append(probe_obj)
hop_obj['probes'] = probe_list
hops_list.append(hop_obj)
for hop in tr.hops:
hops_list.append(_serialize_hop(hop))
raw_output = {
'destination_ip': tr.dest_ip,
+286
View File
@@ -0,0 +1,286 @@
r"""jc - JSON Convert `traceroute` command output streaming parser
> This streaming parser outputs JSON Lines (cli) or returns an Iterable of
> Dictionaries (module)
Supports `traceroute` and `traceroute6` output.
> Note: On some operating systems you will need to redirect `STDERR` to
> `STDOUT` for destination info since the header line is sent to
> `STDERR`. A warning message will be printed to `STDERR` if the
> header row is not found.
>
> e.g. `$ traceroute 8.8.8.8 2>&1 | jc --traceroute-s`
Usage (cli):
$ traceroute 1.2.3.4 | jc --traceroute-s
Usage (module):
import jc
result = jc.parse('traceroute_s', traceroute_command_output.splitlines())
for item in result:
# do something
Schema:
{
# 'header' or 'hop'
"type": string,
# 'header' type has the fields below:
"destination_ip": string,
"destination_name": string,
"max_hops": integer,
"data_bytes": integer,
# 'hop' type has the fields below:
"hop": integer,
"probes": [
{
"annotation": string,
"asn": integer,
"ip": string,
"name": string,
"rtt": float
}
]
# below object only exists if using -qq or ignore_exceptions=True
"_jc_meta": {
"success": boolean, # false if error parsing
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
}
Examples:
$ traceroute google.com | jc --traceroute-s -p
{
"type": "header",
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"max_hops": 30,
"data_bytes": 60
}
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.574
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.65
}
]
}
...
$ traceroute google.com | jc --traceroute-s -p -r
{
"type": "header",
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"max_hops": "30",
"data_bytes": "60"
}
{
"type": "hop",
"hop": "1",
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.574"
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": null
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": "198.650"
}
]
}
...
"""
import re
from typing import Optional
import jc.utils
from jc.exceptions import ParseError
from jc.streaming import (
add_jc_meta, streaming_input_type_check, streaming_line_input_type_check, raise_or_yield
)
from .traceroute import RE_HEADER, RE_HOP, _Hop, _loads, _process, _serialize_hop
class info():
"""Provides parser metadata (version, author, etc.)"""
version = '1.0'
description = '`traceroute` and `traceroute6` command streaming parser'
author = 'Shintaro Kojima'
author_email = 'goodies@codeout.net'
compatible = ['linux', 'darwin', 'freebsd']
tags = ['command']
streaming = True
__version__ = info.version
'''
Copyright (C) 2015 Luis Benitez
Parses the output of a traceroute execution into an AST (Abstract Syntax Tree).
The MIT License (MIT)
Copyright (c) 2014 Luis Benitez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
'''
RE_HEADER_HOPS_BYTES = re.compile(r'(\d+) hops max, (\d+) byte packets')
def _hop_output(hop: _Hop, raw: bool):
raw_output = {
'type': 'hop',
**_serialize_hop(hop),
}
return raw_output if raw else _process(raw_output)
@add_jc_meta
def parse(data, raw=False, quiet=False, ignore_exceptions=False):
"""
Main text parsing function. Returns an iterable object.
Parameters:
data: (iterable) line-based text data to parse
(e.g. sys.stdin or str.splitlines())
raw: (boolean) unprocessed output if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Returns:
Iterable of Dictionaries
"""
jc.utils.compatibility(__name__, info.compatible, quiet)
streaming_input_type_check(data)
# Estimated number of probe packets per hop. See `traceroute -q` on Linux, for example.
queries = 0
# Accumulated hop across multiple lines
hop_cache: Optional[_Hop] = None
for line in data: # type: str
try:
streaming_line_input_type_check(line)
if RE_HEADER.search(line):
tr = _loads(line, quiet)
raw_output = {
'type': 'header',
'destination_ip': tr.dest_ip,
'destination_name': tr.dest_name,
}
# Extend the header-line parsing. We may want to relocate this to traceroute.py to keep the output consistent.
m = RE_HEADER_HOPS_BYTES.search(line)
if m:
raw_output.update({
'max_hops': m.group(1),
'data_bytes': m.group(2),
})
yield raw_output if raw else _process(raw_output)
else:
m = RE_HOP.match(line)
if not m:
continue
# A single hop can wrap across multiple lines, e.g.:
#
# 6 [AS0] 94.142.122.45 (94.142.122.45) 42.790 ms 46.352 ms
# [AS0] 94.142.122.44 (94.142.122.44) 41.479 ms
#
if not m.group(1):
if not hop_cache:
raise ParseError('No hop index found')
# If the hop index is not found, prepend the hop index (6) to the following lines before parsing.
line = f"{hop_cache.idx} {line}"
# Specify quiet=True to suppress the 'No header row found' warning for hop lines
tr = _loads(line, quiet=True)
if not tr.hops:
continue
hop_cache.probes.extend(tr.hops[0].probes)
else:
# if the hop index is found, yield the previous hop
if hop_cache:
yield _hop_output(hop_cache, raw)
hop_cache = None
# Specify quiet=True to suppress the 'No header row found' warning for hop lines
tr = _loads(line, quiet=True)
if not tr.hops:
continue
hop_cache = tr.hops[0]
except Exception as e:
yield raise_or_yield(ignore_exceptions, e, line)
if hop_cache:
yield _hop_output(hop_cache, raw)
+291
View File
@@ -0,0 +1,291 @@
[
{
"type": "header",
"destination_ip": "151.101.197.67",
"destination_name": "www.cnn.com",
"max_hops": 30,
"data_bytes": 60
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 4.024
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 3.683
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 3.706
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 24.038
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 23.911
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 23.724
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 42.273
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 42.213
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 42.083
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.2.77",
"name": "12.122.2.77",
"rtt": 36.789
},
{
"annotation": null,
"asn": null,
"ip": "12.122.2.77",
"name": "12.122.2.77",
"rtt": 43.691
},
{
"annotation": null,
"asn": null,
"ip": "12.122.2.77",
"name": "12.122.2.77",
"rtt": 36.597
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.2.94",
"name": "sd2ca21crs.ip.att.net",
"rtt": 41.587
},
{
"annotation": null,
"asn": null,
"ip": "12.122.2.94",
"name": "sd2ca21crs.ip.att.net",
"rtt": 40.24
},
{
"annotation": null,
"asn": null,
"ip": "12.122.2.94",
"name": "sd2ca21crs.ip.att.net",
"rtt": 44.659
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.123.215.161",
"name": "12.123.215.161",
"rtt": 37.858
},
{
"annotation": null,
"asn": null,
"ip": "12.123.215.161",
"name": "12.123.215.161",
"rtt": 37.321
},
{
"annotation": null,
"asn": null,
"ip": "12.123.215.161",
"name": "12.123.215.161",
"rtt": 37.092
}
]
},
{
"type": "hop",
"hop": 8,
"probes": []
},
{
"type": "hop",
"hop": 9,
"probes": []
},
{
"type": "hop",
"hop": 10,
"probes": []
},
{
"type": "hop",
"hop": 11,
"probes": []
},
{
"type": "hop",
"hop": 12,
"probes": []
},
{
"type": "hop",
"hop": 13,
"probes": []
},
{
"type": "hop",
"hop": 14,
"probes": []
},
{
"type": "hop",
"hop": 15,
"probes": []
},
{
"type": "hop",
"hop": 16,
"probes": []
},
{
"type": "hop",
"hop": 17,
"probes": []
},
{
"type": "hop",
"hop": 18,
"probes": []
},
{
"type": "hop",
"hop": 19,
"probes": []
},
{
"type": "hop",
"hop": 20,
"probes": []
},
{
"type": "hop",
"hop": 21,
"probes": []
},
{
"type": "hop",
"hop": 22,
"probes": []
},
{
"type": "hop",
"hop": 23,
"probes": []
},
{
"type": "hop",
"hop": 24,
"probes": []
},
{
"type": "hop",
"hop": 25,
"probes": []
},
{
"type": "hop",
"hop": 26,
"probes": []
},
{
"type": "hop",
"hop": 27,
"probes": []
},
{
"type": "hop",
"hop": 28,
"probes": []
},
{
"type": "hop",
"hop": 29,
"probes": []
},
{
"type": "hop",
"hop": 30,
"probes": []
}
]
+216
View File
@@ -0,0 +1,216 @@
[
{
"type": "header",
"destination_ip": "8.8.8.8",
"destination_name": "8.8.8.8",
"max_hops": 64,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 3.263
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 4.146
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.attlocal.net",
"rtt": 4.273
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 20.839
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 23.434
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 22.032
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 33.17
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 26.593
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 32.851
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 26.045
},
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 29.235
},
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 28.28
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 25.3
},
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 24.156
},
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 24.849
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.255.10.226",
"name": "12.255.10.226",
"rtt": 25.375
},
{
"annotation": null,
"asn": null,
"ip": "12.255.10.224",
"name": "12.255.10.224",
"rtt": 24.011
},
{
"annotation": null,
"asn": null,
"ip": "12.255.10.224",
"name": "12.255.10.224",
"rtt": 25.322
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "108.170.243.1",
"name": "108.170.243.1",
"rtt": 29.376
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "8.8.8.8",
"name": "dns.google",
"rtt": 23.228
},
{
"annotation": null,
"asn": null,
"ip": "209.85.252.251",
"name": "209.85.252.251",
"rtt": 24.548
},
{
"annotation": null,
"asn": null,
"ip": "108.170.237.23",
"name": "108.170.237.23",
"rtt": 24.332
}
]
}
]
+208
View File
@@ -0,0 +1,208 @@
[
{
"type": "header",
"destination_ip": "2a04:4e42::323",
"destination_name": "turner-tls.map.fastly.net",
"max_hops": 64,
"data_bytes": 20
},
{
"type": "hop",
"hop": 1,
"probes": []
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 27.603
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 28.659
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 33.235
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 36.731
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 28.875
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 28.959
}
]
},
{
"type": "hop",
"hop": 5,
"probes": []
},
{
"type": "hop",
"hop": 6,
"probes": []
},
{
"type": "hop",
"hop": 7,
"probes": []
},
{
"type": "hop",
"hop": 8,
"probes": []
},
{
"type": "hop",
"hop": 9,
"probes": []
},
{
"type": "hop",
"hop": 10,
"probes": []
},
{
"type": "hop",
"hop": 11,
"probes": []
},
{
"type": "hop",
"hop": 12,
"probes": []
},
{
"type": "hop",
"hop": 13,
"probes": []
},
{
"type": "hop",
"hop": 14,
"probes": []
},
{
"type": "hop",
"hop": 15,
"probes": []
},
{
"type": "hop",
"hop": 16,
"probes": []
},
{
"type": "hop",
"hop": 17,
"probes": []
},
{
"type": "hop",
"hop": 18,
"probes": []
},
{
"type": "hop",
"hop": 19,
"probes": []
},
{
"type": "hop",
"hop": 20,
"probes": []
},
{
"type": "hop",
"hop": 21,
"probes": []
},
{
"type": "hop",
"hop": 22,
"probes": []
},
{
"type": "hop",
"hop": 23,
"probes": []
},
{
"type": "hop",
"hop": 24,
"probes": []
},
{
"type": "hop",
"hop": 25,
"probes": []
},
{
"type": "hop",
"hop": 26,
"probes": []
},
{
"type": "hop",
"hop": 27,
"probes": []
},
{
"type": "hop",
"hop": 28,
"probes": []
},
{
"type": "hop",
"hop": 29,
"probes": []
},
{
"type": "hop",
"hop": 30,
"probes": []
},
{
"type": "hop",
"hop": 31,
"probes": []
}
]
@@ -0,0 +1,78 @@
[
{
"type": "header",
"destination_ip": "2a04:4e42:200::323",
"destination_name": "turner-tls.map.fastly.net",
"max_hops": 5,
"data_bytes": 12
},
{
"type": "hop",
"hop": 1,
"probes": []
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 27.635
},
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 20.383
},
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 23.438
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.118
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.327
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 21.213
}
]
},
{
"type": "hop",
"hop": 5,
"probes": []
}
]
+1
View File
@@ -0,0 +1 @@
{"destination_ip":"2a04:4e42:200::323","destination_name":"turner-tls.map.fastly.net","hops":[{"hop":1,"probes":[]},{"hop":2,"probes":[{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":27.635},{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":20.383},{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":23.438}]},{"hop":3,"probes":[]},{"hop":4,"probes":[{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":20.118},{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":20.327},{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":21.213}]},{"hop":5,"probes":[]}]}
+6
View File
@@ -0,0 +1,6 @@
traceroute6 to turner-tls.map.fastly.net (2a04:4e42:200::323) from 2600:1700:bab0:d40:985:f00a:98bd:f142, 5 hops max, 12 byte packets
1 * * *
2 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 27.635 ms 20.383 ms 23.438 ms
3 * * *
4 2001:1890:ff:ff08:12:242:117:16 20.118 ms 20.327 ms 21.213 ms
5 * * *
+225
View File
@@ -0,0 +1,225 @@
[
{
"type": "header",
"destination_ip": "199.58.80.40",
"destination_name": "www.koumbit.org",
"max_hops": 30,
"data_bytes": 60
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.2.1",
"name": null,
"rtt": 0.967
},
{
"annotation": null,
"asn": null,
"ip": "192.168.2.1",
"name": null,
"rtt": 1.022
},
{
"annotation": null,
"asn": null,
"ip": "192.168.2.1",
"name": null,
"rtt": 1.204
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "24.212.242.17",
"name": null,
"rtt": 10.176
},
{
"annotation": null,
"asn": null,
"ip": "24.212.242.17",
"name": null,
"rtt": 18.136
},
{
"annotation": null,
"asn": null,
"ip": "24.212.242.17",
"name": null,
"rtt": 18.244
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.170.192.58",
"name": null,
"rtt": 19.396
},
{
"annotation": null,
"asn": null,
"ip": "10.170.192.58",
"name": null,
"rtt": 19.575
},
{
"annotation": null,
"asn": null,
"ip": "10.170.192.58",
"name": null,
"rtt": 19.572
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.171.61.61",
"name": null,
"rtt": 23.072
},
{
"annotation": null,
"asn": null,
"ip": "206.248.155.109",
"name": null,
"rtt": 17.073
},
{
"annotation": null,
"asn": null,
"ip": "192.171.63.17",
"name": null,
"rtt": 23.308
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "206.248.189.97",
"name": null,
"rtt": 20.521
},
{
"annotation": null,
"asn": null,
"ip": "206.248.189.97",
"name": null,
"rtt": 22.837
},
{
"annotation": null,
"asn": null,
"ip": "206.248.189.97",
"name": null,
"rtt": 23.194
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "198.179.18.41",
"name": null,
"rtt": 18.334
},
{
"annotation": null,
"asn": null,
"ip": "198.179.18.41",
"name": null,
"rtt": 17.894
},
{
"annotation": null,
"asn": null,
"ip": "198.179.18.41",
"name": null,
"rtt": 17.792
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "64.15.69.54",
"name": null,
"rtt": 17.056
},
{
"annotation": null,
"asn": null,
"ip": "64.15.69.54",
"name": null,
"rtt": 14.033
},
{
"annotation": null,
"asn": null,
"ip": "64.15.69.54",
"name": null,
"rtt": 12.351
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "199.58.80.40",
"name": null,
"rtt": 18.203
},
{
"annotation": null,
"asn": null,
"ip": "199.58.80.40",
"name": null,
"rtt": 18.789
},
{
"annotation": null,
"asn": null,
"ip": "199.58.80.40",
"name": null,
"rtt": 18.906
}
]
}
]
+333
View File
@@ -0,0 +1,333 @@
[
{
"type": "header",
"destination_ip": "2607:f8b0:4020:806::2004",
"destination_name": "www.google.com",
"max_hops": 30,
"data_bytes": 80
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2605:9000:402:6a01::1",
"name": null,
"rtt": 4.181
},
{
"annotation": null,
"asn": null,
"ip": "2605:9000:402:6a01::1",
"name": null,
"rtt": 4.294
},
{
"annotation": null,
"asn": null,
"ip": "2605:9000:402:6a01::1",
"name": null,
"rtt": 4.253
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2605:9000:0:400a::f1",
"name": null,
"rtt": 0.354
},
{
"annotation": null,
"asn": null,
"ip": "2605:9000:0:400a::f1",
"name": null,
"rtt": 0.532
},
{
"annotation": null,
"asn": null,
"ip": "2605:9000:0:400a::f1",
"name": null,
"rtt": 0.484
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:40:100::51",
"name": null,
"rtt": 15.284
},
{
"annotation": null,
"asn": null,
"ip": "2605:9000:0:101::1",
"name": null,
"rtt": 4.864
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:40:100::51",
"name": null,
"rtt": 15.415
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:40:100::51",
"name": null,
"rtt": 15.379
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:300:200::202",
"name": null,
"rtt": 12.709
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:40:100::51",
"name": null,
"rtt": 15.289
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:1900:100::12",
"name": null,
"rtt": 10.02
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:1900:100::12",
"name": null,
"rtt": 10.212
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:1900:100::12",
"name": null,
"rtt": 10.163
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:1900:100::12",
"name": null,
"rtt": 10.113
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:400:700::17",
"name": null,
"rtt": 8.399
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:1900:100::12",
"name": null,
"rtt": 10.215
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:1127::2",
"name": null,
"rtt": 9.11
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:400:700::17",
"name": null,
"rtt": 8.476
},
{
"annotation": null,
"asn": null,
"ip": "2001:5a0:400:700::17",
"name": null,
"rtt": 8.38
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:4860::8:4000:cd80",
"name": null,
"rtt": 9.428
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:1128::14",
"name": null,
"rtt": 9.36
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860::8:4000:cd80",
"name": null,
"rtt": 9.229
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:4860::9:4001:d508",
"name": null,
"rtt": 9.376
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860::c:4002:652a",
"name": null,
"rtt": 9.105
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860::c:4002:6523",
"name": null,
"rtt": 9.384
}
]
},
{
"type": "hop",
"hop": 10,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:11da::1",
"name": null,
"rtt": 8.489
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860::9:4001:d508",
"name": null,
"rtt": 8.978
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860::1c:4000:f5eb",
"name": null,
"rtt": 9.64
}
]
},
{
"type": "hop",
"hop": 11,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:1::c73",
"name": null,
"rtt": 9.596
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:1::c73",
"name": null,
"rtt": 9.077
},
{
"annotation": null,
"asn": null,
"ip": "2001:4860:0:1::c73",
"name": null,
"rtt": 9.724
}
]
},
{
"type": "hop",
"hop": 12,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2607:f8b0:4020:806::2004",
"name": null,
"rtt": 8.086
},
{
"annotation": null,
"asn": null,
"ip": "2607:f8b0:4020:806::2004",
"name": null,
"rtt": 8.091
},
{
"annotation": null,
"asn": null,
"ip": "2607:f8b0:4020:806::2004",
"name": null,
"rtt": 8.436
}
]
}
]
@@ -0,0 +1,113 @@
[
{
"type": "header",
"destination_ip": "199.58.80.40",
"destination_name": "www.koumbit.org",
"max_hops": 30,
"data_bytes": 60
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.2.1",
"name": null,
"rtt": 3.425
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "24.212.242.17",
"name": null,
"rtt": 16.153
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.170.192.58",
"name": null,
"rtt": 17.231
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.171.61.161",
"name": null,
"rtt": 25.393
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "206.248.189.97",
"name": null,
"rtt": 25.322
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "198.179.18.41",
"name": null,
"rtt": 23.755
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "64.15.69.54",
"name": null,
"rtt": 25.091
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "199.58.80.40",
"name": null,
"rtt": 25.196
}
]
}
]
+414
View File
@@ -0,0 +1,414 @@
[
{
"type": "header",
"destination_ip": "173.207.22.152",
"destination_name": "http://google.es",
"max_hops": 30,
"data_bytes": 60
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": "!P",
"asn": 1739,
"ip": "131.240.100.12",
"name": "131.240.100.12",
"rtt": 0.676
},
{
"annotation": "!",
"asn": 1739,
"ip": "131.240.100.12",
"name": "131.240.100.12",
"rtt": 0.763
},
{
"annotation": "!<500>",
"asn": 1739,
"ip": "131.240.100.12",
"name": "131.240.100.12",
"rtt": 0.91
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.26",
"name": "http://tut1-fw-vlan558.av.tut.fi",
"rtt": 0.266
},
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.26",
"name": "http://tut1-fw-vlan558.av.tut.fi",
"rtt": 0.404
},
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.26",
"name": "http://tut1-fw-vlan558.av.tut.fi",
"rtt": 0.493
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.20",
"name": "http://surf-gw-vlan557.av.tut.fi",
"rtt": 0.967
},
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.20",
"name": "http://surf-gw-vlan557.av.tut.fi",
"rtt": 0.961
},
{
"annotation": null,
"asn": 1739,
"ip": "131.232.1.20",
"name": "http://surf-gw-vlan557.av.tut.fi",
"rtt": 1.085
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": 1739,
"ip": "130.230.1.237",
"name": "http://funet-tut6-rtr-xe-0-0-0.cc.tut.fi",
"rtt": 1.096
},
{
"annotation": null,
"asn": 1739,
"ip": "130.230.1.237",
"name": "http://funet-tut6-rtr-xe-0-0-0.cc.tut.fi",
"rtt": 1.086
},
{
"annotation": null,
"asn": 1739,
"ip": "130.230.1.237",
"name": "http://funet-tut6-rtr-xe-0-0-0.cc.tut.fi",
"rtt": 1.049
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.220",
"name": "http://hameenlinna2-et-0-0-0-1.ip.funet.fi",
"rtt": 3.81
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.220",
"name": "http://hameenlinna2-et-0-0-0-1.ip.funet.fi",
"rtt": 3.845
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.220",
"name": "http://hameenlinna2-et-0-0-0-1.ip.funet.fi",
"rtt": 3.82
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.224",
"name": "http://hameenlinna1-et-0-0-1-1.ip.funet.fi",
"rtt": 29.055
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.224",
"name": "http://hameenlinna1-et-0-0-1-1.ip.funet.fi",
"rtt": 29.013
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.224",
"name": "http://hameenlinna1-et-0-0-1-1.ip.funet.fi",
"rtt": 28.977
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.223",
"name": "http://espoo2-et-0-1-2-1.ip.funet.fi",
"rtt": 3.468
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.223",
"name": "http://espoo2-et-0-1-2-1.ip.funet.fi",
"rtt": 8.007
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.223",
"name": "http://espoo2-et-0-1-2-1.ip.funet.fi",
"rtt": 7.89
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.232",
"name": "http://espoo1-et-0-1-7-1.ip.funet.fi",
"rtt": 13.498
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.232",
"name": "http://espoo1-et-0-1-7-1.ip.funet.fi",
"rtt": 13.307
},
{
"annotation": null,
"asn": 1741,
"ip": "86.50.255.232",
"name": "http://espoo1-et-0-1-7-1.ip.funet.fi",
"rtt": 13.399
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": 2603,
"ip": "109.105.102.168",
"name": "http://fi-csc2.nordu.net",
"rtt": 3.25
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.102.168",
"name": "http://fi-csc2.nordu.net",
"rtt": 3.268
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.102.168",
"name": "http://fi-csc2.nordu.net",
"rtt": 3.236
}
]
},
{
"type": "hop",
"hop": 10,
"probes": [
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.93",
"name": "http://se-fre.nordu.net",
"rtt": 9.418
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.93",
"name": "http://se-fre.nordu.net",
"rtt": 9.41
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.93",
"name": "http://se-fre.nordu.net",
"rtt": 9.369
}
]
},
{
"type": "hop",
"hop": 11,
"probes": [
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.27",
"name": "http://se-kst2.nordu.net",
"rtt": 9.617
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.27",
"name": "http://se-kst2.nordu.net",
"rtt": 9.594
},
{
"annotation": null,
"asn": 2603,
"ip": "109.105.97.27",
"name": "http://se-kst2.nordu.net",
"rtt": 9.603
}
]
},
{
"type": "hop",
"hop": 12,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.121.80.47",
"name": "http://as15169-10g-sk1.sthix.net",
"rtt": 10.01
},
{
"annotation": null,
"asn": 15169,
"ip": "72.14.196.42",
"name": "72.14.196.42",
"rtt": 9.182
},
{
"annotation": null,
"asn": 15169,
"ip": "72.14.196.42",
"name": "72.14.196.42",
"rtt": 44.983
}
]
},
{
"type": "hop",
"hop": 13,
"probes": [
{
"annotation": null,
"asn": 15169,
"ip": "108.170.254.49",
"name": "108.170.254.49",
"rtt": 10.852
},
{
"annotation": null,
"asn": 15169,
"ip": "108.170.254.33",
"name": "108.170.254.33",
"rtt": 11.185
},
{
"annotation": null,
"asn": 15169,
"ip": "108.170.254.49",
"name": "108.170.254.49",
"rtt": 10.876
}
]
},
{
"type": "hop",
"hop": 14,
"probes": [
{
"annotation": null,
"asn": 15169,
"ip": "209.85.242.11",
"name": "209.85.242.11",
"rtt": 10.192
},
{
"annotation": null,
"asn": 15169,
"ip": "209.85.242.11",
"name": "209.85.242.11",
"rtt": 10.471
},
{
"annotation": null,
"asn": 15169,
"ip": "209.85.242.11",
"name": "209.85.242.11",
"rtt": 10.502
}
]
},
{
"type": "hop",
"hop": 15,
"probes": [
{
"annotation": null,
"asn": 15169,
"ip": "172.217.21.163",
"name": "http://arn11s03-in-f3.1e100.net",
"rtt": 9.652
},
{
"annotation": null,
"asn": 15169,
"ip": "172.217.21.163",
"name": "http://arn11s03-in-f3.1e100.net",
"rtt": 9.664
},
{
"annotation": null,
"asn": 15169,
"ip": "172.217.21.163",
"name": "http://arn11s03-in-f3.1e100.net",
"rtt": 9.777
}
]
}
]
+260
View File
@@ -0,0 +1,260 @@
[
{
"type": "header",
"destination_ip": "216.58.194.46",
"destination_name": "google.com",
"max_hops": 30,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.574
},
{
"annotation": null,
"asn": null,
"ip": "216.230.231.141",
"name": "216-230-231-141.static.houston.tx.oplink.net",
"rtt": 198.65
}
]
},
{
"type": "hop",
"hop": 2,
"probes": []
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "72.14.242.34",
"name": "72.14.242.34",
"rtt": 4.932
},
{
"annotation": null,
"asn": null,
"ip": "72.14.242.34",
"name": "72.14.242.34",
"rtt": 4.945
},
{
"annotation": null,
"asn": null,
"ip": "72.14.242.34",
"name": "72.14.242.34",
"rtt": 4.951
}
]
},
{
"type": "hop",
"hop": 5,
"probes": []
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "108.170.230.116",
"name": "108.170.230.116",
"rtt": 4.687
},
{
"annotation": null,
"asn": null,
"ip": "108.170.230.116",
"name": "108.170.230.116",
"rtt": 4.798
},
{
"annotation": null,
"asn": null,
"ip": "108.170.230.116",
"name": "108.170.230.116",
"rtt": 4.688
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "108.170.252.130",
"name": "108.170.252.130",
"rtt": 4.825
},
{
"annotation": null,
"asn": null,
"ip": "108.170.252.130",
"name": "108.170.252.130",
"rtt": 4.844
},
{
"annotation": null,
"asn": null,
"ip": "108.170.252.130",
"name": "108.170.252.130",
"rtt": 4.797
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "108.170.233.117",
"name": "108.170.233.117",
"rtt": 5.386
},
{
"annotation": null,
"asn": null,
"ip": "108.170.233.117",
"name": "108.170.233.117",
"rtt": 5.288
},
{
"annotation": null,
"asn": null,
"ip": "108.170.233.117",
"name": "108.170.233.117",
"rtt": 5.324
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.239.63.250",
"name": "216.239.63.250",
"rtt": 5.305
},
{
"annotation": null,
"asn": null,
"ip": "216.239.63.250",
"name": "216.239.63.250",
"rtt": 5.369
},
{
"annotation": null,
"asn": null,
"ip": "216.239.63.250",
"name": "216.239.63.250",
"rtt": 5.406
}
]
},
{
"type": "hop",
"hop": 10,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "108.170.240.129",
"name": "108.170.240.129",
"rtt": 6.005
},
{
"annotation": null,
"asn": null,
"ip": "108.170.240.129",
"name": "108.170.240.129",
"rtt": 5.93
},
{
"annotation": null,
"asn": null,
"ip": "108.170.240.129",
"name": "108.170.240.129",
"rtt": 5.983
}
]
},
{
"type": "hop",
"hop": 11,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "209.85.242.53",
"name": "209.85.242.53",
"rtt": 4.973
},
{
"annotation": null,
"asn": null,
"ip": "209.85.242.53",
"name": "209.85.242.53",
"rtt": 4.973
},
{
"annotation": null,
"asn": null,
"ip": "209.85.242.53",
"name": "209.85.242.53",
"rtt": 4.979
}
]
},
{
"type": "hop",
"hop": 12,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "216.58.194.46",
"name": "dfw25s12-in-f46.1e100.net",
"rtt": 4.871
},
{
"annotation": null,
"asn": null,
"ip": "216.58.194.46",
"name": "dfw25s12-in-f46.1e100.net",
"rtt": 4.884
},
{
"annotation": null,
"asn": null,
"ip": "216.58.194.46",
"name": "dfw25s12-in-f46.1e100.net",
"rtt": 4.863
}
]
}
]
+405
View File
@@ -0,0 +1,405 @@
[
{
"type": "header",
"destination_ip": "31.13.82.36",
"destination_name": "facebook.com",
"max_hops": 30,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "175.41.192.133",
"name": "ec2-175-41-192-133.ap-northeast-1.compute.amazonaws.com",
"rtt": 1.002
},
{
"annotation": null,
"asn": null,
"ip": "175.41.192.133",
"name": "ec2-175-41-192-133.ap-northeast-1.compute.amazonaws.com",
"rtt": 1.006
}
]
},
{
"type": "hop",
"hop": 2,
"probes": []
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": []
},
{
"type": "hop",
"hop": 5,
"probes": []
},
{
"type": "hop",
"hop": 6,
"probes": []
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "100.65.10.33",
"name": "100.65.10.33",
"rtt": 0.269
},
{
"annotation": null,
"asn": null,
"ip": "100.65.10.33",
"name": "100.65.10.33",
"rtt": 0.282
},
{
"annotation": null,
"asn": null,
"ip": "100.65.10.33",
"name": "100.65.10.33",
"rtt": 0.32
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "54.239.52.186",
"name": "54.239.52.186",
"rtt": 1.411
},
{
"annotation": null,
"asn": null,
"ip": "54.239.52.186",
"name": "54.239.52.186",
"rtt": 1.431
},
{
"annotation": null,
"asn": null,
"ip": "54.239.52.186",
"name": "54.239.52.186",
"rtt": 1.433
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.95.31.89",
"name": "52.95.31.89",
"rtt": 2.612
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.89",
"name": "52.95.31.89",
"rtt": 2.634
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.89",
"name": "52.95.31.89",
"rtt": 2.659
}
]
},
{
"type": "hop",
"hop": 10,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.95.31.56",
"name": "52.95.31.56",
"rtt": 1.017
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.56",
"name": "52.95.31.56",
"rtt": 1.028
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.56",
"name": "52.95.31.56",
"rtt": 1.048
}
]
},
{
"type": "hop",
"hop": 11,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.95.31.149",
"name": "52.95.31.149",
"rtt": 7.042
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.149",
"name": "52.95.31.149",
"rtt": 7.057
},
{
"annotation": null,
"asn": null,
"ip": "52.95.31.149",
"name": "52.95.31.149",
"rtt": 7.06
}
]
},
{
"type": "hop",
"hop": 12,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "54.239.53.66",
"name": "54.239.53.66",
"rtt": 7.828
},
{
"annotation": null,
"asn": null,
"ip": "54.239.53.66",
"name": "54.239.53.66",
"rtt": 7.81
},
{
"annotation": null,
"asn": null,
"ip": "54.239.53.66",
"name": "54.239.53.66",
"rtt": 7.997
}
]
},
{
"type": "hop",
"hop": 13,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "54.239.53.82",
"name": "54.239.53.82",
"rtt": 7.12
},
{
"annotation": null,
"asn": null,
"ip": "54.239.53.82",
"name": "54.239.53.82",
"rtt": 7.126
},
{
"annotation": null,
"asn": null,
"ip": "54.239.53.82",
"name": "54.239.53.82",
"rtt": 7.178
}
]
},
{
"type": "hop",
"hop": 14,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "63.222.51.9",
"name": "63-222-51-9.static.pccwglobal.net",
"rtt": 7.657
},
{
"annotation": null,
"asn": null,
"ip": "63.222.51.9",
"name": "63-222-51-9.static.pccwglobal.net",
"rtt": 7.611
},
{
"annotation": null,
"asn": null,
"ip": "63.222.51.9",
"name": "63-222-51-9.static.pccwglobal.net",
"rtt": 7.669
}
]
},
{
"type": "hop",
"hop": 15,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "63.218.250.169",
"name": "HundredGE0-4-0-3.br02.tok02.pccwbtn.net",
"rtt": 8.13
},
{
"annotation": null,
"asn": null,
"ip": "63.218.250.169",
"name": "HundredGE0-4-0-3.br02.tok02.pccwbtn.net",
"rtt": 8.368
},
{
"annotation": null,
"asn": null,
"ip": "63.218.250.169",
"name": "HundredGE0-4-0-3.br02.tok02.pccwbtn.net",
"rtt": 8.402
}
]
},
{
"type": "hop",
"hop": 16,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "63.218.251.118",
"name": "63-218-251-118.static.pccwglobal.net",
"rtt": 30.511
},
{
"annotation": null,
"asn": null,
"ip": "63.218.251.118",
"name": "63-218-251-118.static.pccwglobal.net",
"rtt": 20.379
},
{
"annotation": null,
"asn": null,
"ip": "63.218.251.118",
"name": "63-218-251-118.static.pccwglobal.net",
"rtt": 20.352
}
]
},
{
"type": "hop",
"hop": 17,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "157.240.40.9",
"name": "po104.psw04.nrt1.tfbnw.net",
"rtt": 8.341
},
{
"annotation": null,
"asn": null,
"ip": "157.240.40.9",
"name": "po104.psw04.nrt1.tfbnw.net",
"rtt": 8.303
},
{
"annotation": null,
"asn": null,
"ip": "157.240.40.9",
"name": "po104.psw04.nrt1.tfbnw.net",
"rtt": 8.312
}
]
},
{
"type": "hop",
"hop": 18,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "173.252.67.191",
"name": "173.252.67.191",
"rtt": 8.298
},
{
"annotation": null,
"asn": null,
"ip": "173.252.67.191",
"name": "173.252.67.191",
"rtt": 8.328
},
{
"annotation": null,
"asn": null,
"ip": "173.252.67.191",
"name": "173.252.67.191",
"rtt": 8.359
}
]
},
{
"type": "hop",
"hop": 19,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "31.13.82.36",
"name": "edge-star-mini-shv-01-nrt1.facebook.com",
"rtt": 8.214
},
{
"annotation": null,
"asn": null,
"ip": "31.13.82.36",
"name": "edge-star-mini-shv-01-nrt1.facebook.com",
"rtt": 8.198
},
{
"annotation": null,
"asn": null,
"ip": "31.13.82.36",
"name": "edge-star-mini-shv-01-nrt1.facebook.com",
"rtt": 8.192
}
]
}
]
+171
View File
@@ -0,0 +1,171 @@
[
{
"type": "header",
"destination_ip": "64.13.192.208",
"destination_name": "example.com",
"max_hops": 64,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "72.10.62.1",
"name": "72.10.62.1",
"rtt": 1.0
},
{
"annotation": null,
"asn": null,
"ip": "72.10.62.1",
"name": "72.10.62.1",
"rtt": 0.739
},
{
"annotation": null,
"asn": null,
"ip": "72.10.62.1",
"name": "72.10.62.1",
"rtt": 0.702
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.101.248.1",
"name": "10.101.248.1",
"rtt": 0.683
},
{
"annotation": null,
"asn": null,
"ip": "10.101.248.1",
"name": "10.101.248.1",
"rtt": 0.385
},
{
"annotation": null,
"asn": null,
"ip": "10.101.248.1",
"name": "10.101.248.1",
"rtt": 0.315
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.104.65.161",
"name": "10.104.65.161",
"rtt": 0.791
},
{
"annotation": null,
"asn": null,
"ip": "10.104.65.161",
"name": "10.104.65.161",
"rtt": 0.703
},
{
"annotation": null,
"asn": null,
"ip": "10.104.65.161",
"name": "10.104.65.161",
"rtt": 0.686
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.104.0.1",
"name": "10.104.0.1",
"rtt": 1.43
},
{
"annotation": null,
"asn": null,
"ip": "10.104.0.1",
"name": "10.104.0.1",
"rtt": 1.31
},
{
"annotation": null,
"asn": null,
"ip": "10.104.0.1",
"name": "10.104.0.1",
"rtt": 1.063
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "10.0.10.33",
"name": "10.0.10.33",
"rtt": 2.652
},
{
"annotation": null,
"asn": null,
"ip": "10.0.10.33",
"name": "10.0.10.33",
"rtt": 2.26
},
{
"annotation": null,
"asn": null,
"ip": "10.0.10.33",
"name": "10.0.10.33",
"rtt": 5.353
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "64.13.192.208",
"name": "www.example.com",
"rtt": 3.384
},
{
"annotation": null,
"asn": null,
"ip": "64.13.192.208",
"name": "www.example.com",
"rtt": 8.001
},
{
"annotation": null,
"asn": null,
"ip": "64.13.192.208",
"name": "www.example.com",
"rtt": 2.439
}
]
}
]
+230
View File
@@ -0,0 +1,230 @@
[
{
"type": "header",
"destination_ip": "104.18.42.178",
"destination_name": "10xhostings.com",
"max_hops": 30,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": []
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 0.894
},
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 0.89
},
{
"annotation": null,
"asn": null,
"ip": null,
"name": null,
"rtt": 0.876
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "204.141.42.25",
"name": "204.141.42.25",
"rtt": 2.818
},
{
"annotation": null,
"asn": null,
"ip": "204.141.42.25",
"name": "204.141.42.25",
"rtt": 2.825
},
{
"annotation": null,
"asn": null,
"ip": "204.141.42.25",
"name": "204.141.42.25",
"rtt": 2.825
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "204.141.42.9",
"name": "204.141.42.9",
"rtt": 1.014
},
{
"annotation": null,
"asn": null,
"ip": "204.141.42.9",
"name": "204.141.42.9",
"rtt": 1.017
},
{
"annotation": null,
"asn": null,
"ip": "204.141.42.9",
"name": "204.141.42.9",
"rtt": 1.082
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "128.241.1.145",
"name": "xe-0-0-46-2.a00.sttlwa01.us.bb.gin.ntt.net",
"rtt": 30.105
},
{
"annotation": null,
"asn": null,
"ip": "128.241.1.145",
"name": "xe-0-0-46-2.a00.sttlwa01.us.bb.gin.ntt.net",
"rtt": 30.125
},
{
"annotation": null,
"asn": null,
"ip": "128.241.1.145",
"name": "xe-0-0-46-2.a00.sttlwa01.us.bb.gin.ntt.net",
"rtt": 30.125
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "129.250.5.117",
"name": "ae-9.r04.sttlwa01.us.bb.gin.ntt.net",
"rtt": 32.346
},
{
"annotation": null,
"asn": null,
"ip": "129.250.5.117",
"name": "ae-9.r04.sttlwa01.us.bb.gin.ntt.net",
"rtt": 31.946
},
{
"annotation": null,
"asn": null,
"ip": "129.250.5.117",
"name": "ae-9.r04.sttlwa01.us.bb.gin.ntt.net",
"rtt": 31.96
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "129.250.5.86",
"name": "ae-0.a01.sttlwa01.us.bb.gin.ntt.net",
"rtt": 32.836
},
{
"annotation": null,
"asn": null,
"ip": "129.250.5.86",
"name": "ae-0.a01.sttlwa01.us.bb.gin.ntt.net",
"rtt": 32.749
},
{
"annotation": null,
"asn": null,
"ip": "129.250.5.86",
"name": "ae-0.a01.sttlwa01.us.bb.gin.ntt.net",
"rtt": 32.743
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "131.103.117.86",
"name": "ae-0.cloudflare.sttlwa01.us.bb.gin.ntt.net",
"rtt": 44.601
},
{
"annotation": null,
"asn": null,
"ip": "131.103.117.86",
"name": "ae-0.cloudflare.sttlwa01.us.bb.gin.ntt.net",
"rtt": 42.886
},
{
"annotation": null,
"asn": null,
"ip": "131.103.117.86",
"name": "ae-0.cloudflare.sttlwa01.us.bb.gin.ntt.net",
"rtt": 42.874
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "104.18.42.178",
"name": "104.18.42.178",
"rtt": 29.614
},
{
"annotation": null,
"asn": null,
"ip": "104.18.42.178",
"name": "104.18.42.178",
"rtt": 29.69
},
{
"annotation": null,
"asn": null,
"ip": "104.18.42.178",
"name": "104.18.42.178",
"rtt": 30.461
}
]
}
]
+438
View File
@@ -0,0 +1,438 @@
[
{
"type": "header",
"destination_ip": "52.22.122.82",
"destination_name": "alexa.com",
"max_hops": 30,
"data_bytes": 40
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "130.185.80.253",
"name": "130.185.80.253",
"rtt": 0.374
},
{
"annotation": null,
"asn": null,
"ip": "130.185.80.253",
"name": "130.185.80.253",
"rtt": 0.474
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "94.46.128.26",
"name": "94.46.128.26",
"rtt": 0.44
},
{
"annotation": null,
"asn": null,
"ip": "94.46.128.26",
"name": "94.46.128.26",
"rtt": 0.457
},
{
"annotation": null,
"asn": null,
"ip": "94.46.128.26",
"name": "94.46.128.26",
"rtt": 0.459
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "80.231.158.49",
"name": "ix-xe-1-3-0-0.tcore1.pv9-lisbon.as6453.net",
"rtt": 0.436
},
{
"annotation": null,
"asn": null,
"ip": "80.231.158.49",
"name": "ix-xe-1-3-0-0.tcore1.pv9-lisbon.as6453.net",
"rtt": 0.436
},
{
"annotation": null,
"asn": null,
"ip": "80.231.158.49",
"name": "ix-xe-1-3-0-0.tcore1.pv9-lisbon.as6453.net",
"rtt": 0.446
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "80.231.158.30",
"name": "if-ae-1-3.tcore1.sv8-highbridge.as6453.net",
"rtt": 100.3
},
{
"annotation": null,
"asn": null,
"ip": "80.231.158.30",
"name": "if-ae-1-3.tcore1.sv8-highbridge.as6453.net",
"rtt": 100.346
},
{
"annotation": null,
"asn": null,
"ip": "80.231.158.30",
"name": "if-ae-1-3.tcore1.sv8-highbridge.as6453.net",
"rtt": 100.362
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "80.231.139.1",
"name": "if-ae-2-2.tcore2.sv8-highbridge.as6453.net",
"rtt": 100.737
},
{
"annotation": null,
"asn": null,
"ip": "80.231.139.1",
"name": "if-ae-2-2.tcore2.sv8-highbridge.as6453.net",
"rtt": 100.787
},
{
"annotation": null,
"asn": null,
"ip": "80.231.139.1",
"name": "if-ae-2-2.tcore2.sv8-highbridge.as6453.net",
"rtt": 100.863
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "80.231.139.42",
"name": "if-ae-11-2.tcore1.l78-london.as6453.net",
"rtt": 94.576
},
{
"annotation": null,
"asn": null,
"ip": "80.231.139.42",
"name": "if-ae-11-2.tcore1.l78-london.as6453.net",
"rtt": 94.647
},
{
"annotation": null,
"asn": null,
"ip": "80.231.139.42",
"name": "if-ae-11-2.tcore1.l78-london.as6453.net",
"rtt": 94.631
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "80.231.130.106",
"name": "if-ae-66-2.tcore2.nto-new-york.as6453.net",
"rtt": 104.775
},
{
"annotation": null,
"asn": null,
"ip": "80.231.130.106",
"name": "if-ae-66-2.tcore2.nto-new-york.as6453.net",
"rtt": 105.059
},
{
"annotation": null,
"asn": null,
"ip": "80.231.130.106",
"name": "if-ae-66-2.tcore2.nto-new-york.as6453.net",
"rtt": 105.146
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "66.110.96.5",
"name": "if-ae-12-2.tcore1.n75-new-york.as6453.net",
"rtt": 100.043
},
{
"annotation": null,
"asn": null,
"ip": "66.110.96.5",
"name": "if-ae-12-2.tcore1.n75-new-york.as6453.net",
"rtt": 100.096
},
{
"annotation": null,
"asn": null,
"ip": "66.110.96.5",
"name": "if-ae-12-2.tcore1.n75-new-york.as6453.net",
"rtt": 100.089
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "66.110.96.157",
"name": "66.110.96.157",
"rtt": 101.514
},
{
"annotation": null,
"asn": null,
"ip": "66.110.96.157",
"name": "66.110.96.157",
"rtt": 101.055
},
{
"annotation": null,
"asn": null,
"ip": "66.110.96.157",
"name": "66.110.96.157",
"rtt": 101.058
}
]
},
{
"type": "hop",
"hop": 10,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.93.31.33",
"name": "52.93.31.33",
"rtt": 100.489
},
{
"annotation": null,
"asn": null,
"ip": "52.93.31.33",
"name": "52.93.31.33",
"rtt": 100.113
},
{
"annotation": null,
"asn": null,
"ip": "52.93.31.33",
"name": "52.93.31.33",
"rtt": 100.065
}
]
},
{
"type": "hop",
"hop": 11,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.93.4.0",
"name": "52.93.4.0",
"rtt": 93.575
},
{
"annotation": null,
"asn": null,
"ip": "52.93.4.0",
"name": "52.93.4.0",
"rtt": 93.473
},
{
"annotation": null,
"asn": null,
"ip": "52.93.4.0",
"name": "52.93.4.0",
"rtt": 93.491
}
]
},
{
"type": "hop",
"hop": 12,
"probes": []
},
{
"type": "hop",
"hop": 13,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "54.240.229.143",
"name": "54.240.229.143",
"rtt": 94.307
},
{
"annotation": null,
"asn": null,
"ip": "54.240.229.143",
"name": "54.240.229.143",
"rtt": 94.732
},
{
"annotation": null,
"asn": null,
"ip": "54.240.229.143",
"name": "54.240.229.143",
"rtt": 94.683
}
]
},
{
"type": "hop",
"hop": 14,
"probes": []
},
{
"type": "hop",
"hop": 15,
"probes": []
},
{
"type": "hop",
"hop": 16,
"probes": []
},
{
"type": "hop",
"hop": 17,
"probes": []
},
{
"type": "hop",
"hop": 18,
"probes": []
},
{
"type": "hop",
"hop": 19,
"probes": []
},
{
"type": "hop",
"hop": 20,
"probes": []
},
{
"type": "hop",
"hop": 21,
"probes": []
},
{
"type": "hop",
"hop": 22,
"probes": []
},
{
"type": "hop",
"hop": 23,
"probes": []
},
{
"type": "hop",
"hop": 24,
"probes": []
},
{
"type": "hop",
"hop": 25,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "52.93.28.172",
"name": "52.93.28.172",
"rtt": 94.27
},
{
"annotation": null,
"asn": null,
"ip": "52.93.28.172",
"name": "52.93.28.172",
"rtt": 94.296
},
{
"annotation": null,
"asn": null,
"ip": "52.93.28.172",
"name": "52.93.28.172",
"rtt": 94.294
}
]
},
{
"type": "hop",
"hop": 26,
"probes": []
},
{
"type": "hop",
"hop": 27,
"probes": []
},
{
"type": "hop",
"hop": 28,
"probes": []
},
{
"type": "hop",
"hop": 29,
"probes": []
},
{
"type": "hop",
"hop": 30,
"probes": []
}
]
+223
View File
@@ -0,0 +1,223 @@
[
{
"type": "header",
"destination_ip": "181.40.91.83",
"destination_name": "paraguay.com",
"max_hops": 64,
"data_bytes": 52
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": 128742,
"ip": "192.168.0.1",
"name": "192.168.0.1",
"rtt": 9.173
},
{
"annotation": null,
"asn": 128742,
"ip": "192.168.0.1",
"name": "192.168.0.1",
"rtt": 5.49
},
{
"annotation": null,
"asn": 128742,
"ip": "192.168.0.1",
"name": "192.168.0.1",
"rtt": 5.197
}
]
},
{
"type": "hop",
"hop": 2,
"probes": []
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "192.168.117.58",
"name": "192.168.117.58",
"rtt": 26.768
},
{
"annotation": null,
"asn": 0,
"ip": "192.168.117.58",
"name": "192.168.117.58",
"rtt": 17.878
},
{
"annotation": null,
"asn": 0,
"ip": "192.168.117.58",
"name": "192.168.117.58",
"rtt": 16.443
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "192.168.15.1",
"name": "192.168.15.1",
"rtt": 16.229
},
{
"annotation": null,
"asn": 0,
"ip": "192.168.15.1",
"name": "192.168.15.1",
"rtt": 23.514
},
{
"annotation": null,
"asn": 0,
"ip": "192.168.15.1",
"name": "192.168.15.1",
"rtt": 16.878
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "91.122.105.27",
"name": "91.122.105.27",
"rtt": 17.825
},
{
"annotation": null,
"asn": 0,
"ip": "91.122.105.27",
"name": "91.122.105.27",
"rtt": 22.906
},
{
"annotation": null,
"asn": 0,
"ip": "91.122.105.27",
"name": "91.122.105.27",
"rtt": 29.003
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "94.142.122.45",
"name": "94.142.122.45",
"rtt": 42.79
},
{
"annotation": null,
"asn": 0,
"ip": "94.142.122.45",
"name": "94.142.122.45",
"rtt": 46.352
},
{
"annotation": null,
"asn": 0,
"ip": "94.142.122.44",
"name": "94.142.122.44",
"rtt": 41.479
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "94.142.124.46",
"name": "94.142.124.46",
"rtt": 62.692
},
{
"annotation": null,
"asn": 0,
"ip": "94.142.124.46",
"name": "94.142.124.46",
"rtt": 44.691
},
{
"annotation": null,
"asn": 0,
"ip": "5.53.0.153",
"name": "5.53.0.153",
"rtt": 61.049
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "181.40.42.30",
"name": "pool-30-42-40-181.telecel.com.py",
"rtt": 65.148
},
{
"annotation": null,
"asn": 0,
"ip": "5.53.0.155",
"name": "5.53.0.155",
"rtt": 65.096
},
{
"annotation": null,
"asn": 0,
"ip": "181.40.42.30",
"name": "pool-30-42-40-181.telecel.com.py",
"rtt": 65.157
}
]
},
{
"type": "hop",
"hop": 9,
"probes": []
},
{
"type": "hop",
"hop": 10,
"probes": []
},
{
"type": "hop",
"hop": 11,
"probes": []
},
{
"type": "hop",
"hop": 12,
"probes": []
}
]
+252
View File
@@ -0,0 +1,252 @@
[
{
"type": "header",
"destination_ip": "2606:4700:3030::6812:3e4e",
"destination_name": "baeldung.com",
"max_hops": 30,
"data_bytes": 80
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:665:0:2:2:0:1",
"name": "2001:2e8:665:0:2:2:0:1",
"rtt": 0.083
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:665:0:2:2:0:1",
"name": "2001:2e8:665:0:2:2:0:1",
"rtt": 0.048
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:665:0:2:2:0:1",
"name": "2001:2e8:665:0:2:2:0:1",
"rtt": 0.044
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:22:204::2",
"name": "2001:2e8:22:204::2",
"rtt": 25.128
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:22:204::2",
"name": "2001:2e8:22:204::2",
"rtt": 25.047
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:22:204::2",
"name": "2001:2e8:22:204::2",
"rtt": 25.025
}
]
},
{
"type": "hop",
"hop": 3,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:20::22:11",
"name": "2001:2e8:20::22:11",
"rtt": 1.106
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:20::22:11",
"name": "2001:2e8:20::22:11",
"rtt": 25.83
},
{
"annotation": null,
"asn": null,
"ip": "2001:2e8:20::22:11",
"name": "2001:2e8:20::22:11",
"rtt": 1.007
}
]
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::305",
"name": "xe-0-0-14-1.a02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 0.908
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::305",
"name": "xe-0-0-14-1.a02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.197
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::305",
"name": "xe-0-0-14-1.a02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.097
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::59",
"name": "ae-25.r02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.515
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::59",
"name": "ae-25.r02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.744
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::59",
"name": "ae-25.r02.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.785
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::11a",
"name": "ae-4.r30.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.466
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::11a",
"name": "ae-4.r30.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.538
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::11a",
"name": "ae-4.r30.tokyjp05.jp.bb.gin.ntt.net",
"rtt": 1.337
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::2d7",
"name": "ae-3.r00.tokyjp08.jp.bb.gin.ntt.net",
"rtt": 1.857
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::2d7",
"name": "ae-3.r00.tokyjp08.jp.bb.gin.ntt.net",
"rtt": 1.839
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:0:2000::2d7",
"name": "ae-3.r00.tokyjp08.jp.bb.gin.ntt.net",
"rtt": 1.901
}
]
},
{
"type": "hop",
"hop": 8,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::26",
"name": "as7515.ntt.net",
"rtt": 2.717
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::26",
"name": "as7515.ntt.net",
"rtt": 2.419
},
{
"annotation": null,
"asn": null,
"ip": "2001:218:2000:5000::26",
"name": "as7515.ntt.net",
"rtt": 2.325
}
]
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2400:cb00:22:1024::a29e:759c",
"name": "2400:cb00:22:1024::a29e:759c",
"rtt": 2.115
},
{
"annotation": null,
"asn": null,
"ip": "2400:cb00:22:1024::a29e:759c",
"name": "2400:cb00:22:1024::a29e:759c",
"rtt": 1.985
},
{
"annotation": null,
"asn": null,
"ip": "2400:cb00:22:1024::a29e:759f",
"name": "2400:cb00:22:1024::a29e:759f",
"rtt": 2.272
}
]
}
]
@@ -0,0 +1,95 @@
[
{
"type": "header",
"destination_ip": "8.8.8.8",
"destination_name": "8.8.8.8",
"max_hops": 4,
"data_bytes": 52
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": 198949,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 6.07
},
{
"annotation": null,
"asn": 198949,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 5.721
},
{
"annotation": null,
"asn": 198949,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 5.269
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": 0,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 160.025
},
{
"annotation": null,
"asn": 0,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 178.69
},
{
"annotation": null,
"asn": 0,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 33.759
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": 7018,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 37.783
},
{
"annotation": null,
"asn": 7018,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 23.782
},
{
"annotation": null,
"asn": 7018,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 24.958
}
]
}
]
@@ -0,0 +1,68 @@
[
{
"type": "header",
"destination_ip": "151.101.129.67",
"destination_name": "cnn.com",
"max_hops": 64,
"data_bytes": 52
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 4.478
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 3.907
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 4.849
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 23.53
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 26.518
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 23.48
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
}
]
@@ -0,0 +1,61 @@
[
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 11.415
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 3.934
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 3.286
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 24.174
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 20.817
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 27.771
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
}
]
+96
View File
@@ -0,0 +1,96 @@
[
{
"type": "header",
"destination_ip": "8.8.8.8",
"destination_name": "8.8.8.8",
"max_hops": 3,
"data_bytes": 52
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 3.317
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 6.373
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 6.967
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 5.299
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 4.605
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 28.829
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 20.073
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 26.238
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 22.052
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 22.519
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
}
]
+208
View File
@@ -0,0 +1,208 @@
[
{
"type": "header",
"destination_ip": "8.8.8.8",
"destination_name": "8.8.8.8",
"max_hops": 64,
"data_bytes": 52
},
{
"type": "hop",
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 12.07
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 4.328
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice",
"rtt": 4.167
}
]
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 20.595
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 26.13
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 28.555
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 149.663
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 27.761
},
{
"annotation": null,
"asn": null,
"ip": "12.122.149.186",
"name": "12.122.149.186",
"rtt": 160.709
}
]
},
{
"type": "hop",
"hop": 5,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 27.131
},
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 160.459
},
{
"annotation": null,
"asn": null,
"ip": "12.122.3.70",
"name": "sffca22crs.ip.att.net",
"rtt": 32.274
}
]
},
{
"type": "hop",
"hop": 6,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 143.143
},
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 27.034
},
{
"annotation": null,
"asn": null,
"ip": "12.122.163.61",
"name": "12.122.163.61",
"rtt": 152.676
}
]
},
{
"type": "hop",
"hop": 7,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "12.255.10.234",
"name": "12.255.10.234",
"rtt": 24.912
},
{
"annotation": null,
"asn": null,
"ip": "12.255.10.234",
"name": "12.255.10.234",
"rtt": 23.802
},
{
"annotation": null,
"asn": null,
"ip": "12.255.10.234",
"name": "12.255.10.234",
"rtt": 157.338
}
]
},
{
"type": "hop",
"hop": 8,
"probes": []
},
{
"type": "hop",
"hop": 9,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "8.8.8.8",
"name": "dns.google",
"rtt": 30.84
},
{
"annotation": null,
"asn": null,
"ip": "8.8.8.8",
"name": "dns.google",
"rtt": 22.503
},
{
"annotation": null,
"asn": null,
"ip": "8.8.8.8",
"name": "dns.google",
"rtt": 23.538
}
]
}
]
@@ -0,0 +1,78 @@
[
{
"type": "header",
"destination_ip": "2a04:4e42:200::323",
"destination_name": "turner-tls.map.fastly.net",
"max_hops": 5,
"data_bytes": 12
},
{
"type": "hop",
"hop": 1,
"probes": []
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 27.635
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 20.383
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 23.438
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.118
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.327
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 21.213
}
]
},
{
"type": "hop",
"hop": 5,
"probes": []
}
]
+78
View File
@@ -0,0 +1,78 @@
[
{
"type": "header",
"destination_ip": "2a04:4e42:200::323",
"destination_name": "turner-tls.map.fastly.net",
"max_hops": 5,
"data_bytes": 12
},
{
"type": "hop",
"hop": 1,
"probes": []
},
{
"type": "hop",
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 27.635
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 20.383
},
{
"annotation": null,
"asn": null,
"ip": "2001:506:6000:11b:71:156:212:143",
"name": null,
"rtt": 23.438
}
]
},
{
"type": "hop",
"hop": 3,
"probes": []
},
{
"type": "hop",
"hop": 4,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.118
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 20.327
},
{
"annotation": null,
"asn": null,
"ip": "2001:1890:ff:ff08:12:242:117:16",
"name": null,
"rtt": 21.213
}
]
},
{
"type": "hop",
"hop": 5,
"probes": []
}
]
+7 -8
View File
@@ -72,6 +72,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.out'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv6 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-long-ipv6.out'), 'r', encoding='utf-8') as f:
generic_traceroute_long_ipv6 = f.read()
# output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.json'), 'r', encoding='utf-8') as f:
@@ -137,6 +140,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.json'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv6_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-long-ipv6.json'), 'r', encoding='utf-8') as f:
generic_traceroute_long_ipv6_json = json.loads(f.read())
def test_traceroute_nodata(self):
"""
@@ -274,14 +280,7 @@ class MyTests(unittest.TestCase):
"""
Test 'traceroute6' with a long ipv6 response
"""
data = '''traceroute6 to turner-tls.map.fastly.net (2a04:4e42:200::323) from 2600:1700:bab0:d40:985:f00a:98bd:f142, 5 hops max, 12 byte packets
1 * * *
2 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 27.635 ms 20.383 ms 23.438 ms
3 * * *
4 2001:1890:ff:ff08:12:242:117:16 20.118 ms 20.327 ms 21.213 ms
5 * * *'''
expected = json.loads('''{"destination_ip":"2a04:4e42:200::323","destination_name":"turner-tls.map.fastly.net","hops":[{"hop":1,"probes":[]},{"hop":2,"probes":[{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":27.635},{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":20.383},{"annotation":null,"asn":null,"ip":null,"name":null,"rtt":23.438}]},{"hop":3,"probes":[]},{"hop":4,"probes":[{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":20.118},{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":20.327},{"annotation":null,"asn":null,"ip":"2001:1890:ff:ff08:12:242:117:16","name":null,"rtt":21.213}]},{"hop":5,"probes":[]}]}''')
self.assertEqual(jc.parsers.traceroute.parse(data, quiet=True), expected)
self.assertEqual(jc.parsers.traceroute.parse(self.generic_traceroute_long_ipv6, quiet=True), self.generic_traceroute_long_ipv6_json)
if __name__ == '__main__':
+287
View File
@@ -0,0 +1,287 @@
import os
import unittest
import json
import jc.parsers.traceroute_s
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class MyTests(unittest.TestCase):
# input
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute.out'), 'r', encoding='utf-8') as f:
centos_7_7_traceroute = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_noheader = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_asn = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_mult_addresses = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_q = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute6_mult_addresses = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6.out'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute6 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute.out'), 'r', encoding='utf-8') as f:
freebsd12_traceroute = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6.out'), 'r', encoding='utf-8') as f:
freebsd12_traceroute6 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1.out'), 'r', encoding='utf-8') as f:
generic_traceroute1 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2.out'), 'r', encoding='utf-8') as f:
generic_traceroute2 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3.out'), 'r', encoding='utf-8') as f:
generic_traceroute3 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4.out'), 'r', encoding='utf-8') as f:
generic_traceroute4 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5.out'), 'r', encoding='utf-8') as f:
generic_traceroute5 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6.out'), 'r', encoding='utf-8') as f:
generic_traceroute6 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7.out'), 'r', encoding='utf-8') as f:
generic_traceroute7 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8.out'), 'r', encoding='utf-8') as f:
generic_traceroute8 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4.out'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv4 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4.out'), 'r', encoding='utf-8') as f:
generic_traceroute_n_q1_ipv4 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6.out'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv6 = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-long-ipv6.out'), 'r', encoding='utf-8') as f:
generic_traceroute_long_ipv6 = f.read()
# output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-no-header-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_no_header_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/traceroute-streaming.json'), 'r', encoding='utf-8') as f:
centos_7_7_traceroute_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-asn-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_asn_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-mult-addresses-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_mult_addresses_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-q-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_q_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-mult-addresses-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute6_mult_addresses_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/osx-10.14.6/traceroute6-streaming.json'), 'r', encoding='utf-8') as f:
osx_10_14_6_traceroute6_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute-streaming.json'), 'r', encoding='utf-8') as f:
freebsd12_traceroute_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/traceroute6-streaming.json'), 'r', encoding='utf-8') as f:
freebsd12_traceroute6_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute1-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute1_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute2-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute2_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute3-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute3_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute4-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute4_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute5-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute5_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute6-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute6_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute7-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute7_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute8-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute8_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv4-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv4_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-q1-ipv4-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute_n_q1_ipv4_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-n-ipv6-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute_n_ipv6_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/traceroute-long-ipv6-streaming.json'), 'r', encoding='utf-8') as f:
generic_traceroute_long_ipv6_json = json.loads(f.read())
def test_traceroute_s_nodata(self):
"""
Test 'traceroute' with no data
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse([], quiet=True)), [])
def test_traceroute_s_noheader(self):
"""
Test 'traceroute' with missing header row
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute_noheader.splitlines(), quiet=True)), self.osx_10_14_6_traceroute_no_header_json)
def test_traceroute_s_centos_7_7(self):
"""
Test 'traceroute' on Centos 7.7
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.centos_7_7_traceroute.splitlines(), quiet=True)), self.centos_7_7_traceroute_json)
def test_traceroute_s_a_osx_10_14_6(self):
"""
Test 'traceroute -a' on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute_asn.splitlines(), quiet=True)), self.osx_10_14_6_traceroute_asn_json)
def test_traceroute_s_mult_addresses_osx_10_14_6(self):
"""
Test 'traceroute' with multiple addresses returned via dns on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute_mult_addresses.splitlines(), quiet=True)), self.osx_10_14_6_traceroute_mult_addresses_json)
def test_traceroute_s_q_osx_10_14_6(self):
"""
Test 'traceroute -q' on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute_q.splitlines(), quiet=True)), self.osx_10_14_6_traceroute_q_json)
def test_traceroute_s_osx_10_14_6(self):
"""
Test 'traceroute' on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute.splitlines(), quiet=True)), self.osx_10_14_6_traceroute_json)
def test_traceroute_s6_mult_addresses_osx_10_14_6(self):
"""
Test 'traceroute6' with multiple addresses returned via dns on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute6_mult_addresses.splitlines(), quiet=True)), self.osx_10_14_6_traceroute6_mult_addresses_json)
def test_traceroute_s6_osx_10_14_6(self):
"""
Test 'traceroute6' on OSX 10.14.6
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.osx_10_14_6_traceroute6.splitlines(), quiet=True)), self.osx_10_14_6_traceroute6_json)
def test_traceroute_s_freebsd12(self):
"""
Test 'traceroute' on freebsd12
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.freebsd12_traceroute.splitlines(), quiet=True)), self.freebsd12_traceroute_json)
def test_traceroute_s6_freebsd12(self):
"""
Test 'traceroute6' on freebsd12
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.freebsd12_traceroute6.splitlines(), quiet=True)), self.freebsd12_traceroute6_json)
def test_traceroute_s1_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute1.splitlines(), quiet=True)), self.generic_traceroute1_json)
def test_traceroute_s2_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute2.splitlines(), quiet=True)), self.generic_traceroute2_json)
def test_traceroute_s3_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute3.splitlines(), quiet=True)), self.generic_traceroute3_json)
def test_traceroute_s4_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute4.splitlines(), quiet=True)), self.generic_traceroute4_json)
def test_traceroute_s5_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute5.splitlines(), quiet=True)), self.generic_traceroute5_json)
def test_traceroute_s6_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute6.splitlines(), quiet=True)), self.generic_traceroute6_json)
def test_traceroute_s7_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute7.splitlines(), quiet=True)), self.generic_traceroute7_json)
def test_traceroute_s8_generic(self):
"""
Test 'traceroute'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute8.splitlines(), quiet=True)), self.generic_traceroute8_json)
def test_traceroute_s_n_ipv4(self):
"""
Test 'traceroute -n x.x.x.x'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute_n_ipv4.splitlines(), quiet=True)), self.generic_traceroute_n_ipv4_json)
def test_traceroute_s_n_q1_ipv4(self):
"""
Test 'traceroute -q1 -n x.x.x.x'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute_n_q1_ipv4.splitlines(), quiet=True)), self.generic_traceroute_n_q1_ipv4_json)
def test_traceroute_s_n_ipv6(self):
"""
Test 'traceroute6 -n x::x'
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute_n_ipv6.splitlines(), quiet=True)), self.generic_traceroute_n_ipv6_json)
def test_traceroute_s_long_ipv6(self):
"""
Test 'traceroute6' with a long ipv6 response
"""
self.assertEqual(list(jc.parsers.traceroute_s.parse(self.generic_traceroute_long_ipv6.splitlines(), quiet=True)), self.generic_traceroute_long_ipv6_json)
if __name__ == '__main__':
unittest.main()