| ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.2 Types of Bandwidth Estimation ToolsBandwidth estimation tools are of two primary types:
1.2.1 Rationale for Testing Sender Based ToolsSender based tools will be tested on the 20-node testbed listed in Table 2. Specific strategies for testing these tools have not yet been developed. 1.2.2 Rationale for Testing Sender-Receiver Based ToolsSender-Receiver type tools require access to both the source and destination of each path. Sender-Receiver based tools will be tested on the 5-node testbed listed in Table 3. Testing is comprised of global and local runs. A global run is composed of a complete set of local runs, exactly one for each distinct source-destination pair. A local run is one single execution of the tool on an individual source-destination pair. The state of a global run indicates which destination hosts have been tested from this source so far, and which ones still need to be tested. Tests are run as follows: runPathrate.pl starts on a source host by parsing its global run state, which is a list of all of its destination hosts, each indicating whether its local run has completed. runPathrate.pl cycles though the list to find the next host showing not yet complete. and a local run is launched for that destination. Upon completion, runPathrate.pl updates the global run state, and again finds the next host on which to launch a local run. Whenever a global run completes, a new global run is initiated. The 5 machines in this testbed have 20 distinct source and destination path pairs. However, because underlying WAN routing changes frequently, many more than 20 physical links may occur on these paths.1 Therefore, historical information about changes in the underlying physical links will be gathered for correlation with bandwidth test estimation results. In order to track changes in paths, each testbed host probes every other testbed host once every 3 minutes, using traceroute. To facilitate synchronization and minimize traffic load, a script trace.pl manages both this probing as well as tool operation for the entire testbed. Tools are tested in a continuous manner and their output is stored on the file system of the Sender host for later collection into a centralized analysis server. 1.2.3 AnalysisAnalysis involves:
1.3 Storing Results: a Database ApproachSeveral reasons suggest the use of a database to manage bandwidth tool testbed data:
Using a database enables consistent data storage, yet it is also possible to refine data schema organization in response to evolving criteria. The database also facilitates timestamping information when it is collected, while also indicating for what time period it is valid. For example: Consider the case where an ISP sends information on 3-Mar-2002 noting that a particular physical link was upgraded on 28-Feb-2002, and that another upgrade will be made on 5-Aug-2002. In this case, the information receipt is 3-Mar-2002, and its valid time period is from 28-Feb-2002 through 5-Aug-2002. This project initially utilizes the mySQL relational database. Therefore, data is stored in tables organized according to an Entity/Relationship (E/R) data structure or schema. Measurements made by bandwidth estimation tools are stored separately (in different tables) from information provided by ISPs. There is one case where assumptions must be made about data from traceroute probes. traceroute provides a list of component hop IP addresses, but does not provide any information about the underlying routers and their interface configurations. When links not already in the database are probed, new nodes and interfaces must be created. Consecutive addresses A and B returned by traceroute are assumed to belong to two distinct nodes. However, there is no way to know how many interfaces exist at either node. If Node A has only one interface and Node B has two interfaces, the other interface at Node B that is not traversed by traceroute will be hidden.2 This known error does not preclude the database from being useful for the purpose of evaluating bandwidth estimation tools. However, a different level of confidence must be given. 1.4 Draft Database DesignThe database organizes:
A conceptual design of the database is shown in Figures 1, 2, and 3. In these figures, boxes represent mySQL tables, while lines and arrows represent relationships between tables. For a 1tomany relationship, a single bar indicates the '1' side while the 'crow's foot' shows the many side. Appendix A shows the complete SQL code to generate the database.
1.5 Database EntitiesRelevant topology data is stored in database entities. Entities include:
1.5.1 Interfacing with the Database: links.plWhile mySQL commands may be used to access to database tables, links.pl is Perl frontend encapsulating more project specific database functions. These Perl commands may be issued either from the Unix command line or via a stored script. Required links.pl commands:
2 Bandwidth Estimation Testbed Control InfrastructureA simple and controllable method for starting jobs at the testbed hosts is required. While ssh is sufficient for some things, several difficulties need to be addressed:
2.1 Central Job Control MachineA central job control machine collects the data from the various testbed hosts. rsync4 is used to synchronize data collection. In addition, rsync manages distribution of testbed code. Each testbed host contains the following filesystem directories and sub-directories whose contents are periodically fetched back to the central job control machine using rsync:
2.2 Individual Testbed Host OperationEach machine in the testbed runs Perl server server.pl, to do the following:
2.3 Job Control ToolsetThe testbed/common directory on testbed hosts as well as the local rsync mirror on the central job control machine contains the following Perl tools:
2.4 Using the Testbedclient.pl implements the following commands:
3 Results to Date3.1 Bandwidth Estimation Tools Installedpathrate has been installed on five testbed hosts. 3.2 Physical Topology Data CollectionInformation supplied by 18 ISP contacts has been input into the database. 4 Next Steps4.1 Refine DatabaseSignificant testing and refinements of the database is planned. 4.2 Collect Data for all ToolsData collection for additional tools is planned. 4.3 Analyze DataThe output of different bandwidth estimation tools must be parsed, and resulted compared and interpreted.4.4 Maintain Physical Topology DataCurrent knowledge about the physical topology is not complete, and information provided by ISPs needs to be maintained. 4.5 Stefano's Work PlanWhile I plan to continue work on this project, I will not be able to work on it full time, due to responsibilities of classes and other projects. I will try to get some results by January. I will start collecting data for all the rest of the tools. I also need to parse tool outputs and generalize the runPathrate.pl script. I also need to develop a report for presenting physical link information stored in the database. 5 Appendix A: Database SQL structureThe following SQL code was obtained with the command mysqldump.
# MySQL dump 8.14
#
# Host: localhost Database: BWtestbed
#--------------------------------------------------------
# Server version 3.23.38
#
# Table structure for table 'AS'
#
CREATE TABLE ASinfo (
ASnum int(10) unsigned NOT NULL default '0',
ASname varchar(32) default NULL,
BGPtbl varchar(64) default NULL,
BGPtblDate datetime NOT NULL default '0000-00-00 00:00:00'
) TYPE=MyISAM;
#
# Table structure for table 'BWtool'
#
CREATE TABLE BWtool (
srcIP int(10) unsigned NOT NULL default '0',
dstIP int(10) unsigned NOT NULL default '0',
value float(16,4) default NULL,
BWtimestamp datetime NOT NULL default '0000-00-00 00:00:00'
) TYPE=MyISAM;
#
# Table structure for table 'IPmap'
#
CREATE TABLE IPmap (
IP int(10) unsigned NOT NULL default '0',
ASnum int(10) unsigned NOT NULL default '0',
IPname varchar(64) default NULL,
timestamp datetime NOT NULL default '0000-00-00 00:00:00'
) TYPE=MyISAM;
#
# Table structure for table 'ISPcontact'
#
CREATE TABLE ISPcontact (
ISPinfoID int(8) NOT NULL default '0',
rcvDate datetime default NULL,
contact varchar(64) default NULL,
email varchar(64) default NULL,
phone varchar(64) default NULL,
ISP varchar(32) default NULL
) TYPE=MyISAM;
#
# Table structure for table 'Iface'
#
CREATE TABLE Iface (
ifaceID int(8) NOT NULL default '0',
IfaceIP int(10) unsigned NOT NULL default '0',
IfaceName varchar(64) default NULL,
IfaceType varchar(16) default NULL,
IDby varchar(16) default NULL
) TYPE=MyISAM;
#
# Table structure for table 'IfaceTime'
#
CREATE TABLE IfaceTime (
IfaceID int(8) NOT NULL default '0',
startDate datetime default NULL,
endDate datetime default NULL,
ISPinfoID int(8) default NULL
) TYPE=MyISAM;
#
# Table structure for table 'pathPart'
#
CREATE TABLE pathPart (
probeID int(8) NOT NULL default '0',
hopIP int(10) unsigned NOT NULL default '0',
hopNum tinyint(4) NOT NULL default '0',
hopName varchar(64) default NULL
) TYPE=MyISAM;
#
# Table structure for table 'physLink'
#
CREATE TABLE physLink (
physLinkID int(8) NOT NULL default '0',
linkName varchar(16) default NULL,
srcIP int(10) unsigned NOT NULL default '0',
srcIfaceID int(8) default NULL,
dstIP int(10) unsigned NOT NULL default '0',
dstIfaceID int(8) default NULL,
bandwidth float default NULL,
bwUnit enum('bps','Kbps','Mbps','Gbps','Tbps') default NULL
) TYPE=MyISAM;
#
# Table structure for table 'tracerouteProbe'
#
CREATE TABLE tracerouteProbe (
probeID int(8) NOT NULL default '0',
srcIP int(10) unsigned NOT NULL default '0',
dstIP int(10) unsigned NOT NULL default '0',
pathLength tinyint(4) NOT NULL default '0',
status enum('complete','incomplete','noreply') default NULL,
probeTimestamp datetime NOT NULL default '0000-00-00 00:00:00'
) TYPE=MyISAM;
Footnotes:1During the past 3 months, several hundred distinct links have been observed on the 20 path pairs. 2See the slides for an illustrated example. 3http://www.caida.org/tools/measurement/iffinder/ 4See: http://samba.anu.edu.au/rsync/
5This is similar to the output of a Perl script that parses skitter data. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() Cooperative Association for Internet Data Analysis (CAIDA) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||