NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
logic.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_FETCH_LOGIC_H
2 #define NDNDPDK_FETCH_LOGIC_H
3 
6 #include "../core/rttest.h"
7 #include "tcpcubic.h"
8 #include "window.h"
9 
10 typedef TAILQ_HEAD(FetchRetxQueue, FetchSeg) FetchRetxQueue;
11 
13 typedef struct FetchLogic {
17  struct cds_list_head retxQ;
19  uint64_t segmentEnd;
23  uint64_t nTxRetx;
24  uint64_t nRxData;
25  uint32_t nInFlight;
27 
28 __attribute__((nonnull)) void
29 FetchLogic_Init(FetchLogic* fl, uint32_t winCapacity, int numaSocket);
30 
31 __attribute__((nonnull)) void
33 
34 __attribute__((nonnull)) void
35 FetchLogic_Reset(FetchLogic* fl, uint64_t segmentBegin, uint64_t segmentEnd);
36 
42 __attribute__((nonnull)) size_t
43 FetchLogic_TxInterestBurst(FetchLogic* fl, uint64_t* segNums, size_t limit, TscTime now);
44 
45 typedef struct FetchLogicRxData {
46  uint64_t segNum;
47  uint8_t congMark;
50 
56 __attribute__((nonnull)) void
57 FetchLogic_RxDataBurst(FetchLogic* fl, const FetchLogicRxData* pkts, size_t count, TscTime now);
58 
59 #endif // NDNDPDK_FETCH_LOGIC_H
struct FetchLogic FetchLogic
Fetcher congestion control and scheduling logic.
void FetchLogic_Reset(FetchLogic *fl, uint64_t segmentBegin, uint64_t segmentEnd)
Definition: logic.c:168
void FetchLogic_Init(FetchLogic *fl, uint32_t winCapacity, int numaSocket)
Definition: logic.c:151
void FetchLogic_RxDataBurst(FetchLogic *fl, const FetchLogicRxData *pkts, size_t count, TscTime now)
Notify Data arrival.
Definition: logic.c:121
void FetchLogic_Free(FetchLogic *fl)
Definition: logic.c:162
typedef TAILQ_HEAD(FetchRetxQueue, FetchSeg) FetchRetxQueue
struct FetchLogicRxData FetchLogicRxData
size_t FetchLogic_TxInterestBurst(FetchLogic *fl, uint64_t *segNums, size_t limit, TscTime now)
Request to transmit a burst of Interests.
Definition: logic.c:40
Definition: logic.h:45
uint8_t congMark
Definition: logic.h:47
bool isFinalBlock
Definition: logic.h:48
uint64_t segNum
Definition: logic.h:46
Fetcher congestion control and scheduling logic.
Definition: logic.h:13
TscTime startTime
start time
Definition: logic.h:20
struct cds_list_head retxQ
Definition: logic.h:17
uint32_t nInFlight
count of in-flight Interests
Definition: logic.h:25
TscTime nextCwndDec
when cwnd may be decreased again
Definition: logic.h:22
TscTime finishTime
finish time, 0 if not finished
Definition: logic.h:21
MinSched * sched
Definition: logic.h:18
RttEst rtte
Definition: logic.h:15
FetchWindow win
Definition: logic.h:14
uint64_t segmentEnd
last segnum desired plus one
Definition: logic.h:19
uint64_t nTxRetx
retransmitted Interests
Definition: logic.h:23
TcpCubic ca
Definition: logic.h:16
uint64_t nRxData
non-duplicate Data
Definition: logic.h:24
Per-segment state.
Definition: window.h:15
Window of segment states.
Definition: window.h:34
Minute scheduler.
Definition: mintmr.h:22
RTT estimator.
Definition: rttest.h:55
TCP CUBIC algorithm.
Definition: tcpcubic.h:12
uint64_t TscTime
TSC clock time point.
Definition: tsc.h:9