NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
asf-probing-module.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014-2018, Regents of the University of California,
4
* Arizona Board of Regents,
5
* Colorado State University,
6
* University Pierre & Marie Curie, Sorbonne University,
7
* Washington University in St. Louis,
8
* Beijing Institute of Technology,
9
* The University of Memphis.
10
*
11
* This file is part of NFD (Named Data Networking Forwarding Daemon).
12
* See AUTHORS.md for complete list of NFD authors and contributors.
13
*
14
* NFD is free software: you can redistribute it and/or modify it under the terms
15
* of the GNU General Public License as published by the Free Software Foundation,
16
* either version 3 of the License, or (at your option) any later version.
17
*
18
* NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20
* PURPOSE. See the GNU General Public License for more details.
21
*
22
* You should have received a copy of the GNU General Public License along with
23
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24
*/
25
26
#ifndef NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
27
#define NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
28
29
#include "
asf-measurements.hpp
"
30
31
namespace
nfd
{
32
namespace
fw {
33
namespace
asf {
34
37
class
ProbingModule
38
{
39
public
:
40
explicit
41
ProbingModule
(
AsfMeasurements
& measurements);
42
43
void
44
scheduleProbe
(
const
fib::Entry
& fibEntry,
const
time::milliseconds& interval);
45
46
Face
*
47
getFaceToProbe
(
const
Face
& inFace,
48
const
Interest
& interest,
49
const
fib::Entry
& fibEntry,
50
const
Face
& faceUsed);
51
52
bool
53
isProbingNeeded
(
const
fib::Entry
& fibEntry,
const
Interest
& interest);
54
55
void
56
afterForwardingProbe
(
const
fib::Entry
& fibEntry,
const
Interest
& interest);
57
58
void
59
setProbingInterval
(
size_t
probingInterval);
60
61
time::milliseconds
62
getProbingInterval
()
const
63
{
64
return
m_probingInterval;
65
}
66
67
private
:
68
// Used to associate FaceInfo with the face in a NextHop
69
typedef
std::pair<FaceInfo*, Face*> FaceInfoFacePair;
70
typedef
std::function<bool(FaceInfoFacePair, FaceInfoFacePair)> FaceInfoPredicate;
71
typedef
std::set<FaceInfoFacePair, FaceInfoPredicate> FaceInfoFacePairSet;
72
73
Face
*
74
getFaceBasedOnProbability(
const
FaceInfoFacePairSet& rankedFaces);
75
76
double
77
getProbingProbability(uint64_t rank, uint64_t rankSum, uint64_t nFaces);
78
79
double
80
getRandomNumber(
double
start,
double
end);
81
82
public
:
83
static
constexpr time::milliseconds
DEFAULT_PROBING_INTERVAL
= 1_min;
84
static
constexpr time::milliseconds
MIN_PROBING_INTERVAL
= 1_s;
85
86
private
:
87
time::milliseconds m_probingInterval;
88
AsfMeasurements
& m_measurements;
89
};
90
91
}
// namespace asf
92
}
// namespace fw
93
}
// namespace nfd
94
95
#endif // NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
nfd::fw::asf::AsfMeasurements
Helper class to retrieve and create strategy measurements.
Definition:
asf-measurements.hpp:296
nfd::face::Face
generalization of a network interface
Definition:
face.hpp:67
nfd::fib::Entry
represents a FIB entry
Definition:
fib-entry.hpp:51
nfd::fw::asf::ProbingModule::ProbingModule
ProbingModule(AsfMeasurements &measurements)
Definition:
asf-probing-module.cpp:40
ndn::Interest
Represents an Interest packet.
Definition:
interest.hpp:44
nfd::fw::asf::ProbingModule
ASF Probing Module.
Definition:
asf-probing-module.hpp:37
nfd::fw::asf::ProbingModule::MIN_PROBING_INTERVAL
static constexpr time::milliseconds MIN_PROBING_INTERVAL
Definition:
asf-probing-module.hpp:84
nfd::fw::asf::ProbingModule::setProbingInterval
void setProbingInterval(size_t probingInterval)
Definition:
asf-probing-module.cpp:193
nfd::fw::asf::ProbingModule::isProbingNeeded
bool isProbingNeeded(const fib::Entry &fibEntry, const Interest &interest)
Definition:
asf-probing-module.cpp:114
nfd::fw::asf::ProbingModule::getProbingInterval
time::milliseconds getProbingInterval() const
Definition:
asf-probing-module.hpp:62
nfd
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-common.hpp:40
nfd::fw::asf::ProbingModule::scheduleProbe
void scheduleProbe(const fib::Entry &fibEntry, const time::milliseconds &interval)
Definition:
asf-probing-module.cpp:47
nfd::fw::asf::ProbingModule::getFaceToProbe
Face * getFaceToProbe(const Face &inFace, const Interest &interest, const fib::Entry &fibEntry, const Face &faceUsed)
Definition:
asf-probing-module.cpp:67
nfd::fw::asf::ProbingModule::DEFAULT_PROBING_INTERVAL
static constexpr time::milliseconds DEFAULT_PROBING_INTERVAL
Definition:
asf-probing-module.hpp:83
nfd::fw::asf::ProbingModule::afterForwardingProbe
void afterForwardingProbe(const fib::Entry &fibEntry, const Interest &interest)
Definition:
asf-probing-module.cpp:132
asf-measurements.hpp
ndnSIM
NFD
daemon
fw
asf-probing-module.hpp
Generated on Sun Feb 24 2019 22:16:07 for ndnSIM by
1.8.15