blob: 49a5c00f33e428cd6bbf325228e8781cf85bfcd1 [file] [log] [blame]
Alexander Afanasyev45b92d42011-08-14 23:11:38 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
2
3#include "ns3/core-module.h"
4#include "ns3/network-module.h"
Alexander Afanasyev45b92d42011-08-14 23:11:38 -07005#include "ns3/point-to-point-module.h"
Alexander Afanasyev45b92d42011-08-14 23:11:38 -07006#include "ns3/NDNabstraction-module.h"
7
8using namespace ns3;
9
10NS_LOG_COMPONENT_DEFINE ("CcnxTest");
11
12int
13main (int argc, char *argv[])
14{
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070015 // LogComponentEnable ("CcnxTest", LOG_ALL);
16 // LogComponentEnable ("CcnxStackHelper", LOG_ALL);
17 // LogComponentEnable ("CcnxRit", LOG_ALL);
Alexander Afanasyev7112f482011-08-17 14:05:57 -070018
Alexander Afanasyev0ab833e2011-08-18 15:49:13 -070019 // Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
20 // Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s"));
21
22 Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("10Mbps"));
23 Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("1ms"));
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070024
25 Packet::EnableChecking();
26 Packet::EnablePrinting();
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070027 CommandLine cmd;
28 cmd.Parse (argc, argv);
29
30 // Here, we will explicitly create seven nodes.
31 NodeContainer c;
Alexander Afanasyev0ab833e2011-08-18 15:49:13 -070032 c.Create (3);
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070033 Names::Add ("1", c.Get (0));
34 Names::Add ("2", c.Get (1));
35 Names::Add ("3", c.Get (2));
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070036
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070037 // NodeContainer n1 = NodeContainer ("1") ("2");
38 // NodeContainer n2 = NodeContainer ("2") ("3");
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070039
Alexander Afanasyev7112f482011-08-17 14:05:57 -070040 NS_LOG_INFO ("Create channels.");
41 PointToPointHelper p2p;
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070042 p2p.Install ("1", "2");
43 p2p.Install ("2", "3");
Alexander Afanasyev7112f482011-08-17 14:05:57 -070044
45 NS_LOG_INFO ("Installing NDN stack");
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070046 CcnxStackHelper ccnx;
Alexander Afanasyev0ab833e2011-08-18 15:49:13 -070047 Ptr<CcnxFaceContainer> cf = ccnx.Install (c);
Alexander Afanasyev7112f482011-08-17 14:05:57 -070048
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070049 CcnxConsumerHelper helper ("/3");
50 ApplicationContainer app = helper.Install ("1");
51 app.Start (Seconds (1.0));
52 app.Stop (Seconds (1.05));
Alexander Afanasyev7112f482011-08-17 14:05:57 -070053
Alexander Afanasyevc5a23e22011-09-07 00:37:36 -070054 /**
55 * \brief Add forwarding entry in FIB
56 *
57 * \param node Node
58 * \param prefix Routing prefix
59 * \param face Face index
60 * \param metric Routing metric
61 */
62 ccnx.AddRoute ("1", "/3", 0, 1);
63 ccnx.AddRoute ("2", "/3", 1, 1);
64 ccnx.AddRoute ("2", "/3", 0, 10000);
65 NS_LOG_INFO ("FIB dump:\n" << *c.Get(0)->GetObject<CcnxFib> ());
66 NS_LOG_INFO ("FIB dump:\n" << *c.Get(1)->GetObject<CcnxFib> ());
67
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070068 // Create the OnOff application to send UDP datagrams of size
69 // 210 bytes at a rate of 448 Kb/s from n0 to n4
Alexander Afanasyev7112f482011-08-17 14:05:57 -070070 // NS_LOG_INFO ("Create Applications.");
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070071
72 // std::string sendsizeattr = "SendSize";
73 // //flow2 7-->2
74 // BulkSendHelper bulksend0 ("ns3::CcnxLocalFaceFactory", InetSocketAddress (i23.GetAddress (0), port));
75 // //bulksend0.SetAttribute(sendsizeattr, AttributeValue(ConstantVariable(2560)));
76 // bulksend0.SetAttribute("MaxBytes", UintegerValue(2560));
77 // ApplicationContainer apps = bulksend0.Install(c.Get(6));
78 // apps.Start(Seconds (1.0));
79 // apps.Stop(Seconds (10.0));
80
81 // AsciiTraceHelper ascii;
82 // p2p.EnableAsciiAll (ascii.CreateFileStream ("ccnx-test.tr"));
83 // p2p.EnablePcapAll ("ccnx-test");
84
85 Simulator::Stop (Seconds (20));
86
87 NS_LOG_INFO ("Run Simulation.");
88 Simulator::Run ();
89 Simulator::Destroy ();
90 NS_LOG_INFO ("Done.");
91
Alexander Afanasyev7112f482011-08-17 14:05:57 -070092 return 0;
Alexander Afanasyev45b92d42011-08-14 23:11:38 -070093}