This page contains tools to build a network playbook using different BGP configurations in Peering testbed. We also include parser tools to parse attack data and the data generated to build the playbook.
Added readmes.
Fixed bug in load_parser and added sample output file.
Added parsing tool for hitlist.
First public release at ANT.
This page contains tools related to our experiments in Peering testbed. The other datasets and tools are available in the following links:
This page contains tools to build a network playbook using different BGP configurations in Peering testbed. We also include parser tools to parse attack data and the data generated to build the playbook.
We provide the following tools to build the network playbook, and parse data.
playbook_builder
: This program makes different BGP announcements automatically to build the playbook.load_parser
: Parses a directory with positive and negative prepending to find the catchment and load distribution.ParsingLoad
: Parses a single directory to find catchment and load distribution.TimeBasedPrefixLoad
: Parses root traffic to get time based load for each prefix.AnycastSiteLoad
: Parses the generated output from TimeBasedPrefixLoad program to get time based anycast site load.getting_hitlist_ips
: Parses raw hitlist file to generate responsive IPs.This program will automatically announce different routing configurations from the anycast sites, run ping measurements, and capture the packet traces for each site. We provide the script for Peering testbed. But it can be used for other anycast platforms (with a change in the connection setup). This tool requires root access, and access to the peering testbed. This program requires verfploeter/pinger tool to make the ping measurement. This program also requires a recent hitlist that can be requested using the ANT dataset page.
This script takes input about the data sources, parses captured pcap traces
for different routing options (both positive and negative prepending), and
generates catchment distribution. This script goes over different prepending
options and parses them. This script utilizes ParsingLoad.jar to complete a
measurement with a specific routing configuration. This script requires a hitlist
and a load file for the measurement. Users who are not interested with the
load distribution, can just use the dummy load file that we provided with the
software tool. One needs to use the hitlist that one used for their Verfploeter
measurement. We provide such a hitlist in our dataset page.
We also include a sample output file named all-2020-02-24-load-2020-02-22.txt
.
This program takes inputs about a specific routing configuration, parses the pcap files and a load file to generate the catchment and load distribution. This program is dependent on pingextract to translate the pcap files into .dat files.
This code takes inputs about the traffic, server IPs, and the generates the load in number of packets and bytes in every 5s. The generated outputs represent time-based load. This tool requires DNS traces files. We provide this dataset in our dataset page. We used traces in message question format. We provide the DNS traces for attack events. We used this tool to convert the attack traces into an intermediate format.
This code takes 6 mandatory inputs about anycast and load. It generates the per site load in every 5 seconds. This program is also dependent on the generated dat file by load_parser or ParsingLoad program. This program is also dependent on the outputs generated by TimeBasedPrefixLoad program. This tool currently generates the per site load, and it shows the unknown and multiple catchments in separate columns.
This code takes a raw hitlist file and parses it to generate a list of responsive IPs.
playbook_builder [--numbers
=NO_OF_SITES] [--sites
=SITE_LIST] [--prefix
=ANNOUNCED_PREFIX] [--peering
=PEERING_DIRECTORY]
[--dest
=DEST_DIRECTORY] [--pinger
=PINGER_DIR] [--source
=PINGER_SOURCE_ADDRESS] [options]
load_parser [--numbers
=NO_OF_SITES] [--sites
=SITE_LIST] [--dir
=DATA_DIR_BASE] [--date
=EXPERIMENT_DATE] [--load
=LOAD_FILE_DIR] [--ldate
=LOAD_DATE] [--hitlist
=HITLIST_FILE_DIR]
java -jar ParsingLoad.jar [NO_OF_SITES] [SITE_LIST] [DATA_DIR_BASE] [OUTPUT_DIR] [EXPERIMENT_DATE] [LOAD_FILE_DIR] [LOAD_DATE] [HITLIST_DIR]
cat [TIMESTAMP] [SOURCE] [DATA_LENGTH] |
java -jar TimeBasedPrefixLoad.java [DESTINATION_DIR] [SERVER_IPs] [START_TIMESTAMP] [END_TIMESTAMP]
java -jar AnycastSiteLoad.java [NO_OF_SITES] [SITE_LIST] [CATCHMENT_DIR] [CATCHMENT_DATE] [LOAD_DIRECTORY] [LOAD_DATE]
bzcat [RAW_HITLIST] | ./getting_hitlist_ips [OUTPUT_FILE] |
--numbers
=Number of anycast sites--sites
=List of sites--prefix
=Routing prefix--peering
=Directory for Peering--dest
=Destination to keep the captured files--pinger
=pinger directory--source
=source address--help
=Prints help information--interface
=Interface to be used by pinger--forward
=IP to forward traffic--forward
=IP listload_parser [--numbers
=NO_OF_SITES] [--sites
=SITE_LIST] [--dir
=DATA_DIR_BASE] [--date
=EXPERIMENT_DATE] [--load
=LOAD_FILE_DIR] [--ldate
=LOAD_DATE] [``–]
--numbers
=NO_OF_SITES--sites
=SITE_LIST--dir
=DATA_DIR_BASE--date
=EXPERIMENT_DATE--load
=LOAD_FILE_DIR--ldate
=LOAD_DATE--hitlist
=HITLISTStandard input: TIMESTAMP
=TIMESTAMP element of the trafficStandard input: SOURCE
=Source IP element of the trafficStandard input: DATA_LENGTH
=Message length element of the trafficDESTINATION_DIR
=Destination where TimeBasedPrefixLoad writes the outputSERVER_IPs
=Server IPs for the root DNS serverSTART_TIMESTAMP
=TIMESTAMP to start the measurementEND_TIMESTAMP
=TIMESTAMP to end the measurementNO_OF_SITES
=NO_OF_SITES in the anycast network.SITE_LIST
=SITE_LISTCATCHMENT_DIR
=CATCHMENT_DIRCATCHMENT_DATE
=EXPERIMENT_DATELOAD_DIRECTORY
=LOAD_FILE_DIRLOAD_DATE
=LOAD_DATERAW_HITLIST
=RAW_HITLIST_FILEOUTPUT_FILE
=OUTPUT_HITLIST_FILEThe detailed examples can be found in our artifact appendix.
./playbook_builder --numbers=3 --sites=AMS,BOS,CNF --prefix=172.20.10.0/24 --peering=/nfs/peering/ --dest=/nfs/dest/ --pinger=PINGER_DIR --source=184.164.238.3
./load_parser --numbers=3 --sites=BOS,SLC,SEA2 --dir=/Path_Prepending_BOS,SLC,SEA2_2020-02-28-HITLIST_20191127/ --date=2020-02-28 --load=/broot/loads/ --ldate=2022-02-06
java -jar ParsingLoad.jar 3 BOS,SLC,SEA2 /Path_Prepending_BOS,SLC,SEA2_2020-02-28-HITLIST_20191127/2020-02-28-BOS,SLC,SEA2-BOS1/ /Path_Prepending_BOS,SLC,SEA2_2020-02-28-HITLIST_20191127/2020-02-28-BOS,SLC,SEA2-BOS1/ 2020-02-28 /broot/loads/ 2022-02-06 ip_list_20191127.txt
xzcat /B_Root_Anomaly_message_question-20210528/28/20210528-01{0,1,2,3}* | dbcol time srcip msglen |
java -jar TimeBasedPrefixLoad.jar /Load_attacks/load-test/ 199.9.14.182,192.228.79.143,2001:500:200::b,2001:500:84::b 1622163610.820339 1622165410.820339
java -jar AnycastSiteLoad.jar 3 BOS,ATL,MSN /Path_Prepending_BOS,ATL,MSN_2020-05-29-HITLIST_20191127/2020-05-29-BOS,ATL,MSN/ 2020-05-29
/Load_attacks/load-test/ 2021-05-28
.bzcat internet_address_hitlist_it88w-20191127.fsdb.bz2 | ./getting_hitlist_ips ip_list_20191127.txt