Archive for the ‘Code’ Category
IETF Datatracker Document Metadata Processing
I have created two tools for fetching and formatting metadata for IETF documents (RFCs and Internet Drafts). I sometimes want to create publications lists or just reference IETF documents in other publications, and these tools are intended to automate the process as much as possible.
- tracker-doc: for fetching document metadata by user-id (datatracker ID)
- bibdoc: for formatting document metadata in text or bibtex format
These are two Clojure scripts that are executed by Babashka – a native Clojure interpreter for scripting.
Install: datatracker-publications on GitHub.
Reflexive Forwarding in Named Data Networking
Current Information-Centric Networking protocols such as CCNx and NDN have a wide range of useful applications in content retrieval and other scenarios that depend only on a robust two-way exchange in the form of a request and response (represented by an Interest-Data exchange in the case of the two protocols noted above). A number of important applications however, require placing large amounts of data in the Interest message, and/or more than one two-way handshake.
While these can be accomplished using independent Interest-Data exchanges by reversing the roles of consumer and producer, such approaches can be both clumsy for applications and problematic from a state management, congestion control, or security standpoint. Reflexive Forwarding is a proposed extension to the CCNx and NDN protocol architectures that eliminates the problems inherent in using independent Interest-Data exchanges for such applications.
The protocol is specified in draft-oran-icnrg-reflexive-forwarding and has been used in a few of our research projects such as:
- RICE: Remote Method Invocation in ICN (best paper award at ACM ICN-2018)
- Compute-First Networking (CFN): Distributed Computing Meets ICN
- RESTful ICN
- Delay-Tolerant LoRa ICN Networking
My student intern Xinchen Jin from ShanghaiTech has implemented the Reflexing Forwarding specification in NDN (with modifications to ndn-cxx and NFD) and set up a testbed in mini-NDN for experiments over multiple forwarders.
Resources
cwik: an Interactive and Extensible Clojure Framework for Automating QUIC Interop Tests and Performance Measurements
QUIC is the next transport protocol for the Internet that is currently being standardized by the IETF. My student Thomas Ripping at University of Applied Sciences Emden/Leer has developed cwik, an open, interactive and extensible Clojure framework for automating QUIC interop tests and performance measurements, based on Peter Doornbosch’s Kwik library. It can be used for defining test campaigns programmatically and can enable reproducible experiments and automatic evaluation. The source code is available on github.com.