NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
pit-up.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_PCCT_PIT_UP_H
2 #define NDNDPDK_PCCT_PIT_UP_H
3 
6 #include "../iface/faceid.h"
7 #include "pit-suppress-config.h"
8 
9 typedef struct PitEntry PitEntry;
10 
11 #define PIT_UP_MAX_REJ_NONCES 6
12 
14 typedef struct PitUp {
15  uint32_t nonce;
17  bool canBePrefix;
18  uint8_t nack;
19 
22  uint16_t nTx;
23  uint8_t nexthopIndex;
24 
27 } __rte_cache_aligned PitUp;
28 static_assert(sizeof(PitUp) <= RTE_CACHE_LINE_SIZE, "");
29 
30 __attribute__((nonnull)) static inline void
31 PitUp_Reset(PitUp* up, FaceID face) {
32  *up = (const PitUp){.face = face};
33 }
34 
36 __attribute__((nonnull)) static inline bool
37 PitUp_ShouldSuppress(PitUp* up, TscTime now) {
38  return up->lastTx + up->suppress > now;
39 }
40 
42 __attribute__((nonnull)) static inline void
43 PitUp_AddRejectedNonce(PitUp* up, uint32_t nonce) {
44  memmove(&up->rejectedNonces[1], &up->rejectedNonces[0],
45  sizeof(up->rejectedNonces) - sizeof(up->rejectedNonces[0]));
46  up->rejectedNonces[0] = nonce;
47 }
48 
56 __attribute__((nonnull)) bool
57 PitUp_ChooseNonce(PitUp* up, PitEntry* entry, TscTime now, uint32_t* nonce);
58 
64 __attribute__((nonnull)) void
65 PitUp_RecordTx(PitUp* up, PitEntry* entry, TscTime now, uint32_t nonce,
66  const PitSuppressConfig* suppressCfg);
67 
68 #endif // NDNDPDK_PCCT_PIT_UP_H
uint16_t FaceID
Numeric face identifier.
Definition: faceid.h:13
#define PIT_UP_MAX_REJ_NONCES
Definition: pit-up.h:11
void PitUp_RecordTx(PitUp *up, PitEntry *entry, TscTime now, uint32_t nonce, const PitSuppressConfig *suppressCfg)
Record Interest transmission.
Definition: pit-up.c:37
struct PitUp PitUp
A PIT upstream record.
bool PitUp_ChooseNonce(PitUp *up, PitEntry *entry, TscTime now, uint32_t *nonce)
Choose a nonce for TX Interest.
Definition: pit-up.c:15
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
uint8_t nexthopIndex
FIB nexthop index.
Definition: pit-up.h:23
bool canBePrefix
sent Interest has CanBePrefix?
Definition: pit-up.h:17
TscDuration suppress
suppression duration since lastTx
Definition: pit-up.h:21
FaceID face
the upstream face
Definition: pit-up.h:16
uint32_t nonce
nonce on last sent Interest
Definition: pit-up.h:15
uint8_t nack
Nack reason against last Interest.
Definition: pit-up.h:18
TscTime lastTx
when last Interest was sent
Definition: pit-up.h:20
uint32_t rejectedNonces[PIT_UP_MAX_REJ_NONCES]
nonces rejected by Nack~Duplicate from upstream
Definition: pit-up.h:26
uint16_t nTx
how many Interests were sent
Definition: pit-up.h:22
int64_t TscDuration
Duration in TscTime unit.
Definition: tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition: tsc.h:9