Merge remote-tracking branch 'git.irl/Ilya'
diff --git a/examples/abilene-topology-backup.txt b/examples/abilene-topology-backup.txt
new file mode 100644
index 0000000..f4f1d43
--- /dev/null
+++ b/examples/abilene-topology-backup.txt
@@ -0,0 +1,31 @@
+12 30
+1 2 9920000 1 1 100 100
+2 1 9920000 1 1 100 100
+2 5 9920000 1176 1 100 100
+2 6 2480000 587 1 100 100
+2 12 9920000 846 1 100 100
+3 6 9920000 260 1 100 100
+3 9 9920000 700 1 100 100
+4 7 9920000 639 1 100 100
+4 10 9920000 1295 1 100 100
+4 11 9920000 2095 1 100 100
+5 2 9920000 1176 1 100 100
+5 7 9920000 902 1 100 100
+5 8 9920000 1893 1 100 100
+6 2 9920000 587 1 100 100
+6 3 2480000 260 1 100 100
+6 7 9920000 548 1 100 100
+7 4 9920000 639 1 100 100
+7 5 9920000 902 1 100 100
+7 6 9920000 548 1 100 100
+8 5 9920000 1893 1 100 100
+8 10 9920000 366 1 100 100
+9 3 9920000 700 1 100 100
+9 12 9920000 233 1 100 100
+10 4 9920000 1295 1 100 100
+10 8 9920000 366 1 100 100
+10 11 9920000 861 1 100 100
+11 4 9920000 2095 1 100 100
+11 10 9920000 861 1 100 100
+12 2 9920000 846 1 100 100
+12 9 9920000 233 1 100 100
diff --git a/examples/abilene-topology.cc b/examples/abilene-topology.cc
new file mode 100644
index 0000000..836759f
--- /dev/null
+++ b/examples/abilene-topology.cc
@@ -0,0 +1,107 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+
+#include <iostream>
+#include <sstream>
+#include "ns3/visualizer-module.h"
+#include "ns3/annotated-topology-reader.h"
+
+using namespace ns3;
+using namespace std;
+
+NS_LOG_COMPONENT_DEFINE ("CcnxAbileneTopology");
+
+int
+main (int argc, char *argv[])
+{
+ //GlobalValue::Bind ("SimulatorImplementationType", StringValue ("ns3::VisualSimulatorImpl"));
+ Packet::EnableChecking();
+ Packet::EnablePrinting();
+ string input ("./src/NDNabstraction/examples/abilene-topology.txt");
+
+ CommandLine cmd;
+ cmd.Parse (argc, argv);
+
+ // ------------------------------------------------------------
+ // -- Read topology data.
+ // --------------------------------------------
+
+ Ptr<AnnotatedTopologyReader> reader = CreateObject<AnnotatedTopologyReader> ();
+ reader->SetFileName (input);
+
+ NodeContainer nodes;
+ if (reader != 0)
+ {
+ nodes = reader->Read ();
+ }
+
+ if (reader->LinksSize () == 0)
+ {
+ NS_LOG_ERROR ("Problems reading the topology file. Failing.");
+ return -1;
+ }
+
+ NS_LOG_INFO("Nodes = " << nodes.GetN());
+ NS_LOG_INFO("Links = " << reader->LinksSize ());
+
+ int totlinks = reader->LinksSize ();
+ ///*** applying settings
+ NS_LOG_INFO ("creating node containers");
+ NodeContainer* nc = new NodeContainer[totlinks];
+ TopologyReader::ConstLinksIterator iter;
+ int i = 0;
+ for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
+ {
+ nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
+ }
+
+ NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
+ reader->ApplySettings(ndc,nc);
+ reader->BoundingBox(nc, 100.0, 100.0, 400.0,400.0);
+
+
+ // Install CCNx stack
+ NS_LOG_INFO ("Installing CCNx stack");
+ CcnxStackHelper ccnxHelper(Ccnx::NDN_FLOODING);
+ ccnxHelper.InstallAll ();
+
+ NS_LOG_INFO ("Installing Applications");
+ CcnxConsumerHelper consumerHelper ("preved");
+ ApplicationContainer consumers = consumerHelper.Install (nc[0]);
+
+ consumers.Start (Seconds (0));
+ consumers.Stop (Seconds (20));
+
+
+ Simulator::Stop (Seconds (20));
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+ return 0;
+}
\ No newline at end of file
diff --git a/examples/abilene-topology.txt b/examples/abilene-topology.txt
new file mode 100644
index 0000000..0eeb3f7
--- /dev/null
+++ b/examples/abilene-topology.txt
@@ -0,0 +1,16 @@
+12 15
+1 2 9920000 1 1 100 100
+2 5 9920000 1176 1 100 100
+2 6 2480000 587 1 100 100
+2 12 9920000 846 1 100 100
+3 6 9920000 260 1 100 100
+3 9 9920000 700 1 100 100
+4 7 9920000 639 1 100 100
+4 10 9920000 1295 1 100 100
+4 11 9920000 2095 1 100 100
+5 7 9920000 902 1 100 100
+5 8 9920000 1893 1 100 100
+6 7 9920000 548 1 100 100
+8 10 9920000 366 1 100 100
+9 12 9920000 233 1 100 100
+10 11 9920000 861 1 100 100
diff --git a/examples/ccnx-grid.cc b/examples/ccnx-grid.cc
index 1ef2cfb..51d7858 100644
--- a/examples/ccnx-grid.cc
+++ b/examples/ccnx-grid.cc
@@ -79,7 +79,7 @@
cmd.AddValue ("netanim", "NetAnim filename", animationFile);
cmd.AddValue ("strategy", "CCNx forwarding strategy", strategy);
cmd.Parse (argc, argv);
-
+
PointToPointHelper p2p;
InternetStackHelper stack;
@@ -129,14 +129,14 @@
// producers.Stop(finishTime);
Simulator::Schedule (Seconds (1.0), PrintFIBs);
-
+
Simulator::Schedule (Seconds (10.0), PrintTime);
// NS_LOG_INFO ("FIB dump:\n" << *c.Get(0)->GetObject<CcnxFib> ());
// NS_LOG_INFO ("FIB dump:\n" << *c.Get(1)->GetObject<CcnxFib> ());
Simulator::Stop (finishTime);
-
+
AnimationInterface *anim = 0;
if (animationFile != "")
{
@@ -148,7 +148,7 @@
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done!");
-
+
if (anim != 0)
delete anim;
diff --git a/examples/sprint-topology.cc b/examples/sprint-topology.cc
new file mode 100644
index 0000000..6bcc2bf
--- /dev/null
+++ b/examples/sprint-topology.cc
@@ -0,0 +1,87 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+
+#include <iostream>
+#include <sstream>
+#include "ns3/visualizer-module.h"
+#include "ns3/rocketfuel-topology-reader.h"
+
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("CcnxSprintTopology");
+
+int
+main (int argc, char *argv[])
+{
+ Packet::EnableChecking();
+ Packet::EnablePrinting();
+ std::string input ("./src/NDNabstraction/examples/sprint.weights");
+
+ // ------------------------------------------------------------
+ // -- Read topology data.
+ // --------------------------------------------
+
+ Ptr<RocketfuelWeightsReader> reader = CreateObject<RocketfuelWeightsReader> ();
+ reader->SetFileName (input);
+
+ NodeContainer nodes;
+ if (reader != 0)
+ {
+ nodes = reader->Read ();
+ }
+
+ if (reader->LinksSize () == 0)
+ {
+ NS_LOG_ERROR ("Problems reading the topology file. Failing.");
+ return -1;
+ }
+
+ NS_LOG_INFO("Nodes = " << nodes.GetN());
+ NS_LOG_INFO("Links = " << reader->LinksSize ());
+
+ int totlinks = reader->LinksSize ();
+ ///*** applying settings
+ NS_LOG_INFO ("creating node containers");
+ NodeContainer* nc = new NodeContainer[totlinks];
+ TopologyReader::ConstLinksIterator iter;
+ int i = 0;
+ for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
+ {
+ nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
+ }
+
+ NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
+ reader->ApplySettings(ndc,nc);
+
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+ return 0;
+}
\ No newline at end of file
diff --git a/examples/sprint.weights b/examples/sprint.weights
new file mode 100644
index 0000000..2e343a8
--- /dev/null
+++ b/examples/sprint.weights
@@ -0,0 +1,1944 @@
+San+Jose,+CA4062 Anaheim,+CA4101 2.5
+San+Jose,+CA4062 San+Jose,+CA4119 2
+San+Jose,+CA4062 Tacoma,+WA3251 6.5
+San+Jose,+CA4062 Relay,+MD4110 8
+San+Jose,+CA4062 Anaheim,+CA4099 8.5
+San+Jose,+CA4062 San+Jose,+CA4112 2
+San+Jose,+CA4062 San+Jose,+CA6742 4
+San+Jose,+CA4062 San+Jose,+CA4095 2
+San+Jose,+CA4062 San+Jose,+CA6405 2
+San+Jose,+CA4062 San+Jose,+CA4132 4
+San+Jose,+CA4062 Chicago,+IL4037 9
+Anaheim,+CA6490 Anaheim,+CA4101 2
+Anaheim,+CA6490 Anaheim,+CA4099 8
+Manasquan,+NJ4086 New+York,+NY4088 4.5
+Manasquan,+NJ4086 Copenhagen4038 3
+Manasquan,+NJ4086 Manasquan,+NJ4047 2
+Manasquan,+NJ4086 Relay,+MD4110 4
+Anaheim,+CA6564 Anaheim,+CA4099 8
+Anaheim,+CA6564 Anaheim,+CA4101 2
+Anaheim,+CA6564 Anaheim,+CA4031 2
+Anaheim,+CA6564 Anaheim,+CA4073 3
+Anaheim,+CA6564 Anaheim,+CA6721 2
+Anaheim,+CA6564 Anaheim,+CA4100 2
+Dallas,+TX6566 Dallas,+TX2635 3
+Dallas,+TX6566 Dallas,+TX4015 3
+Dallas,+TX6566 Dallas,+TX4080 3
+Dallas,+TX6566 New+York,+NY4028 2
+Dallas,+TX6566 Dallas,+TX4115 2
+Washington,+DC6456 Washington,+DC6736 3
+Washington,+DC6456 Washington,+DC6543 2
+Washington,+DC6456 Washington,+DC6415 2
+Washington,+DC6456 Relay,+MD4110 2.5
+Washington,+DC6456 Relay,+MD4093 2.5
+Washington,+DC6456 Washington,+DC6393 3
+Washington,+DC6456 Relay,+MD4054 2.5
+Tacoma,+WA6720 Tacoma,+WA3251 1
+Dallas,+TX6494 Dallas,+TX2635 2
+Dallas,+TX6494 Dallas,+TX4015 2
+Dallas,+TX6494 New+York,+NY4028 3
+Dallas,+TX6494 Dallas,+TX4080 2
+Dallas,+TX6494 Dallas,+TX4115 3
+Roachdale,+IN6712 Roachdale,+IN4111 2
+Roachdale,+IN6712 Roachdale,+IN4056 2
+London4083 London4044 2
+London4083 Brussels,+Belgium4033 2
+London4083 Manasquan,+NJ4047 2.5
+London4083 Dublin,+Ireland4078 1
+London4083 New+York,+NY4022 9.5
+London4084 New+York,+NY4024 9
+London4084 Brussels,+Belgium4033 8
+London4084 Manasquan,+NJ4047 4.5
+London4084 New+York,+NY4022 7.5
+Research+Triangle+Park,+NC4057 Relay,+MD4054 1
+Milan,+Italy4046 Milan,+Italy4085 5
+Milan,+Italy4046 Paris4090 2
+Pearl+Harbor,+HI4092 Anaheim,+CA4099 7
+Pearl+Harbor,+HI4092 Pearl+Harbor,+HI6400 2.5
+Pearl+Harbor,+HI4092 Pearl+Harbor,+HI4053 9.5
+Pearl+Harbor,+HI4092 Stockton,+CA4096 8.5
+Pearl+Harbor,+HI4092 Pearl+Harbor,+HI6550 3
+Pearl+Harbor,+HI4092 Anaheim,+CA4100 16
+Research+Triangle+Park,+NC4058 Atlanta,+GA4074 1
+Tacoma,+WA4114 San+Jose,+CA4095 6.5
+Tacoma,+WA4114 Tacoma,+WA6408 3
+Tacoma,+WA4114 Tacoma,+WA3251 2
+Tacoma,+WA4114 Cheyenne,+WY4076 5.5
+Tacoma,+WA4114 Tacoma,+WA6555 2
+Tacoma,+WA4114 Tokyo4070 6
+Hamburg,+Germany4041 Copenhagen4038 4.5
+Hamburg,+Germany4041 Amsterdam4072 2
+Hamburg,+Germany4041 Hamburg,+Germany4081 4
+Hamburg,+Germany4041 Munich,+Germany4087 1
+Atlanta,+GA6565 Atlanta,+GA3957 2
+Atlanta,+GA6565 Atlanta,+GA4032 2
+Relay,+MD6551 Relay,+MD4093 2.5
+Relay,+MD6551 Relay,+MD4110 2.5
+Relay,+MD6551 Relay,+MD4054 2.5
+Denver,+Colorado5511 Cheyenne,+WY4034 1
+Pennsauken,+NJ6624 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6624 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6624 Pennsauken,+NJ4091 3
+Lees+Summit,+MO5512 Kansas+City,+MO4105 3.5
+Lees+Summit,+MO5512 Kansas+City,+MO4106 2
+Cheyenne,+WY6746 Kansas+City,+MO6544 1
+Rancho+Cordova,+CA5507 Rancho+Cordova,+CA5514 2.5
+Rancho+Cordova,+CA5507 Stockton,+CA4113 2.5
+Rancho+Cordova,+CA5507 Stockton,+CA4065 2.5
+Relay,+MD6487 Relay,+MD4110 1
+Pennsauken,+NJ6486 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6486 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6486 Pennsauken,+NJ4091 3
+Dallas,+TX6641 Atlanta,+GA3957 7.5
+Dallas,+TX6641 Dallas,+TX2635 3
+Dallas,+TX6641 Dallas,+TX4015 3
+Dallas,+TX6641 Dallas,+TX4080 3
+Dallas,+TX6641 Chicago,+IL6593 6.5
+Dallas,+TX6641 New+York,+NY4028 4
+Dallas,+TX6641 Dallas,+TX4115 4
+Anaheim,+CA4100 Anaheim,+CA4101 2
+Anaheim,+CA4100 San+Jose,+CA4119 2.5
+Anaheim,+CA4100 Anaheim,+CA6464 2
+Anaheim,+CA4100 Anaheim,+CA6570 2
+Anaheim,+CA4100 Anaheim,+CA6627 2
+Anaheim,+CA4100 Anaheim,+CA4031 2
+Anaheim,+CA4100 Anaheim,+CA6539 2
+Anaheim,+CA4100 Pearl+Harbor,+HI4053 7.5
+Anaheim,+CA4100 Anaheim,+CA6556 3.5
+Anaheim,+CA4100 Anaheim,+CA6564 2
+Anaheim,+CA4100 Anaheim,+CA6744 2
+Anaheim,+CA4100 Anaheim,+CA6591 4.5
+Anaheim,+CA4100 Dallas,+TX4133 2
+Anaheim,+CA4100 Anaheim,+CA6584 2
+Anaheim,+CA4100 Pearl+Harbor,+HI4092 16
+Anaheim,+CA4100 Dallas,+TX6587 6
+Anaheim,+CA4100 Anaheim,+CA6684 2
+Anaheim,+CA4100 Dallas,+TX4080 4
+Anaheim,+CA4100 Anaheim,+CA4073 2
+Anaheim,+CA4100 Anaheim,+CA6502 2.5
+Anaheim,+CA4100 Anaheim,+CA6520 2
+Anaheim,+CA4100 Anaheim,+CA6512 2
+Anaheim,+CA4100 Anaheim,+CA4099 9
+Anaheim,+CA4100 San+Jose,+CA4112 5.5
+Anaheim,+CA4100 Anaheim,+CA6702 2
+Anaheim,+CA4100 Anaheim,+CA6453 3
+Anaheim,+CA4100 Anaheim,+CA6721 3
+Anaheim,+CA4100 Anaheim,+CA6438 3.5
+Anaheim,+CA4101 San+Jose,+CA4062 2.5
+Anaheim,+CA4101 Anaheim,+CA6464 2
+Anaheim,+CA4101 Anaheim,+CA6627 2
+Anaheim,+CA4101 Anaheim,+CA6490 2
+Anaheim,+CA4101 Pearl+Harbor,+HI4053 7.5
+Anaheim,+CA4101 Anaheim,+CA4031 2
+Anaheim,+CA4101 Anaheim,+CA6539 2
+Anaheim,+CA4101 Anaheim,+CA6564 2
+Anaheim,+CA4101 Anaheim,+CA6556 2.5
+Anaheim,+CA4101 Anaheim,+CA6744 3
+Anaheim,+CA4101 Anaheim,+CA6591 2.5
+Anaheim,+CA4101 Anaheim,+CA6584 2
+Anaheim,+CA4101 Anaheim,+CA6684 3
+Anaheim,+CA4101 Dallas,+TX4080 7
+Anaheim,+CA4101 Anaheim,+CA4073 2
+Anaheim,+CA4101 Dallas,+TX2635 4
+Anaheim,+CA4101 Anaheim,+CA6502 2.5
+Anaheim,+CA4101 Anaheim,+CA6520 2
+Anaheim,+CA4101 Anaheim,+CA6512 2
+Anaheim,+CA4101 Anaheim,+CA4099 9
+Anaheim,+CA4101 Anaheim,+CA6702 2
+Anaheim,+CA4101 Anaheim,+CA6721 2
+Anaheim,+CA4101 Anaheim,+CA6453 2
+Anaheim,+CA4101 Anaheim,+CA6438 2.5
+Anaheim,+CA4101 Anaheim,+CA4100 2
+Kansas+City,+MO6707 Kansas+City,+MO4082 2
+Kansas+City,+MO6707 Kansas+City,+MO4043 2
+Kansas+City,+MO6707 Kansas+City,+MO4105 3
+Kansas+City,+MO6707 Kansas+City,+MO4106 2.5
+Anaheim,+CA6570 Anaheim,+CA4031 2
+Anaheim,+CA6570 Anaheim,+CA4100 2
+Dallas,+TX6645 Dallas,+TX2635 3
+Dallas,+TX6645 Dallas,+TX4015 3
+Dallas,+TX6645 New+York,+NY4028 2
+Dallas,+TX6645 Dallas,+TX4080 3
+Dallas,+TX6645 Dallas,+TX4115 2
+Anaheim,+CA4031 Anaheim,+CA4101 2
+Anaheim,+CA4031 Anaheim,+CA6464 2
+Anaheim,+CA4031 Anaheim,+CA6570 2
+Anaheim,+CA4031 Anaheim,+CA6627 2
+Anaheim,+CA4031 Anaheim,+CA6539 2
+Anaheim,+CA4031 Anaheim,+CA6556 2.5
+Anaheim,+CA4031 Anaheim,+CA6564 2
+Anaheim,+CA4031 New+York,+NY4028 6
+Anaheim,+CA4031 Dallas,+TX4115 4
+Anaheim,+CA4031 Anaheim,+CA6744 3
+Anaheim,+CA4031 Los+Angeles,+CA5502 1
+Anaheim,+CA4031 Anaheim,+CA6578 1
+Anaheim,+CA4031 Anaheim,+CA6684 3
+Anaheim,+CA4031 Anaheim,+CA6502 2.5
+Anaheim,+CA4031 Anaheim,+CA6512 2
+Anaheim,+CA4031 Anaheim,+CA6520 2
+Anaheim,+CA4031 Anaheim,+CA4099 8
+Anaheim,+CA4031 San+Jose,+CA4112 2.5
+Anaheim,+CA4031 Anaheim,+CA6702 2
+Anaheim,+CA4031 Anaheim,+CA6453 2
+Anaheim,+CA4031 Anaheim,+CA6721 2
+Anaheim,+CA4031 Anaheim,+CA6438 2.5
+Anaheim,+CA4031 Anaheim,+CA4100 2
+Dallas,+TX6573 Dallas,+TX2635 3
+Dallas,+TX6573 Dallas,+TX4015 3
+Dallas,+TX6573 New+York,+NY4028 2
+Dallas,+TX6573 Dallas,+TX4080 3
+Dallas,+TX6573 Dallas,+TX6558 5
+Dallas,+TX6573 Dallas,+TX4115 2
+Dallas,+TX6573 Relay,+MD5801 15.5
+Washington,+DC6393 Washington,+DC6443 3
+Washington,+DC6393 Washington,+DC9643 3
+Washington,+DC6393 Washington,+DC6469 4
+Washington,+DC6393 Washington,+DC4139 3
+Washington,+DC6393 Washington,+DC4140 3
+Washington,+DC6393 Washington,+DC6456 3
+Washington,+DC6393 Washington,+DC6748 3
+Washington,+DC6393 Washington,+DC4142 2
+Chicago,+IL6492 Chicago,+IL1391 2
+Chicago,+IL6492 Chicago,+IL4122 2
+Chicago,+IL6492 Chicago,+IL4036 2
+Chicago,+IL6492 Chicago,+IL1484 2
+Chicago,+IL6492 Chicago,+IL4037 2
+Chicago,+IL6492 Chicago,+IL4104 2
+Chicago,+IL6639 Chicago,+IL1391 2
+Chicago,+IL6639 Chicago,+IL4122 3
+Chicago,+IL6639 Chicago,+IL4036 2
+Chicago,+IL6639 Chicago,+IL1484 2
+Chicago,+IL6639 Chicago,+IL4037 2
+Chicago,+IL6639 Chicago,+IL4104 2
+Anaheim,+CA6578 Anaheim,+CA4031 1
+Washington,+DC6469 Washington,+DC6415 3
+Washington,+DC6469 Relay,+MD4110 2.5
+Washington,+DC6469 Relay,+MD4093 2.5
+Washington,+DC6469 Washington,+DC6393 4
+Washington,+DC6469 Relay,+MD4054 2.5
+Roachdale,+IN4111 Pennsauken,+NJ4117 9
+Roachdale,+IN4111 Roachdale,+IN6729 2
+Roachdale,+IN4111 Roachdale,+IN6676 1
+Roachdale,+IN4111 Roachdale,+IN4056 2
+Roachdale,+IN4111 Chicago,+IL4104 6.5
+Roachdale,+IN4111 Roachdale,+IN6712 2
+Roachdale,+IN4111 Roachdale,+IN6552 2
+Roachdale,+IN4111 Roachdale,+IN6697 2
+Roachdale,+IN4111 Roachdale,+IN6402 2
+Roachdale,+IN4111 Roachdale,+IN6636 2
+Roachdale,+IN4111 Chicago,+IL4036 9.5
+Atlanta,+GA4102 Orlando,+FL4049 3
+Atlanta,+GA4102 Atlanta,+GA6735 5
+Atlanta,+GA4102 Atlanta,+GA4032 2
+Atlanta,+GA4102 Atlanta,+GA6745 2
+Atlanta,+GA4102 Atlanta,+GA2344 2
+Atlanta,+GA4102 Atlanta,+GA6685 2
+Atlanta,+GA4102 Atlanta,+GA2338 2
+Atlanta,+GA4102 Atlanta,+GA6540 2
+Atlanta,+GA4102 Orlando,+FL4050 3.5
+Atlanta,+GA4102 Atlanta,+GA2347 2
+Atlanta,+GA4102 Atlanta,+GA4074 2
+Atlanta,+GA4102 Relay,+MD4131 4
+Atlanta,+GA4102 Atlanta,+GA6439 1
+Atlanta,+GA4102 Atlanta,+GA6465 2
+Atlanta,+GA4102 Atlanta,+GA6481 2
+Atlanta,+GA4102 Atlanta,+GA6628 2
+Roachdale,+IN6729 Roachdale,+IN4111 2
+Roachdale,+IN6729 Roachdale,+IN4056 2
+Atlanta,+GA4032 Relay,+MD4093 4
+Atlanta,+GA4032 Atlanta,+GA6540 2
+Atlanta,+GA4032 New+York,+NY4048 6.5
+Atlanta,+GA4032 Chicago,+IL4037 8
+Atlanta,+GA4032 Atlanta,+GA6481 2
+Atlanta,+GA4032 Atlanta,+GA6465 2
+Atlanta,+GA4032 Atlanta,+GA4102 2
+Atlanta,+GA4032 Atlanta,+GA6628 2
+Atlanta,+GA4032 Atlanta,+GA6565 2
+Atlanta,+GA4032 Dallas,+TX2635 5.5
+Atlanta,+GA4032 Atlanta,+GA6735 5
+Atlanta,+GA4032 Atlanta,+GA3957 2
+Atlanta,+GA4032 Atlanta,+GA6745 2
+Atlanta,+GA4032 Atlanta,+GA2344 2
+Atlanta,+GA4032 Atlanta,+GA6685 2
+Atlanta,+GA4032 Atlanta,+GA2338 2
+Atlanta,+GA4032 Atlanta,+GA2347 2
+Atlanta,+GA4032 Orlando,+FL4108 2
+Atlanta,+GA4032 Atlanta,+GA4074 2
+Tacoma,+WA3251 San+Jose,+CA4062 6.5
+Tacoma,+WA3251 Tacoma,+WA6408 3
+Tacoma,+WA3251 Cheyenne,+WY4076 5.5
+Tacoma,+WA3251 Tacoma,+WA6701 2
+Tacoma,+WA3251 Seattle,+WA4059 2
+Tacoma,+WA3251 Tacoma,+WA6720 1
+Tacoma,+WA3251 Sydney,+Australia4067 6.5
+Tacoma,+WA3251 Cheyenne,+WY4034 5.5
+Tacoma,+WA3251 Tacoma,+WA6555 2
+Tacoma,+WA3251 Seattle,+WA4060 3
+Tacoma,+WA3251 Tacoma,+WA4114 2
+Tacoma,+WA3251 Tokyo4070 8
+Chicago,+IL1484 Cheyenne,+WY4076 5
+Chicago,+IL1484 Chicago,+IL6724 2
+Chicago,+IL1484 Chicago,+IL6643 2
+Chicago,+IL1484 Chicago,+IL6572 3
+Chicago,+IL1484 Chicago,+IL4104 2
+Chicago,+IL1484 Chicago,+IL6492 2
+Chicago,+IL1484 Chicago,+IL6654 2
+Chicago,+IL1484 Chicago,+IL6468 2
+Chicago,+IL1484 Chicago,+IL6639 2
+Chicago,+IL1484 Chicago,+IL4122 2
+Chicago,+IL1484 Chicago,+IL6648 2
+Chicago,+IL1484 Chicago,+IL6747 2
+Chicago,+IL1484 Chicago,+IL6593 3
+Chicago,+IL1484 Dallas,+TX4080 5.5
+Chicago,+IL1484 Chicago,+IL6586 2
+Chicago,+IL1484 Chicago,+IL4037 2
+Chicago,+IL1484 Chicago,+IL6595 2
+Chicago,+IL1484 Chicago,+IL6669 2
+Chicago,+IL1484 New+York,+NY4088 8.5
+Chicago,+IL1484 Chicago,+IL1391 2
+Chicago,+IL1484 Springfield,+MA4023 5.5
+Chicago,+IL1484 Cheyenne,+WY4034 8
+Chicago,+IL1484 Chicago,+IL6414 2
+Chicago,+IL1484 Atlanta,+GA4074 8
+Chicago,+IL1484 Chicago,+IL6441 2
+Chicago,+IL1484 Chicago,+IL6603 2
+Chicago,+IL1484 Chicago,+IL6611 2
+Chicago,+IL1484 Chicago,+IL6531 2
+Chicago,+IL1484 Chicago,+IL6621 2
+Orlando,+FL6459 Orlando,+FL4049 2
+Orlando,+FL6459 Orlando,+FL4050 4.5
+New+York,+NY6427 New+York,+NY4088 3.5
+New+York,+NY6427 New+York,+NY4048 2.5
+New+York,+NY6427 New+York,+NY4107 2.5
+New+York,+NY6427 New+York,+NY4116 2.5
+New+York,+NY6427 New+York,+NY6496 2
+Rancho+Cordova,+CA5514 Rancho+Cordova,+CA5507 2.5
+Rancho+Cordova,+CA5514 Stockton,+CA4096 2
+Seattle,+WA6476 Seattle,+WA4019 1
+Anaheim,+CA6721 Anaheim,+CA4101 2
+Anaheim,+CA6721 Anaheim,+CA6464 2
+Anaheim,+CA6721 Anaheim,+CA6627 2
+Anaheim,+CA6721 Anaheim,+CA4031 2
+Anaheim,+CA6721 Anaheim,+CA6539 2
+Anaheim,+CA6721 Anaheim,+CA6556 2
+Anaheim,+CA6721 Anaheim,+CA6564 2
+Anaheim,+CA6721 Anaheim,+CA6744 2
+Anaheim,+CA6721 Anaheim,+CA6684 2
+Anaheim,+CA6721 Anaheim,+CA4073 3
+Anaheim,+CA6721 Anaheim,+CA6502 3.5
+Anaheim,+CA6721 Anaheim,+CA6520 2
+Anaheim,+CA6721 Anaheim,+CA6512 2
+Anaheim,+CA6721 Anaheim,+CA6702 2
+Anaheim,+CA6721 Anaheim,+CA6453 2
+Anaheim,+CA6721 Anaheim,+CA6438 2
+Anaheim,+CA6721 Anaheim,+CA4100 3
+Relay,+MD4029 Relay,+MD4110 2
+Relay,+MD4029 Relay,+MD4054 3
+Cheyenne,+WY4076 Cheyenne,+WY6455 2
+Cheyenne,+WY4076 Denver,+Colorado5501 1
+Cheyenne,+WY4076 Cheyenne,+WY2439 2
+Cheyenne,+WY4076 Cheyenne,+WY6723 2
+Cheyenne,+WY4076 Tacoma,+WA3251 5.5
+Cheyenne,+WY4076 Chicago,+IL1484 5
+Cheyenne,+WY4076 Cheyenne,+WY6629 2
+Cheyenne,+WY4076 Cheyenne,+WY6388 2
+Cheyenne,+WY4076 Cheyenne,+WY6413 2
+Cheyenne,+WY4076 Cheyenne,+WY4034 3
+Cheyenne,+WY4076 Dallas,+TX4080 13.5
+Cheyenne,+WY4076 Tacoma,+WA4114 5.5
+Cheyenne,+WY4076 Cheyenne,+WY6542 2
+Dallas,+TX6726 Dallas,+TX2635 3
+Dallas,+TX6726 Dallas,+TX4015 3
+Dallas,+TX6726 Dallas,+TX4080 3
+Dallas,+TX6726 New+York,+NY4028 2
+Dallas,+TX6726 Dallas,+TX4115 2
+Dallas,+TX6580 Dallas,+TX2635 3
+Dallas,+TX6580 Dallas,+TX4015 3
+Dallas,+TX6580 Dallas,+TX4080 2
+Dallas,+TX6580 New+York,+NY4028 3
+Dallas,+TX6580 Dallas,+TX4115 2
+Washington,+DC6543 Washington,+DC6443 2
+Washington,+DC6543 Washington,+DC4139 2
+Washington,+DC6543 Washington,+DC4140 2
+Washington,+DC6543 Washington,+DC6456 2
+Washington,+DC6543 Washington,+DC4142 2
+Washington,+DC6543 Washington,+DC6748 2
+Brussels,+Belgium4033 London4044 5
+Brussels,+Belgium4033 London4084 8
+Brussels,+Belgium4033 Brussels,+Belgium4075 2
+Brussels,+Belgium4033 London4083 2
+Chicago,+IL6643 Atlanta,+GA6735 13
+Chicago,+IL6643 Chicago,+IL1484 2
+Chicago,+IL6643 Chicago,+IL6644 5
+Stockton,+CA6452 Stockton,+CA4064 3
+Stockton,+CA6452 Stockton,+CA4113 3
+Stockton,+CA6452 Stockton,+CA4065 3
+Stockton,+CA6452 Stockton,+CA4096 3
+Dallas,+TX4115 Pennsauken,+NJ4135 9
+Dallas,+TX4115 Dallas,+TX4015 2
+Dallas,+TX4115 Dallas,+TX6580 2
+Dallas,+TX4115 Dallas,+TX6726 2
+Dallas,+TX4115 Dallas,+TX6645 2
+Dallas,+TX4115 Dallas,+TX6483 2
+Dallas,+TX4115 Anaheim,+CA4031 4
+Dallas,+TX4115 Dallas,+TX6573 2
+Dallas,+TX4115 Dallas,+TX6566 2
+Dallas,+TX4115 Kansas+City,+MO4105 4.5
+Dallas,+TX4115 Dallas,+TX6494 3
+Dallas,+TX4115 Dallas,+TX6737 2
+Dallas,+TX4115 Orlando,+FL4089 6.5
+Dallas,+TX4115 Dallas,+TX6587 2
+Dallas,+TX4115 Dallas,+TX6749 3
+Dallas,+TX4115 Chicago,+IL4123 1
+Dallas,+TX4115 Dallas,+TX4080 2
+Dallas,+TX4115 Dallas,+TX6598 4.5
+Dallas,+TX4115 Dallas,+TX6689 3
+Dallas,+TX4115 Dallas,+TX1742 2
+Dallas,+TX4115 Chicago,+IL1391 5.5
+Dallas,+TX4115 Dallas,+TX2635 2
+Dallas,+TX4115 Dallas,+TX6504 3
+Dallas,+TX4115 Dallas,+TX3549 2
+Dallas,+TX4115 Dallas,+TX6604 3
+Dallas,+TX4115 Dallas,+TX6612 3
+Dallas,+TX4115 Dallas,+TX6419 2
+Dallas,+TX4115 Dallas,+TX6622 2
+Dallas,+TX4115 Dallas,+TX6444 2
+Dallas,+TX4115 Dallas,+TX6641 4
+Dallas,+TX4115 Dallas,+TX6706 3.5
+Dallas,+TX4115 Dallas,+TX6471 2
+Chicago,+IL6644 Chicago,+IL4037 4
+Chicago,+IL6644 Chicago,+IL6643 5
+Kansas+City,+MO4105 Kansas+City,+MO4082 3
+Kansas+City,+MO4105 Pennsauken,+NJ4117 12.5
+Kansas+City,+MO4105 Dallas,+TX2635 5.5
+Kansas+City,+MO4105 Kansas+City,+MO6544 4
+Kansas+City,+MO4105 Kansas+City,+MO6472 4
+Kansas+City,+MO4105 Kansas+City,+MO6707 3
+Kansas+City,+MO4105 Kansas+City,+MO6458 4
+Kansas+City,+MO4105 New+York,+NY4028 6.5
+Kansas+City,+MO4105 Dallas,+TX4115 4.5
+Kansas+City,+MO4105 Kansas+City,+MO6395 3
+Kansas+City,+MO4105 Kansas+City,+MO6422 2.5
+Kansas+City,+MO4105 Lees+Summit,+MO5512 3.5
+Kansas+City,+MO4105 Kansas+City,+MO4043 3
+Kansas+City,+MO4105 Kansas+City,+MO6690 4
+Chicago,+IL6572 Chicago,+IL1484 3
+Chicago,+IL6572 Chicago,+IL4037 2
+Kansas+City,+MO4106 Kansas+City,+MO4082 2.5
+Kansas+City,+MO4106 Pennsauken,+NJ4117 12
+Kansas+City,+MO4106 Dallas,+TX2635 5
+Kansas+City,+MO4106 Kansas+City,+MO6544 2.5
+Kansas+City,+MO4106 Kansas+City,+MO6472 3.5
+Kansas+City,+MO4106 Kansas+City,+MO6707 2.5
+Kansas+City,+MO4106 Kansas+City,+MO6458 3.5
+Kansas+City,+MO4106 Kansas+City,+MO6395 2.5
+Kansas+City,+MO4106 Lees+Summit,+MO5512 2
+Kansas+City,+MO4106 Kansas+City,+MO6422 2
+Kansas+City,+MO4106 Kansas+City,+MO4043 2.5
+Kansas+City,+MO4106 Kansas+City,+MO6690 2.5
+Chicago,+IL4104 New+York,+NY4116 11.5
+Chicago,+IL4104 Seattle,+WA4059 3.5
+Chicago,+IL4104 Chicago,+IL6724 2
+Chicago,+IL4104 Chicago,+IL6652 1
+Chicago,+IL4104 New+York,+NY4048 8.5
+Chicago,+IL4104 Chicago,+IL6492 2
+Chicago,+IL4104 Chicago,+IL6468 2
+Chicago,+IL4104 Kansas+City,+MO4043 6
+Chicago,+IL4104 Chicago,+IL6639 2
+Chicago,+IL4104 Chicago,+IL4122 2
+Chicago,+IL4104 Roachdale,+IN4111 6.5
+Chicago,+IL4104 Chicago,+IL6747 2
+Chicago,+IL4104 Chicago,+IL4036 2
+Chicago,+IL4104 Chicago,+IL6593 3
+Chicago,+IL4104 Dallas,+TX4080 7.5
+Chicago,+IL4104 Chicago,+IL6586 2
+Chicago,+IL4104 Chicago,+IL4037 2
+Chicago,+IL4104 Chicago,+IL6595 2
+Chicago,+IL4104 Chicago,+IL6669 2
+Chicago,+IL4104 Chicago,+IL1391 2
+Chicago,+IL4104 Dallas,+TX2635 5.5
+Chicago,+IL4104 Chicago,+IL1484 2
+Chicago,+IL4104 Cheyenne,+WY4034 5
+Chicago,+IL4104 Chicago,+IL6414 2
+Chicago,+IL4104 Chicago,+IL6441 2
+Chicago,+IL4104 Chicago,+IL6603 2
+Chicago,+IL4104 Chicago,+IL6611 2
+Chicago,+IL4104 Chicago,+IL6531 2
+Chicago,+IL4104 Chicago,+IL6621 2
+Dallas,+TX6658 Dallas,+TX4015 2
+Dallas,+TX6658 Dallas,+TX4080 2
+Anaheim,+CA6584 Anaheim,+CA4099 10
+Anaheim,+CA6584 Anaheim,+CA4101 2
+Anaheim,+CA6584 Anaheim,+CA4100 2
+Chicago,+IL6648 Chicago,+IL1484 2
+Chicago,+IL6648 Chicago,+IL4037 2
+Dallas,+TX6587 Dallas,+TX2635 2
+Dallas,+TX6587 Dallas,+TX4015 2
+Dallas,+TX6587 New+York,+NY4028 3
+Dallas,+TX6587 Dallas,+TX4080 2
+Dallas,+TX6587 Dallas,+TX4115 2
+Dallas,+TX6587 Anaheim,+CA4100 6
+San+Jose,+CA6405 San+Jose,+CA4062 2
+San+Jose,+CA6405 San+Jose,+CA4095 3
+Chicago,+IL4036 Chicago,+IL6724 2
+Chicago,+IL4036 Chicago,+IL4104 2
+Chicago,+IL4036 Chicago,+IL6492 2
+Chicago,+IL4036 Chicago,+IL6468 2
+Chicago,+IL4036 Chicago,+IL6639 2
+Chicago,+IL4036 Chicago,+IL4122 2
+Chicago,+IL4036 Roachdale,+IN4111 9.5
+Chicago,+IL4036 Stockton,+CA4113 12
+Chicago,+IL4036 Chicago,+IL6593 3
+Chicago,+IL4036 Chicago,+IL6747 2
+Chicago,+IL4036 Dallas,+TX4080 5.5
+Chicago,+IL4036 Chicago,+IL4037 2
+Chicago,+IL4036 Chicago,+IL6586 2
+Chicago,+IL4036 Chicago,+IL6595 2
+Chicago,+IL4036 Chicago,+IL6669 2
+Chicago,+IL4036 Chicago,+IL1391 2
+Chicago,+IL4036 Springfield,+MA4020 6
+Chicago,+IL4036 Stockton,+CA4065 11
+Chicago,+IL4036 Chicago,+IL6414 2
+Chicago,+IL4036 Chicago,+IL6611 2
+Chicago,+IL4036 Chicago,+IL6441 2
+Chicago,+IL4036 Chicago,+IL6603 3
+Chicago,+IL4036 Chicago,+IL6531 2
+Chicago,+IL4036 Chicago,+IL6621 2
+Chicago,+IL4037 San+Jose,+CA4062 9
+Chicago,+IL4037 New+York,+NY4124 7.5
+Chicago,+IL4037 Chicago,+IL6724 2
+Chicago,+IL4037 Chicago,+IL6644 4
+Chicago,+IL4037 Chicago,+IL4104 2
+Chicago,+IL4037 Chicago,+IL6572 2
+Chicago,+IL4037 Chicago,+IL6654 2
+Chicago,+IL4037 Chicago,+IL6492 2
+Chicago,+IL4037 Chicago,+IL6468 2
+Chicago,+IL4037 Kansas+City,+MO4043 6
+Chicago,+IL4037 Chicago,+IL6639 2
+Chicago,+IL4037 Chicago,+IL4122 2
+Chicago,+IL4037 Chicago,+IL6648 2
+Chicago,+IL4037 Chicago,+IL6747 2
+Chicago,+IL4037 Chicago,+IL6593 4
+Chicago,+IL4037 Chicago,+IL4036 2
+Chicago,+IL4037 Dallas,+TX4080 7.5
+Chicago,+IL4037 Chicago,+IL6586 2
+Chicago,+IL4037 Chicago,+IL6595 2
+Chicago,+IL4037 Chicago,+IL6669 2
+Chicago,+IL4037 Atlanta,+GA4032 8
+Chicago,+IL4037 Chicago,+IL1484 2
+Chicago,+IL4037 Roachdale,+IN4056 6.5
+Chicago,+IL4037 Cheyenne,+WY4034 5
+Chicago,+IL4037 Chicago,+IL6414 2
+Chicago,+IL4037 Chicago,+IL6603 2
+Chicago,+IL4037 Chicago,+IL6441 2
+Chicago,+IL4037 Chicago,+IL6611 2
+Chicago,+IL4037 Chicago,+IL6531 2
+Chicago,+IL4037 Chicago,+IL6621 2
+Roachdale,+IN4056 Pennsauken,+NJ4125 8.5
+Roachdale,+IN4056 Roachdale,+IN6729 2
+Roachdale,+IN4056 Pennsauken,+NJ4126 7.5
+Roachdale,+IN4056 Roachdale,+IN6677 1
+Roachdale,+IN4056 Roachdale,+IN6712 2
+Roachdale,+IN4056 Roachdale,+IN6697 2
+Roachdale,+IN4056 Roachdale,+IN6552 2
+Roachdale,+IN4056 Roachdale,+IN6402 2
+Roachdale,+IN4056 Roachdale,+IN4111 2
+Roachdale,+IN4056 Roachdale,+IN6636 2
+Roachdale,+IN4056 Chicago,+IL4037 6.5
+Relay,+MD6576 Relay,+MD4093 2
+Relay,+MD6576 Relay,+MD4127 2
+Seattle,+WA4019 Seattle,+WA6476 1
+Seattle,+WA4019 Seattle,+WA4059 3
+Seattle,+WA4019 Seattle,+WA4060 2
+Seattle,+WA4019 Seattle,+WA6450 1
+Pennsauken,+NJ6647 Pennsauken,+NJ4135 1
+Stockton,+CA6602 Stockton,+CA4064 2
+Stockton,+CA6602 Stockton,+CA4096 2
+Pennsauken,+NJ4109 Pennsauken,+NJ4052 2
+Pennsauken,+NJ4109 Pennsauken,+NJ4117 2
+Pennsauken,+NJ4109 New+York,+NY4107 6
+Pennsauken,+NJ4109 Dallas,+TX4015 9
+Pennsauken,+NJ4109 Pennsauken,+NJ4135 2
+Pennsauken,+NJ4109 New+York,+NY4116 6
+Pennsauken,+NJ4109 Pennsauken,+NJ4091 2
+Pennsauken,+NJ4109 Pennsauken,+NJ6516 3
+Pennsauken,+NJ4109 Pennsauken,+NJ6614 3
+Pennsauken,+NJ4109 Pennsauken,+NJ6525 3
+Pennsauken,+NJ4109 Pennsauken,+NJ6517 2
+Pennsauken,+NJ4109 Pennsauken,+NJ6624 3
+Pennsauken,+NJ4109 Pennsauken,+NJ6448 3
+Pennsauken,+NJ4109 Stockton,+CA4096 6.5
+Pennsauken,+NJ4109 Pennsauken,+NJ6728 2
+Pennsauken,+NJ4109 Pennsauken,+NJ6486 3
+Pennsauken,+NJ4109 Pennsauken,+NJ6754 3
+Chicago,+IL6724 Chicago,+IL1391 2
+Chicago,+IL6724 Chicago,+IL1484 2
+Chicago,+IL6724 Chicago,+IL4036 2
+Chicago,+IL6724 Chicago,+IL4037 2
+Chicago,+IL6724 Chicago,+IL4104 2
+Dallas,+TX6663 Dallas,+TX2635 2
+Dallas,+TX6663 Dallas,+TX4080 2
+Chicago,+IL6651 Chicago,+IL4122 1
+Amsterdam4072 Amsterdam4030 6
+Amsterdam4072 Hamburg,+Germany4041 2
+Dallas,+TX6737 Dallas,+TX2635 2
+Dallas,+TX6737 Dallas,+TX4015 2
+Dallas,+TX6737 Dallas,+TX4080 2
+Dallas,+TX6737 New+York,+NY4028 5
+Dallas,+TX6737 Dallas,+TX4115 2
+Chicago,+IL6652 Chicago,+IL4104 1
+Anaheim,+CA6591 Anaheim,+CA4101 2.5
+Anaheim,+CA6591 Anaheim,+CA4099 7.5
+Anaheim,+CA6591 Anaheim,+CA4100 4.5
+Chicago,+IL6654 Chicago,+IL1484 2
+Chicago,+IL6654 Chicago,+IL4037 2
+Stockton,+CA6609 Stockton,+CA4113 4.5
+Stockton,+CA6609 Stockton,+CA4096 2.5
+Stockton,+CA6609 Stockton,+CA4065 2.5
+Stockton,+CA6463 Stockton,+CA4113 3.5
+Stockton,+CA6463 Stockton,+CA4064 2.5
+Stockton,+CA6463 Stockton,+CA4096 2.5
+Stockton,+CA6463 Stockton,+CA4065 2.5
+San+Jose,+CA4095 San+Jose,+CA4062 2
+San+Jose,+CA4095 San+Jose,+CA4119 2
+San+Jose,+CA4095 Stockton,+CA4065 5
+San+Jose,+CA4095 San+Jose,+CA4112 2
+San+Jose,+CA4095 San+Jose,+CA6477 1
+San+Jose,+CA4095 San+Jose,+CA6405 3
+San+Jose,+CA4095 Stockton,+CA4113 6
+San+Jose,+CA4095 Anaheim,+CA4073 2.5
+San+Jose,+CA4095 Tacoma,+WA4114 6.5
+Kansas+City,+MO4043 Kansas+City,+MO4082 2
+Kansas+City,+MO4043 Kansas+City,+MO6544 2
+Kansas+City,+MO4043 Dallas,+TX4015 5.5
+Kansas+City,+MO4043 Kansas+City,+MO6472 2
+Kansas+City,+MO4043 Kansas+City,+MO6707 2
+Kansas+City,+MO4043 Kansas+City,+MO6458 3
+Kansas+City,+MO4043 Kansas+City,+MO6750 2
+Kansas+City,+MO4043 Kansas+City,+MO6395 2
+Kansas+City,+MO4043 Kansas+City,+MO4105 3
+Kansas+City,+MO4043 Kansas+City,+MO4106 2.5
+Kansas+City,+MO4043 Chicago,+IL4104 6
+Kansas+City,+MO4043 Lees+Summit,+MO5504 1
+Kansas+City,+MO4043 Kansas+City,+MO6690 2
+Kansas+City,+MO4043 Seattle,+WA4060 6.5
+Kansas+City,+MO4043 Chicago,+IL4037 6
+Dallas,+TX6598 Dallas,+TX2635 3.5
+Dallas,+TX6598 Atlanta,+GA6735 7
+Dallas,+TX6598 Dallas,+TX4015 3.5
+Dallas,+TX6598 Dallas,+TX4080 3.5
+Dallas,+TX6598 Chicago,+IL6593 6
+Dallas,+TX6598 New+York,+NY4028 6.5
+Dallas,+TX6598 Kansas+City,+MO6458 7
+Dallas,+TX6598 Dallas,+TX4115 4.5
+Chicago,+IL6586 Chicago,+IL1391 3
+Chicago,+IL6586 Chicago,+IL4036 2
+Chicago,+IL6586 Chicago,+IL1484 2
+Chicago,+IL6586 Chicago,+IL4037 2
+Chicago,+IL6586 Chicago,+IL4104 2
+Atlanta,+GA6735 Atlanta,+GA4032 5
+Atlanta,+GA6735 Atlanta,+GA4074 5
+Atlanta,+GA6735 Chicago,+IL6643 13
+Atlanta,+GA6735 Dallas,+TX6598 7
+Atlanta,+GA6735 Atlanta,+GA4102 5
+Hong+Kong4042 Hong+Kong6421 12.5
+Hong+Kong4042 Tokyo4069 4.5
+Hong+Kong4042 Tokyo4070 2
+Roachdale,+IN6676 Roachdale,+IN4111 1
+Roachdale,+IN6677 Roachdale,+IN4056 1
+Relay,+MD4110 New+York,+NY4048 5.5
+Relay,+MD4110 Washington,+DC6443 2.5
+Relay,+MD4110 Relay,+MD4136 2
+Relay,+MD4110 San+Jose,+CA4062 8
+Relay,+MD4110 Washington,+DC9643 2.5
+Relay,+MD4110 Washington,+DC6469 2.5
+Relay,+MD4110 Relay,+MD6461 2.5
+Relay,+MD4110 Relay,+MD6518 2.5
+Relay,+MD4110 Relay,+MD4138 2
+Relay,+MD4110 Atlanta,+GA4074 4
+Relay,+MD4110 Relay,+MD4131 2
+Relay,+MD4110 New+York,+NY4116 7.5
+Relay,+MD4110 Relay,+MD6551 2.5
+Relay,+MD4110 Washington,+DC4139 2.5
+Relay,+MD4110 Manasquan,+NJ4086 4
+Relay,+MD4110 Relay,+MD6431 2.5
+Relay,+MD4110 Washington,+DC4140 2.5
+Relay,+MD4110 Relay,+MD6487 1
+Relay,+MD4110 Relay,+MD6696 2.5
+Relay,+MD4110 Washington,+DC6456 2.5
+Relay,+MD4110 Relay,+MD6675 2.5
+Relay,+MD4110 Relay,+MD4118 2
+Relay,+MD4110 Relay,+MD4029 2
+Relay,+MD4110 Relay,+MD4093 2
+Relay,+MD4110 Relay,+MD6449 2.5
+Relay,+MD4110 Relay,+MD5801 3
+Relay,+MD4110 Washington,+DC6748 2.5
+New+York,+NY6446 New+York,+NY4088 3
+New+York,+NY6446 New+York,+NY4048 2
+New+York,+NY6446 New+York,+NY4107 3
+New+York,+NY6446 New+York,+NY4116 3
+New+York,+NY6446 New+York,+NY6496 2.5
+Pennsauken,+NJ6728 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6728 Pennsauken,+NJ4109 2
+Pennsauken,+NJ6728 Pennsauken,+NJ4091 3
+Relay,+MD4118 Relay,+MD4110 2
+Relay,+MD4118 Relay,+MD4093 2
+Relay,+MD4118 Pennsauken,+NJ4091 4.5
+Relay,+MD4118 Relay,+MD4054 2
+Relay,+MD4118 Relay,+MD4127 2
+Dublin,+Ireland4078 London4083 1
+Pennsauken,+NJ4117 Pennsauken,+NJ4109 2
+Pennsauken,+NJ4117 Pennsauken,+NJ4126 4.5
+Pennsauken,+NJ4117 Pennsauken,+NJ4135 2
+Pennsauken,+NJ4117 Roachdale,+IN4111 9
+Pennsauken,+NJ4117 Kansas+City,+MO4105 12.5
+Pennsauken,+NJ4117 Kansas+City,+MO4106 12
+Pennsauken,+NJ4117 Pennsauken,+NJ4091 4
+Sydney,+Australia6437 Sydney,+Australia4067 4
+Sydney,+Australia6437 Sydney,+Australia4068 2
+Anaheim,+CA6744 Anaheim,+CA4101 3
+Anaheim,+CA6744 Anaheim,+CA4099 8
+Anaheim,+CA6744 Anaheim,+CA4031 3
+Anaheim,+CA6744 Anaheim,+CA4073 3
+Anaheim,+CA6744 Anaheim,+CA6721 2
+Anaheim,+CA6744 Anaheim,+CA4100 2
+Los+Angeles,+CA5502 Anaheim,+CA4031 1
+Cheyenne,+WY6413 Cheyenne,+WY4034 2
+Cheyenne,+WY6413 Cheyenne,+WY4076 2
+Cheyenne,+WY6413 Atlanta,+GA6530 1
+Dallas,+TX4133 Anaheim,+CA4099 8
+Dallas,+TX4133 Dallas,+TX2635 4
+Dallas,+TX4133 Anaheim,+CA4100 2
+Chicago,+IL4122 Chicago,+IL1391 2
+Chicago,+IL4122 Chicago,+IL1484 2
+Chicago,+IL4122 Chicago,+IL6651 1
+Chicago,+IL4122 Springfield,+MA4025 5
+Chicago,+IL4122 Chicago,+IL4104 2
+Chicago,+IL4122 Chicago,+IL6492 2
+Chicago,+IL4122 Chicago,+IL6639 3
+Chicago,+IL4122 Chicago,+IL6414 2
+Chicago,+IL4122 Chicago,+IL4036 2
+Chicago,+IL4122 Chicago,+IL6611 2
+Chicago,+IL4122 Chicago,+IL4037 2
+Chicago,+IL4122 Chicago,+IL6621 2
+Dallas,+TX6749 Dallas,+TX4015 3
+Dallas,+TX6749 Dallas,+TX4080 3
+Dallas,+TX6749 New+York,+NY4028 2
+Dallas,+TX6749 Dallas,+TX4115 3
+Stockton,+CA6619 Stockton,+CA4113 4.5
+Stockton,+CA6619 Stockton,+CA4096 2.5
+Stockton,+CA6619 Stockton,+CA4065 2.5
+Chicago,+IL4123 Dallas,+TX4115 1
+Chicago,+IL6593 Chicago,+IL1391 2
+Chicago,+IL6593 Chicago,+IL1484 3
+Chicago,+IL6593 Dallas,+TX4080 8.5
+Chicago,+IL6593 Chicago,+IL4036 3
+Chicago,+IL6593 Chicago,+IL4037 4
+Chicago,+IL6593 Dallas,+TX6598 6
+Chicago,+IL6593 Chicago,+IL4104 3
+Chicago,+IL6593 Dallas,+TX6641 6.5
+Chicago,+IL6595 Chicago,+IL1391 3
+Chicago,+IL6595 Chicago,+IL4036 2
+Chicago,+IL6595 Chicago,+IL1484 2
+Chicago,+IL6595 Chicago,+IL4037 2
+Chicago,+IL6595 Chicago,+IL4104 2
+Chicago,+IL6669 Chicago,+IL1391 2
+Chicago,+IL6669 Chicago,+IL1484 2
+Chicago,+IL6669 Chicago,+IL4036 2
+Chicago,+IL6669 Chicago,+IL4037 2
+Chicago,+IL6669 Chicago,+IL4104 2
+Stockton,+CA6479 Stockton,+CA4113 3.5
+Stockton,+CA6479 Stockton,+CA4064 2.5
+Stockton,+CA6479 Stockton,+CA4065 2.5
+Stockton,+CA6479 Stockton,+CA4096 2.5
+Milan,+Italy4085 Milan,+Italy4046 5
+Milan,+Italy4085 Frankfurt4040 2
+Atlanta,+GA6745 Atlanta,+GA4032 2
+Atlanta,+GA6745 Atlanta,+GA4074 2
+Atlanta,+GA6745 Atlanta,+GA4102 2
+Hamburg,+Germany4081 Copenhagen4077 6.5
+Hamburg,+Germany4081 Hamburg,+Germany4041 4
+Hamburg,+Germany4081 Frankfurt4040 3
+New+York,+NY6524 New+York,+NY4088 2.5
+New+York,+NY6524 New+York,+NY4129 2.5
+Relay,+MD4054 Washington,+DC6443 2.5
+Relay,+MD4054 Relay,+MD4136 2
+Relay,+MD4054 Reston,+VA5496 2
+Relay,+MD4054 New+York,+NY4107 7.5
+Relay,+MD4054 Relay,+MD4138 2
+Relay,+MD4054 Relay,+MD6696 2.5
+Relay,+MD4054 Washington,+DC6456 2.5
+Relay,+MD4054 New+York,+NY4129 3.5
+Relay,+MD4054 Research+Triangle+Park,+NC4057 1
+Relay,+MD4054 Washington,+DC6469 2.5
+Relay,+MD4054 Washington,+DC4140 2.5
+Relay,+MD4054 Relay,+MD6431 2.5
+Relay,+MD4054 Washington,+DC6748 2.5
+Relay,+MD4054 Relay,+MD6461 2.5
+Relay,+MD4054 Relay,+MD6518 2.5
+Relay,+MD4054 Washington,+DC9643 2.5
+Relay,+MD4054 Washington,+DC4139 2.5
+Relay,+MD4054 Relay,+MD6551 2.5
+Relay,+MD4054 Relay,+MD6449 2.5
+Relay,+MD4054 Relay,+MD4131 2
+Relay,+MD4054 Manasquan,+NJ4047 4
+Relay,+MD4054 Relay,+MD4029 3
+Relay,+MD4054 Relay,+MD4118 2
+Relay,+MD4054 Relay,+MD6675 2.5
+Relay,+MD4054 Relay,+MD4127 2
+Relay,+MD4127 Relay,+MD4136 3
+Relay,+MD4127 Relay,+MD4131 2
+Relay,+MD4127 Relay,+MD6576 2
+Relay,+MD4127 Ashburn,+VA10163 2
+Relay,+MD4127 Relay,+MD4093 2
+Relay,+MD4127 Relay,+MD4118 2
+Relay,+MD4127 Relay,+MD4054 2
+Pennsauken,+NJ4052 Pennsauken,+NJ4109 2
+Pennsauken,+NJ4052 Pennsauken,+NJ4126 3.5
+Pennsauken,+NJ4052 Pennsauken,+NJ6399 1
+Pennsauken,+NJ4052 Pennsauken,+NJ4091 2
+Pennsauken,+NJ4052 New+York,+NY4048 6
+Pennsauken,+NJ4052 Kansas+City,+MO4082 12.5
+Pennsauken,+NJ4052 Pennsauken,+NJ6516 2
+Pennsauken,+NJ4052 Stockton,+CA4064 7.5
+Pennsauken,+NJ4052 Pennsauken,+NJ6517 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6525 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6614 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6624 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6448 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6728 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6486 2
+Pennsauken,+NJ4052 Pennsauken,+NJ6754 2
+Pennsauken,+NJ4125 Springfield,+MA4020 2
+Pennsauken,+NJ4125 Roachdale,+IN4056 8.5
+Pennsauken,+NJ4125 Pennsauken,+NJ4091 6.5
+Tacoma,+WA6408 Tacoma,+WA3251 3
+Tacoma,+WA6408 Tacoma,+WA6555 2
+Tacoma,+WA6408 Tacoma,+WA4114 3
+Pennsauken,+NJ4126 Pennsauken,+NJ4052 3.5
+Pennsauken,+NJ4126 Pennsauken,+NJ4117 4.5
+Pennsauken,+NJ4126 Springfield,+MA4020 2
+Pennsauken,+NJ4126 Pennsauken,+NJ4135 3.5
+Pennsauken,+NJ4126 Roachdale,+IN4056 7.5
+Pennsauken,+NJ4126 Pennsauken,+NJ4091 5.5
+Dallas,+TX6683 Dallas,+TX2635 2
+Dallas,+TX6683 Dallas,+TX4080 2
+Anaheim,+CA6684 Anaheim,+CA4101 3
+Anaheim,+CA6684 Anaheim,+CA4031 3
+Anaheim,+CA6684 Anaheim,+CA4073 3
+Anaheim,+CA6684 Anaheim,+CA6721 2
+Anaheim,+CA6684 Anaheim,+CA4100 2
+Chicago,+IL6747 Chicago,+IL1391 2
+Chicago,+IL6747 Chicago,+IL1484 2
+Chicago,+IL6747 Chicago,+IL4036 2
+Chicago,+IL6747 Chicago,+IL4037 2
+Chicago,+IL6747 Chicago,+IL4104 2
+Anaheim,+CA4073 Anaheim,+CA4101 2
+Anaheim,+CA4073 Anaheim,+CA6464 3
+Anaheim,+CA4073 Dallas,+TX4015 4
+Anaheim,+CA4073 Anaheim,+CA6627 3
+Anaheim,+CA4073 Anaheim,+CA6539 3
+Anaheim,+CA4073 Anaheim,+CA6556 3.5
+Anaheim,+CA4073 Anaheim,+CA6564 3
+Anaheim,+CA4073 Anaheim,+CA6744 3
+Anaheim,+CA4073 San+Jose,+CA4095 2.5
+Anaheim,+CA4073 Anaheim,+CA6684 3
+Anaheim,+CA4073 Anaheim,+CA6502 3.5
+Anaheim,+CA4073 Anaheim,+CA6512 3
+Anaheim,+CA4073 Anaheim,+CA6520 3
+Anaheim,+CA4073 Anaheim,+CA6610 1
+Anaheim,+CA4073 Anaheim,+CA4099 8
+Anaheim,+CA4073 Anaheim,+CA6702 2
+Anaheim,+CA4073 Anaheim,+CA6453 3
+Anaheim,+CA4073 Anaheim,+CA6721 3
+Anaheim,+CA4073 Anaheim,+CA4100 2
+Anaheim,+CA4073 Anaheim,+CA6438 3.5
+Dallas,+TX6689 Dallas,+TX2635 3
+Dallas,+TX6689 Dallas,+TX4015 2
+Dallas,+TX6689 Dallas,+TX4080 3
+Dallas,+TX6689 New+York,+NY4028 3
+Dallas,+TX6689 Dallas,+TX4115 3
+Dallas,+TX1742 Dallas,+TX2635 3
+Dallas,+TX1742 Dallas,+TX4015 3
+Dallas,+TX1742 Dallas,+TX4080 3
+Dallas,+TX1742 New+York,+NY4028 2
+Dallas,+TX1742 Dallas,+TX4115 2
+New+York,+NY6605 New+York,+NY6606 3
+New+York,+NY6605 New+York,+NY4124 2
+New+York,+NY6605 New+York,+NY4116 2
+New+York,+NY6532 New+York,+NY4088 2.5
+New+York,+NY6532 New+York,+NY4048 2.5
+New+York,+NY6532 New+York,+NY4107 2.5
+New+York,+NY6532 New+York,+NY4116 2.5
+Atlanta,+GA6685 Atlanta,+GA4032 2
+Atlanta,+GA6685 Atlanta,+GA4074 2
+Atlanta,+GA6685 Atlanta,+GA4102 2
+New+York,+NY6606 New+York,+NY4116 3
+New+York,+NY6606 New+York,+NY4124 3
+New+York,+NY6606 New+York,+NY6605 3
+Roachdale,+IN6697 Roachdale,+IN4111 2
+Roachdale,+IN6697 Roachdale,+IN4056 2
+Roachdale,+IN6402 Roachdale,+IN4111 2
+Roachdale,+IN6402 Roachdale,+IN4056 2
+Atlanta,+GA4074 Orlando,+FL4049 4
+Atlanta,+GA4074 Dallas,+TX4015 5.5
+Atlanta,+GA4074 Atlanta,+GA6540 2
+Atlanta,+GA4074 Research+Triangle+Park,+NC4058 1
+Atlanta,+GA4074 Atlanta,+GA4102 2
+Atlanta,+GA4074 Atlanta,+GA6465 2
+Atlanta,+GA4074 Atlanta,+GA6481 2
+Atlanta,+GA4074 Atlanta,+GA6628 2
+Atlanta,+GA4074 New+York,+NY4088 6.5
+Atlanta,+GA4074 Atlanta,+GA6735 5
+Atlanta,+GA4074 Atlanta,+GA4032 2
+Atlanta,+GA4074 Atlanta,+GA3957 2
+Atlanta,+GA4074 Atlanta,+GA6745 2
+Atlanta,+GA4074 Chicago,+IL1484 8
+Atlanta,+GA4074 Atlanta,+GA2344 2
+Atlanta,+GA4074 Relay,+MD4110 4
+Atlanta,+GA4074 Atlanta,+GA6685 2
+Atlanta,+GA4074 Atlanta,+GA2338 2
+Atlanta,+GA4074 Atlanta,+GA2347 2
+Atlanta,+GA4074 Orlando,+FL4050 3.5
+Relay,+MD4131 Relay,+MD4136 2
+Relay,+MD4131 New+York,+NY6397 9
+Relay,+MD4131 Ashburn,+VA10162 1
+Relay,+MD4131 Relay,+MD4110 2
+Relay,+MD4131 Relay,+MD4093 2
+Relay,+MD4131 Atlanta,+GA4102 4
+Relay,+MD4131 Relay,+MD4127 2
+Relay,+MD4131 Relay,+MD4054 2
+Paris4051 Paris4090 2
+Paris4051 Frankfurt4079 2
+Relay,+MD6675 Relay,+MD4110 2.5
+Relay,+MD6675 Relay,+MD4093 2.5
+Relay,+MD6675 Relay,+MD4054 2.5
+Relay,+MD4136 Relay,+MD4131 2
+Relay,+MD4136 Ashburn,+VA10163 2
+Relay,+MD4136 Relay,+MD4110 2
+Relay,+MD4136 Relay,+MD5801 2
+Relay,+MD4136 Relay,+MD4054 2
+Relay,+MD4136 Relay,+MD4127 3
+New+York,+NY6397 New+York,+NY4088 2.5
+New+York,+NY6397 New+York,+NY4048 2.5
+New+York,+NY6397 New+York,+NY4107 2.5
+New+York,+NY6397 New+York,+NY4116 2.5
+New+York,+NY6397 Relay,+MD4131 9
+Pennsauken,+NJ4135 Pennsauken,+NJ4109 2
+Pennsauken,+NJ4135 Pennsauken,+NJ4117 2
+Pennsauken,+NJ4135 Pennsauken,+NJ4126 3.5
+Pennsauken,+NJ4135 New+York,+NY4028 11
+Pennsauken,+NJ4135 Pennsauken,+NJ6647 1
+Pennsauken,+NJ4135 Dallas,+TX4115 9
+Pennsauken,+NJ4135 Relay,+MD4093 8.5
+Pennsauken,+NJ4135 Pennsauken,+NJ4091 2
+Relay,+MD4138 Ashburn,+VA10161 1
+Relay,+MD4138 Relay,+MD4093 2
+Relay,+MD4138 Relay,+MD4110 2
+Relay,+MD4138 Relay,+MD4054 2
+Kansas+City,+MO6750 Kansas+City,+MO4082 2
+Kansas+City,+MO6750 Kansas+City,+MO4043 2
+Stockton,+CA6563 Stockton,+CA4113 4.5
+Stockton,+CA6563 Stockton,+CA4064 2.5
+Stockton,+CA6563 Stockton,+CA4096 2.5
+Stockton,+CA6563 Stockton,+CA4065 2.5
+Dallas,+TX4080 Richardson,+TX5500 2
+Dallas,+TX4080 San+Jose,+CA4119 7.5
+Dallas,+TX4080 Cheyenne,+WY4076 13.5
+Dallas,+TX4080 Dallas,+TX6580 2
+Dallas,+TX4080 Dallas,+TX6726 3
+Dallas,+TX4080 Dallas,+TX6566 3
+Dallas,+TX4080 Dallas,+TX4115 2
+Dallas,+TX4080 Dallas,+TX6494 2
+Dallas,+TX4080 Chicago,+IL4104 7.5
+Dallas,+TX4080 Dallas,+TX6658 2
+Dallas,+TX4080 Dallas,+TX6749 3
+Dallas,+TX4080 Dallas,+TX6587 2
+Dallas,+TX4080 Chicago,+IL4036 5.5
+Dallas,+TX4080 Chicago,+IL6593 8.5
+Dallas,+TX4080 Chicago,+IL4037 7.5
+Dallas,+TX4080 Dallas,+TX6604 3
+Dallas,+TX4080 Dallas,+TX6622 3
+Dallas,+TX4080 Dallas,+TX6444 2
+Dallas,+TX4080 Dallas,+TX6641 3
+Dallas,+TX4080 Anaheim,+CA4100 4
+Dallas,+TX4080 Anaheim,+CA4101 7
+Dallas,+TX4080 Dallas,+TX4015 2
+Dallas,+TX4080 Dallas,+TX6645 3
+Dallas,+TX4080 Dallas,+TX6483 3
+Dallas,+TX4080 New+York,+NY4028 4
+Dallas,+TX4080 Dallas,+TX6573 3
+Dallas,+TX4080 Dallas,+TX6663 2
+Dallas,+TX4080 Dallas,+TX6558 2
+Dallas,+TX4080 Dallas,+TX6737 2
+Dallas,+TX4080 Dallas,+TX6683 2
+Dallas,+TX4080 Dallas,+TX6598 3.5
+Dallas,+TX4080 Dallas,+TX1742 3
+Dallas,+TX4080 Dallas,+TX6689 3
+Dallas,+TX4080 Kansas+City,+MO4082 5.5
+Dallas,+TX4080 Dallas,+TX2635 2
+Dallas,+TX4080 Chicago,+IL1484 5.5
+Dallas,+TX4080 Anaheim,+CA6502 7.5
+Dallas,+TX4080 Dallas,+TX6504 4
+Dallas,+TX4080 Dallas,+TX3549 2
+Dallas,+TX4080 Anaheim,+CA4099 12
+Dallas,+TX4080 Dallas,+TX6612 2
+Dallas,+TX4080 Dallas,+TX6419 3
+Dallas,+TX4080 Chicago,+IL6441 7.5
+Dallas,+TX4080 Dallas,+TX6471 2
+Dallas,+TX4080 Dallas,+TX6706 2.5
+Brussels,+Belgium4075 Amsterdam4030 2
+Brussels,+Belgium4075 Brussels,+Belgium4033 2
+Stockton,+CA6569 Stockton,+CA4113 3.5
+Stockton,+CA6569 Stockton,+CA4064 2.5
+Stockton,+CA6569 Stockton,+CA4096 2.5
+Stockton,+CA6569 Stockton,+CA4065 2.5
+Orlando,+FL4108 Orlando,+FL4089 2
+Orlando,+FL4108 Orlando,+FL4049 3
+Orlando,+FL4108 Orlando,+FL6429 4
+Orlando,+FL4108 Atlanta,+GA4032 2
+Orlando,+FL4108 Orlando,+FL4050 3.5
+Orlando,+FL4108 Orlando,+FL6693 4.5
+Pennsauken,+NJ6754 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6754 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6754 Pennsauken,+NJ4091 3
+Seattle,+WA4059 Tacoma,+WA3251 2
+Seattle,+WA4059 Seattle,+WA4019 3
+Seattle,+WA4059 Seattle,+WA6432 3
+Seattle,+WA4059 Seattle,+WA4060 2
+Seattle,+WA4059 Chicago,+IL4104 3.5
+Washington,+DC6736 Washington,+DC6443 3
+Washington,+DC6736 Washington,+DC9643 4
+Washington,+DC6736 Washington,+DC4139 3
+Washington,+DC6736 Washington,+DC4140 3
+Washington,+DC6736 Washington,+DC6456 3
+Washington,+DC6736 Washington,+DC4142 2
+Washington,+DC6736 Washington,+DC6748 3
+Kansas+City,+MO6690 Kansas+City,+MO4082 2
+Kansas+City,+MO6690 Kansas+City,+MO4043 2
+Kansas+City,+MO6690 Kansas+City,+MO6472 2
+Kansas+City,+MO6690 Dallas,+TX4015 9.5
+Kansas+City,+MO6690 Kansas+City,+MO4105 4
+Kansas+City,+MO6690 Kansas+City,+MO4106 2.5
+Stockton,+CA6719 Stockton,+CA4113 3.5
+Stockton,+CA6719 Stockton,+CA4064 2.5
+Stockton,+CA6719 Stockton,+CA4096 2.5
+Stockton,+CA6719 Stockton,+CA4065 2.5
+Kansas+City,+MO4082 Pennsauken,+NJ4052 12.5
+Kansas+City,+MO4082 Kansas+City,+MO6544 2
+Kansas+City,+MO4082 Kansas+City,+MO6472 2
+Kansas+City,+MO4082 Kansas+City,+MO6707 2
+Kansas+City,+MO4082 Kansas+City,+MO6458 3
+Kansas+City,+MO4082 Kansas+City,+MO6750 2
+Kansas+City,+MO4082 Kansas+City,+MO6395 2
+Kansas+City,+MO4082 Kansas+City,+MO4105 3
+Kansas+City,+MO4082 Lees+Summit,+MO5503 1
+Kansas+City,+MO4082 Kansas+City,+MO4106 2.5
+Kansas+City,+MO4082 Kansas+City,+MO6422 2.5
+Kansas+City,+MO4082 Lees+Summit,+MO5505 1
+Kansas+City,+MO4082 Kansas+City,+MO4043 2
+Kansas+City,+MO4082 Kansas+City,+MO6690 2
+Kansas+City,+MO4082 Dallas,+TX4080 5.5
+Stockton,+CA6577 Stockton,+CA4113 2.5
+Stockton,+CA6577 Stockton,+CA4064 3.5
+Stockton,+CA6577 Stockton,+CA4096 2.5
+Stockton,+CA6577 Stockton,+CA4065 2.5
+Dallas,+TX2635 Dallas,+TX6580 3
+Dallas,+TX2635 Dallas,+TX6726 3
+Dallas,+TX2635 Dallas,+TX6566 3
+Dallas,+TX2635 Dallas,+TX4115 2
+Dallas,+TX2635 Kansas+City,+MO4105 5.5
+Dallas,+TX2635 Dallas,+TX6494 2
+Dallas,+TX2635 Kansas+City,+MO4106 5
+Dallas,+TX2635 Chicago,+IL4104 5.5
+Dallas,+TX2635 Dallas,+TX4133 4
+Dallas,+TX2635 Dallas,+TX6587 2
+Dallas,+TX2635 Dallas,+TX4080 2
+Dallas,+TX2635 Dallas,+TX6604 4
+Dallas,+TX2635 Dallas,+TX6444 3
+Dallas,+TX2635 Dallas,+TX6622 3
+Dallas,+TX2635 Dallas,+TX6641 3
+Dallas,+TX2635 Anaheim,+CA4101 4
+Dallas,+TX2635 Dallas,+TX4015 2
+Dallas,+TX2635 Dallas,+TX6645 3
+Dallas,+TX2635 Dallas,+TX6483 3
+Dallas,+TX2635 New+York,+NY4028 4
+Dallas,+TX2635 Dallas,+TX6573 3
+Dallas,+TX2635 Dallas,+TX6663 2
+Dallas,+TX2635 Dallas,+TX6737 2
+Dallas,+TX2635 Dallas,+TX6683 2
+Dallas,+TX2635 Dallas,+TX6598 3.5
+Dallas,+TX2635 Dallas,+TX1742 3
+Dallas,+TX2635 Dallas,+TX6689 3
+Dallas,+TX2635 Atlanta,+GA4032 5.5
+Dallas,+TX2635 Dallas,+TX6504 3
+Dallas,+TX2635 Anaheim,+CA4099 10
+Dallas,+TX2635 Dallas,+TX3549 3
+Dallas,+TX2635 Dallas,+TX6612 2
+Dallas,+TX2635 Dallas,+TX6419 3
+Dallas,+TX2635 Dallas,+TX6471 2
+Dallas,+TX2635 Dallas,+TX6706 2.5
+Washington,+DC9643 Washington,+DC6736 4
+Washington,+DC9643 Washington,+DC6415 3
+Washington,+DC9643 Relay,+MD4110 2.5
+Washington,+DC9643 Relay,+MD4093 2.5
+Washington,+DC9643 Washington,+DC6393 3
+Washington,+DC9643 Relay,+MD4054 2.5
+Pearl+Harbor,+HI6550 Pearl+Harbor,+HI4092 3
+Pearl+Harbor,+HI6550 Pearl+Harbor,+HI4053 7.5
+Anaheim,+CA4099 Anaheim,+CA4101 9
+Anaheim,+CA4099 San+Jose,+CA4062 8.5
+Anaheim,+CA4099 Anaheim,+CA6627 8
+Anaheim,+CA4099 Anaheim,+CA4031 8
+Anaheim,+CA4099 Anaheim,+CA6539 8
+Anaheim,+CA4099 Anaheim,+CA6490 8
+Anaheim,+CA4099 Anaheim,+CA6564 8
+Anaheim,+CA4099 Anaheim,+CA6556 7.5
+Anaheim,+CA4099 Anaheim,+CA6744 8
+Anaheim,+CA4099 Dallas,+TX4133 8
+Anaheim,+CA4099 Anaheim,+CA6591 7.5
+Anaheim,+CA4099 Anaheim,+CA6584 10
+Anaheim,+CA4099 Pearl+Harbor,+HI4092 7
+Anaheim,+CA4099 Dallas,+TX4080 12
+Anaheim,+CA4099 Anaheim,+CA4073 8
+Anaheim,+CA4099 Dallas,+TX2635 10
+Anaheim,+CA4099 Anaheim,+CA6502 7.5
+Anaheim,+CA4099 Anaheim,+CA6512 9
+Anaheim,+CA4099 Anaheim,+CA6520 9
+Anaheim,+CA4099 Anaheim,+CA6702 8
+Anaheim,+CA4099 Anaheim,+CA6453 9
+Anaheim,+CA4099 Anaheim,+CA6438 7.5
+Anaheim,+CA4099 Anaheim,+CA4100 9
+Copenhagen4038 Copenhagen4077 2
+Copenhagen4038 Stockholm,+Sweden4066 5
+Copenhagen4038 Manasquan,+NJ4086 3
+Copenhagen4038 Hamburg,+Germany4041 4.5
+Dallas,+TX6419 Dallas,+TX2635 3
+Dallas,+TX6419 Dallas,+TX4015 3
+Dallas,+TX6419 Dallas,+TX4080 3
+Dallas,+TX6419 New+York,+NY4028 2
+Dallas,+TX6419 Dallas,+TX4115 2
+Seattle,+WA4060 Kansas+City,+MO4043 6.5
+Seattle,+WA4060 Tacoma,+WA3251 3
+Seattle,+WA4060 Seattle,+WA4059 2
+Seattle,+WA4060 Seattle,+WA4019 2
+Seattle,+WA4060 Seattle,+WA6432 2
+Orlando,+FL4049 Orlando,+FL6429 2
+Orlando,+FL4049 Orlando,+FL4089 3
+Orlando,+FL4049 Dallas,+TX4015 7.5
+Orlando,+FL4049 Orlando,+FL4108 3
+Orlando,+FL4049 Atlanta,+GA4074 4
+Orlando,+FL4049 Orlando,+FL6459 2
+Orlando,+FL4049 Orlando,+FL6693 2.5
+Orlando,+FL4049 Atlanta,+GA4102 3
+New+York,+NY4017 New+York,+NY4048 2.5
+New+York,+NY4017 London4045 9
+New+York,+NY4017 New+York,+NY4134 2.5
+New+York,+NY6559 New+York,+NY4088 3
+New+York,+NY6559 New+York,+NY4048 2
+New+York,+NY6559 New+York,+NY4107 3
+New+York,+NY6559 New+York,+NY4116 3
+Relay,+MD6696 Relay,+MD4110 2.5
+Relay,+MD6696 Relay,+MD4093 2.5
+Relay,+MD6696 Relay,+MD4054 2.5
+Stockton,+CA4113 Stockton,+CA6407 3.5
+Stockton,+CA4113 Stockton,+CA6452 3
+Stockton,+CA4113 Pennsauken,+NJ4091 8.5
+Stockton,+CA4113 Stockton,+CA6463 3.5
+Stockton,+CA4113 Stockton,+CA6609 4.5
+Stockton,+CA4113 San+Jose,+CA4095 6
+Stockton,+CA4113 Stockton,+CA6619 4.5
+Stockton,+CA4113 Stockton,+CA6563 4.5
+Stockton,+CA4113 Chicago,+IL4036 12
+Stockton,+CA4113 Stockton,+CA6719 3.5
+Stockton,+CA4113 Stockton,+CA6590 3.5
+Stockton,+CA4113 Stockton,+CA3402 6
+Stockton,+CA4113 Stockton,+CA6583 3
+Stockton,+CA4113 Stockton,+CA6479 3.5
+Stockton,+CA4113 Stockton,+CA6577 2.5
+Stockton,+CA4113 Stockton,+CA6569 3.5
+Stockton,+CA4113 Stockton,+CA6758 4.5
+Stockton,+CA4113 Rancho+Cordova,+CA5507 2.5
+Stockton,+CA4113 Stockton,+CA4096 3
+Washington,+DC6748 Washington,+DC6736 3
+Washington,+DC6748 Washington,+DC6543 2
+Washington,+DC6748 Washington,+DC6415 2
+Washington,+DC6748 Relay,+MD4110 2.5
+Washington,+DC6748 Relay,+MD4093 2.5
+Washington,+DC6748 Washington,+DC6393 3
+Washington,+DC6748 Relay,+MD4054 2.5
+Frankfurt4040 Milan,+Italy4085 2
+Frankfurt4040 Frankfurt4079 2
+Frankfurt4040 Hamburg,+Germany4081 3
+Stockton,+CA6583 Stockton,+CA4113 3
+Stockton,+CA6583 Stockton,+CA4064 3
+Stockton,+CA6583 Stockton,+CA4096 3
+Stockton,+CA6583 Stockton,+CA4065 3
+Springfield,+MA4020 Pennsauken,+NJ4125 2
+Springfield,+MA4020 Pennsauken,+NJ4126 2
+Springfield,+MA4020 Springfield,+MA4023 2.5
+Springfield,+MA4020 Boston5499 2.5
+Springfield,+MA4020 Springfield,+MA4025 3
+Springfield,+MA4020 Springfield,+MA6406 2
+Springfield,+MA4020 New+York,+NY4137 7.5
+Springfield,+MA4020 Chicago,+IL4036 6
+Cheyenne,+WY6455 Cheyenne,+WY4034 2
+Cheyenne,+WY6455 Cheyenne,+WY4076 2
+Ashburn,+VA10161 Relay,+MD4138 1
+Washington,+DC4139 Washington,+DC6736 3
+Washington,+DC4139 Washington,+DC6543 2
+Washington,+DC4139 Washington,+DC6415 2
+Washington,+DC4139 Relay,+MD4093 2.5
+Washington,+DC4139 Relay,+MD4110 2.5
+Washington,+DC4139 Relay,+MD4054 2.5
+Washington,+DC4139 Washington,+DC6393 3
+Ashburn,+VA10162 Relay,+MD4131 1
+Springfield,+MA4023 Springfield,+MA4020 2.5
+Springfield,+MA4023 Chicago,+IL1484 5.5
+Springfield,+MA4023 Boston5509 2
+Springfield,+MA4023 Springfield,+MA4025 2.5
+Springfield,+MA4023 Pennsauken,+NJ4091 4
+Springfield,+MA4023 Springfield,+MA6406 2.5
+Ashburn,+VA10163 Relay,+MD4136 2
+Ashburn,+VA10163 Relay,+MD4127 2
+Springfield,+MA4025 Chicago,+IL4122 5
+Springfield,+MA4025 Springfield,+MA4020 3
+Springfield,+MA4025 Springfield,+MA4023 2.5
+Cheyenne,+WY6388 Cheyenne,+WY4034 2
+Cheyenne,+WY6388 Cheyenne,+WY4076 2
+Orlando,+FL4050 Orlando,+FL6429 3.5
+Orlando,+FL4050 Orlando,+FL4089 4.5
+Orlando,+FL4050 Dallas,+TX4015 9
+Orlando,+FL4050 Orlando,+FL4108 3.5
+Orlando,+FL4050 Atlanta,+GA4074 3.5
+Orlando,+FL4050 Orlando,+FL6459 4.5
+Orlando,+FL4050 Atlanta,+GA4102 3.5
+Orlando,+FL4050 Orlando,+FL6693 7
+Stockholm,+Sweden4066 Stockholm,+Sweden4097 2
+Stockholm,+Sweden4066 Copenhagen4038 5
+Chicago,+IL6414 Chicago,+IL1391 3
+Chicago,+IL6414 Chicago,+IL4122 2
+Chicago,+IL6414 Chicago,+IL4036 2
+Chicago,+IL6414 Chicago,+IL1484 2
+Chicago,+IL6414 Chicago,+IL4037 2
+Chicago,+IL6414 Chicago,+IL4104 2
+New+York,+NY4022 New+York,+NY4048 3.5
+New+York,+NY4022 London4084 7.5
+New+York,+NY4022 London4083 9.5
+New+York,+NY4024 London4084 9
+New+York,+NY4024 New+York,+NY4048 2
+New+York,+NY4024 New+York,+NY4134 2
+Reston,+VA5496 Reston,+VA5497 3
+Reston,+VA5496 Relay,+MD4054 2
+Reston,+VA5497 Reston,+VA5496 3
+Reston,+VA5497 Relay,+MD4093 2
+New+York,+NY4028 Pennsauken,+NJ4135 11
+New+York,+NY4028 Dallas,+TX4015 4
+New+York,+NY4028 Dallas,+TX6580 3
+New+York,+NY4028 Dallas,+TX6726 2
+New+York,+NY4028 Dallas,+TX6645 2
+New+York,+NY4028 Anaheim,+CA4031 6
+New+York,+NY4028 Dallas,+TX6483 2
+New+York,+NY4028 Dallas,+TX6573 2
+New+York,+NY4028 Dallas,+TX6566 2
+New+York,+NY4028 Kansas+City,+MO4105 6.5
+New+York,+NY4028 Dallas,+TX6494 3
+New+York,+NY4028 Dallas,+TX6737 5
+New+York,+NY4028 Orlando,+FL4089 8.5
+New+York,+NY4028 Dallas,+TX6587 3
+New+York,+NY4028 Dallas,+TX6749 2
+New+York,+NY4028 Dallas,+TX4080 4
+New+York,+NY4028 Dallas,+TX6598 6.5
+New+York,+NY4028 Dallas,+TX6689 3
+New+York,+NY4028 Dallas,+TX1742 2
+New+York,+NY4028 Chicago,+IL1391 7.5
+New+York,+NY4028 Dallas,+TX2635 4
+New+York,+NY4028 Dallas,+TX6504 2
+New+York,+NY4028 Dallas,+TX3549 3
+New+York,+NY4028 Dallas,+TX6604 2
+New+York,+NY4028 Dallas,+TX6612 3
+New+York,+NY4028 Dallas,+TX6419 2
+New+York,+NY4028 Dallas,+TX6622 2
+New+York,+NY4028 Dallas,+TX6444 3
+New+York,+NY4028 Dallas,+TX6641 4
+New+York,+NY4028 Dallas,+TX6706 2.5
+New+York,+NY4028 Dallas,+TX6471 3
+New+York,+NY6496 New+York,+NY4088 2.5
+New+York,+NY6496 New+York,+NY4048 2.5
+New+York,+NY6496 New+York,+NY6446 2.5
+New+York,+NY6496 New+York,+NY4107 2.5
+New+York,+NY6496 New+York,+NY4116 2.5
+New+York,+NY6496 New+York,+NY6427 2
+Boston5509 Springfield,+MA4023 2
+Boston5509 Boston5499 3
+Relay,+MD4093 Washington,+DC6443 2.5
+Relay,+MD4093 Reston,+VA5497 2
+Relay,+MD4093 Relay,+MD4138 2
+Relay,+MD4093 Pennsauken,+NJ4135 8.5
+Relay,+MD4093 Relay,+MD6696 2.5
+Relay,+MD4093 Washington,+DC6456 2.5
+Relay,+MD4093 Washington,+DC6469 2.5
+Relay,+MD4093 Relay,+MD6431 2.5
+Relay,+MD4093 Washington,+DC4140 2.5
+Relay,+MD4093 Washington,+DC4142 3.5
+Relay,+MD4093 Washington,+DC6748 2.5
+Relay,+MD4093 Atlanta,+GA4032 4
+Relay,+MD4093 Washington,+DC9643 2.5
+Relay,+MD4093 Relay,+MD6518 2.5
+Relay,+MD4093 Relay,+MD6461 2.5
+Relay,+MD4093 Washington,+DC4139 2.5
+Relay,+MD4093 Relay,+MD6551 2.5
+Relay,+MD4093 Relay,+MD4110 2
+Relay,+MD4093 Relay,+MD6449 2.5
+Relay,+MD4093 San+Jose,+CA4112 6
+Relay,+MD4093 Relay,+MD4131 2
+Relay,+MD4093 Relay,+MD6576 2
+Relay,+MD4093 Relay,+MD6675 2.5
+Relay,+MD4093 Relay,+MD4118 2
+Relay,+MD4093 Relay,+MD4127 2
+Pennsauken,+NJ4091 Pennsauken,+NJ4125 6.5
+Pennsauken,+NJ4091 Pennsauken,+NJ4109 2
+Pennsauken,+NJ4091 Pennsauken,+NJ4052 2
+Pennsauken,+NJ4091 Pennsauken,+NJ4117 4
+Pennsauken,+NJ4091 Pennsauken,+NJ4126 5.5
+Pennsauken,+NJ4091 Pennsauken,+NJ4135 2
+Pennsauken,+NJ4091 New+York,+NY4124 6
+Pennsauken,+NJ4091 Stockton,+CA4113 8.5
+Pennsauken,+NJ4091 Pennsauken,+NJ6516 3
+Pennsauken,+NJ4091 Springfield,+MA4023 4
+Pennsauken,+NJ4091 Pennsauken,+NJ6614 3
+Pennsauken,+NJ4091 Pennsauken,+NJ6525 3
+Pennsauken,+NJ4091 Stockton,+CA4065 7.5
+Pennsauken,+NJ4091 Pennsauken,+NJ6624 3
+Pennsauken,+NJ4091 Pennsauken,+NJ6448 3
+Pennsauken,+NJ4091 Pennsauken,+NJ6728 3
+Pennsauken,+NJ4091 Pennsauken,+NJ6486 3
+Pennsauken,+NJ4091 Relay,+MD4118 4.5
+Pennsauken,+NJ4091 Pennsauken,+NJ6754 3
+Washington,+DC4140 Washington,+DC6736 3
+Washington,+DC4140 Washington,+DC6543 2
+Washington,+DC4140 Washington,+DC6415 2
+Washington,+DC4140 Relay,+MD4093 2.5
+Washington,+DC4140 Relay,+MD4110 2.5
+Washington,+DC4140 Relay,+MD4054 2.5
+Washington,+DC4140 Washington,+DC6393 3
+Washington,+DC4142 Washington,+DC6736 2
+Washington,+DC4142 Washington,+DC6543 2
+Washington,+DC4142 Washington,+DC6415 2
+Washington,+DC4142 Relay,+MD4093 3.5
+Washington,+DC4142 Washington,+DC6393 2
+Stockton,+CA6590 Stockton,+CA4113 3.5
+Stockton,+CA6590 Stockton,+CA4064 2.5
+Stockton,+CA6590 Stockton,+CA4096 2.5
+Stockton,+CA6590 Stockton,+CA4065 2.5
+Atlanta,+GA3957 Atlanta,+GA4032 2
+Atlanta,+GA3957 Atlanta,+GA6565 2
+Atlanta,+GA3957 Atlanta,+GA4074 2
+Atlanta,+GA3957 Dallas,+TX6641 7.5
+Anaheim,+CA6502 Anaheim,+CA4099 7.5
+Anaheim,+CA6502 Anaheim,+CA4101 2.5
+Anaheim,+CA6502 Anaheim,+CA4031 2.5
+Anaheim,+CA6502 Dallas,+TX4080 7.5
+Anaheim,+CA6502 Anaheim,+CA4073 3.5
+Anaheim,+CA6502 Anaheim,+CA6721 3.5
+Anaheim,+CA6502 Anaheim,+CA4100 2.5
+Tokyo4069 Hong+Kong4042 4.5
+Tokyo4069 Stockton,+CA4064 7
+Tokyo4069 Tokyo4070 2.5
+Dallas,+TX6504 Dallas,+TX2635 3
+Dallas,+TX6504 Dallas,+TX4015 3
+Dallas,+TX6504 Dallas,+TX4080 4
+Dallas,+TX6504 New+York,+NY4028 2
+Dallas,+TX6504 Dallas,+TX4115 3
+Kansas+City,+MO6422 Kansas+City,+MO4082 2.5
+Kansas+City,+MO6422 Kansas+City,+MO4105 2.5
+Kansas+City,+MO6422 Kansas+City,+MO4106 2
+San+Jose,+CA6477 San+Jose,+CA4095 1
+Anaheim,+CA6438 Anaheim,+CA4101 2.5
+Anaheim,+CA6438 Anaheim,+CA4099 7.5
+Anaheim,+CA6438 Anaheim,+CA4031 2.5
+Anaheim,+CA6438 Anaheim,+CA4073 3.5
+Anaheim,+CA6438 Anaheim,+CA6721 2
+Anaheim,+CA6438 Anaheim,+CA4100 3.5
+Hong+Kong6421 Hong+Kong4042 12.5
+Hong+Kong6421 Stockton,+CA4096 2
+New+York,+NY4107 New+York,+NY4088 2
+New+York,+NY4107 Pennsauken,+NJ4109 6
+New+York,+NY4107 New+York,+NY6397 2.5
+New+York,+NY4107 New+York,+NY6559 3
+New+York,+NY4107 New+York,+NY4116 2
+New+York,+NY4107 New+York,+NY6496 2.5
+New+York,+NY4107 New+York,+NY4134 2
+New+York,+NY4107 New+York,+NY6427 2.5
+New+York,+NY4107 New+York,+NY6532 2.5
+New+York,+NY4107 New+York,+NY4048 2
+New+York,+NY4107 New+York,+NY6446 3
+New+York,+NY4107 Relay,+MD4054 7.5
+Paris4090 London4044 2
+Paris4090 Milan,+Italy4046 2
+Paris4090 Paris4051 2
+Munich,+Germany4087 Hamburg,+Germany4041 1
+Atlanta,+GA6439 Atlanta,+GA4102 1
+Stockton,+CA3402 Stockton,+CA4064 5
+Stockton,+CA3402 Stockton,+CA4113 6
+Stockton,+CA3402 Stockton,+CA4065 5
+Stockton,+CA3402 Stockton,+CA4096 5
+Stockton,+CA3402 Anaheim,+CA6512 6.5
+Tokyo4070 Tokyo4071 2
+Tokyo4070 Hong+Kong4042 2
+Tokyo4070 Tacoma,+WA3251 8
+Tokyo4070 Singapore4094 2
+Tokyo4070 Tacoma,+WA4114 6
+Tokyo4070 Tokyo4069 2.5
+Cheyenne,+WY6542 Cheyenne,+WY4034 2
+Cheyenne,+WY6542 Cheyenne,+WY4076 2
+Tokyo4071 Singapore4094 5
+Tokyo4071 Stockton,+CA4064 7.5
+Tokyo4071 Tokyo4070 2
+Stockton,+CA4064 Pennsauken,+NJ4052 7.5
+Stockton,+CA4064 Stockton,+CA6602 2
+Stockton,+CA4064 Stockton,+CA6407 2.5
+Stockton,+CA4064 San+Jose,+CA4119 5
+Stockton,+CA4064 Pearl+Harbor,+HI4053 3
+Stockton,+CA4064 Stockton,+CA6452 3
+Stockton,+CA4064 Stockton,+CA6463 2.5
+Stockton,+CA4064 Stockton,+CA6563 2.5
+Stockton,+CA4064 Stockton,+CA6719 2.5
+Stockton,+CA4064 Stockton,+CA3402 5
+Stockton,+CA4064 Stockton,+CA6590 2.5
+Stockton,+CA4064 Stockton,+CA6583 3
+Stockton,+CA4064 Tokyo4071 7.5
+Stockton,+CA4064 Stockton,+CA6479 2.5
+Stockton,+CA4064 Stockton,+CA6577 3.5
+Stockton,+CA4064 Stockton,+CA6569 2.5
+Stockton,+CA4064 Stockton,+CA6758 2.5
+Stockton,+CA4064 Tokyo4069 7
+Stockton,+CA4064 Sydney,+Australia4068 2
+Stockton,+CA4064 Stockton,+CA4096 2
+Stockton,+CA4065 Stockton,+CA6407 2.5
+Stockton,+CA4065 Pearl+Harbor,+HI4053 5
+Stockton,+CA4065 Stockton,+CA6452 3
+Stockton,+CA4065 Pennsauken,+NJ4091 7.5
+Stockton,+CA4065 Stockton,+CA6463 2.5
+Stockton,+CA4065 Stockton,+CA6609 2.5
+Stockton,+CA4065 San+Jose,+CA4095 5
+Stockton,+CA4065 Stockton,+CA6619 2.5
+Stockton,+CA4065 Stockton,+CA6563 2.5
+Stockton,+CA4065 Chicago,+IL4036 11
+Stockton,+CA4065 Stockton,+CA6719 2.5
+Stockton,+CA4065 Stockton,+CA6590 2.5
+Stockton,+CA4065 Stockton,+CA3402 5
+Stockton,+CA4065 Stockton,+CA6583 3
+Stockton,+CA4065 Stockton,+CA6479 2.5
+Stockton,+CA4065 Stockton,+CA6569 2.5
+Stockton,+CA4065 Stockton,+CA6577 2.5
+Stockton,+CA4065 Stockton,+CA6758 2.5
+Stockton,+CA4065 Rancho+Cordova,+CA5507 2.5
+Stockton,+CA4065 Stockton,+CA4096 2
+Anaheim,+CA6512 Anaheim,+CA4099 9
+Anaheim,+CA6512 Anaheim,+CA4101 2
+Anaheim,+CA6512 Anaheim,+CA4031 2
+Anaheim,+CA6512 Anaheim,+CA4073 3
+Anaheim,+CA6512 Stockton,+CA3402 6.5
+Anaheim,+CA6512 Anaheim,+CA6721 2
+Anaheim,+CA6512 Anaheim,+CA4100 2
+Dallas,+TX6444 Dallas,+TX2635 3
+Dallas,+TX6444 Dallas,+TX4015 3
+Dallas,+TX6444 Dallas,+TX4080 2
+Dallas,+TX6444 New+York,+NY4028 3
+Dallas,+TX6444 Dallas,+TX4115 2
+New+York,+NY4116 New+York,+NY4088 2
+New+York,+NY4116 Pennsauken,+NJ4109 6
+New+York,+NY4116 New+York,+NY4107 2
+New+York,+NY4116 New+York,+NY6397 2.5
+New+York,+NY4116 New+York,+NY6559 3
+New+York,+NY4116 New+York,+NY4124 2
+New+York,+NY4116 New+York,+NY6496 2.5
+New+York,+NY4116 Relay,+MD4110 7.5
+New+York,+NY4116 New+York,+NY6605 2
+New+York,+NY4116 New+York,+NY6532 2.5
+New+York,+NY4116 New+York,+NY6427 2.5
+New+York,+NY4116 Chicago,+IL4104 11.5
+New+York,+NY4116 New+York,+NY6606 3
+New+York,+NY4116 New+York,+NY4137 2
+New+York,+NY4116 New+York,+NY6446 3
+New+York,+NY4048 New+York,+NY4024 2
+New+York,+NY4048 Pennsauken,+NJ4052 6
+New+York,+NY4048 New+York,+NY6751 2
+New+York,+NY4048 New+York,+NY4017 2.5
+New+York,+NY4048 New+York,+NY6752 2
+New+York,+NY4048 New+York,+NY6559 2
+New+York,+NY4048 New+York,+NY6397 2.5
+New+York,+NY4048 New+York,+NY4107 2
+New+York,+NY4048 New+York,+NY6496 2.5
+New+York,+NY4048 New+York,+NY4134 2
+New+York,+NY4048 Chicago,+IL4104 8.5
+New+York,+NY4048 New+York,+NY4137 2
+New+York,+NY4048 New+York,+NY4088 2
+New+York,+NY4048 Atlanta,+GA4032 6.5
+New+York,+NY4048 Relay,+MD4110 5.5
+New+York,+NY4048 New+York,+NY6532 2.5
+New+York,+NY4048 New+York,+NY6427 2.5
+New+York,+NY4048 New+York,+NY6446 2
+New+York,+NY4048 Manasquan,+NJ4047 4.5
+New+York,+NY4048 New+York,+NY4022 3.5
+Relay,+MD6431 Relay,+MD4110 2.5
+Relay,+MD6431 Relay,+MD4093 2.5
+Relay,+MD6431 Relay,+MD4054 2.5
+Santa+Clara,+CA5508 San+Jose,+CA4119 1
+Stockton,+CA6758 Stockton,+CA4113 4.5
+Stockton,+CA6758 Stockton,+CA4064 2.5
+Stockton,+CA6758 Stockton,+CA4096 2.5
+Stockton,+CA6758 Stockton,+CA4065 2.5
+Cheyenne,+WY6629 Cheyenne,+WY4034 2
+Cheyenne,+WY6629 Cheyenne,+WY4076 2
+Anaheim,+CA6520 Anaheim,+CA4101 2
+Anaheim,+CA6520 Anaheim,+CA4099 9
+Anaheim,+CA6520 Anaheim,+CA4031 2
+Anaheim,+CA6520 Anaheim,+CA4073 3
+Anaheim,+CA6520 Anaheim,+CA6721 2
+Anaheim,+CA6520 Anaheim,+CA4100 2
+Dallas,+TX3549 Dallas,+TX2635 3
+Dallas,+TX3549 Dallas,+TX4015 2
+Dallas,+TX3549 Dallas,+TX4080 2
+Dallas,+TX3549 New+York,+NY4028 3
+Dallas,+TX3549 Dallas,+TX4115 2
+Manasquan,+NJ4047 New+York,+NY4048 4.5
+Manasquan,+NJ4047 London4084 4.5
+Manasquan,+NJ4047 Manasquan,+NJ4086 2
+Manasquan,+NJ4047 Relay,+MD4054 4
+Manasquan,+NJ4047 London4083 2.5
+Washington,+DC6415 Washington,+DC6443 2
+Washington,+DC6415 Washington,+DC9643 3
+Washington,+DC6415 Washington,+DC6469 3
+Washington,+DC6415 Washington,+DC4139 2
+Washington,+DC6415 Washington,+DC4140 2
+Washington,+DC6415 Washington,+DC6456 2
+Washington,+DC6415 Washington,+DC6748 2
+Washington,+DC6415 Washington,+DC4142 2
+Chicago,+IL6441 Chicago,+IL1391 3
+Chicago,+IL6441 Chicago,+IL1484 2
+Chicago,+IL6441 Dallas,+TX4080 7.5
+Chicago,+IL6441 Chicago,+IL4036 2
+Chicago,+IL6441 Chicago,+IL4037 2
+Chicago,+IL6441 Chicago,+IL4104 2
+Orlando,+FL6693 Orlando,+FL4089 3.5
+Orlando,+FL6693 Orlando,+FL4049 2.5
+Orlando,+FL6693 Atlanta,+GA2347 4.5
+Orlando,+FL6693 Orlando,+FL4050 7
+Orlando,+FL6693 Orlando,+FL4108 4.5
+Frankfurt4079 Paris4051 2
+Frankfurt4079 Frankfurt4040 2
+Anaheim,+CA6453 Anaheim,+CA4101 2
+Anaheim,+CA6453 Anaheim,+CA4099 9
+Anaheim,+CA6453 Anaheim,+CA4031 2
+Anaheim,+CA6453 Anaheim,+CA4073 3
+Anaheim,+CA6453 Anaheim,+CA6721 2
+Anaheim,+CA6453 Anaheim,+CA4100 3
+Stockholm,+Sweden4097 Copenhagen4077 2
+Stockholm,+Sweden4097 Stockholm,+Sweden4066 2
+Copenhagen4077 Stockholm,+Sweden4097 2
+Copenhagen4077 London4044 2.5
+Copenhagen4077 Copenhagen4038 2
+Copenhagen4077 Hamburg,+Germany4081 6.5
+London4044 Copenhagen4077 2.5
+London4044 London4045 3.5
+London4044 Paris4090 2
+London4044 Brussels,+Belgium4033 5
+London4044 London4083 2
+London4044 Dublin,+Ireland4039 1
+Richardson,+TX5500 Dallas,+TX4015 4
+Richardson,+TX5500 Dallas,+TX4080 2
+London4045 London4044 3.5
+London4045 New+York,+NY4017 9
+New+York,+NY4124 New+York,+NY6606 3
+New+York,+NY4124 New+York,+NY4137 2
+New+York,+NY4124 New+York,+NY4129 2
+New+York,+NY4124 New+York,+NY4088 2
+New+York,+NY4124 New+York,+NY4116 2
+New+York,+NY4124 Chicago,+IL4037 7.5
+New+York,+NY4124 New+York,+NY4134 2
+New+York,+NY4124 Pennsauken,+NJ4091 6
+New+York,+NY4124 New+York,+NY6605 2
+Pearl+Harbor,+HI4053 Anaheim,+CA4101 7.5
+Pearl+Harbor,+HI4053 Pearl+Harbor,+HI6400 8
+Pearl+Harbor,+HI4053 Pearl+Harbor,+HI4092 9.5
+Pearl+Harbor,+HI4053 Stockton,+CA4064 3
+Pearl+Harbor,+HI4053 Stockton,+CA4096 3
+Pearl+Harbor,+HI4053 Stockton,+CA4065 5
+Pearl+Harbor,+HI4053 Anaheim,+CA4100 7.5
+Pearl+Harbor,+HI4053 Pearl+Harbor,+HI6550 7.5
+New+York,+NY4129 New+York,+NY4137 2
+New+York,+NY4129 New+York,+NY4124 2
+New+York,+NY4129 New+York,+NY4134 2
+New+York,+NY4129 New+York,+NY6524 2.5
+New+York,+NY4129 Relay,+MD4054 3.5
+Orlando,+FL4089 Orlando,+FL4049 3
+Orlando,+FL4089 Orlando,+FL6429 3
+Orlando,+FL4089 Orlando,+FL4050 4.5
+Orlando,+FL4089 Orlando,+FL4108 2
+Orlando,+FL4089 New+York,+NY4028 8.5
+Orlando,+FL4089 Dallas,+TX4115 6.5
+Orlando,+FL4089 Orlando,+FL6693 3.5
+Relay,+MD6518 Relay,+MD4110 2.5
+Relay,+MD6518 Relay,+MD4093 2.5
+Relay,+MD6518 Relay,+MD4054 2.5
+Pennsauken,+NJ6516 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6516 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6516 Pennsauken,+NJ4091 3
+Pennsauken,+NJ6517 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6517 Pennsauken,+NJ4109 2
+Relay,+MD6449 Relay,+MD4110 2.5
+Relay,+MD6449 Relay,+MD4093 2.5
+Relay,+MD6449 Relay,+MD4054 2.5
+Pennsauken,+NJ6448 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6448 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6448 Pennsauken,+NJ4091 3
+Dallas,+TX6604 Dallas,+TX2635 4
+Dallas,+TX6604 Dallas,+TX4015 4
+Dallas,+TX6604 New+York,+NY4028 2
+Dallas,+TX6604 Dallas,+TX4080 3
+Dallas,+TX6604 Dallas,+TX4115 3
+Stockton,+CA6407 Stockton,+CA4113 3.5
+Stockton,+CA6407 Stockton,+CA4064 2.5
+Stockton,+CA6407 Stockton,+CA4096 2.5
+Stockton,+CA6407 Stockton,+CA4065 2.5
+Anaheim,+CA6464 Anaheim,+CA4101 2
+Anaheim,+CA6464 Anaheim,+CA4031 2
+Anaheim,+CA6464 Anaheim,+CA4073 3
+Anaheim,+CA6464 Anaheim,+CA6721 2
+Anaheim,+CA6464 Anaheim,+CA4100 2
+Anaheim,+CA6539 Anaheim,+CA4101 2
+Anaheim,+CA6539 Anaheim,+CA4099 8
+Anaheim,+CA6539 Anaheim,+CA4031 2
+Anaheim,+CA6539 Anaheim,+CA4073 3
+Anaheim,+CA6539 Anaheim,+CA6721 2
+Anaheim,+CA6539 Anaheim,+CA4100 2
+Kansas+City,+MO6458 Kansas+City,+MO4082 3
+Kansas+City,+MO6458 Kansas+City,+MO4043 3
+Kansas+City,+MO6458 Dallas,+TX6598 7
+Kansas+City,+MO6458 Kansas+City,+MO4105 4
+Kansas+City,+MO6458 Kansas+City,+MO4106 3.5
+New+York,+NY4134 New+York,+NY4048 2
+New+York,+NY4134 New+York,+NY4129 2
+New+York,+NY4134 New+York,+NY4137 2
+New+York,+NY4134 New+York,+NY4024 2
+New+York,+NY4134 New+York,+NY6751 2
+New+York,+NY4134 New+York,+NY4017 2.5
+New+York,+NY4134 New+York,+NY6752 2
+New+York,+NY4134 New+York,+NY4107 2
+New+York,+NY4134 New+York,+NY4124 2
+Atlanta,+GA6530 Cheyenne,+WY6413 1
+New+York,+NY4137 New+York,+NY4048 2
+New+York,+NY4137 New+York,+NY4129 2
+New+York,+NY4137 Springfield,+MA4020 7.5
+New+York,+NY4137 New+York,+NY4116 2
+New+York,+NY4137 New+York,+NY4124 2
+New+York,+NY4137 New+York,+NY4134 2
+Tacoma,+WA6555 Tacoma,+WA6408 2
+Tacoma,+WA6555 Tacoma,+WA3251 2
+Tacoma,+WA6555 Tacoma,+WA4114 2
+Seattle,+WA6432 Seattle,+WA4059 3
+Seattle,+WA6432 Seattle,+WA4060 2
+Atlanta,+GA6465 Atlanta,+GA4032 2
+Atlanta,+GA6465 Atlanta,+GA4074 2
+Atlanta,+GA6465 Atlanta,+GA4102 2
+Pennsauken,+NJ6525 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6525 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6525 Pennsauken,+NJ4091 3
+Cheyenne,+WY4034 Cheyenne,+WY6455 2
+Cheyenne,+WY4034 Cheyenne,+WY2439 2
+Cheyenne,+WY4034 Cheyenne,+WY6723 2
+Cheyenne,+WY4034 Cheyenne,+WY4076 3
+Cheyenne,+WY4034 Tacoma,+WA3251 5.5
+Cheyenne,+WY4034 Denver,+Colorado5511 1
+Cheyenne,+WY4034 Chicago,+IL1484 8
+Cheyenne,+WY4034 Cheyenne,+WY6629 2
+Cheyenne,+WY4034 Cheyenne,+WY6388 2
+Cheyenne,+WY4034 Chicago,+IL4104 5
+Cheyenne,+WY4034 Cheyenne,+WY6413 2
+Cheyenne,+WY4034 Chicago,+IL4037 5
+Cheyenne,+WY4034 Cheyenne,+WY6542 2
+Anaheim,+CA6610 Anaheim,+CA4073 1
+San+Jose,+CA4112 San+Jose,+CA4062 2
+San+Jose,+CA4112 San+Jose,+CA4095 2
+San+Jose,+CA4112 Anaheim,+CA4031 2.5
+San+Jose,+CA4112 Stockton,+CA4096 5
+San+Jose,+CA4112 San+Jose,+CA4132 4
+San+Jose,+CA4112 Relay,+MD4093 6
+San+Jose,+CA4112 Anaheim,+CA4100 5.5
+Dallas,+TX6612 Dallas,+TX2635 2
+Dallas,+TX6612 Dallas,+TX4015 2
+Dallas,+TX6612 Dallas,+TX4080 2
+Dallas,+TX6612 New+York,+NY4028 3
+Dallas,+TX6612 Dallas,+TX4115 3
+Stockton,+CA4096 Pennsauken,+NJ4109 6.5
+Stockton,+CA4096 Stockton,+CA6602 2
+Stockton,+CA4096 Stockton,+CA6407 2.5
+Stockton,+CA4096 Hong+Kong6421 2
+Stockton,+CA4096 Pearl+Harbor,+HI4053 3
+Stockton,+CA4096 Stockton,+CA6452 3
+Stockton,+CA4096 Stockton,+CA6609 2.5
+Stockton,+CA4096 Stockton,+CA6463 2.5
+Stockton,+CA4096 Stockton,+CA6619 2.5
+Stockton,+CA4096 Pearl+Harbor,+HI4092 8.5
+Stockton,+CA4096 Stockton,+CA6563 2.5
+Stockton,+CA4096 Stockton,+CA4113 3
+Stockton,+CA4096 Stockton,+CA6719 2.5
+Stockton,+CA4096 Stockton,+CA3402 5
+Stockton,+CA4096 Stockton,+CA6590 2.5
+Stockton,+CA4096 Stockton,+CA6583 3
+Stockton,+CA4096 Stockton,+CA6479 2.5
+Stockton,+CA4096 Stockton,+CA6569 2.5
+Stockton,+CA4096 Stockton,+CA6577 2.5
+Stockton,+CA4096 Stockton,+CA4064 2
+Stockton,+CA4096 Stockton,+CA6758 2.5
+Stockton,+CA4096 Stockton,+CA4065 2
+Stockton,+CA4096 Sydney,+Australia4068 2
+Stockton,+CA4096 Rancho+Cordova,+CA5514 2
+Stockton,+CA4096 San+Jose,+CA4112 5
+Stockton,+CA4096 San+Jose,+CA4132 3
+Chicago,+IL6603 Chicago,+IL1391 2
+Chicago,+IL6603 Chicago,+IL4036 3
+Chicago,+IL6603 Chicago,+IL1484 2
+Chicago,+IL6603 Chicago,+IL4037 2
+Chicago,+IL6603 Chicago,+IL4104 2
+Chicago,+IL6531 Chicago,+IL1391 3
+Chicago,+IL6531 Chicago,+IL1484 2
+Chicago,+IL6531 Chicago,+IL4036 2
+Chicago,+IL6531 Chicago,+IL4037 2
+Chicago,+IL6531 Chicago,+IL4104 2
+Dallas,+TX6471 Dallas,+TX2635 2
+Dallas,+TX6471 Dallas,+TX4015 2
+Dallas,+TX6471 Dallas,+TX4080 2
+Dallas,+TX6471 New+York,+NY4028 3
+Dallas,+TX6471 Dallas,+TX4115 2
+New+York,+NY6751 New+York,+NY4048 2
+New+York,+NY6751 New+York,+NY4134 2
+San+Jose,+CA4119 San+Jose,+CA4062 2
+San+Jose,+CA4119 San+Jose,+CA4095 2
+San+Jose,+CA4119 Dallas,+TX4080 7.5
+San+Jose,+CA4119 Stockton,+CA4064 5
+San+Jose,+CA4119 Santa+Clara,+CA5508 1
+San+Jose,+CA4119 San+Jose,+CA4132 4
+San+Jose,+CA4119 Anaheim,+CA4100 2.5
+New+York,+NY6752 New+York,+NY4048 2
+New+York,+NY6752 New+York,+NY4134 2
+Cheyenne,+WY2439 Cheyenne,+WY4034 2
+Cheyenne,+WY2439 Cheyenne,+WY4076 2
+Tacoma,+WA6701 Roachdale,+IN6552 13
+Tacoma,+WA6701 Tacoma,+WA3251 2
+Singapore4094 Tokyo4071 5
+Singapore4094 Tokyo4070 2
+Kansas+City,+MO6395 Kansas+City,+MO4082 2
+Kansas+City,+MO6395 Kansas+City,+MO4043 2
+Kansas+City,+MO6395 Kansas+City,+MO4105 3
+Kansas+City,+MO6395 Kansas+City,+MO4106 2.5
+Chicago,+IL6468 Chicago,+IL1391 3
+Chicago,+IL6468 Chicago,+IL4036 2
+Chicago,+IL6468 Chicago,+IL1484 2
+Chicago,+IL6468 Chicago,+IL4037 2
+Chicago,+IL6468 Chicago,+IL4104 2
+Atlanta,+GA6540 Atlanta,+GA4032 2
+Atlanta,+GA6540 Atlanta,+GA4074 2
+Atlanta,+GA6540 Atlanta,+GA4102 2
+Roachdale,+IN6552 Roachdale,+IN4111 2
+Roachdale,+IN6552 Tacoma,+WA6701 13
+Roachdale,+IN6552 Roachdale,+IN4056 2
+Relay,+MD5801 Relay,+MD4136 2
+Relay,+MD5801 Dallas,+TX6573 15.5
+Relay,+MD5801 Relay,+MD4110 3
+Orlando,+FL6429 Orlando,+FL4089 3
+Orlando,+FL6429 Orlando,+FL4049 2
+Orlando,+FL6429 Orlando,+FL4050 3.5
+Orlando,+FL6429 Orlando,+FL4108 4
+Cheyenne,+WY6723 Cheyenne,+WY4034 2
+Cheyenne,+WY6723 Cheyenne,+WY4076 2
+Relay,+MD6461 Relay,+MD4110 2.5
+Relay,+MD6461 Relay,+MD4093 2.5
+Relay,+MD6461 Relay,+MD4054 2.5
+Sydney,+Australia4067 Tacoma,+WA3251 6.5
+Sydney,+Australia4067 Sydney,+Australia6437 4
+Sydney,+Australia4068 Sydney,+Australia6437 2
+Sydney,+Australia4068 Stockton,+CA4064 2
+Sydney,+Australia4068 Stockton,+CA4096 2
+Atlanta,+GA2338 Atlanta,+GA4032 2
+Atlanta,+GA2338 Atlanta,+GA4074 2
+Atlanta,+GA2338 Atlanta,+GA4102 2
+Amsterdam4030 Amsterdam4072 6
+Amsterdam4030 Brussels,+Belgium4075 2
+Dallas,+TX6622 Dallas,+TX2635 3
+Dallas,+TX6622 Dallas,+TX4015 3
+Dallas,+TX6622 Dallas,+TX4080 3
+Dallas,+TX6622 New+York,+NY4028 2
+Dallas,+TX6622 Dallas,+TX4115 2
+Chicago,+IL6611 Chicago,+IL1391 2
+Chicago,+IL6611 Chicago,+IL4122 2
+Chicago,+IL6611 Chicago,+IL4036 2
+Chicago,+IL6611 Chicago,+IL1484 2
+Chicago,+IL6611 Chicago,+IL4037 2
+Chicago,+IL6611 Chicago,+IL4104 2
+Washington,+DC6443 Washington,+DC6736 3
+Washington,+DC6443 Washington,+DC6543 2
+Washington,+DC6443 Washington,+DC6415 2
+Washington,+DC6443 Relay,+MD4093 2.5
+Washington,+DC6443 Relay,+MD4110 2.5
+Washington,+DC6443 Relay,+MD4054 2.5
+Washington,+DC6443 Washington,+DC6393 3
+Pennsauken,+NJ6399 Pennsauken,+NJ4052 1
+Kansas+City,+MO6544 Kansas+City,+MO4082 2
+Kansas+City,+MO6544 Kansas+City,+MO4043 2
+Kansas+City,+MO6544 Cheyenne,+WY6746 1
+Kansas+City,+MO6544 Kansas+City,+MO4105 4
+Kansas+City,+MO6544 Kansas+City,+MO4106 2.5
+Anaheim,+CA6627 Anaheim,+CA4101 2
+Anaheim,+CA6627 Anaheim,+CA4099 8
+Anaheim,+CA6627 Anaheim,+CA4031 2
+Anaheim,+CA6627 Anaheim,+CA4073 3
+Anaheim,+CA6627 Anaheim,+CA6721 2
+Anaheim,+CA6627 Anaheim,+CA4100 2
+Dallas,+TX4015 Richardson,+TX5500 4
+Dallas,+TX4015 Orlando,+FL4049 7.5
+Dallas,+TX4015 Dallas,+TX6580 3
+Dallas,+TX4015 Dallas,+TX6726 3
+Dallas,+TX4015 Dallas,+TX6566 3
+Dallas,+TX4015 Dallas,+TX4115 2
+Dallas,+TX4015 Dallas,+TX6494 2
+Dallas,+TX4015 Dallas,+TX6658 2
+Dallas,+TX4015 Dallas,+TX6749 3
+Dallas,+TX4015 Dallas,+TX6587 2
+Dallas,+TX4015 Dallas,+TX4080 2
+Dallas,+TX4015 Orlando,+FL4050 9
+Dallas,+TX4015 Dallas,+TX6604 4
+Dallas,+TX4015 Dallas,+TX6622 3
+Dallas,+TX4015 Dallas,+TX6444 3
+Dallas,+TX4015 Dallas,+TX6641 3
+Dallas,+TX4015 Pennsauken,+NJ4109 9
+Dallas,+TX4015 Dallas,+TX6645 3
+Dallas,+TX4015 Dallas,+TX6483 3
+Dallas,+TX4015 New+York,+NY4028 4
+Dallas,+TX4015 Dallas,+TX6573 3
+Dallas,+TX4015 Dallas,+TX6558 2
+Dallas,+TX4015 Dallas,+TX6737 2
+Dallas,+TX4015 Kansas+City,+MO4043 5.5
+Dallas,+TX4015 Kansas+City,+MO6690 9.5
+Dallas,+TX4015 Anaheim,+CA4073 4
+Dallas,+TX4015 Dallas,+TX6598 3.5
+Dallas,+TX4015 Dallas,+TX1742 3
+Dallas,+TX4015 Dallas,+TX6689 2
+Dallas,+TX4015 Dallas,+TX2635 2
+Dallas,+TX4015 Dallas,+TX6504 3
+Dallas,+TX4015 Dallas,+TX3549 2
+Dallas,+TX4015 Dallas,+TX6612 2
+Dallas,+TX4015 Dallas,+TX6419 3
+Dallas,+TX4015 Atlanta,+GA4074 5.5
+Dallas,+TX4015 Dallas,+TX6471 2
+Dallas,+TX4015 Dallas,+TX6706 2.5
+Kansas+City,+MO6472 Kansas+City,+MO4082 2
+Kansas+City,+MO6472 Kansas+City,+MO4043 2
+Kansas+City,+MO6472 Kansas+City,+MO6690 2
+Kansas+City,+MO6472 Kansas+City,+MO4105 4
+Kansas+City,+MO6472 Kansas+City,+MO4106 3.5
+Dallas,+TX6483 Dallas,+TX2635 3
+Dallas,+TX6483 Dallas,+TX4015 3
+Dallas,+TX6483 Dallas,+TX4080 3
+Dallas,+TX6483 New+York,+NY4028 2
+Dallas,+TX6483 Dallas,+TX4115 2
+Anaheim,+CA6556 Anaheim,+CA4101 2.5
+Anaheim,+CA6556 Anaheim,+CA4099 7.5
+Anaheim,+CA6556 Anaheim,+CA4031 2.5
+Anaheim,+CA6556 Anaheim,+CA4073 3.5
+Anaheim,+CA6556 Anaheim,+CA6721 2
+Anaheim,+CA6556 Anaheim,+CA4100 3.5
+Dallas,+TX6558 Dallas,+TX4015 2
+Dallas,+TX6558 Dallas,+TX4080 2
+Dallas,+TX6558 Dallas,+TX6573 5
+Springfield,+MA6406 Springfield,+MA4020 2
+Springfield,+MA6406 Springfield,+MA4023 2.5
+Pearl+Harbor,+HI6400 Pearl+Harbor,+HI4092 2.5
+Pearl+Harbor,+HI6400 Pearl+Harbor,+HI4053 8
+Roachdale,+IN6636 Roachdale,+IN4111 2
+Roachdale,+IN6636 Roachdale,+IN4056 2
+Atlanta,+GA6481 Atlanta,+GA4032 2
+Atlanta,+GA6481 Atlanta,+GA4074 2
+Atlanta,+GA6481 Atlanta,+GA4102 2
+Atlanta,+GA6628 Atlanta,+GA4032 2
+Atlanta,+GA6628 Atlanta,+GA4074 2
+Atlanta,+GA6628 Atlanta,+GA4102 2
+Seattle,+WA6450 Seattle,+WA4019 1
+New+York,+NY4088 New+York,+NY4107 2
+New+York,+NY4088 New+York,+NY6397 2.5
+New+York,+NY4088 New+York,+NY6559 3
+New+York,+NY4088 Manasquan,+NJ4086 4.5
+New+York,+NY4088 New+York,+NY4116 2
+New+York,+NY4088 New+York,+NY4124 2
+New+York,+NY4088 Chicago,+IL1484 8.5
+New+York,+NY4088 New+York,+NY6496 2.5
+New+York,+NY4088 New+York,+NY6532 2.5
+New+York,+NY4088 New+York,+NY6524 2.5
+New+York,+NY4088 New+York,+NY6427 3.5
+New+York,+NY4088 New+York,+NY4048 2
+New+York,+NY4088 New+York,+NY6446 3
+New+York,+NY4088 Atlanta,+GA4074 6.5
+Chicago,+IL1391 New+York,+NY4028 7.5
+Chicago,+IL1391 Chicago,+IL6724 2
+Chicago,+IL1391 Dallas,+TX4115 5.5
+Chicago,+IL1391 Chicago,+IL4104 2
+Chicago,+IL1391 Chicago,+IL6468 3
+Chicago,+IL1391 Chicago,+IL6492 2
+Chicago,+IL1391 Chicago,+IL4122 2
+Chicago,+IL1391 Chicago,+IL6639 2
+Chicago,+IL1391 Chicago,+IL6747 2
+Chicago,+IL1391 Chicago,+IL6593 2
+Chicago,+IL1391 Chicago,+IL4036 2
+Chicago,+IL1391 Chicago,+IL6586 3
+Chicago,+IL1391 Chicago,+IL6595 3
+Chicago,+IL1391 Chicago,+IL6669 2
+Chicago,+IL1391 Chicago,+IL1484 2
+Chicago,+IL1391 Chicago,+IL6414 3
+Chicago,+IL1391 Chicago,+IL6611 2
+Chicago,+IL1391 Chicago,+IL6603 2
+Chicago,+IL1391 Chicago,+IL6441 3
+Chicago,+IL1391 Chicago,+IL6531 3
+Chicago,+IL1391 Chicago,+IL6621 2
+Denver,+Colorado5501 Cheyenne,+WY4076 1
+Pennsauken,+NJ6614 Pennsauken,+NJ4109 3
+Pennsauken,+NJ6614 Pennsauken,+NJ4052 2
+Pennsauken,+NJ6614 Pennsauken,+NJ4091 3
+Boston5499 Springfield,+MA4020 2.5
+Boston5499 Boston5509 3
+Atlanta,+GA2344 Atlanta,+GA4032 2
+Atlanta,+GA2344 Atlanta,+GA4074 2
+Atlanta,+GA2344 Atlanta,+GA4102 2
+Dublin,+Ireland4039 London4044 1
+Lees+Summit,+MO5503 Kansas+City,+MO4082 1
+Lees+Summit,+MO5504 Kansas+City,+MO4043 1
+San+Jose,+CA6742 San+Jose,+CA4062 4
+San+Jose,+CA6742 San+Jose,+CA4132 2
+Atlanta,+GA2347 Atlanta,+GA4032 2
+Atlanta,+GA2347 Atlanta,+GA4074 2
+Atlanta,+GA2347 Atlanta,+GA4102 2
+Atlanta,+GA2347 Orlando,+FL6693 4.5
+Lees+Summit,+MO5505 Kansas+City,+MO4082 1
+Anaheim,+CA6702 Anaheim,+CA4099 8
+Anaheim,+CA6702 Anaheim,+CA4101 2
+Anaheim,+CA6702 Anaheim,+CA4031 2
+Anaheim,+CA6702 Anaheim,+CA4073 2
+Anaheim,+CA6702 Anaheim,+CA6721 2
+Anaheim,+CA6702 Anaheim,+CA4100 2
+San+Jose,+CA4132 San+Jose,+CA4062 4
+San+Jose,+CA4132 San+Jose,+CA4119 4
+San+Jose,+CA4132 San+Jose,+CA4112 4
+San+Jose,+CA4132 San+Jose,+CA6742 2
+San+Jose,+CA4132 Stockton,+CA4096 3
+Dallas,+TX6706 Dallas,+TX2635 2.5
+Dallas,+TX6706 Dallas,+TX4015 2.5
+Dallas,+TX6706 Dallas,+TX4080 2.5
+Dallas,+TX6706 New+York,+NY4028 2.5
+Dallas,+TX6706 Dallas,+TX4115 3.5
+Chicago,+IL6621 Chicago,+IL1391 2
+Chicago,+IL6621 Chicago,+IL4122 2
+Chicago,+IL6621 Chicago,+IL4036 2
+Chicago,+IL6621 Chicago,+IL1484 2
+Chicago,+IL6621 Chicago,+IL4037 2
+Chicago,+IL6621 Chicago,+IL4104 2
diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index b3b2348..1c66523 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -122,6 +122,12 @@
{
link.SetAttribute ("DataRate", linkAttr);
}
+
+ lineBuffer >> linkAttr;
+ if ( !linkAttr.empty () )
+ {
+ link.SetAttribute ("OSPF", linkAttr);
+ }
lineBuffer >> linkAttr;
if ( !linkAttr.empty () )
@@ -156,18 +162,57 @@
void
AnnotatedTopologyReader::ApplySettings(NetDeviceContainer* ndc, NodeContainer* nc)
{
+ InternetStackHelper stack;
+ Ipv4AddressHelper address;
+ address.SetBase ("10.1.0.0", "255.255.255.0");
+
+ Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+ stack.SetRoutingHelper (ipv4RoutingHelper);
+
+
+
+ //This loop passes all links and checks if ipv4 is installed on the node
+ // if not, it installs.
+ // We can't use stack.Install(nc) because in nc there are duplicates and assertion fails
+ TopologyReader::ConstLinksIterator iter;
+ int j = 0;
+ for ( iter = this->LinksBegin (); iter != this->LinksEnd (); iter++, j++ )
+ {
+ NodeContainer twoNodes = nc[j];
+
+ Ptr<Node> nd = twoNodes.Get(0);
+ if(nd==NULL)
+ NS_LOG_INFO("nd = null");
+
+ Ptr<Node> nd2 = twoNodes.Get(1);
+ if(nd2==NULL)
+ NS_LOG_INFO("nd2 = null");
+
+ Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+ if(ipv4 == 0)
+ {
+ NS_LOG_INFO("ipv4 = null");
+ stack.Install(nd);
+ }
+
+ Ptr<Ipv4> ipv42 = nd2->GetObject<Ipv4>();
+ if(ipv42 == 0)
+ {
+ NS_LOG_INFO("ipv42 = null");
+ stack.Install(nd2);
+ }
+
+ //NS_LOG_INFO("#netdevices = " << nd->GetNDevices());
+ //NS_LOG_INFO("#netdevices = " << nd2->GetNDevices());
+ }
+
+ NS_LOG_INFO("ITER2");
+ uint32_t base = 0;
PointToPointHelper p2p;
TopologyReader::ConstLinksIterator iter2;
int i = 0;
for ( iter2 = this->LinksBegin (); iter2 != this->LinksEnd (); iter2++, i++ )
{
- /*std::string dataRate = iter2->GetAttribute("DataRate");
- NS_LOG_INFO("dataRate = "<<dataRate);
- dataRate += "Kbps";
- std::string delay = iter2->GetAttribute("Delay");
- NS_LOG_INFO("delay = "<<delay);
- delay += "ms";*/
-
p2p.SetDeviceAttribute("DataRate", StringValue(iter2->GetAttribute("DataRate")+"Kbps"));
NS_LOG_INFO("DataRate = " + iter2->GetAttribute("DataRate")+"Kbps");
p2p.SetChannelAttribute("Delay", StringValue(iter2->GetAttribute("Delay")+"ms"));
@@ -175,6 +220,8 @@
p2p.SetQueue("ns3::DropTailQueue","MaxPackets",StringValue("100"));
ndc[i] = p2p.Install(nc[i]);
+ Ipv4Address address1(base+i*256 + 1);
+ Ipv4Address address2(base+i*256 + 2);
NodeContainer twoNodes = nc[i];
@@ -182,6 +229,8 @@
if(nd==NULL)
NS_LOG_INFO("nd = null");
+
+
Ptr<Node> nd2 = twoNodes.Get(1);
if(nd2==NULL)
NS_LOG_INFO("nd2 = null");
@@ -190,18 +239,82 @@
NS_LOG_INFO("#netdevices = " << nd->GetNDevices());
NS_LOG_INFO("#netdevices = " << nd2->GetNDevices());
- Ptr<PointToPointNetDevice> device = nd->GetDevice(nd->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
-
+ Ptr<NetDevice> device = nd->GetDevice(nd->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
+
if(device==NULL)
NS_LOG_INFO("device = 0");
+
+ std::string ospf = iter2->GetAttribute("OSPF");
+ uint16_t metric = atoi(ospf.c_str());
+ NS_LOG_INFO("OSPF metric = " << metric);
+
+ {
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device);
+ address.Assign (*temp);
+ }
+
+ Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+ if(ipv4 == 0)
+ {
+ NS_LOG_INFO("ipv4 = null");
+ //stack.Install(nd);
+ /*NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device);
+ address.Assign (*temp);
+ ipv4 = nd->GetObject<Ipv4>();*/
+ }
+
+ NS_LOG_INFO("Before GetID");
+ int32_t interfaceId = ipv4->GetInterfaceForDevice(device);
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv4->SetMetric(interfaceId,metric);
+
+
+
+
+
+ /*Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+
+ if(ipv4 == 0)
+ NS_LOG_INFO("ipv4 = null");
+ int32_t interfaceId = ipv4->GetInterfaceForDevice(device);
+ ipv4->SetMetric(interfaceId,metric);*/
+
+ //Ptr<Ipv4Interface> interface = nd->GetDevice(nd->GetNDevices()-1)->GetObject<Ipv4Interface> ();
+ //ipv4->SetMetric(metric);
//NS_LOG_INFO("2");
- Ptr<PointToPointNetDevice> device2 = nd2->GetDevice(nd2->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
+ Ptr<NetDevice> device2 = nd2->GetDevice(nd2->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
if(device2==NULL)
NS_LOG_INFO("device2 = 0");
+ {
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ }
+
+ Ptr<Ipv4> ipv42 = nd2->GetObject<Ipv4>();
+ if(ipv42 == 0)
+ {
+ NS_LOG_INFO("ipv42 = null");
+ /*stack.Install(nd2);
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ ipv42 = nd2->GetObject<Ipv4>();*/
+ }
+
+ NS_LOG_INFO("Before GetID");
+ interfaceId = ipv42->GetInterfaceForDevice(device2);
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv42->SetMetric(interfaceId,metric);
+
+
+
PointerValue tmp1;
device->GetAttribute ("TxQueue", tmp1);
//NS_LOG_INFO("2.5");
@@ -231,5 +344,189 @@
NS_LOG_INFO ("NetDevice #"<< device2->GetIfIndex() << "has queue limit " << limit.Get () << " packets");
}
}
+
+ /*
+void
+AnnotatedTopologyReader::ApplyOspfMetric(NetDeviceContainer* ndc, NodeContainer* nc)
+{
+ InternetStackHelper stack;
+ Ipv4AddressHelper address;
+ address.SetBase ("10.0.0.0", "255.255.255.252");
+
+ Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+ stack.SetRoutingHelper (ipv4RoutingHelper);
+
+
+ TopologyReader::ConstLinksIterator iter2;
+ int i = 0;
+ for ( iter2 = this->LinksBegin (); iter2 != this->LinksEnd (); iter2++, i++ )
+ {
+ NodeContainer twoNodes = nc[i];
+ Ptr<NetDevice> device = ndc[i].Get(0);
+ Ptr<NetDevice> device2 = ndc[i].Get(1);
+
+ //Ptr<Node> nd = twoNodes.Get(0);
+ Ptr<Node> nd = device->GetNode();
+ if(nd==NULL)
+ NS_LOG_INFO("nd = null");
+
+ //Ptr<Node> nd2 = twoNodes.Get(1);
+ Ptr<Node> nd2 = device->GetNode();
+ if(nd2==NULL)
+ NS_LOG_INFO("nd2 = null");
+
+
+
+ std::string ospf = iter2->GetAttribute("OSPF");
+ uint16_t metric = atoi(ospf.c_str());
+ NS_LOG_INFO("OSPF metric = " << metric);
+
+ Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+
+ if(ipv4 == 0)
+ {
+ NS_LOG_INFO("ipv4 = null");
+ stack.Install(nd);
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device);
+ address.Assign (*temp);
+ ipv4 = nd->GetObject<Ipv4>();
+ }
+
+ NS_LOG_INFO("Before GetID");
+ int32_t interfaceId = ipv4->GetInterfaceForDevice(device);
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv4->SetMetric(interfaceId,metric);
+
+
+
+ Ptr<Ipv4> ipv42 = nd2->GetObject<Ipv4>();
+ if(ipv42 == 0)
+ {
+ NS_LOG_INFO("ipv42 = null");
+ stack.Install(nd2);
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ ipv42 = nd2->GetObject<Ipv4>();
+ }
+
+ //if(ipv4 == 0)
+ // NS_LOG_INFO("ipv4 = null");
+
+ NS_LOG_INFO("Before GetID");
+ interfaceId = ipv42->GetInterfaceForDevice(device2);
+ if(interfaceId == -1)
+ {
+ NS_LOG_INFO("interfaceID = -1");
+ stack.Install(nd2);
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ ipv42 = nd2->GetObject<Ipv4>();
+ interfaceId = ipv42->GetInterfaceForDevice(device2);
+ }
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv42->SetMetric(interfaceId,metric);
+
+ }
+}*/
+
+void
+AnnotatedTopologyReader::BoundingBox (NodeContainer* nc, double ulx, double uly, double lrx, double lry)
+{
+
+ UniformVariable randX(ulx, lrx);
+ double x = 0.0;
+ UniformVariable randY(uly, lry);
+ double y = 0.0;
+
+
+ PointToPointHelper p2p;
+ TopologyReader::ConstLinksIterator iter2;
+ int i = 0;
+ for ( iter2 = this->LinksBegin (); iter2 != this->LinksEnd (); iter2++, i++ )
+ {
+ NodeContainer twoNodes = nc[i];
+
+ Ptr<Node> nd = twoNodes.Get(0);
+ if(nd==NULL)
+ NS_LOG_INFO("nd = null");
+
+ Ptr<Node> nd2 = twoNodes.Get(1);
+ if(nd2==NULL)
+ NS_LOG_INFO("nd2 = null");
+
+ Ptr<ConstantPositionMobilityModel> loc = nd->GetObject<ConstantPositionMobilityModel> ();
+ if (loc ==0)
+ {
+ loc = CreateObject<ConstantPositionMobilityModel> ();
+ nd->AggregateObject (loc);
+ }
+
+ x = randX.GetValue();
+ y = randY.GetValue();
+ NS_LOG_INFO("X = "<<x <<"Y = "<<y);
+ Vector locVec (x, y, 0);
+ loc->SetPosition (locVec);
+
+
+ Ptr<ConstantPositionMobilityModel> loc2 = nd2->GetObject<ConstantPositionMobilityModel> ();
+ if (loc2 ==0)
+ {
+ loc2 = CreateObject<ConstantPositionMobilityModel> ();
+ nd2->AggregateObject (loc2);
+ }
+
+ x = randX.GetValue();
+ y = randY.GetValue();
+ NS_LOG_INFO("X = "<<x <<"Y = "<<y);
+ Vector locVec2 (x, y, 0);
+ loc2->SetPosition (locVec2);
+ }
+ /*
+ double xDist;
+ double yDist;
+ if (lrx > ulx)
+ {
+ xDist = lrx - ulx;
+ }
+ else
+ {
+ xDist = ulx - lrx;
+ }
+ if (lry > uly)
+ {
+ yDist = lry - uly;
+ }
+ else
+ {
+ yDist = uly - lry;
+ }
+ double xAdder = xDist / m_xSize;
+ double yAdder = yDist / m_ySize;
+ double yLoc = yDist / 2;
+ for (uint32_t i = 0; i < m_ySize; ++i)
+ {
+ double xLoc = xDist / 2;
+ for (uint32_t j = 0; j < m_xSize; ++j)
+ {
+ Ptr<Node> node = GetNode (i, j);
+ Ptr<ConstantPositionMobilityModel> loc = node->GetObject<ConstantPositionMobilityModel> ();
+ if (loc ==0)
+ {
+ loc = CreateObject<ConstantPositionMobilityModel> ();
+ node->AggregateObject (loc);
+ }
+ Vector locVec (xLoc, yLoc, 0);
+ loc->SetPosition (locVec);
+
+ xLoc += xAdder;
+ }
+ yLoc += yAdder;
+ }
+ }
+*/
+}
}
diff --git a/model/annotated-topology-reader.h b/model/annotated-topology-reader.h
index c99a6a3..ca0bc48 100644
--- a/model/annotated-topology-reader.h
+++ b/model/annotated-topology-reader.h
@@ -27,16 +27,26 @@
#include "ns3/net-device-container.h"
#include "ns3/point-to-point-helper.h"
#include "ns3/point-to-point-net-device.h"
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv4-address-helper.h"
+#include "ns3/ipv4-global-routing-helper.h"
#include "ns3/drop-tail-queue.h"
+#include "ns3/ipv4-interface.h"
+#include "ns3/ipv4.h"
#include "ns3/string.h"
#include "ns3/pointer.h"
#include "ns3/uinteger.h"
+#include "ns3/ipv4-address.h"
#include <string>
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <sstream>
+#include "ns3/animation-interface.h"
+#include "ns3/constant-position-mobility-model.h"
+#include "ns3/random-variable.h"
+
namespace ns3
{
@@ -44,7 +54,7 @@
* \brief This class reads annotated topology and apply settings to the corresponding nodes and links
* Input File Format
* 1st line is NumberOfNodes TAB NumberofLinks
-* Nth line is NodeID1 TAB NodeID2 TAB DataRateKBPS TAB DelayMiliseconds TAB QueueSizeInPacketsNode1 TAB QueueSizeInPacketsNode2
+* Nth line is NodeID1 TAB NodeID2 TAB DataRateKBPS TAB OSPF TAB DelayMiliseconds TAB QueueSizeInPacketsNode1 TAB QueueSizeInPacketsNode2
*
*/
class AnnotatedTopologyReader : public TopologyReader
@@ -72,6 +82,9 @@
* NodeContainer from Read method
*/
void ApplySettings(NetDeviceContainer *ndc, NodeContainer* nc);
+
+ //void ApplyOspfMetric(NetDeviceContainer* ndc, NodeContainer* nc);
+ void BoundingBox (NodeContainer* nc, double ulx, double uly, double lrx, double lry);
private:
AnnotatedTopologyReader (const AnnotatedTopologyReader&);
diff --git a/model/rocketfuel-weights-reader.cc b/model/rocketfuel-weights-reader.cc
new file mode 100644
index 0000000..67559d5
--- /dev/null
+++ b/model/rocketfuel-weights-reader.cc
@@ -0,0 +1,620 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Hajime Tazaki
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Hajime Tazaki (tazaki@sfc.wide.ad.jp)
+ * Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <sstream>
+#include <regex.h>
+
+#include "ns3/log.h"
+#include "rocketfuel-weights-reader.h"
+
+namespace ns3 {
+
+ NS_LOG_COMPONENT_DEFINE ("RocketfuelWeightsReader");
+
+ NS_OBJECT_ENSURE_REGISTERED (RocketfuelWeightsReader);
+
+ TypeId RocketfuelWeightsReader::GetTypeId (void)
+ {
+ static TypeId tid = TypeId ("ns3::RocketfuelWeightsReader")
+ .SetParent<Object> ()
+ ;
+ return tid;
+ }
+
+ RocketfuelWeightsReader::RocketfuelWeightsReader ()
+ {
+ NS_LOG_FUNCTION (this);
+ }
+
+ RocketfuelWeightsReader::~RocketfuelWeightsReader ()
+ {
+ NS_LOG_FUNCTION (this);
+ }
+
+ /* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
+
+#define REGMATCH_MAX 16
+
+#define START "^"
+#define END "$"
+#define SPACE "[ \t]+"
+#define MAYSPACE "[ \t]*"
+
+#define ROCKETFUEL_MAPS_LINE \
+START "(-*[0-9]+)" SPACE "(@[?A-Za-z0-9,+]+)" SPACE \
+"(\\+)*" MAYSPACE "(bb)*" MAYSPACE \
+"\\(([0-9]+)\\)" SPACE "(&[0-9]+)*" MAYSPACE \
+"->" MAYSPACE "(<[0-9 \t<>]+>)*" MAYSPACE \
+"(\\{-[0-9\\{\\} \t-]+\\})*" SPACE \
+"=([A-Za-z0-9.!-]+)" SPACE "r([0-9])" \
+MAYSPACE END
+
+#define ROCKETFUEL_WEIGHTS_LINE \
+START "([^ \t]+)" SPACE "([^ \t]+)" SPACE "([0-9.]+)" MAYSPACE END
+
+ int linksNumber = 0;
+ int nodesNumber = 0;
+ std::map<std::string, Ptr<Node> > nodeMap;
+
+ NodeContainer
+ RocketfuelWeightsReader::GenerateFromMapsFile (int argc, char *argv[])
+ {
+ std::string uid;
+ std::string loc;
+ std::string ptr;
+ std::string name;
+ std::string nuid;
+ bool dns = false;
+ bool bb = false;
+ int num_neigh_s = 0;
+ unsigned int num_neigh = 0;
+ int radius = 0;
+ std::vector <std::string> neigh_list;
+ NodeContainer nodes;
+
+ uid = argv[0];
+ loc = argv[1];
+
+ if (argv[2])
+ {
+ dns = true;
+ }
+
+ if (argv[3])
+ {
+ bb = true;
+ }
+
+ num_neigh_s = ::atoi (argv[4]);
+ if (num_neigh_s < 0)
+ {
+ num_neigh = 0;
+ NS_LOG_WARN ("Negative number of neighbors given");
+ }
+ else
+ {
+ num_neigh = num_neigh_s;
+ }
+
+ /* neighbors */
+ if (argv[6])
+ {
+ char *nbr;
+ char *stringp = argv[6];
+ while ((nbr = strsep (&stringp, " \t")) != NULL)
+ {
+ nbr[strlen (nbr) - 1] = '\0';
+ neigh_list.push_back (nbr + 1);
+ }
+ }
+ if (num_neigh != neigh_list.size ())
+ {
+ NS_LOG_WARN ("Given number of neighbors = " << num_neigh << " != size of neighbors list = " << neigh_list.size ());
+ }
+
+ /* externs */
+ if (argv[7])
+ {
+ // euid = argv[7];
+ }
+
+ /* name */
+ if (argv[8])
+ {
+ name = argv[8];
+ }
+
+ radius = ::atoi (&argv[9][1]);
+ if (radius > 0)
+ {
+ return nodes;
+ }
+
+ /* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
+ NS_LOG_INFO ("Load Node[" << uid << "]: location: " << loc << " dns: " << dns
+ << " bb: " << bb << " neighbors: " << neigh_list.size ()
+ << "(" << "%d" << ") externals: \"%s\"(%d) "
+ << "name: " << name << " radius: " << radius);
+
+ //cast bb and dns to void, to suppress variable set but not used compiler warning
+ //in optimized builds
+ (void) bb;
+ (void) dns;
+
+ // Create node and link
+ if (!uid.empty ())
+ {
+ if (nodeMap[uid] == 0)
+ {
+ Ptr<Node> tmpNode = CreateObject<Node> ();
+ nodeMap[uid] = tmpNode;
+ nodes.Add (tmpNode);
+ nodesNumber++;
+ }
+
+ for (uint32_t i = 0; i < neigh_list.size (); ++i)
+ {
+ nuid = neigh_list[i];
+
+ if (nuid.empty ())
+ {
+ return nodes;
+ }
+
+ if (nodeMap[nuid] == 0)
+ {
+ Ptr<Node> tmpNode = CreateObject<Node> ();
+ nodeMap[nuid] = tmpNode;
+ nodes.Add (tmpNode);
+ nodesNumber++;
+ }
+ NS_LOG_INFO (linksNumber << ":" << nodesNumber << " From: " << uid << " to: " << nuid);
+ Link link (nodeMap[uid], uid, nodeMap[nuid], nuid);
+ AddLink (link);
+ linksNumber++;
+ }
+ }
+ return nodes;
+ }
+
+ NodeContainer
+ RocketfuelWeightsReader::GenerateFromWeightsFile (int argc, char *argv[])
+ {
+ /* uid @loc [+] [bb] (num_neigh) [&ext] -> <nuid-1> <nuid-2> ... {-euid} ... =name[!] rn */
+ std::string sname;
+ std::string tname;
+ char *endptr;
+ NodeContainer nodes;
+
+ sname = argv[0];
+ tname = argv[1];
+ double v = strtod (argv[2], &endptr); // weight
+ // cast v to void , to suppress 'v' set but not used compiler warning
+ //(void) v;
+
+
+
+ if (*endptr != '\0')
+ {
+ NS_LOG_WARN ("invalid weight: " << argv[2]);
+ return nodes;
+ }
+
+ // Create node and link
+ if (!sname.empty () && !tname.empty ())
+ {
+ if (nodeMap[sname] == 0)
+ {
+ Ptr<Node> tmpNode = CreateObject<Node> ();
+ nodeMap[sname] = tmpNode;
+ nodes.Add (tmpNode);
+ nodesNumber++;
+ }
+
+ if (nodeMap[tname] == 0)
+ {
+ Ptr<Node> tmpNode = CreateObject<Node> ();
+ nodeMap[tname] = tmpNode;
+ nodes.Add (tmpNode);
+ nodesNumber++;
+ }
+ NS_LOG_INFO (linksNumber << ":" << nodesNumber << " From: " << sname << " to: " << tname);
+ TopologyReader::ConstLinksIterator iter;
+ bool found = false;
+ for (iter = LinksBegin (); iter != LinksEnd (); iter++)
+ {
+ if ((iter->GetFromNode () == nodeMap[tname])
+ && (iter->GetToNode () == nodeMap[sname]))
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ Link link (nodeMap[sname], sname, nodeMap[tname], tname);
+ std::ostringstream s;
+ s << std::setprecision(2) << v;
+ std::string ss = s.str();
+ link.SetAttribute ("OSPF", ss);
+ AddLink (link);
+ linksNumber++;
+ }
+ }
+ return nodes;
+ }
+
+ enum RocketfuelWeightsReader::RF_FileType
+ RocketfuelWeightsReader::GetFileType (const char *line)
+ {
+ int ret;
+ regmatch_t regmatch[REGMATCH_MAX];
+ regex_t regex;
+ char errbuf[512];
+
+ // Check whether MAPS file or not
+ ret = regcomp (®ex, ROCKETFUEL_MAPS_LINE, REG_EXTENDED | REG_NEWLINE);
+ if (ret != 0)
+ {
+ regerror (ret, ®ex, errbuf, sizeof (errbuf));
+ return RF_UNKNOWN;
+ }
+ ret = regexec (®ex, line, REGMATCH_MAX, regmatch, 0);
+ if (ret != REG_NOMATCH)
+ {
+ regfree (®ex);
+ return RF_MAPS;
+ }
+ regfree (®ex);
+
+ // Check whether Weights file or not
+ ret = regcomp (®ex, ROCKETFUEL_WEIGHTS_LINE, REG_EXTENDED | REG_NEWLINE);
+ if (ret != 0)
+ {
+ regerror (ret, ®ex, errbuf, sizeof (errbuf));
+ return RF_UNKNOWN;
+ }
+ ret = regexec (®ex, line, REGMATCH_MAX, regmatch, 0);
+ if (ret != REG_NOMATCH)
+ {
+ regfree (®ex);
+ return RF_WEIGHTS;
+ }
+ regfree (®ex);
+
+ return RF_UNKNOWN;
+ }
+
+
+ NodeContainer
+ RocketfuelWeightsReader::Read (void)
+ {
+ std::ifstream topgen;
+ topgen.open (GetFileName ().c_str ());
+ NodeContainer nodes;
+
+ std::istringstream lineBuffer;
+ std::string line;
+ int lineNumber = 0;
+ enum RF_FileType ftype = RF_UNKNOWN;
+ char errbuf[512];
+
+ if (!topgen.is_open ())
+ {
+ NS_LOG_WARN ("Couldn't open the file " << GetFileName ());
+ return nodes;
+ }
+
+ while (!topgen.eof ())
+ {
+ int ret;
+ int argc;
+ char *argv[REGMATCH_MAX];
+ char *buf;
+
+ lineNumber++;
+ line.clear ();
+ lineBuffer.clear ();
+
+ getline (topgen, line);
+ buf = (char *)line.c_str ();
+
+ if (lineNumber == 1)
+ {
+ ftype = GetFileType (buf);
+ if (ftype == RF_UNKNOWN)
+ {
+ NS_LOG_INFO ("Unknown File Format (" << GetFileName () << ")");
+ break;
+ }
+ }
+
+ regmatch_t regmatch[REGMATCH_MAX];
+ regex_t regex;
+
+ if (ftype == RF_MAPS)
+ {
+ ret = regcomp (®ex, ROCKETFUEL_MAPS_LINE, REG_EXTENDED | REG_NEWLINE);
+ if (ret != 0)
+ {
+ regerror (ret, ®ex, errbuf, sizeof (errbuf));
+ regfree (®ex);
+ break;
+ }
+
+ ret = regexec (®ex, buf, REGMATCH_MAX, regmatch, 0);
+ if (ret == REG_NOMATCH)
+ {
+ NS_LOG_WARN ("match failed (maps file): %s" << buf);
+ regfree (®ex);
+ break;
+ }
+ }
+ else if (ftype == RF_WEIGHTS)
+ {
+ ret = regcomp (®ex, ROCKETFUEL_WEIGHTS_LINE, REG_EXTENDED | REG_NEWLINE);
+ if (ret != 0)
+ {
+ regerror (ret, ®ex, errbuf, sizeof (errbuf));
+ regfree (®ex);
+ break;
+ }
+
+ ret = regexec (®ex, buf, REGMATCH_MAX, regmatch, 0);
+ if (ret == REG_NOMATCH)
+ {
+ NS_LOG_WARN ("match failed (weights file): %s" << buf);
+ regfree (®ex);
+ break;
+ }
+ }
+
+ line = buf;
+ argc = 0;
+
+ /* regmatch[0] is the entire strings that matched */
+ for (int i = 1; i < REGMATCH_MAX; i++)
+ {
+ if (regmatch[i].rm_so == -1)
+ {
+ argv[i - 1] = NULL;
+ }
+ else
+ {
+ line[regmatch[i].rm_eo] = '\0';
+ argv[i - 1] = &line[regmatch[i].rm_so];
+ argc = i;
+ }
+ }
+
+ if (ftype == RF_MAPS)
+ {
+ nodes.Add (GenerateFromMapsFile (argc, argv));
+ }
+ else if (ftype == RF_WEIGHTS)
+ {
+ nodes.Add (GenerateFromWeightsFile (argc, argv));
+ }
+ else
+ {
+ NS_LOG_WARN ("Unsupported file format (only Maps/Weights are supported)");
+ }
+
+ regfree (®ex);
+ }
+
+
+ topgen.close ();
+
+ NS_LOG_INFO ("Rocketfuel topology created with " << nodesNumber << " nodes and " << linksNumber << " links");
+ return nodes;
+ }
+
+
+void
+RocketfuelWeightsReader::ApplySettings(NetDeviceContainer* ndc, NodeContainer* nc)
+{
+ InternetStackHelper stack;
+ Ipv4AddressHelper address;
+ address.SetBase ("10.1.0.0", "255.255.0.0");
+
+ Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+ stack.SetRoutingHelper (ipv4RoutingHelper);
+
+ //This loop passes all links and checks if ipv4 is installed on the node
+ // if not, it installs.
+ // We can't use stack.Install(nc) because in nc there are duplicates and assertion fails
+ TopologyReader::ConstLinksIterator iter;
+ int j = 0;
+ for ( iter = this->LinksBegin (); iter != this->LinksEnd (); iter++, j++ )
+ {
+ NodeContainer twoNodes = nc[j];
+
+ Ptr<Node> nd = twoNodes.Get(0);
+ if(nd==NULL)
+ NS_LOG_INFO("nd = null");
+
+ Ptr<Node> nd2 = twoNodes.Get(1);
+ if(nd2==NULL)
+ NS_LOG_INFO("nd2 = null");
+
+ Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+ if(ipv4 == 0)
+ {
+ NS_LOG_INFO("ipv4 = null");
+ stack.Install(nd);
+ }
+
+ Ptr<Ipv4> ipv42 = nd2->GetObject<Ipv4>();
+ if(ipv42 == 0)
+ {
+ NS_LOG_INFO("ipv42 = null");
+ stack.Install(nd2);
+ }
+
+ //NS_LOG_INFO("#netdevices = " << nd->GetNDevices());
+ //NS_LOG_INFO("#netdevices = " << nd2->GetNDevices());
+ }
+
+ NS_LOG_INFO("ITER2");
+
+ PointToPointHelper p2p;
+ TopologyReader::ConstLinksIterator iter2;
+ int i = 0;
+ for ( iter2 = this->LinksBegin (); iter2 != this->LinksEnd (); iter2++, i++ )
+ {
+ p2p.SetDeviceAttribute("DataRate", StringValue("9920000Kbps"));
+ p2p.SetChannelAttribute("Delay", StringValue("10ms"));
+ p2p.SetQueue("ns3::DropTailQueue","MaxPackets",StringValue("100"));
+ ndc[i] = p2p.Install(nc[i]);
+
+
+ NodeContainer twoNodes = nc[i];
+
+ Ptr<Node> nd = twoNodes.Get(0);
+ if(nd==NULL)
+ NS_LOG_INFO("nd = null");
+
+
+
+ Ptr<Node> nd2 = twoNodes.Get(1);
+ if(nd2==NULL)
+ NS_LOG_INFO("nd2 = null");
+
+ //NS_LOG_INFO("1");
+ NS_LOG_INFO("#netdevices = " << nd->GetNDevices());
+ NS_LOG_INFO("#netdevices = " << nd2->GetNDevices());
+
+ Ptr<NetDevice> device = nd->GetDevice(nd->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
+
+ if(device==NULL)
+ NS_LOG_INFO("device = 0");
+
+ std::string ospf = iter2->GetAttribute("OSPF");
+ double metric_d = atof(ospf.c_str());
+ uint16_t metric = static_cast<int>(metric_d * 10);
+ NS_LOG_INFO("OSPF metric = " << metric);
+
+ {
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device);
+ address.Assign (*temp);
+ }
+
+ Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+ if(ipv4 == 0)
+ {
+ NS_LOG_INFO("ipv4 = null");
+ //stack.Install(nd);
+ /*NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device);
+ address.Assign (*temp);
+ ipv4 = nd->GetObject<Ipv4>();*/
+ }
+
+ NS_LOG_INFO("Before GetID");
+ int32_t interfaceId = ipv4->GetInterfaceForDevice(device);
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv4->SetMetric(interfaceId,metric);
+
+
+
+
+
+ /*Ptr<Ipv4> ipv4 = nd->GetObject<Ipv4>();
+
+ if(ipv4 == 0)
+ NS_LOG_INFO("ipv4 = null");
+ int32_t interfaceId = ipv4->GetInterfaceForDevice(device);
+ ipv4->SetMetric(interfaceId,metric);*/
+
+ //Ptr<Ipv4Interface> interface = nd->GetDevice(nd->GetNDevices()-1)->GetObject<Ipv4Interface> ();
+ //ipv4->SetMetric(metric);
+
+ //NS_LOG_INFO("2");
+
+ Ptr<NetDevice> device2 = nd2->GetDevice(nd2->GetNDevices()-1)->GetObject<PointToPointNetDevice> ();
+
+ if(device2==NULL)
+ NS_LOG_INFO("device2 = 0");
+
+ {
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ }
+
+ Ptr<Ipv4> ipv42 = nd2->GetObject<Ipv4>();
+ if(ipv42 == 0)
+ {
+ NS_LOG_INFO("ipv42 = null");
+ /*stack.Install(nd2);
+ NetDeviceContainer* temp = new NetDeviceContainer[1];
+ temp->Add(device2);
+ address.Assign (*temp);
+ ipv42 = nd2->GetObject<Ipv4>();*/
+ }
+
+ NS_LOG_INFO("Before GetID");
+ interfaceId = ipv42->GetInterfaceForDevice(device2);
+ NS_LOG_INFO("InterfaceID = " << interfaceId);
+ ipv42->SetMetric(interfaceId,metric);
+
+
+
+ /*PointerValue tmp1;
+ device->GetAttribute ("TxQueue", tmp1);
+ //NS_LOG_INFO("2.5");
+ Ptr<Object> txQueue1 = tmp1.GetObject ();
+
+ PointerValue tmp2;
+ device2->GetAttribute ("TxQueue", tmp2);
+ Ptr<Object> txQueue2 = tmp2.GetObject ();
+ //NS_LOG_INFO("3");
+ Ptr<DropTailQueue> dtq1 = txQueue1->GetObject <DropTailQueue> ();
+ NS_ASSERT (dtq1 != 0);
+
+ Ptr<DropTailQueue> dtq2 = txQueue2->GetObject <DropTailQueue> ();
+ NS_ASSERT (dtq2 != 0);
+
+ std::string queuesize1 = iter2->GetAttribute("QueueSizeNode1");
+ std::string queuesize2 = iter2->GetAttribute("QueueSizeNode2");
+ //NS_LOG_INFO("4");
+ txQueue1->SetAttribute("MaxPackets", UintegerValue (atoi(queuesize1.c_str())));
+ txQueue2->SetAttribute("MaxPackets", UintegerValue (atoi(queuesize2.c_str())));
+
+ UintegerValue limit;
+ txQueue1->GetAttribute ("MaxPackets", limit);
+ NS_LOG_INFO ("NetDevice #"<< device->GetIfIndex() << "has queue limit " << limit.Get () << " packets");
+
+ txQueue2->GetAttribute ("MaxPackets", limit);
+ NS_LOG_INFO ("NetDevice #"<< device2->GetIfIndex() << "has queue limit " << limit.Get () << " packets");*/
+ }
+ }
+
+
+} /* namespace ns3 */
+
+
diff --git a/model/rocketfuel-weights-reader.h b/model/rocketfuel-weights-reader.h
new file mode 100644
index 0000000..bea3bff
--- /dev/null
+++ b/model/rocketfuel-weights-reader.h
@@ -0,0 +1,111 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2010 Hajime Tazaki
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Hajime Tazaki (tazaki@sfc.wide.ad.jp)
+ * Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#ifndef ROCKETFUEL_TOPOLOGY_READER_H
+#define ROCKETFUEL_TOPOLOGY_READER_H
+
+#include "ns3/nstime.h"
+#include "ns3/net-device-container.h"
+#include "ns3/topology-reader.h"
+
+
+#include "ns3/point-to-point-helper.h"
+#include "ns3/point-to-point-net-device.h"
+#include "ns3/internet-stack-helper.h"
+#include "ns3/ipv4-address-helper.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/drop-tail-queue.h"
+#include "ns3/ipv4-interface.h"
+#include "ns3/ipv4.h"
+#include "ns3/string.h"
+#include "ns3/pointer.h"
+#include "ns3/uinteger.h"
+#include <string>
+#include <fstream>
+#include <cstdlib>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+
+namespace ns3 {
+
+
+ // ------------------------------------------------------------
+ // --------------------------------------------
+ /**
+ * \brief Topology file reader (Rocketfuel-format type).
+ *
+ * http://www.cs.washington.edu/research/networking/rocketfuel/
+ *
+ * May 2nd, 2010: Currently only support "weights" file and "cch" file.
+ * http://www.cs.washington.edu/research/networking/rocketfuel/maps/weights-dist.tar.gz
+ * http://www.cs.washington.edu/research/networking/rocketfuel/maps/rocketfuel_maps_cch.tar.gz
+ */
+ class RocketfuelWeightsReader : public TopologyReader
+ {
+ public:
+ static TypeId GetTypeId (void);
+
+ RocketfuelWeightsReader ();
+ virtual ~RocketfuelWeightsReader ();
+
+ /**
+ * \brief Main topology reading function.
+ *
+ * This method opens an input stream and reads the Rocketfuel-format file.
+ * Every row represents a topology link (the ids of a couple of nodes),
+ * so the input file is read line by line to figure out how many links
+ * and nodes are in the topology.
+ *
+ * \return the container of the nodes created (or empty container if there was an error)
+ */
+ virtual NodeContainer Read (void);
+
+ void ApplySettings(NetDeviceContainer* ndc, NodeContainer* nc);
+
+ private:
+ RocketfuelWeightsReader (const RocketfuelWeightsReader&);
+ RocketfuelWeightsReader& operator= (const RocketfuelWeightsReader&);
+ // Parser for the *.cch file available at:
+ // http://www.cs.washington.edu/research/networking/rocketfuel/maps/rocketfuel_maps_cch.tar.gz
+ NodeContainer GenerateFromMapsFile (int argc, char *argv[]);
+ // Parser for the weights.* file available at:
+ // http://www.cs.washington.edu/research/networking/rocketfuel/maps/weights-dist.tar.gz
+ NodeContainer GenerateFromWeightsFile (int argc, char *argv[]);
+
+ enum RF_FileType
+ {
+ RF_MAPS,
+ RF_WEIGHTS,
+ RF_UNKNOWN
+ };
+ enum RF_FileType GetFileType (const char *);
+
+ // end class RocketfuelWeightsReader
+ };
+
+ // end namespace ns3
+};
+
+
+#endif /* ROCKETFUEL_TOPOLOGY_READER_H */
+
+
diff --git a/wscript b/wscript
index 914f9fb..7da13ff 100644
--- a/wscript
+++ b/wscript
@@ -82,7 +82,12 @@
obj = bld.create_ns3_program('packet-sizes', ['NDNabstraction'])
obj.source = 'examples/packet-sizes.cc'
-
+
+ obj = bld.create_ns3_program('ccnx-sprint-topology', ['NDNabstraction'])
+ obj.source = 'examples/sprint-topology.cc'
+
+ obj = bld.create_ns3_program('ccnx-abilene-topology', ['NDNabstraction'])
+ obj.source = 'examples/abilene-topology.cc'
# for path in ["examples"]:
# anode = bld.path.find_dir (path)