{"id":24087362,"url":"https://github.com/kit-ipe/dqdk","last_synced_at":"2025-11-22T09:03:02.120Z","repository":{"id":240228841,"uuid":"778846897","full_name":"kit-ipe/dqdk","owner":"kit-ipe","description":"The Data acQuisition Development Kit","archived":false,"fork":false,"pushed_at":"2025-02-25T17:46:45.000Z","size":2117,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-02-25T18:39:31.856Z","etag":null,"topics":["afxdp","data-acquisition","detectors","high-performance","packet-processing"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kit-ipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-28T14:23:32.000Z","updated_at":"2025-02-25T17:46:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"022f651b-0b06-4fb8-9dfe-c9329d54d61c","html_url":"https://github.com/kit-ipe/dqdk","commit_stats":null,"previous_names":["kit-ipe/dqdk"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-ipe%2Fdqdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-ipe%2Fdqdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-ipe%2Fdqdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kit-ipe%2Fdqdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kit-ipe","download_url":"https://codeload.github.com/kit-ipe/dqdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240980632,"owners_count":19888309,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["afxdp","data-acquisition","detectors","high-performance","packet-processing"],"created_at":"2025-01-10T03:24:43.324Z","updated_at":"2025-11-22T09:03:02.109Z","avatar_url":"https://github.com/kit-ipe.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Data acQuisition Development Kit\n\nDQDK is a framework to develop data acquisition systems over UDP. DQDK uses AF_XDP with an ultra-lightweight UDP/IP stack.\nDQDK exploits COTS hardware architectures and advanced OS features to achieve high-performance zero-loss DAQ.\n\n### Citation\n\nCite our paper:\n\n\u003e J. Mostafa, D. Tcherniakhovski, S. Chilingaryan, M. Balzer, A. Kopmann and J. Becker, **\"100 Gbit/s UDP Data Acquisition on Linux Using AF_XDP: The TRISTAN Detector\"** in IEEE Transactions on Nuclear Science, [doi: 10.1109/TNS.2024.3452469](https://ieeexplore.ieee.org/document/10659873).\n\n\n\n```bibtex\n@ARTICLE{10659873,\n  author={Mostafa, Jalal and Tcherniakhovski, Denis and Chilingaryan, Suren and Balzer, Matthias and Kopmann, Andreas and Becker, Jürgen},\n  journal={IEEE Transactions on Nuclear Science}, \n  title={100-Gbit/s UDP Data Acquisition on Linux Using AF_XDP: The TRISTAN Detector}, \n  year={2025},\n  volume={72},\n  number={3},\n  pages={295-300},\n  keywords={Data acquisition;Detectors;Software;Protocols;Linux;Sockets;Field programmable gate arrays;AF_XDP;data acquisition (DAQ);high-throughput detectors;remote direct memory access (RDMA);user datagram protocol (UDP);zero-copy networking},\n  doi={10.1109/TNS.2024.3452469}}\n```\n\n## Build and Install\n\n**Requires** Linux Kernel 6.6+\nTested on Ubuntu 24.04.01 (Kernel 6.8)\n\nFor Ubuntu\n```bash\napt install clang llvm libelf-dev libpcap-dev gcc-multilib build-essential linux-tools-common linux-tools-generic linux-headers-$(uname -r) m4 libnuma-dev liburing-dev\n```\n\n```bash\ngit clone --recursive https://github.com/kit-ipe/dqdk.git\ncd dqdk\nmake\nsudo make install\n```\n\nTo uninstall run `sudo make uninstall` in `src`\n\n## Latency Tests\nDQDK uses NIC RX HW Timestamping to timestamp the packet on arrival.\nAnother timestamp is issued inside DQDK user-space code. The latency is calculated by calculating the differnece between the 2 timestamps.\nThe NIC clock (PHC) and the system clock should be synchronized.\nAn PTP service can be used to do this synchronization. Example:\n```bash\nptp4l -i eth0 -m\nphc2sys -s eth0 -c CLOCK_REALTIME -O 0\n```\nRun DQDK in debug mode to measure latencies. Make sure all NIC offloading capabilities are enabled and working properly, otherwise a kernel panic occurs and the server needs restarting. Disable ntpd, chronyd, systemd-timesyncd and systemd-timedated services because they will conflict with ptp4l.\n\n## Usage\n\n[TODO]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkit-ipe%2Fdqdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkit-ipe%2Fdqdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkit-ipe%2Fdqdk/lists"}