NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
fwd.h
Go to the documentation of this file.
1#ifndef NDNDPDK_FWDP_FWD_H
2#define NDNDPDK_FWDP_FWD_H
3
5
7#include "../dpdk/thread.h"
8#include "../fib/fib.h"
10#include "../iface/face.h"
11#include "../iface/pktqueue.h"
12#include "../pcct/cs.h"
13#include "../pcct/pit.h"
14#include "../strategyapi/api.h"
15
16typedef struct FwFwdCtx FwFwdCtx;
17
48
49__attribute__((nonnull)) int
50FwFwd_Run(FwFwd* fwd);
51
52__attribute__((nonnull)) void
54
55__attribute__((nonnull)) void
56FwFwd_RxData(FwFwd* fwd, FwFwdCtx* ctx);
57
58__attribute__((nonnull)) void
59FwFwd_RxNack(FwFwd* fwd, FwFwdCtx* ctx);
60
71struct FwFwdCtx {
72 FwFwd* fwd; // T,F,I,D,N
73 TscTime rxTime; // T(=now),F,I,D,N
74 SgEvent eventKind; // T,F,I,D,N
76 union {
78 struct rte_mbuf* pkt;
79 }; // F,D,N
80 FibEntry* fibEntry; // T,I,D,N
82 PitEntry* pitEntry; // T,I,D,N
83
84 // end of SgCtx fields
85 RTE_MARKER endofSgCtx;
86
87 PitUp* pitUp; // N
88 LpPitToken rxToken; // F,I,D,N
89 uint32_t dnNonce; // I
90 int nForwarded; // T,I,N
91 FaceID rxFace; // F,I,D
92};
93
95__attribute__((nonnull)) static inline void
96FwFwdCtx_FreePkt(FwFwdCtx* ctx) {
97 Packet_Free(ctx->npkt);
98 NULLize(ctx->npkt);
99}
100
102__attribute__((nonnull(1))) static inline void
103FwFwdCtx_SetFibEntry(FwFwdCtx* ctx, FibEntry* fibEntry) {
104 ctx->fibEntry = fibEntry;
105 if (likely(fibEntry != NULL)) {
106 ctx->fibEntryDyn = FibEntry_PtrDyn(fibEntry, ctx->fwd->fibDynIndex);
107 } else {
108 ctx->fibEntryDyn = NULL;
109 }
110}
111
112#endif // NDNDPDK_FWDP_FWD_H
#define NULLize(x)
Set x to NULL to expose memory access bugs.
Definition common.h:79
enum __rte_packed_begin SgEvent SgEvent
Indicate why the strategy program is invoked.
Definition api.h:17
uint16_t FaceID
Numeric face identifier.
Definition faceid.h:13
void FwFwd_RxNack(FwFwd *fwd, FwFwdCtx *ctx)
Definition fwd-nack.c:182
void FwFwd_RxInterest(FwFwd *fwd, FwFwdCtx *ctx)
Definition fwd-interest.c:124
int FwFwd_Run(FwFwd *fwd)
Definition fwd.c:53
void FwFwd_RxData(FwFwd *fwd, FwFwdCtx *ctx)
Definition fwd-data.c:92
struct Packet Packet
Definition common.h:11
uint32_t FibNexthopFilter
A filter over FIB nexthops.
Definition nexthop-filter.h:13
The Content Store (CS).
Definition cs-struct.h:63
Definition entry.h:13
A FIB entry.
Definition entry.h:27
A replica of the Forwarding Information Base (FIB).
Definition fib.h:9
Per-packet context in forwarding.
Definition fwd.h:71
struct rte_mbuf * pkt
Definition fwd.h:78
uint32_t dnNonce
Definition fwd.h:89
PitUp * pitUp
Definition fwd.h:87
RTE_MARKER endofSgCtx
Definition fwd.h:85
FwFwd * fwd
Definition fwd.h:72
SgEvent eventKind
Definition fwd.h:74
int nForwarded
Definition fwd.h:90
FibNexthopFilter nhFlt
Definition fwd.h:75
LpPitToken rxToken
Definition fwd.h:88
Packet * npkt
Definition fwd.h:77
FibEntry * fibEntry
Definition fwd.h:80
PitEntry * pitEntry
Definition fwd.h:82
FibEntryDyn * fibEntryDyn
Definition fwd.h:81
TscTime rxTime
Definition fwd.h:73
FaceID rxFace
Definition fwd.h:91
Forwarding thread.
Definition fwd.h:19
ThreadCtrl ctrl
Definition fwd.h:21
Fib * fib
Definition fwd.h:26
PacketMempools mp
mempools for packet modification
Definition fwd.h:41
uint8_t id
fwd process id
Definition fwd.h:33
SgGlobal sgGlobal
Definition fwd.h:20
RunningStat latencyStat
Statistics of latency from packet arrival to start processing.
Definition fwd.h:46
uint8_t fibDynIndex
FibEntry.dyn index.
Definition fwd.h:34
struct rte_ring * cryptoHelper
queue to crypto helper
Definition fwd.h:43
uint64_t nSgNoFwd
Interests not forwarded by strategy.
Definition fwd.h:38
PktQueue queueI
Definition fwd.h:22
uint64_t nNoFibMatch
Interests dropped due to no FIB match.
Definition fwd.h:36
PktQueue queueD
Definition fwd.h:23
Pit * pit
Definition fwd.h:27
PktQueue queueN
Definition fwd.h:24
uint64_t nDupNonce
Interests dropped due to duplicate nonce.
Definition fwd.h:37
Cs * cs
Definition fwd.h:28
PitSuppressConfig suppressCfg
Definition fwd.h:31
uint64_t nNackMismatch
Nack dropped due to outdated nonce.
Definition fwd.h:39
pcg32_random_t sgRng
Definition fwd.h:30
NDNLPv2 PIT token value.
Definition lp.h:35
Mempools for packet modification.
Definition common.h:17
A PIT entry.
Definition pit-entry.h:24
Interest suppression configuration.
Definition pit-suppress-config.h:9
A PIT upstream record.
Definition pit-up.h:14
The Pending Interest Table (PIT).
Definition pit-struct.h:20
Thread-safe packet queue.
Definition pktqueue.h:23
Facility to compute mean and variance.
Definition running-stat.h:9
Global static parameters.
Definition api.h:12
Thread load stats and stop flag.
Definition thread.h:10
uint64_t TscTime
TSC clock time point.
Definition tsc.h:9