Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does ndn-dpdk support reliable tranport ? #90

Open
keysgarfield opened this issue Jan 10, 2025 · 2 comments
Open

Does ndn-dpdk support reliable tranport ? #90

keysgarfield opened this issue Jan 10, 2025 · 2 comments

Comments

@keysgarfield
Copy link

As the doc say:
Transports

  • Ethernet-based transports via DPDK: Ethernet, VLAN, UDP, VXLAN, GTP-U
  • Socket-based transports via kernel: UDP, TCP
  • Local application transports: memif, Unix sockets

does ndn-dpdk support reliable transport? VLAN/UDP/VXLAN/GTP-U are all unreliable protocols.
And how to understand socket-base or local application transports, another alternative choice?

@yoursunny
Copy link
Member

does ndn-dpdk support reliable transport?

NDN network layer is inherently a best-effort data retrieval service, aka unreliable.
The list of transports you referenced are what can be used in NDN-DPDK forwarder and traffic generator.
Regardless of which one you pick (even if it's TCP), the forwarder will only provide best-effort data retrieval service.

Reliability is provided by the application, usually in the support library.
The following is quoted from Named Data Networking introduction in Computer Communication Review (CCR) section 2.5:

When an application requires reliable delivery, the application itself or its supporting library will monitor the status of outstanding Interests and retransmit them when needed, e.g., after a timeout.

The NDNgo library that is part of NDN-DPDK codebase offers retransmission functionality in several APIs.
For example, you can set a non-zero RetxLimit value in segmented.FetchOptions to activate reliable retrieval.

@yoursunny
Copy link
Member

yoursunny commented Jan 10, 2025

how to understand socket-base or local application transports

Ethernet-based transports, implemented in package ethface, send and receive packets via DPDK ethdev API.
They are faster, but require more configuration and will usually take over the NIC exclusively.

Socket-based transports, implemented in package socketface, send and receive packets via Linux kernel socket syscalls.
They are slower because they do not enjoy the kernel-bypass feature of DPDK drivers, but they can coexist with other usage on the same NIC.

NDN-DPDK forwarder and traffic generator can use both Ethernet-based transports and socket-based transports to communicate with a remote machine.

Local application transports are for communicating with a local application running on the same machine as the NDN-DPDK forwarder.
Internally, they are still either Ethernet-based transports (memif) or socket-based transports (Unix).
They can be used from compatible NDN libraries such as NDNgo and NDNts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants