NFD: Named Data Networking Forwarding Daemon 24.07-20-gbeb9e85b documentation
Loading...
Searching...
No Matches
retx-suppression-exponential.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2014-2023, 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_RETX_SUPPRESSION_EXPONENTIAL_HPP
27
#define NFD_DAEMON_FW_RETX_SUPPRESSION_EXPONENTIAL_HPP
28
29
#include "
retx-suppression.hpp
"
30
#include "
strategy.hpp
"
31
32
namespace
nfd::fw
{
33
41
class
RetxSuppressionExponential
42
{
43
public
:
47
using
Duration
= time::milliseconds;
48
49
explicit
50
RetxSuppressionExponential
(
Duration
initialInterval =
DEFAULT_INITIAL_INTERVAL
,
51
Duration
maxInterval =
DEFAULT_MAX_INTERVAL
,
52
float
multiplier =
DEFAULT_MULTIPLIER
);
53
58
RetxSuppressionResult
59
decidePerPitEntry
(
pit::Entry
& pitEntry);
60
65
RetxSuppressionResult
66
decidePerUpstream
(
pit::Entry
& pitEntry,
Face
& outFace);
67
71
void
72
incrementIntervalForOutRecord
(
pit::OutRecord
& outRecord);
73
74
static
std::unique_ptr<RetxSuppressionExponential>
75
construct
(
const
StrategyParameters
& params);
76
77
private
:
// non-member operators (hidden friends)
78
friend
std::ostream&
79
operator<<
(std::ostream& os,
const
RetxSuppressionExponential
& retxSupp)
80
{
81
return
os <<
"RetxSuppressionExponential initial-interval="
<< retxSupp.m_initialInterval.count()
82
<<
" max-interval="
<< retxSupp.m_maxInterval.count()
83
<<
" multiplier="
<< retxSupp.m_multiplier;
84
}
85
86
public
:
87
static
constexpr
Duration
DEFAULT_INITIAL_INTERVAL
= 10_ms;
88
static
constexpr
Duration
DEFAULT_MAX_INTERVAL
= 250_ms;
89
static
constexpr
float
DEFAULT_MULTIPLIER
= 2.0f;
90
91
NFD_PUBLIC_WITH_TESTS_ELSE_PRIVATE
:
92
const
Duration
m_initialInterval;
93
const
Duration
m_maxInterval;
94
const
float
m_multiplier;
95
};
96
97
}
// namespace nfd::fw
98
99
#endif
// NFD_DAEMON_FW_RETX_SUPPRESSION_EXPONENTIAL_HPP
nfd::face::Face
Generalization of a network interface.
Definition
face.hpp:118
nfd::fw::RetxSuppressionExponential
A retransmission suppression decision algorithm that suppresses retransmissions using exponential bac...
Definition
retx-suppression-exponential.hpp:42
nfd::fw::RetxSuppressionExponential::Duration
time::milliseconds Duration
Time granularity.
Definition
retx-suppression-exponential.hpp:47
nfd::fw::RetxSuppressionExponential::construct
static std::unique_ptr< RetxSuppressionExponential > construct(const StrategyParameters ¶ms)
Definition
retx-suppression-exponential.cpp:131
nfd::fw::RetxSuppressionExponential::incrementIntervalForOutRecord
void incrementIntervalForOutRecord(pit::OutRecord &outRecord)
Increment the suppression interval for an out-record.
Definition
retx-suppression-exponential.cpp:123
nfd::fw::RetxSuppressionExponential::DEFAULT_MAX_INTERVAL
static constexpr Duration DEFAULT_MAX_INTERVAL
Definition
retx-suppression-exponential.hpp:88
nfd::fw::RetxSuppressionExponential::DEFAULT_INITIAL_INTERVAL
static constexpr Duration DEFAULT_INITIAL_INTERVAL
Definition
retx-suppression-exponential.hpp:87
nfd::fw::RetxSuppressionExponential::operator<<
friend std::ostream & operator<<(std::ostream &os, const RetxSuppressionExponential &retxSupp)
Definition
retx-suppression-exponential.hpp:79
nfd::fw::RetxSuppressionExponential::decidePerUpstream
RetxSuppressionResult decidePerUpstream(pit::Entry &pitEntry, Face &outFace)
Determines whether Interest is a retransmission per upstream and if so, whether it shall be forwarded...
Definition
retx-suppression-exponential.cpp:99
nfd::fw::RetxSuppressionExponential::decidePerPitEntry
RetxSuppressionResult decidePerPitEntry(pit::Entry &pitEntry)
Determines whether Interest is a retransmission per PIT entry and if so, whether it shall be forwarde...
Definition
retx-suppression-exponential.cpp:74
nfd::fw::RetxSuppressionExponential::DEFAULT_MULTIPLIER
static constexpr float DEFAULT_MULTIPLIER
Definition
retx-suppression-exponential.hpp:89
nfd::fw::StrategyParameters
Definition
strategy.hpp:483
nfd::pit::Entry
Represents an entry in the Interest table (PIT).
Definition
pit-entry.hpp:197
nfd::pit::OutRecord
Contains information about an Interest toward an outgoing face.
Definition
pit-entry.hpp:129
NFD_PUBLIC_WITH_TESTS_ELSE_PRIVATE
#define NFD_PUBLIC_WITH_TESTS_ELSE_PRIVATE
Definition
common.hpp:41
nfd::fw
Definition
access-strategy.cpp:31
nfd::fw::RetxSuppressionResult
RetxSuppressionResult
Definition
retx-suppression.hpp:31
retx-suppression.hpp
strategy.hpp
daemon
fw
retx-suppression-exponential.hpp
Generated by
1.9.8