Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
703616512c | ||
|
|
13c641cacd | ||
|
|
d0d274f154 | ||
|
|
432a5f72e5 | ||
|
|
25d35c9f14 | ||
|
|
f9a1b1329f | ||
|
|
f8d1883721 | ||
|
|
914df0a366 |
No files matched your search
@@ -45,37 +45,31 @@ ConsumerPcon::GetTypeId()
|
||||
MakeEnumAccessor(&ConsumerPcon::m_ccAlgorithm),
|
||||
MakeEnumChecker(CcAlgorithm::AIMD, "AIMD", CcAlgorithm::BIC, "BIC",
|
||||
CcAlgorithm::CUBIC, "CUBIC"))
|
||||
|
||||
.AddAttribute("Beta",
|
||||
"TCP Multiplicative Decrease factor",
|
||||
DoubleValue(0.5),
|
||||
MakeDoubleAccessor(&ConsumerPcon::m_beta),
|
||||
MakeDoubleChecker<double>())
|
||||
|
||||
.AddAttribute("CubicBeta",
|
||||
"TCP CUBIC Multiplicative Decrease factor",
|
||||
DoubleValue(0.8),
|
||||
MakeDoubleAccessor(&ConsumerPcon::m_cubicBeta),
|
||||
MakeDoubleChecker<double>())
|
||||
|
||||
.AddAttribute("AddRttSuppress",
|
||||
"Minimum number of RTTs (1 + this factor) between window decreases",
|
||||
DoubleValue(0.5), // This default value was chosen after manual testing
|
||||
MakeDoubleAccessor(&ConsumerPcon::m_addRttSuppress),
|
||||
MakeDoubleChecker<double>())
|
||||
|
||||
.AddAttribute("ReactToCongestionMarks",
|
||||
"If true, process received congestion marks",
|
||||
BooleanValue(true),
|
||||
MakeBooleanAccessor(&ConsumerPcon::m_reactToCongestionMarks),
|
||||
MakeBooleanChecker())
|
||||
|
||||
.AddAttribute("UseCwa",
|
||||
"If true, use Conservative Window Adaptation",
|
||||
BooleanValue(true),
|
||||
MakeBooleanAccessor(&ConsumerPcon::m_useCwa),
|
||||
MakeBooleanChecker())
|
||||
|
||||
.AddAttribute("UseCubicFastConvergence",
|
||||
"If true, use TCP CUBIC Fast Convergence",
|
||||
BooleanValue(false),
|
||||
@@ -98,9 +92,23 @@ ConsumerPcon::ConsumerPcon()
|
||||
, m_bicSsCwnd(0)
|
||||
, m_bicSsTarget(0)
|
||||
, m_isBicSs(false)
|
||||
, m_recvDataNum(0)
|
||||
{
|
||||
}
|
||||
|
||||
uint32_t
|
||||
ConsumerPcon::GetSeqMax() const
|
||||
{
|
||||
return m_seqMax;
|
||||
}
|
||||
|
||||
void
|
||||
ConsumerPcon::SetSeqMax(uint32_t seqMax)
|
||||
{
|
||||
m_seqMax = seqMax;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ConsumerPcon::OnData(shared_ptr<const Data> data)
|
||||
{
|
||||
@@ -131,6 +139,12 @@ ConsumerPcon::OnData(shared_ptr<const Data> data)
|
||||
}
|
||||
|
||||
NS_LOG_DEBUG("Window: " << m_window << ", InFlight: " << m_inFlight);
|
||||
++this->m_recvDataNum;
|
||||
|
||||
if (this->m_recvDataNum == this->m_seqMax) {
|
||||
this->StopApplication();
|
||||
return;
|
||||
}
|
||||
|
||||
ScheduleNextPacket();
|
||||
}
|
||||
|
||||
@@ -75,6 +75,14 @@ private:
|
||||
void
|
||||
BicDecrease();
|
||||
|
||||
uint32_t
|
||||
GetSeqMax() const;
|
||||
|
||||
void
|
||||
SetSeqMax(uint32_t seqMax);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
CcAlgorithm m_ccAlgorithm;
|
||||
double m_beta;
|
||||
@@ -109,6 +117,8 @@ private:
|
||||
double m_bicSsCwnd;
|
||||
double m_bicSsTarget;
|
||||
bool m_isBicSs; //!< whether we are currently in the BIC slow start phase
|
||||
|
||||
uint32_t m_recvDataNum;
|
||||
};
|
||||
|
||||
} // namespace ndn
|
||||
|
||||
@@ -71,6 +71,11 @@ ConsumerWindow::GetTypeId(void)
|
||||
BooleanValue(true),
|
||||
MakeBooleanAccessor(&ConsumerWindow::m_setInitialWindowOnTimeout),
|
||||
MakeBooleanChecker())
|
||||
.AddAttribute("DelayStart",
|
||||
"Delay start time",
|
||||
UintegerValue(0),
|
||||
MakeUintegerAccessor(&ConsumerWindow::delayStart),
|
||||
MakeUintegerChecker<uint32_t>())
|
||||
|
||||
.AddTraceSource("WindowTrace",
|
||||
"Window that controls how many outstanding interests are allowed",
|
||||
@@ -155,7 +160,13 @@ ConsumerWindow::SetSeqMax(uint32_t seqMax)
|
||||
void
|
||||
ConsumerWindow::ScheduleNextPacket()
|
||||
{
|
||||
if (m_window == static_cast<uint32_t>(0)) {
|
||||
if (this->m_firstTime) {
|
||||
m_sendEvent =
|
||||
Simulator::Schedule(MilliSeconds(this->delayStart),
|
||||
&Consumer::SendPacket, this);
|
||||
this->m_firstTime = false;
|
||||
}
|
||||
else if (m_window == static_cast<uint32_t>(0)) {
|
||||
Simulator::Remove(m_sendEvent);
|
||||
|
||||
NS_LOG_DEBUG(
|
||||
|
||||
@@ -101,6 +101,8 @@ protected:
|
||||
|
||||
TracedValue<double> m_window;
|
||||
TracedValue<uint32_t> m_inFlight;
|
||||
bool m_firstTime = true;
|
||||
uint64_t delayStart; // 延迟启动时间
|
||||
};
|
||||
|
||||
} // namespace ndn
|
||||
|
||||
@@ -6,3 +6,4 @@
|
||||
.lock*
|
||||
build/
|
||||
*.pyc
|
||||
*.txt
|
||||
@@ -0,0 +1,73 @@
|
||||
#include "face/face.hpp"
|
||||
#include "fw/strategy-info.hpp"
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
namespace nfd {
|
||||
namespace fw {
|
||||
|
||||
/**
|
||||
* 可以保存和获取属于相同名字前缀的测量信息
|
||||
*/
|
||||
class MtForwardingInfo : public StrategyInfo {
|
||||
public:
|
||||
|
||||
static constexpr int getTypeId() {
|
||||
return 1013;
|
||||
}
|
||||
|
||||
MtForwardingInfo(): ownPrefix("null") {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置某个FaceId的转发概率的值
|
||||
*/
|
||||
setForwPerc(FaceId, faceId, double perc) {
|
||||
this->forwPercMap[faceId] = perc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加或者减少转发概率
|
||||
*/
|
||||
increaseForwPerc(FaceId, faceId, double changeRate) {
|
||||
this->forwPercMap[faceId] += changeRate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取记录了 faceid-> 转发概率映射的map
|
||||
*/
|
||||
const std::map<FaceId, double> getForwPercMap() const {
|
||||
return this->forwPercMap;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取 Face 的数量
|
||||
*/
|
||||
int getFaceCount() {
|
||||
return this->forwPercMap.size();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取前缀
|
||||
*/
|
||||
void setPrefix(std::string prefix) {
|
||||
this->ownPrefix = prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置前缀
|
||||
*/
|
||||
std::string getPrefix() const {
|
||||
return this->ownPrefix;
|
||||
}
|
||||
private:
|
||||
std::string ownPrefix;
|
||||
std::map<FaceId, double> forwPercMap;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "pcon-strategy.hpp"
|
||||
#include <boost/random/uniform_int_distribution.hpp>
|
||||
#include <ndn-cxx/util/random.hpp>
|
||||
#include "daemon/common/logger.hpp"
|
||||
|
||||
namespace nfd {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
#include <boost/random/mersenne_twister.hpp>
|
||||
#include "face/face.hpp"
|
||||
#include "fw/strategy.hpp"
|
||||
#include "fw/algorithm.hpp"
|
||||
#include "fw/process-nack-traits.hpp"
|
||||
|
||||
namespace nfd {
|
||||
namespace fw {
|
||||
class PconStrategy : public Strategy, public ProcessNackTraits<PconStrategy> {
|
||||
public:
|
||||
PconStrategy(Forwarder& forwarder, const Name& name = getStrategyName());
|
||||
|
||||
virtual ~RandomLoadBalancerStrategy() override;
|
||||
|
||||
void afterReceiveInterest(const FaceEndpoint &ingress, const Interest &interest,
|
||||
const shared_ptr <pit::Entry> &pitEntry) override;
|
||||
|
||||
void beforeSatisfyInterest(const shared_ptr <pit::Entry> &pitEntry,
|
||||
const FaceEndpoint &ingress, const Data &data) override;
|
||||
|
||||
static const Name & getStrategyName();
|
||||
|
||||
private:
|
||||
|
||||
// 每收到一个CongestionMark,转发概率调整的比例
|
||||
double CHANGE_PERC;
|
||||
|
||||
// 记录最后一次更新的时间
|
||||
time::steady_clock::TimePoint m_lastFWRatioUpdate;
|
||||
|
||||
// 更新间隔,取110ms
|
||||
const time::steady_clock::duration TIME_BETWEEN_FW_UPDATE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,712 @@
|
||||
Time Node Interface Type Packets Kilobytes PacketsRaw KilobytesRaw
|
||||
0.5 C3 combined Drop 0 0 0 0
|
||||
0.5 C2 combined Drop 0 0 0 0
|
||||
0.5 C1 combined Drop 0 0 0 0
|
||||
0.5 R1 combined Drop 0 0 0 0
|
||||
0.5 R2 combined Drop 0 0 0 0
|
||||
0.5 P4 combined Drop 0 0 0 0
|
||||
0.5 P3 combined Drop 0 0 0 0
|
||||
0.5 P2 combined Drop 0 0 0 0
|
||||
0.5 P1 combined Drop 0 0 0 0
|
||||
1 C3 combined Drop 0 0 0 0
|
||||
1 C2 combined Drop 0 0 0 0
|
||||
1 C1 combined Drop 0 0 0 0
|
||||
1 R1 combined Drop 0 0 0 0
|
||||
1 R2 combined Drop 0 0 0 0
|
||||
1 P4 combined Drop 0 0 0 0
|
||||
1 P3 combined Drop 0 0 0 0
|
||||
1 P2 combined Drop 0 0 0 0
|
||||
1 P1 combined Drop 0 0 0 0
|
||||
1.5 C3 combined Drop 0 0 0 0
|
||||
1.5 C2 combined Drop 0 0 0 0
|
||||
1.5 C1 combined Drop 0 0 0 0
|
||||
1.5 R1 combined Drop 0 0 0 0
|
||||
1.5 R2 combined Drop 129 134 81 84.1641
|
||||
1.5 P4 combined Drop 177 184 111 115.336
|
||||
1.5 P3 combined Drop 0 0 0 0
|
||||
1.5 P2 combined Drop 0 0 0 0
|
||||
1.5 P1 combined Drop 0 0 0 0
|
||||
2 C3 combined Drop 32 0 20 0.585938
|
||||
2 C2 combined Drop 0 0 0 0
|
||||
2 C1 combined Drop 33 0 21 0.615234
|
||||
2 R1 combined Drop 0 0 0 0
|
||||
2 R2 combined Drop 91 94 41 42.6152
|
||||
2 P4 combined Drop 97 101 39 40.5254
|
||||
2 P3 combined Drop 0 0 0 0
|
||||
2 P2 combined Drop 0 0 0 0
|
||||
2 P1 combined Drop 0 0 0 0
|
||||
2.5 C3 combined Drop 6 0 0 0
|
||||
2.5 C2 combined Drop 0 0 0 0
|
||||
2.5 C1 combined Drop 6 0 0 0
|
||||
2.5 R1 combined Drop 0 0 0 0
|
||||
2.5 R2 combined Drop 56 58 24 24.9531
|
||||
2.5 P4 combined Drop 19 20 0 0
|
||||
2.5 P3 combined Drop 0 0 0 0
|
||||
2.5 P2 combined Drop 0 0 0 0
|
||||
2.5 P1 combined Drop 0 0 0 0
|
||||
3 C3 combined Drop 1 0 0 0
|
||||
3 C2 combined Drop 0 0 0 0
|
||||
3 C1 combined Drop 1 0 0 0
|
||||
3 R1 combined Drop 0 0 0 0
|
||||
3 R2 combined Drop 11 11 0 0
|
||||
3 P4 combined Drop 3 3 0 0
|
||||
3 P3 combined Drop 0 0 0 0
|
||||
3 P2 combined Drop 0 0 0 0
|
||||
3 P1 combined Drop 0 0 0 0
|
||||
3.5 C3 combined Drop 0 0 0 0
|
||||
3.5 C2 combined Drop 0 0 0 0
|
||||
3.5 C1 combined Drop 0 0 0 0
|
||||
3.5 R1 combined Drop 0 0 0 0
|
||||
3.5 R2 combined Drop 16 17 9 9.36035
|
||||
3.5 P4 combined Drop 2 2 1 1.04004
|
||||
3.5 P3 combined Drop 0 0 0 0
|
||||
3.5 P2 combined Drop 0 0 0 0
|
||||
3.5 P1 combined Drop 0 0 0 0
|
||||
4 C3 combined Drop 0 0 0 0
|
||||
4 C2 combined Drop 0 0 0 0
|
||||
4 C1 combined Drop 0 0 0 0
|
||||
4 R1 combined Drop 0 0 0 0
|
||||
4 R2 combined Drop 3 3 0 0
|
||||
4 P4 combined Drop 0 0 0 0
|
||||
4 P3 combined Drop 0 0 0 0
|
||||
4 P2 combined Drop 0 0 0 0
|
||||
4 P1 combined Drop 0 0 0 0
|
||||
4.5 C3 combined Drop 0 0 0 0
|
||||
4.5 C2 combined Drop 0 0 0 0
|
||||
4.5 C1 combined Drop 0 0 0 0
|
||||
4.5 R1 combined Drop 0 0 0 0
|
||||
4.5 R2 combined Drop 16 17 10 10.4004
|
||||
4.5 P4 combined Drop 0 0 0 0
|
||||
4.5 P3 combined Drop 0 0 0 0
|
||||
4.5 P2 combined Drop 0 0 0 0
|
||||
4.5 P1 combined Drop 0 0 0 0
|
||||
5 C3 combined Drop 0 0 0 0
|
||||
5 C2 combined Drop 0 0 0 0
|
||||
5 C1 combined Drop 0 0 0 0
|
||||
5 R1 combined Drop 0 0 0 0
|
||||
5 R2 combined Drop 3 3 0 0
|
||||
5 P4 combined Drop 0 0 0 0
|
||||
5 P3 combined Drop 0 0 0 0
|
||||
5 P2 combined Drop 0 0 0 0
|
||||
5 P1 combined Drop 0 0 0 0
|
||||
5.5 C3 combined Drop 0 0 0 0
|
||||
5.5 C2 combined Drop 0 0 0 0
|
||||
5.5 C1 combined Drop 0 0 0 0
|
||||
5.5 R1 combined Drop 0 0 0 0
|
||||
5.5 R2 combined Drop 0 0 0 0
|
||||
5.5 P4 combined Drop 6 6 4 4.16016
|
||||
5.5 P3 combined Drop 0 0 0 0
|
||||
5.5 P2 combined Drop 0 0 0 0
|
||||
5.5 P1 combined Drop 0 0 0 0
|
||||
6 C3 combined Drop 0 0 0 0
|
||||
6 C2 combined Drop 0 0 0 0
|
||||
6 C1 combined Drop 0 0 0 0
|
||||
6 R1 combined Drop 0 0 0 0
|
||||
6 R2 combined Drop 0 0 0 0
|
||||
6 P4 combined Drop 7 7 4 4.16016
|
||||
6 P3 combined Drop 0 0 0 0
|
||||
6 P2 combined Drop 0 0 0 0
|
||||
6 P1 combined Drop 0 0 0 0
|
||||
6.5 C3 combined Drop 0 0 0 0
|
||||
6.5 C2 combined Drop 0 0 0 0
|
||||
6.5 C1 combined Drop 0 0 0 0
|
||||
6.5 R1 combined Drop 0 0 0 0
|
||||
6.5 R2 combined Drop 0 0 0 0
|
||||
6.5 P4 combined Drop 1 1 0 0
|
||||
6.5 P3 combined Drop 0 0 0 0
|
||||
6.5 P2 combined Drop 0 0 0 0
|
||||
6.5 P1 combined Drop 0 0 0 0
|
||||
7 C3 combined Drop 0 0 0 0
|
||||
7 C2 combined Drop 0 0 0 0
|
||||
7 C1 combined Drop 0 0 0 0
|
||||
7 R1 combined Drop 0 0 0 0
|
||||
7 R2 combined Drop 24 24 15 15.6006
|
||||
7 P4 combined Drop 0 0 0 0
|
||||
7 P3 combined Drop 0 0 0 0
|
||||
7 P2 combined Drop 0 0 0 0
|
||||
7 P1 combined Drop 0 0 0 0
|
||||
7.5 C3 combined Drop 0 0 0 0
|
||||
7.5 C2 combined Drop 0 0 0 0
|
||||
7.5 C1 combined Drop 0 0 0 0
|
||||
7.5 R1 combined Drop 0 0 0 0
|
||||
7.5 R2 combined Drop 4 4 0 0
|
||||
7.5 P4 combined Drop 0 0 0 0
|
||||
7.5 P3 combined Drop 0 0 0 0
|
||||
7.5 P2 combined Drop 0 0 0 0
|
||||
7.5 P1 combined Drop 0 0 0 0
|
||||
8 C3 combined Drop 0 0 0 0
|
||||
8 C2 combined Drop 0 0 0 0
|
||||
8 C1 combined Drop 0 0 0 0
|
||||
8 R1 combined Drop 0 0 0 0
|
||||
8 R2 combined Drop 0 0 0 0
|
||||
8 P4 combined Drop 0 0 0 0
|
||||
8 P3 combined Drop 0 0 0 0
|
||||
8 P2 combined Drop 0 0 0 0
|
||||
8 P1 combined Drop 0 0 0 0
|
||||
8.5 C3 combined Drop 0 0 0 0
|
||||
8.5 C2 combined Drop 0 0 0 0
|
||||
8.5 C1 combined Drop 0 0 0 0
|
||||
8.5 R1 combined Drop 0 0 0 0
|
||||
8.5 R2 combined Drop 12 13 8 8.32031
|
||||
8.5 P4 combined Drop 0 0 0 0
|
||||
8.5 P3 combined Drop 0 0 0 0
|
||||
8.5 P2 combined Drop 0 0 0 0
|
||||
8.5 P1 combined Drop 0 0 0 0
|
||||
9 C3 combined Drop 0 0 0 0
|
||||
9 C2 combined Drop 0 0 0 0
|
||||
9 C1 combined Drop 0 0 0 0
|
||||
9 R1 combined Drop 0 0 0 0
|
||||
9 R2 combined Drop 2 2 0 0
|
||||
9 P4 combined Drop 0 0 0 0
|
||||
9 P3 combined Drop 0 0 0 0
|
||||
9 P2 combined Drop 0 0 0 0
|
||||
9 P1 combined Drop 0 0 0 0
|
||||
9.5 C3 combined Drop 0 0 0 0
|
||||
9.5 C2 combined Drop 0 0 0 0
|
||||
9.5 C1 combined Drop 0 0 0 0
|
||||
9.5 R1 combined Drop 0 0 0 0
|
||||
9.5 R2 combined Drop 3 3 2 2.08008
|
||||
9.5 P4 combined Drop 8 8 5 5.2002
|
||||
9.5 P3 combined Drop 0 0 0 0
|
||||
9.5 P2 combined Drop 0 0 0 0
|
||||
9.5 P1 combined Drop 0 0 0 0
|
||||
10 C3 combined Drop 0 0 0 0
|
||||
10 C2 combined Drop 0 0 0 0
|
||||
10 C1 combined Drop 0 0 0 0
|
||||
10 R1 combined Drop 0 0 0 0
|
||||
10 R2 combined Drop 0 0 0 0
|
||||
10 P4 combined Drop 3 3 1 1.04004
|
||||
10 P3 combined Drop 0 0 0 0
|
||||
10 P2 combined Drop 0 0 0 0
|
||||
10 P1 combined Drop 0 0 0 0
|
||||
10.5 C3 combined Drop 0 0 0 0
|
||||
10.5 C2 combined Drop 0 0 0 0
|
||||
10.5 C1 combined Drop 0 0 0 0
|
||||
10.5 R1 combined Drop 0 0 0 0
|
||||
10.5 R2 combined Drop 0 0 0 0
|
||||
10.5 P4 combined Drop 10 10 6 6.24023
|
||||
10.5 P3 combined Drop 0 0 0 0
|
||||
10.5 P2 combined Drop 0 0 0 0
|
||||
10.5 P1 combined Drop 0 0 0 0
|
||||
11 C3 combined Drop 0 0 0 0
|
||||
11 C2 combined Drop 0 0 0 0
|
||||
11 C1 combined Drop 0 0 0 0
|
||||
11 R1 combined Drop 0 0 0 0
|
||||
11 R2 combined Drop 0 0 0 0
|
||||
11 P4 combined Drop 14 15 8 8.32031
|
||||
11 P3 combined Drop 0 0 0 0
|
||||
11 P2 combined Drop 0 0 0 0
|
||||
11 P1 combined Drop 0 0 0 0
|
||||
11.5 C3 combined Drop 0 0 0 0
|
||||
11.5 C2 combined Drop 0 0 0 0
|
||||
11.5 C1 combined Drop 0 0 0 0
|
||||
11.5 R1 combined Drop 0 0 0 0
|
||||
11.5 R2 combined Drop 0 0 0 0
|
||||
11.5 P4 combined Drop 2 2 0 0
|
||||
11.5 P3 combined Drop 0 0 0 0
|
||||
11.5 P2 combined Drop 0 0 0 0
|
||||
11.5 P1 combined Drop 0 0 0 0
|
||||
12 C3 combined Drop 0 0 0 0
|
||||
12 C2 combined Drop 0 0 0 0
|
||||
12 C1 combined Drop 0 0 0 0
|
||||
12 R1 combined Drop 0 0 0 0
|
||||
12 R2 combined Drop 0 0 0 0
|
||||
12 P4 combined Drop 3 3 2 2.08008
|
||||
12 P3 combined Drop 0 0 0 0
|
||||
12 P2 combined Drop 0 0 0 0
|
||||
12 P1 combined Drop 0 0 0 0
|
||||
12.5 C3 combined Drop 0 0 0 0
|
||||
12.5 C2 combined Drop 0 0 0 0
|
||||
12.5 C1 combined Drop 0 0 0 0
|
||||
12.5 R1 combined Drop 0 0 0 0
|
||||
12.5 R2 combined Drop 0 0 0 0
|
||||
12.5 P4 combined Drop 0 0 0 0
|
||||
12.5 P3 combined Drop 0 0 0 0
|
||||
12.5 P2 combined Drop 0 0 0 0
|
||||
12.5 P1 combined Drop 0 0 0 0
|
||||
13 C3 combined Drop 0 0 0 0
|
||||
13 C2 combined Drop 0 0 0 0
|
||||
13 C1 combined Drop 0 0 0 0
|
||||
13 R1 combined Drop 0 0 0 0
|
||||
13 R2 combined Drop 4 4 3 3.12012
|
||||
13 P4 combined Drop 16 16 10 10.4004
|
||||
13 P3 combined Drop 0 0 0 0
|
||||
13 P2 combined Drop 0 0 0 0
|
||||
13 P1 combined Drop 0 0 0 0
|
||||
13.5 C3 combined Drop 0 0 0 0
|
||||
13.5 C2 combined Drop 0 0 0 0
|
||||
13.5 C1 combined Drop 0 0 0 0
|
||||
13.5 R1 combined Drop 0 0 0 0
|
||||
13.5 R2 combined Drop 0 0 0 0
|
||||
13.5 P4 combined Drop 3 3 0 0
|
||||
13.5 P3 combined Drop 0 0 0 0
|
||||
13.5 P2 combined Drop 0 0 0 0
|
||||
13.5 P1 combined Drop 0 0 0 0
|
||||
14 C3 combined Drop 0 0 0 0
|
||||
14 C2 combined Drop 0 0 0 0
|
||||
14 C1 combined Drop 0 0 0 0
|
||||
14 R1 combined Drop 0 0 0 0
|
||||
14 R2 combined Drop 0 0 0 0
|
||||
14 P4 combined Drop 3 3 2 2.08008
|
||||
14 P3 combined Drop 0 0 0 0
|
||||
14 P2 combined Drop 0 0 0 0
|
||||
14 P1 combined Drop 0 0 0 0
|
||||
14.5 C3 combined Drop 0 0 0 0
|
||||
14.5 C2 combined Drop 0 0 0 0
|
||||
14.5 C1 combined Drop 0 0 0 0
|
||||
14.5 R1 combined Drop 0 0 0 0
|
||||
14.5 R2 combined Drop 0 0 0 0
|
||||
14.5 P4 combined Drop 0 0 0 0
|
||||
14.5 P3 combined Drop 0 0 0 0
|
||||
14.5 P2 combined Drop 0 0 0 0
|
||||
14.5 P1 combined Drop 0 0 0 0
|
||||
15 C3 combined Drop 0 0 0 0
|
||||
15 C2 combined Drop 0 0 0 0
|
||||
15 C1 combined Drop 0 0 0 0
|
||||
15 R1 combined Drop 0 0 0 0
|
||||
15 R2 combined Drop 0 0 0 0
|
||||
15 P4 combined Drop 6 6 4 4.16016
|
||||
15 P3 combined Drop 0 0 0 0
|
||||
15 P2 combined Drop 0 0 0 0
|
||||
15 P1 combined Drop 0 0 0 0
|
||||
15.5 C3 combined Drop 0 0 0 0
|
||||
15.5 C2 combined Drop 0 0 0 0
|
||||
15.5 C1 combined Drop 0 0 0 0
|
||||
15.5 R1 combined Drop 0 0 0 0
|
||||
15.5 R2 combined Drop 4 4 3 3.12012
|
||||
15.5 P4 combined Drop 1 1 0 0
|
||||
15.5 P3 combined Drop 0 0 0 0
|
||||
15.5 P2 combined Drop 0 0 0 0
|
||||
15.5 P1 combined Drop 0 0 0 0
|
||||
16 C3 combined Drop 0 0 0 0
|
||||
16 C2 combined Drop 0 0 0 0
|
||||
16 C1 combined Drop 0 0 0 0
|
||||
16 R1 combined Drop 0 0 0 0
|
||||
16 R2 combined Drop 7 7 4 4.16016
|
||||
16 P4 combined Drop 0 0 0 0
|
||||
16 P3 combined Drop 0 0 0 0
|
||||
16 P2 combined Drop 0 0 0 0
|
||||
16 P1 combined Drop 0 0 0 0
|
||||
16.5 C3 combined Drop 0 0 0 0
|
||||
16.5 C2 combined Drop 0 0 0 0
|
||||
16.5 C1 combined Drop 0 0 0 0
|
||||
16.5 R1 combined Drop 0 0 0 0
|
||||
16.5 R2 combined Drop 1 1 0 0
|
||||
16.5 P4 combined Drop 0 0 0 0
|
||||
16.5 P3 combined Drop 0 0 0 0
|
||||
16.5 P2 combined Drop 0 0 0 0
|
||||
16.5 P1 combined Drop 0 0 0 0
|
||||
17 C3 combined Drop 0 0 0 0
|
||||
17 C2 combined Drop 0 0 0 0
|
||||
17 C1 combined Drop 0 0 0 0
|
||||
17 R1 combined Drop 0 0 0 0
|
||||
17 R2 combined Drop 1 1 1 1.04004
|
||||
17 P4 combined Drop 1 1 1 1.04004
|
||||
17 P3 combined Drop 0 0 0 0
|
||||
17 P2 combined Drop 0 0 0 0
|
||||
17 P1 combined Drop 0 0 0 0
|
||||
17.5 C3 combined Drop 0 0 0 0
|
||||
17.5 C2 combined Drop 0 0 0 0
|
||||
17.5 C1 combined Drop 0 0 0 0
|
||||
17.5 R1 combined Drop 0 0 0 0
|
||||
17.5 R2 combined Drop 5 5 3 3.12012
|
||||
17.5 P4 combined Drop 0 0 0 0
|
||||
17.5 P3 combined Drop 0 0 0 0
|
||||
17.5 P2 combined Drop 0 0 0 0
|
||||
17.5 P1 combined Drop 0 0 0 0
|
||||
18 C3 combined Drop 0 0 0 0
|
||||
18 C2 combined Drop 0 0 0 0
|
||||
18 C1 combined Drop 0 0 0 0
|
||||
18 R1 combined Drop 0 0 0 0
|
||||
18 R2 combined Drop 0 0 0 0
|
||||
18 P4 combined Drop 0 0 0 0
|
||||
18 P3 combined Drop 0 0 0 0
|
||||
18 P2 combined Drop 0 0 0 0
|
||||
18 P1 combined Drop 0 0 0 0
|
||||
18.5 C3 combined Drop 0 0 0 0
|
||||
18.5 C2 combined Drop 0 0 0 0
|
||||
18.5 C1 combined Drop 0 0 0 0
|
||||
18.5 R1 combined Drop 0 0 0 0
|
||||
18.5 R2 combined Drop 0 0 0 0
|
||||
18.5 P4 combined Drop 20 21 13 13.5205
|
||||
18.5 P3 combined Drop 0 0 0 0
|
||||
18.5 P2 combined Drop 0 0 0 0
|
||||
18.5 P1 combined Drop 0 0 0 0
|
||||
19 C3 combined Drop 0 0 0 0
|
||||
19 C2 combined Drop 0 0 0 0
|
||||
19 C1 combined Drop 0 0 0 0
|
||||
19 R1 combined Drop 0 0 0 0
|
||||
19 R2 combined Drop 0 0 0 0
|
||||
19 P4 combined Drop 3 4 0 0
|
||||
19 P3 combined Drop 0 0 0 0
|
||||
19 P2 combined Drop 0 0 0 0
|
||||
19 P1 combined Drop 0 0 0 0
|
||||
19.5 C3 combined Drop 0 0 0 0
|
||||
19.5 C2 combined Drop 0 0 0 0
|
||||
19.5 C1 combined Drop 0 0 0 0
|
||||
19.5 R1 combined Drop 0 0 0 0
|
||||
19.5 R2 combined Drop 6 6 4 4.16016
|
||||
19.5 P4 combined Drop 8 9 5 5.2002
|
||||
19.5 P3 combined Drop 0 0 0 0
|
||||
19.5 P2 combined Drop 0 0 0 0
|
||||
19.5 P1 combined Drop 0 0 0 0
|
||||
20 C3 combined Drop 0 0 0 0
|
||||
20 C2 combined Drop 0 0 0 0
|
||||
20 C1 combined Drop 0 0 0 0
|
||||
20 R1 combined Drop 0 0 0 0
|
||||
20 R2 combined Drop 1 1 0 0
|
||||
20 P4 combined Drop 9 10 5 5.2002
|
||||
20 P3 combined Drop 0 0 0 0
|
||||
20 P2 combined Drop 0 0 0 0
|
||||
20 P1 combined Drop 0 0 0 0
|
||||
20.5 C3 combined Drop 0 0 0 0
|
||||
20.5 C2 combined Drop 0 0 0 0
|
||||
20.5 C1 combined Drop 0 0 0 0
|
||||
20.5 R1 combined Drop 0 0 0 0
|
||||
20.5 R2 combined Drop 3 3 2 2.08008
|
||||
20.5 P4 combined Drop 1 1 0 0
|
||||
20.5 P3 combined Drop 0 0 0 0
|
||||
20.5 P2 combined Drop 0 0 0 0
|
||||
20.5 P1 combined Drop 0 0 0 0
|
||||
21 C3 combined Drop 0 0 0 0
|
||||
21 C2 combined Drop 0 0 0 0
|
||||
21 C1 combined Drop 0 0 0 0
|
||||
21 R1 combined Drop 0 0 0 0
|
||||
21 R2 combined Drop 0 0 0 0
|
||||
21 P4 combined Drop 5 5 3 3.12012
|
||||
21 P3 combined Drop 0 0 0 0
|
||||
21 P2 combined Drop 0 0 0 0
|
||||
21 P1 combined Drop 0 0 0 0
|
||||
21.5 C3 combined Drop 0 0 0 0
|
||||
21.5 C2 combined Drop 0 0 0 0
|
||||
21.5 C1 combined Drop 0 0 0 0
|
||||
21.5 R1 combined Drop 0 0 0 0
|
||||
21.5 R2 combined Drop 0 0 0 0
|
||||
21.5 P4 combined Drop 0 0 0 0
|
||||
21.5 P3 combined Drop 0 0 0 0
|
||||
21.5 P2 combined Drop 0 0 0 0
|
||||
21.5 P1 combined Drop 0 0 0 0
|
||||
22 C3 combined Drop 0 0 0 0
|
||||
22 C2 combined Drop 0 0 0 0
|
||||
22 C1 combined Drop 0 0 0 0
|
||||
22 R1 combined Drop 0 0 0 0
|
||||
22 R2 combined Drop 0 0 0 0
|
||||
22 P4 combined Drop 24 24 15 15.6006
|
||||
22 P3 combined Drop 0 0 0 0
|
||||
22 P2 combined Drop 0 0 0 0
|
||||
22 P1 combined Drop 0 0 0 0
|
||||
22.5 C3 combined Drop 0 0 0 0
|
||||
22.5 C2 combined Drop 0 0 0 0
|
||||
22.5 C1 combined Drop 0 0 0 0
|
||||
22.5 R1 combined Drop 0 0 0 0
|
||||
22.5 R2 combined Drop 0 0 0 0
|
||||
22.5 P4 combined Drop 7 8 2 2.08008
|
||||
22.5 P3 combined Drop 0 0 0 0
|
||||
22.5 P2 combined Drop 0 0 0 0
|
||||
22.5 P1 combined Drop 0 0 0 0
|
||||
23 C3 combined Drop 0 0 0 0
|
||||
23 C2 combined Drop 0 0 0 0
|
||||
23 C1 combined Drop 0 0 0 0
|
||||
23 R1 combined Drop 0 0 0 0
|
||||
23 R2 combined Drop 0 0 0 0
|
||||
23 P4 combined Drop 1 1 0 0
|
||||
23 P3 combined Drop 0 0 0 0
|
||||
23 P2 combined Drop 0 0 0 0
|
||||
23 P1 combined Drop 0 0 0 0
|
||||
23.5 C3 combined Drop 0 0 0 0
|
||||
23.5 C2 combined Drop 0 0 0 0
|
||||
23.5 C1 combined Drop 0 0 0 0
|
||||
23.5 R1 combined Drop 0 0 0 0
|
||||
23.5 R2 combined Drop 0 0 0 0
|
||||
23.5 P4 combined Drop 21 21 13 13.5205
|
||||
23.5 P3 combined Drop 0 0 0 0
|
||||
23.5 P2 combined Drop 0 0 0 0
|
||||
23.5 P1 combined Drop 0 0 0 0
|
||||
24 C3 combined Drop 0 0 0 0
|
||||
24 C2 combined Drop 0 0 0 0
|
||||
24 C1 combined Drop 0 0 0 0
|
||||
24 R1 combined Drop 0 0 0 0
|
||||
24 R2 combined Drop 0 0 0 0
|
||||
24 P4 combined Drop 4 4 0 0
|
||||
24 P3 combined Drop 0 0 0 0
|
||||
24 P2 combined Drop 0 0 0 0
|
||||
24 P1 combined Drop 0 0 0 0
|
||||
24.5 C3 combined Drop 0 0 0 0
|
||||
24.5 C2 combined Drop 0 0 0 0
|
||||
24.5 C1 combined Drop 0 0 0 0
|
||||
24.5 R1 combined Drop 0 0 0 0
|
||||
24.5 R2 combined Drop 0 0 0 0
|
||||
24.5 P4 combined Drop 4 4 2 2.08008
|
||||
24.5 P3 combined Drop 0 0 0 0
|
||||
24.5 P2 combined Drop 0 0 0 0
|
||||
24.5 P1 combined Drop 0 0 0 0
|
||||
25 C3 combined Drop 0 0 0 0
|
||||
25 C2 combined Drop 0 0 0 0
|
||||
25 C1 combined Drop 0 0 0 0
|
||||
25 R1 combined Drop 0 0 0 0
|
||||
25 R2 combined Drop 0 0 0 0
|
||||
25 P4 combined Drop 10 10 6 6.24023
|
||||
25 P3 combined Drop 0 0 0 0
|
||||
25 P2 combined Drop 0 0 0 0
|
||||
25 P1 combined Drop 0 0 0 0
|
||||
25.5 C3 combined Drop 0 0 0 0
|
||||
25.5 C2 combined Drop 0 0 0 0
|
||||
25.5 C1 combined Drop 0 0 0 0
|
||||
25.5 R1 combined Drop 0 0 0 0
|
||||
25.5 R2 combined Drop 0 0 0 0
|
||||
25.5 P4 combined Drop 21 21 12 12.4805
|
||||
25.5 P3 combined Drop 0 0 0 0
|
||||
25.5 P2 combined Drop 0 0 0 0
|
||||
25.5 P1 combined Drop 0 0 0 0
|
||||
26 C3 combined Drop 0 0 0 0
|
||||
26 C2 combined Drop 0 0 0 0
|
||||
26 C1 combined Drop 0 0 0 0
|
||||
26 R1 combined Drop 0 0 0 0
|
||||
26 R2 combined Drop 0 0 0 0
|
||||
26 P4 combined Drop 4 4 0 0
|
||||
26 P3 combined Drop 0 0 0 0
|
||||
26 P2 combined Drop 0 0 0 0
|
||||
26 P1 combined Drop 0 0 0 0
|
||||
26.5 C3 combined Drop 0 0 0 0
|
||||
26.5 C2 combined Drop 0 0 0 0
|
||||
26.5 C1 combined Drop 0 0 0 0
|
||||
26.5 R1 combined Drop 0 0 0 0
|
||||
26.5 R2 combined Drop 0 0 0 0
|
||||
26.5 P4 combined Drop 0 0 0 0
|
||||
26.5 P3 combined Drop 0 0 0 0
|
||||
26.5 P2 combined Drop 0 0 0 0
|
||||
26.5 P1 combined Drop 0 0 0 0
|
||||
27 C3 combined Drop 0 0 0 0
|
||||
27 C2 combined Drop 0 0 0 0
|
||||
27 C1 combined Drop 0 0 0 0
|
||||
27 R1 combined Drop 0 0 0 0
|
||||
27 R2 combined Drop 27 28 17 17.6807
|
||||
27 P4 combined Drop 0 0 0 0
|
||||
27 P3 combined Drop 0 0 0 0
|
||||
27 P2 combined Drop 0 0 0 0
|
||||
27 P1 combined Drop 0 0 0 0
|
||||
27.5 C3 combined Drop 0 0 0 0
|
||||
27.5 C2 combined Drop 0 0 0 0
|
||||
27.5 C1 combined Drop 0 0 0 0
|
||||
27.5 R1 combined Drop 0 0 0 0
|
||||
27.5 R2 combined Drop 5 5 0 0
|
||||
27.5 P4 combined Drop 0 0 0 0
|
||||
27.5 P3 combined Drop 0 0 0 0
|
||||
27.5 P2 combined Drop 0 0 0 0
|
||||
27.5 P1 combined Drop 0 0 0 0
|
||||
28 C3 combined Drop 0 0 0 0
|
||||
28 C2 combined Drop 0 0 0 0
|
||||
28 C1 combined Drop 0 0 0 0
|
||||
28 R1 combined Drop 0 0 0 0
|
||||
28 R2 combined Drop 0 0 0 0
|
||||
28 P4 combined Drop 0 0 0 0
|
||||
28 P3 combined Drop 0 0 0 0
|
||||
28 P2 combined Drop 0 0 0 0
|
||||
28 P1 combined Drop 0 0 0 0
|
||||
28.5 C3 combined Drop 0 0 0 0
|
||||
28.5 C2 combined Drop 0 0 0 0
|
||||
28.5 C1 combined Drop 0 0 0 0
|
||||
28.5 R1 combined Drop 0 0 0 0
|
||||
28.5 R2 combined Drop 0 0 0 0
|
||||
28.5 P4 combined Drop 25 26 16 16.6406
|
||||
28.5 P3 combined Drop 0 0 0 0
|
||||
28.5 P2 combined Drop 0 0 0 0
|
||||
28.5 P1 combined Drop 0 0 0 0
|
||||
29 C3 combined Drop 0 0 0 0
|
||||
29 C2 combined Drop 0 0 0 0
|
||||
29 C1 combined Drop 0 0 0 0
|
||||
29 R1 combined Drop 0 0 0 0
|
||||
29 R2 combined Drop 0 0 0 0
|
||||
29 P4 combined Drop 4 5 0 0
|
||||
29 P3 combined Drop 0 0 0 0
|
||||
29 P2 combined Drop 0 0 0 0
|
||||
29 P1 combined Drop 0 0 0 0
|
||||
29.5 C3 combined Drop 0 0 0 0
|
||||
29.5 C2 combined Drop 0 0 0 0
|
||||
29.5 C1 combined Drop 0 0 0 0
|
||||
29.5 R1 combined Drop 0 0 0 0
|
||||
29.5 R2 combined Drop 9 9 6 6.24023
|
||||
29.5 P4 combined Drop 0 0 0 0
|
||||
29.5 P3 combined Drop 0 0 0 0
|
||||
29.5 P2 combined Drop 0 0 0 0
|
||||
29.5 P1 combined Drop 0 0 0 0
|
||||
30 C3 combined Drop 0 0 0 0
|
||||
30 C2 combined Drop 0 0 0 0
|
||||
30 C1 combined Drop 0 0 0 0
|
||||
30 R1 combined Drop 0 0 0 0
|
||||
30 R2 combined Drop 3 3 1 1.04004
|
||||
30 P4 combined Drop 0 0 0 0
|
||||
30 P3 combined Drop 0 0 0 0
|
||||
30 P2 combined Drop 0 0 0 0
|
||||
30 P1 combined Drop 0 0 0 0
|
||||
30.5 C3 combined Drop 0 0 0 0
|
||||
30.5 C2 combined Drop 0 0 0 0
|
||||
30.5 C1 combined Drop 0 0 0 0
|
||||
30.5 R1 combined Drop 0 0 0 0
|
||||
30.5 R2 combined Drop 0 0 0 0
|
||||
30.5 P4 combined Drop 0 0 0 0
|
||||
30.5 P3 combined Drop 0 0 0 0
|
||||
30.5 P2 combined Drop 0 0 0 0
|
||||
30.5 P1 combined Drop 0 0 0 0
|
||||
31 C3 combined Drop 0 0 0 0
|
||||
31 C2 combined Drop 0 0 0 0
|
||||
31 C1 combined Drop 0 0 0 0
|
||||
31 R1 combined Drop 0 0 0 0
|
||||
31 R2 combined Drop 0 0 0 0
|
||||
31 P4 combined Drop 24 24 15 15.6006
|
||||
31 P3 combined Drop 0 0 0 0
|
||||
31 P2 combined Drop 0 0 0 0
|
||||
31 P1 combined Drop 0 0 0 0
|
||||
31.5 C3 combined Drop 0 0 0 0
|
||||
31.5 C2 combined Drop 0 0 0 0
|
||||
31.5 C1 combined Drop 0 0 0 0
|
||||
31.5 R1 combined Drop 0 0 0 0
|
||||
31.5 R2 combined Drop 0 0 0 0
|
||||
31.5 P4 combined Drop 4 4 0 0
|
||||
31.5 P3 combined Drop 0 0 0 0
|
||||
31.5 P2 combined Drop 0 0 0 0
|
||||
31.5 P1 combined Drop 0 0 0 0
|
||||
32 C3 combined Drop 0 0 0 0
|
||||
32 C2 combined Drop 0 0 0 0
|
||||
32 C1 combined Drop 0 0 0 0
|
||||
32 R1 combined Drop 0 0 0 0
|
||||
32 R2 combined Drop 0 0 0 0
|
||||
32 P4 combined Drop 23 24 14 14.5605
|
||||
32 P3 combined Drop 0 0 0 0
|
||||
32 P2 combined Drop 0 0 0 0
|
||||
32 P1 combined Drop 0 0 0 0
|
||||
32.5 C3 combined Drop 0 0 0 0
|
||||
32.5 C2 combined Drop 0 0 0 0
|
||||
32.5 C1 combined Drop 0 0 0 0
|
||||
32.5 R1 combined Drop 0 0 0 0
|
||||
32.5 R2 combined Drop 0 0 0 0
|
||||
32.5 P4 combined Drop 7 8 2 2.08008
|
||||
32.5 P3 combined Drop 0 0 0 0
|
||||
32.5 P2 combined Drop 0 0 0 0
|
||||
32.5 P1 combined Drop 0 0 0 0
|
||||
33 C3 combined Drop 0 0 0 0
|
||||
33 C2 combined Drop 0 0 0 0
|
||||
33 C1 combined Drop 0 0 0 0
|
||||
33 R1 combined Drop 0 0 0 0
|
||||
33 R2 combined Drop 0 0 0 0
|
||||
33 P4 combined Drop 1 1 0 0
|
||||
33 P3 combined Drop 0 0 0 0
|
||||
33 P2 combined Drop 0 0 0 0
|
||||
33 P1 combined Drop 0 0 0 0
|
||||
33.5 C3 combined Drop 0 0 0 0
|
||||
33.5 C2 combined Drop 0 0 0 0
|
||||
33.5 C1 combined Drop 0 0 0 0
|
||||
33.5 R1 combined Drop 0 0 0 0
|
||||
33.5 R2 combined Drop 0 0 0 0
|
||||
33.5 P4 combined Drop 14 15 9 9.36035
|
||||
33.5 P3 combined Drop 0 0 0 0
|
||||
33.5 P2 combined Drop 0 0 0 0
|
||||
33.5 P1 combined Drop 0 0 0 0
|
||||
34 C3 combined Drop 0 0 0 0
|
||||
34 C2 combined Drop 0 0 0 0
|
||||
34 C1 combined Drop 0 0 0 0
|
||||
34 R1 combined Drop 0 0 0 0
|
||||
34 R2 combined Drop 0 0 0 0
|
||||
34 P4 combined Drop 2 2 0 0
|
||||
34 P3 combined Drop 0 0 0 0
|
||||
34 P2 combined Drop 0 0 0 0
|
||||
34 P1 combined Drop 0 0 0 0
|
||||
34.5 C3 combined Drop 0 0 0 0
|
||||
34.5 C2 combined Drop 0 0 0 0
|
||||
34.5 C1 combined Drop 0 0 0 0
|
||||
34.5 R1 combined Drop 0 0 0 0
|
||||
34.5 R2 combined Drop 0 0 0 0
|
||||
34.5 P4 combined Drop 13 13 8 8.32031
|
||||
34.5 P3 combined Drop 0 0 0 0
|
||||
34.5 P2 combined Drop 0 0 0 0
|
||||
34.5 P1 combined Drop 0 0 0 0
|
||||
35 C3 combined Drop 0 0 0 0
|
||||
35 C2 combined Drop 0 0 0 0
|
||||
35 C1 combined Drop 0 0 0 0
|
||||
35 R1 combined Drop 0 0 0 0
|
||||
35 R2 combined Drop 0 0 0 0
|
||||
35 P4 combined Drop 2 2 0 0
|
||||
35 P3 combined Drop 0 0 0 0
|
||||
35 P2 combined Drop 0 0 0 0
|
||||
35 P1 combined Drop 0 0 0 0
|
||||
35.5 C3 combined Drop 0 0 0 0
|
||||
35.5 C2 combined Drop 0 0 0 0
|
||||
35.5 C1 combined Drop 0 0 0 0
|
||||
35.5 R1 combined Drop 0 0 0 0
|
||||
35.5 R2 combined Drop 4 4 3 3.12012
|
||||
35.5 P4 combined Drop 0 0 0 0
|
||||
35.5 P3 combined Drop 0 0 0 0
|
||||
35.5 P2 combined Drop 0 0 0 0
|
||||
35.5 P1 combined Drop 0 0 0 0
|
||||
36 C3 combined Drop 0 0 0 0
|
||||
36 C2 combined Drop 0 0 0 0
|
||||
36 C1 combined Drop 0 0 0 0
|
||||
36 R1 combined Drop 0 0 0 0
|
||||
36 R2 combined Drop 8 9 5 5.2002
|
||||
36 P4 combined Drop 0 0 0 0
|
||||
36 P3 combined Drop 0 0 0 0
|
||||
36 P2 combined Drop 0 0 0 0
|
||||
36 P1 combined Drop 0 0 0 0
|
||||
36.5 C3 combined Drop 0 0 0 0
|
||||
36.5 C2 combined Drop 0 0 0 0
|
||||
36.5 C1 combined Drop 0 0 0 0
|
||||
36.5 R1 combined Drop 0 0 0 0
|
||||
36.5 R2 combined Drop 1 1 0 0
|
||||
36.5 P4 combined Drop 0 0 0 0
|
||||
36.5 P3 combined Drop 0 0 0 0
|
||||
36.5 P2 combined Drop 0 0 0 0
|
||||
36.5 P1 combined Drop 0 0 0 0
|
||||
37 C3 combined Drop 0 0 0 0
|
||||
37 C2 combined Drop 0 0 0 0
|
||||
37 C1 combined Drop 0 0 0 0
|
||||
37 R1 combined Drop 0 0 0 0
|
||||
37 R2 combined Drop 16 16 10 10.4004
|
||||
37 P4 combined Drop 0 0 0 0
|
||||
37 P3 combined Drop 0 0 0 0
|
||||
37 P2 combined Drop 0 0 0 0
|
||||
37 P1 combined Drop 0 0 0 0
|
||||
37.5 C3 combined Drop 0 0 0 0
|
||||
37.5 C2 combined Drop 0 0 0 0
|
||||
37.5 C1 combined Drop 0 0 0 0
|
||||
37.5 R1 combined Drop 0 0 0 0
|
||||
37.5 R2 combined Drop 16 16 8 8.32031
|
||||
37.5 P4 combined Drop 0 0 0 0
|
||||
37.5 P3 combined Drop 0 0 0 0
|
||||
37.5 P2 combined Drop 0 0 0 0
|
||||
37.5 P1 combined Drop 0 0 0 0
|
||||
38 C3 combined Drop 0 0 0 0
|
||||
38 C2 combined Drop 0 0 0 0
|
||||
38 C1 combined Drop 0 0 0 0
|
||||
38 R1 combined Drop 0 0 0 0
|
||||
38 R2 combined Drop 3 3 0 0
|
||||
38 P4 combined Drop 0 0 0 0
|
||||
38 P3 combined Drop 0 0 0 0
|
||||
38 P2 combined Drop 0 0 0 0
|
||||
38 P1 combined Drop 0 0 0 0
|
||||
38.5 C3 combined Drop 0 0 0 0
|
||||
38.5 C2 combined Drop 0 0 0 0
|
||||
38.5 C1 combined Drop 0 0 0 0
|
||||
38.5 R1 combined Drop 0 0 0 0
|
||||
38.5 R2 combined Drop 0 0 0 0
|
||||
38.5 P4 combined Drop 16 16 10 10.4004
|
||||
38.5 P3 combined Drop 0 0 0 0
|
||||
38.5 P2 combined Drop 0 0 0 0
|
||||
38.5 P1 combined Drop 0 0 0 0
|
||||
39 C3 combined Drop 0 0 0 0
|
||||
39 C2 combined Drop 0 0 0 0
|
||||
39 C1 combined Drop 0 0 0 0
|
||||
39 R1 combined Drop 0 0 0 0
|
||||
39 R2 combined Drop 0 0 0 0
|
||||
39 P4 combined Drop 3 3 0 0
|
||||
39 P3 combined Drop 0 0 0 0
|
||||
39 P2 combined Drop 0 0 0 0
|
||||
39 P1 combined Drop 0 0 0 0
|
||||
39.5 C3 combined Drop 0 0 0 0
|
||||
39.5 C2 combined Drop 0 0 0 0
|
||||
39.5 C1 combined Drop 0 0 0 0
|
||||
39.5 R1 combined Drop 0 0 0 0
|
||||
39.5 R2 combined Drop 0 0 0 0
|
||||
39.5 P4 combined Drop 29 30 18 18.7207
|
||||
39.5 P3 combined Drop 0 0 0 0
|
||||
39.5 P2 combined Drop 0 0 0 0
|
||||
39.5 P1 combined Drop 0 0 0 0
|
||||
File diff suppressed because it is too large.
Load diff
-32590
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,112 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment1.1.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper.SetPrefix("/P1");
|
||||
consumerHelper.Install("C1");
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/P2");
|
||||
consumerHelper.Install("C2");
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/P3");
|
||||
consumerHelper.Install("C3");
|
||||
|
||||
// C4
|
||||
consumerHelper.SetPrefix("/P4");
|
||||
consumerHelper.Install("C4");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P1", P1);
|
||||
producerHelper.SetPrefix("/P1");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P2", P2);
|
||||
producerHelper.SetPrefix("/P2");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P3", P3);
|
||||
producerHelper.SetPrefix("/P3");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P4", P4);
|
||||
producerHelper.SetPrefix("/P4");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(40));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment1.1.txt", Seconds(0.5));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment1.1.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment1.1.txt", Seconds(0.5));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment1.2.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper.SetPrefix("/P1");
|
||||
consumerHelper.Install("C1");
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/P2");
|
||||
consumerHelper.Install("C2");
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/P3");
|
||||
consumerHelper.Install("C3");
|
||||
|
||||
// C4
|
||||
consumerHelper.SetPrefix("/P4");
|
||||
consumerHelper.Install("C4");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P1", P1);
|
||||
producerHelper.SetPrefix("/P1");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P2", P2);
|
||||
producerHelper.SetPrefix("/P2");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P3", P3);
|
||||
producerHelper.SetPrefix("/P3");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P4", P4);
|
||||
producerHelper.SetPrefix("/P4");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(120.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment1.2.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment1.2.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment1.2.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment1.3.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper.SetPrefix("/P1");
|
||||
consumerHelper.Install("C1");
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/P2");
|
||||
consumerHelper.Install("C2");
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/P3");
|
||||
consumerHelper.Install("C3");
|
||||
|
||||
// C4
|
||||
consumerHelper.SetPrefix("/P4");
|
||||
consumerHelper.Install("C4");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P1", P1);
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("400"));
|
||||
producerHelper.SetPrefix("/P1");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P2", P2);
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("500"));
|
||||
producerHelper.SetPrefix("/P2");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P3", P3);
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("600"));
|
||||
producerHelper.SetPrefix("/P3");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P4", P4);
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("700"));
|
||||
producerHelper.SetPrefix("/P4");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(120));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment1.3.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment1.3.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment1.3.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment1.4.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper.SetPrefix("/P1");
|
||||
consumerHelper.Install(C1);
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/P2");
|
||||
consumerHelper.SetAttribute("DelayStart", UintegerValue(10000));
|
||||
consumerHelper.Install(C2);
|
||||
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/P3");
|
||||
consumerHelper.SetAttribute("DelayStart", UintegerValue(20000));
|
||||
consumerHelper.Install(C3);
|
||||
|
||||
// C4
|
||||
consumerHelper.SetPrefix("/P4");
|
||||
consumerHelper.SetAttribute("DelayStart", UintegerValue(30000));
|
||||
consumerHelper.Install(C4);
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P1", P1);
|
||||
producerHelper.SetPrefix("/P1");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P2", P2);
|
||||
producerHelper.SetPrefix("/P2");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P3", P3);
|
||||
producerHelper.SetPrefix("/P3");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P4", P4);
|
||||
producerHelper.SetPrefix("/P4");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(120));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment1.4.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment1.4.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment1.4.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment1.5.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
ndn::AppHelper consumerHelper2("ns3::ndn::ConsumerCbr");
|
||||
consumerHelper2.SetAttribute("Frequency", StringValue("1000")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper2.SetPrefix("/P1");
|
||||
consumerHelper2.Install("C1");
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/P2");
|
||||
consumerHelper.Install("C2");
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/P3");
|
||||
consumerHelper.Install("C3");
|
||||
|
||||
// C4
|
||||
consumerHelper.SetPrefix("/P4");
|
||||
consumerHelper.Install("C4");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P1", P1);
|
||||
producerHelper.SetPrefix("/P1");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P2", P2);
|
||||
producerHelper.SetPrefix("/P2");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P3", P3);
|
||||
producerHelper.SetPrefix("/P3");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/P4", P4);
|
||||
producerHelper.SetPrefix("/P4");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(120));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment1.5.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment1.5.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment1.5.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_experiment3.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R1"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
//ndn::StrategyChoiceHelper::Install<nfd::fw::RandomLoadBalancerStrategy>(Names::Find<Node>("R2"), "/");
|
||||
//ndn::StrategyChoiceHelper::Install<nfd::fw::RandomLoadBalancerStrategy>(Names::Find<Node>("R3"), "/");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
Ptr<Node> P4 = Names::Find<Node>("P4");
|
||||
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerPcon");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
consumerHelper.SetPrefix("/A");
|
||||
consumerHelper.Install("C1");
|
||||
|
||||
// C2
|
||||
consumerHelper.SetPrefix("/B");
|
||||
consumerHelper.Install("C2");
|
||||
|
||||
// C3
|
||||
consumerHelper.SetPrefix("/C");
|
||||
consumerHelper.Install("C3");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/A", P1);
|
||||
producerHelper.SetPrefix("/A");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/B", P2);
|
||||
producerHelper.SetPrefix("/B");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/C", P3);
|
||||
producerHelper.SetPrefix("/C");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
// P4
|
||||
ndnGlobalRoutingHelper.AddOrigins("/A", P4);
|
||||
producerHelper.SetPrefix("/A");
|
||||
producerHelper.Install(P4);
|
||||
ndnGlobalRoutingHelper.AddOrigins("/B", P4);
|
||||
producerHelper.SetPrefix("/B");
|
||||
producerHelper.Install(P4);
|
||||
ndnGlobalRoutingHelper.AddOrigins("/C", P4);
|
||||
producerHelper.SetPrefix("/C");
|
||||
producerHelper.Install(P4);
|
||||
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(60.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("pcon_experiment3.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("pcon_delay_experiment3.txt");
|
||||
L2RateTracer::InstallAll("pcon_drop_experiment3.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo-6-node.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> consumer1 = Names::Find<Node>("Src1");
|
||||
Ptr<Node> consumer2 = Names::Find<Node>("Src2");
|
||||
|
||||
Ptr<Node> producer1 = Names::Find<Node>("Dst1");
|
||||
Ptr<Node> producer2 = Names::Find<Node>("Dst2");
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerNWFQ");
|
||||
ndn::AppHelper consumerHelper2("ns3::ndn::ConsumerCbr");
|
||||
consumerHelper2.SetAttribute("Frequency", StringValue("500")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
consumerHelper2.SetPrefix("/dst1");
|
||||
consumerHelper2.Install(consumer1);
|
||||
|
||||
// on the second consumer node install a Consumer application
|
||||
// that will express interests in /dst2 namespace
|
||||
consumerHelper.SetPrefix("/dst2");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("500")); // 100 interests a second
|
||||
consumerHelper.Install(consumer2);
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
ndnGlobalRoutingHelper.AddOrigins("/dst1", producer1);
|
||||
producerHelper.SetPrefix("/dst1");
|
||||
producerHelper.Install(producer1);
|
||||
|
||||
// Register /dst2 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst2 namespace
|
||||
ndnGlobalRoutingHelper.AddOrigins("/dst2", producer2);
|
||||
producerHelper.SetPrefix("/dst2");
|
||||
producerHelper.Install(producer2);
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(20.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("rate-trace.txt", Seconds(0.5));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo-6-node.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> consumer1 = Names::Find<Node>("Src1");
|
||||
Ptr<Node> consumer2 = Names::Find<Node>("Src2");
|
||||
|
||||
Ptr<Node> producer1 = Names::Find<Node>("Dst1");
|
||||
Ptr<Node> producer2 = Names::Find<Node>("Dst2");
|
||||
|
||||
ndn::AppHelper consumerHelper("ns3::ndn::ConsumerNWFQ");
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
consumerHelper.SetPrefix("/dst1");
|
||||
consumerHelper.Install(consumer1);
|
||||
|
||||
// on the second consumer node install a Consumer application
|
||||
// that will express interests in /dst2 namespace
|
||||
consumerHelper.SetPrefix("/dst2");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("500")); // 100 interests a second
|
||||
consumerHelper.Install(consumer2);
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
ndnGlobalRoutingHelper.AddOrigins("/dst1", producer1);
|
||||
producerHelper.SetPrefix("/dst1");
|
||||
producerHelper.Install(producer1);
|
||||
|
||||
// Register /dst2 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst2 namespace
|
||||
ndnGlobalRoutingHelper.AddOrigins("/dst2", producer2);
|
||||
producerHelper.SetPrefix("/dst2");
|
||||
producerHelper.Install(producer2);
|
||||
|
||||
// Calculate and install FIBs
|
||||
ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(20.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("rate-trace.txt", Seconds(0.5));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_abilene.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R0"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R1"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R2"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R3"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R4"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R5"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R6"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R7"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R8"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R9"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R10"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
Ptr<Node> C5 = Names::Find<Node>("C5");
|
||||
Ptr<Node> C6 = Names::Find<Node>("C6");
|
||||
Ptr<Node> C7 = Names::Find<Node>("C7");
|
||||
Ptr<Node> C8 = Names::Find<Node>("C8");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
|
||||
|
||||
ndn::AppHelper ch1("ns3::ndn::ConsumerPcon");
|
||||
ndn::AppHelper ch2("ns3::ndn::ConsumerPcon");
|
||||
ndn::AppHelper ch3("ns3::ndn::ConsumerPcon");
|
||||
ch1.SetAttribute("MaxSeq", UintegerValue(1000)); // set required data chunks (the number of Datas)
|
||||
ch2.SetAttribute("MaxSeq", UintegerValue(1000)); // set required data chunks (the number of Datas)
|
||||
ch3.SetAttribute("MaxSeq", UintegerValue(1000)); // set required data chunks (the number of Datas)
|
||||
|
||||
ch1.SetPrefix("/amazon");
|
||||
ch2.SetPrefix("/google");
|
||||
ch3.SetPrefix("/warner");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
ch1.Install("C1");
|
||||
ch2.Install("C1");
|
||||
ch3.Install("C1");
|
||||
|
||||
// C2
|
||||
ch1.Install("C2");
|
||||
ch2.Install("C2");
|
||||
ch3.Install("C2");
|
||||
|
||||
// C3
|
||||
ch1.Install("C3");
|
||||
ch2.Install("C3");
|
||||
ch3.Install("C3");
|
||||
|
||||
// C4
|
||||
ch1.Install("C4");
|
||||
ch2.Install("C4");
|
||||
ch3.Install("C4");
|
||||
|
||||
// C5
|
||||
ch1.Install("C5");
|
||||
ch2.Install("C5");
|
||||
ch3.Install("C5");
|
||||
|
||||
// C6
|
||||
ch1.Install("C6");
|
||||
ch2.Install("C6");
|
||||
ch3.Install("C6");
|
||||
|
||||
// C7
|
||||
ch1.Install("C7");
|
||||
ch2.Install("C7");
|
||||
ch3.Install("C7");
|
||||
|
||||
// C8
|
||||
ch1.Install("C8");
|
||||
ch2.Install("C8");
|
||||
ch3.Install("C8");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/amazon", P1);
|
||||
producerHelper.SetPrefix("/amazon");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/google", P2);
|
||||
producerHelper.SetPrefix("/google");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/warner", P3);
|
||||
producerHelper.SetPrefix("/warner");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
// ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(60.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("throughput_pcon_abilene_content_delivery.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("delay_pcon_abilene_content_delivery.txt");
|
||||
L2RateTracer::InstallAll("drop_pcon_abilene_content_delivery.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/ndnSIM-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd;
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
AnnotatedTopologyReader topologyReader("", 25);
|
||||
topologyReader.SetFileName("topologies/topo_abilene.txt");
|
||||
topologyReader.Read();
|
||||
|
||||
// Install NDN stack on all nodes
|
||||
ndn::StackHelper ndnHelper;
|
||||
ndnHelper.setPolicy("nfd::cs::lru");
|
||||
ndnHelper.setCsSize(10000);
|
||||
ndnHelper.InstallAll();
|
||||
|
||||
// Choosing forwarding strategy
|
||||
ndn::StrategyChoiceHelper::InstallAll("/", "/localhost/nfd/strategy/best-route");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R0"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R1"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R2"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R3"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R4"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R5"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R6"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R7"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R8"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R9"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
ndn::StrategyChoiceHelper::Install(Names::Find<Node>("R10"), "/", "/localhost/nfd/strategy/random/%FD%01");
|
||||
|
||||
// Installing global routing interface on all nodes
|
||||
ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
|
||||
ndnGlobalRoutingHelper.InstallAll();
|
||||
|
||||
// Getting containers for the consumer/producer
|
||||
Ptr<Node> C1 = Names::Find<Node>("C1");
|
||||
Ptr<Node> C2 = Names::Find<Node>("C2");
|
||||
Ptr<Node> C3 = Names::Find<Node>("C3");
|
||||
Ptr<Node> C4 = Names::Find<Node>("C4");
|
||||
Ptr<Node> C5 = Names::Find<Node>("C5");
|
||||
Ptr<Node> C6 = Names::Find<Node>("C6");
|
||||
Ptr<Node> C7 = Names::Find<Node>("C7");
|
||||
Ptr<Node> C8 = Names::Find<Node>("C8");
|
||||
|
||||
|
||||
Ptr<Node> P1 = Names::Find<Node>("P1");
|
||||
Ptr<Node> P2 = Names::Find<Node>("P2");
|
||||
Ptr<Node> P3 = Names::Find<Node>("P3");
|
||||
|
||||
|
||||
ndn::AppHelper ch1("ns3::ndn::ConsumerPcon");
|
||||
ndn::AppHelper ch2("ns3::ndn::ConsumerPcon");
|
||||
ndn::AppHelper ch3("ns3::ndn::ConsumerPcon");
|
||||
|
||||
ch1.SetPrefix("/amazon");
|
||||
ch2.SetPrefix("/google");
|
||||
ch3.SetPrefix("/warner");
|
||||
//consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
|
||||
|
||||
|
||||
// on the first consumer node install a Consumer application
|
||||
// that will express interests in /dst1 namespace
|
||||
// C1
|
||||
ch1.Install("C1");
|
||||
ch2.Install("C1");
|
||||
ch3.Install("C1");
|
||||
|
||||
// C2
|
||||
ch1.Install("C2");
|
||||
ch2.Install("C2");
|
||||
ch3.Install("C2");
|
||||
|
||||
// C3
|
||||
ch1.Install("C3");
|
||||
ch2.Install("C3");
|
||||
ch3.Install("C3");
|
||||
|
||||
// C4
|
||||
ch1.Install("C4");
|
||||
ch2.Install("C4");
|
||||
ch3.Install("C4");
|
||||
|
||||
// C5
|
||||
ch1.Install("C5");
|
||||
ch2.Install("C5");
|
||||
ch3.Install("C5");
|
||||
|
||||
// C6
|
||||
ch1.Install("C6");
|
||||
ch2.Install("C6");
|
||||
ch3.Install("C6");
|
||||
|
||||
// C7
|
||||
ch1.Install("C7");
|
||||
ch2.Install("C7");
|
||||
ch3.Install("C7");
|
||||
|
||||
// C8
|
||||
ch1.Install("C8");
|
||||
ch2.Install("C8");
|
||||
ch3.Install("C8");
|
||||
|
||||
|
||||
ndn::AppHelper producerHelper("ns3::ndn::Producer");
|
||||
producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
|
||||
|
||||
// Register /dst1 prefix with global routing controller and
|
||||
// install producer that will satisfy Interests in /dst1 namespace
|
||||
// P1
|
||||
ndnGlobalRoutingHelper.AddOrigins("/amazon", P1);
|
||||
producerHelper.SetPrefix("/amazon");
|
||||
producerHelper.Install(P1);
|
||||
|
||||
// P2
|
||||
ndnGlobalRoutingHelper.AddOrigins("/google", P2);
|
||||
producerHelper.SetPrefix("/google");
|
||||
producerHelper.Install(P2);
|
||||
|
||||
// P3
|
||||
ndnGlobalRoutingHelper.AddOrigins("/warner", P3);
|
||||
producerHelper.SetPrefix("/warner");
|
||||
producerHelper.Install(P3);
|
||||
|
||||
|
||||
// Calculate and install FIBs
|
||||
// ndn::GlobalRoutingHelper::CalculateRoutes();
|
||||
ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes();
|
||||
|
||||
Simulator::Stop(Seconds(60.0));
|
||||
|
||||
ndn::L3RateTracer::InstallAll("throughput_pcon_abilene_continuous_flows.txt", Seconds(1));
|
||||
ndn::AppDelayTracer::InstallAll("delay_pcon_abilene_continuous_flows.txt");
|
||||
L2RateTracer::InstallAll("drop_pcon_abilene_continuous_flows.txt", Seconds(1));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
int
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
return ns3::main(argc, argv);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C1 NA 1 3
|
||||
C2 NA 2 3
|
||||
C3 NA 4 3
|
||||
C4 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P1 NA 1 9
|
||||
P2 NA 2 9
|
||||
P3 NA 4 9
|
||||
P4 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 10Mbps 1 10ms 20
|
||||
C2 R1 10Mbps 1 10ms 20
|
||||
C3 R1 10Mbps 1 10ms 20
|
||||
C4 R1 10Mbps 1 10ms 20
|
||||
R1 R2 1Mbps 1 10ms 20
|
||||
R2 P1 10Mbps 1 10ms 20
|
||||
R2 P2 10Mbps 1 10ms 20
|
||||
R2 P3 10Mbps 1 10ms 20
|
||||
R2 P4 10Mbps 1 10ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
C4 R1 100Mbps 1 10ms 20
|
||||
R1 R2 10Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 10ms 20
|
||||
R2 P2 100Mbps 1 10ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R2 P4 100Mbps 1 10ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.2
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
C4 R1 100Mbps 1 10ms 20
|
||||
R1 R2 10Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 35ms 20
|
||||
R2 P2 100Mbps 1 20ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R2 P4 100Mbps 1 5ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
C4 R1 100Mbps 1 10ms 20
|
||||
R1 R2 10Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 10ms 20
|
||||
R2 P2 100Mbps 1 10ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R2 P4 100Mbps 1 10ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
C4 R1 100Mbps 1 10ms 20
|
||||
R1 R2 10Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 10ms 20
|
||||
R2 P2 100Mbps 1 10ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R2 P4 100Mbps 1 10ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
C4 R1 100Mbps 1 10ms 20
|
||||
R1 R2 10Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 10ms 20
|
||||
R2 P2 100Mbps 1 10ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R2 P4 100Mbps 1 10ms 20
|
||||
@@ -0,0 +1,29 @@
|
||||
# topo_experiment1.6
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C4 NA 1 3
|
||||
C3 NA 2 3
|
||||
C2 NA 4 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 3 7
|
||||
P4 NA 1 9
|
||||
P3 NA 2 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 10Mbps 1 30ms 20
|
||||
C2 R1 10Mbps 1 20ms 20
|
||||
C3 R1 10Mbps 1 20ms 20
|
||||
C4 R1 10Mbps 1 10ms 20
|
||||
R1 R2 8Mbps 1 10ms 20
|
||||
R2 P1 4Mbps 1 10ms 20
|
||||
R2 P2 3Mbps 1 10ms 20
|
||||
R2 P3 3Mbps 1 10ms 20
|
||||
R2 P4 1Mbps 1 10ms 20
|
||||
@@ -0,0 +1,27 @@
|
||||
# topo_experiment1.1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C3 NA 1 3
|
||||
C2 NA 3 3
|
||||
C1 NA 5 3
|
||||
R1 NA 3 5
|
||||
R2 NA 4 7
|
||||
P4 NA 1 9
|
||||
P3 NA 3 9
|
||||
P2 NA 4 9
|
||||
P1 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
C3 R1 100Mbps 1 10ms 20
|
||||
R1 R2 50Mbps 1 10ms 20
|
||||
R2 P1 100Mbps 1 10ms 20
|
||||
R2 P2 100Mbps 1 10ms 20
|
||||
R2 P3 100Mbps 1 10ms 20
|
||||
R1 P4 50Mbps 1 10ms 20
|
||||
@@ -0,0 +1,27 @@
|
||||
# topo1
|
||||
|
||||
router
|
||||
|
||||
# node comment yPos xPos
|
||||
C1 NA 1 3
|
||||
C2 NA 2 3
|
||||
C3 NA 4 3
|
||||
C4 NA 5 3
|
||||
R1 NA 3 5
|
||||
P1 NA 1 9
|
||||
P2 NA 2 9
|
||||
P3 NA 4 9
|
||||
P4 NA 5 9
|
||||
|
||||
|
||||
link
|
||||
|
||||
# srcNode dstNode bandwidth metric delay queue
|
||||
C1 R1 100Mbps 1 10ms 20
|
||||
C2 R1 100Mbps 1 10ms 20
|
||||
#C3 R1 100Mbps 1 10ms 20
|
||||
#C4 R1 10Mbps 1 10ms 20
|
||||
R1 P1 10Mbps 1 10ms 20
|
||||
R1 P2 10Mbps 1 10ms 20
|
||||
R1 P3 10Mbps 1 10ms 20
|
||||
R1 P4 10Mbps 1 10ms 20
|
||||
Reference in new issue
Block a user