Pktgen is a high-performance, scriptable packet generator built on top of DPDK. It generates wire-rate traffic with support for Ethernet, IPv4/IPv6, TCP/UDP, GRE, GTP-U, MPLS, VLAN, and other encapsulations. The application provides an interactive CLI with auto-complete, history, and environment variables, as well as Lua scripting for automation. It includes features like latency measurement, packet capture/replay, range-based packet field sweeping, random bitfield generation, and RFC 2544 throughput testing. The architecture is a monolithic DPDK application with modular libraries for CLI, Lua bindings, hash maps, vectors, plugins, and common utilities. It is designed for network testing, benchmarking, and research scenarios requiring precise traffic generation and measurement.
Packetdrill is a command-line tool for testing TCP/UDP/IP network stacks by scripting precise packet events and system calls. It operates in two modes: local testing via a TUN virtual device, and remote testing over real NICs using a wire server/client protocol. The tool parses a domain-specific language (DSL) with flex/bison, executes events with microsecond timing, and verifies kernel behavior through packet injection, sniffing, and in-script assertions (including TCP_INFO queries). It supports multiple platforms (Linux, FreeBSD, OpenBSD, NetBSD) and protocols (TCP, UDP, ICMP, GRE, MPLS, PSP). The architecture is a single C binary with a modular design: a parser/lexer for test scripts, a run-time engine that manages state (socket, sequence numbers, timestamps), and a network device abstraction layer. Key entry points include `packetdrill.c` (main), `run.c` (script execution), `wire_server.c` (remote testing), and `run_all.py` (test runner). External dependencies are minimal: standard POSIX libraries, optional OpenSSL for PSP, and a YNL submodule for netlink. The test suite consists of hundreds of `.pkt` scripts covering TCP features like fast open, congestion control, SACK, and zerocopy. The codebase demonstrates strong engineering with clean abstractions (vtable for netdev, hash map for timestamp mapping, threading model for blocking syscalls) and deep networking expertise. However, it carries maintenance risks from extensive platform ifdefs, custom kernel header definitions, and tight coupling to specific kernel behaviors. The last commit date (2026-05-14) appears anomalous and may indicate a data error, but the repository shows signs of ongoing development.
Flent is a mature, actively maintained network testing tool designed primarily for bufferbloat detection. It wraps multiple simultaneous network performance tools (netperf, iperf, ping, fping, irtt) into a single coordinated test, aggregates time-series data, and produces publication-quality plots via matplotlib. The architecture is a Python CLI application with an optional Qt GUI, built around a modular system of test definitions (Python .conf files), pluggable runners, aggregators, combiners, and formatters. It supports batch execution for reproducible experiments, extensive metadata collection (kernel parameters, qdisc stats, WiFi stats), and multiple output formats (CSV, JSON, plots). While primarily an application, it has strong data collection and analysis characteristics, making it a hybrid tool for network performance research. The codebase is well-structured with clear separation of concerns, though it carries some legacy Python 2 compatibility shims and platform-specific Linux dependencies.
This repository is a proxy subscription aggregation and distribution system. It periodically collects free proxy subscription links (Clash YAML and V2Ray URI formats) from multiple public sources, merges them, classifies nodes by TCP connectivity (reachable/unreachable/untested), and serves the resulting files via a Cloudflare Worker. The system is driven by a GitHub Actions workflow that runs every 12 hours, executing Python scripts to fetch, process, and commit updated subscriptions. The architecture is a data pipeline application with a serverless serving layer. Key entry points include main.py (orchestrating collection and merging), check_nodes.py (TCP connectivity classification), and worker/sub.mjs (Cloudflare Worker for serving with caching and ETag). External dependencies include requests, PyYAML, and the Cloudflare Workers runtime. The repository also includes a weekly commit history cleanup workflow to keep repository size small. The project is actively maintained with frequent updates and tests, though it relies on unstable external proxy sources.