Skip to content

Latest commit

 

History

History
378 lines (345 loc) · 46.1 KB

File metadata and controls

378 lines (345 loc) · 46.1 KB

Changelog

All notable changes to this project will be documented in this file.

0.1.1 - 2026-03-10

Features

  • (cli) Add build_features to long_version - (906dae5)

Miscellaneous Tasks

  • (build) Adjust dependencies - (caf112b)
  • (test) Add build deps - (71e821b)
  • (test) Change feature to use - (96711b4)

Build

  • (musl) Disable xdp binary for now - (d0bb6b4)
  • (xdp) Add missing pkg deps for libbpf-sys - (7bf91dc)

0.1.0 - 2026-03-05

Features

  • (boot) Add basic boot process - (e9bd3fd)
  • (cell) Wait for notify before start - (05a34ac)
  • (cell) Add notify channel to cell - (ebd67e7)
  • (cell) Add Spy cell to dump packets at any point (#126) - (758592e)
  • (cell) Add DelayPerPacket cells that can reorder packets (#122) - (56b23ee)
  • (cell) Add token bucket cell (#96) - (44db3a8)
  • (cli) Add trace visualization and log conversion - (338bda7)
  • (cli) Add nat feature to support optional dependencies - (0810755)
  • (cli) Add option to disable NAT in compatible mode - (5e17599)
  • (cli) Add NAT management using nftnl - (bb30454)
  • (cli) Allow stdout/stderr in isolated mode - (84dec98)
  • (cli) Overwrite config with CLI arguments - (712b922)
  • (cli) Change exit code on task failure - (f219388)
  • (cli) Add prompt for bash - (886c894)
  • (cli) Make shutdown more elegant - (e4ae6f5)
  • (cli) Add isolated mode - (5a00852)
  • (cli) Add subcommand generate - (ddedd17)
  • (cli) Change default log level to warning - (e3ae66d)
  • (cli) Add cli interface for queue - (8da88e7)
  • (cli) Test connectivity before starting - (2a682a5)
  • (cli) Add args for executing command - (3b6bc51)
  • (cli) Add compatible mode rattan cli - (90dbcac)
  • (config) Support env var in trace - (59e6b67)
  • (config) Skip serializing none values - (b59c6bb)
  • (control) Add http control endpoint - (7c1d47a)
  • (core) Add logical timestamp to packet - (de31573)
  • (core) Upgrade packet-log to new infra - (9a10d17)
  • (core) Calibrate trace start time - (ac189e4)
  • (core) Add task notifier for isolated mode - (88eb5c2)
  • (core) Add Clone trait to StdPacket - (c85b9ec)
  • (core) Add id to identify rattan instance - (4132330)
  • (core) Support runtime topo construction - (d6bed6d)
  • (core) Add a core loop to start a delay shell - (99d6d75)
  • (device) Add router and shadow devices - (ca15b51)
  • (device) Warn on linking non-existent device - (2167d1b)
  • (device) Add state to enable mode switching - (206d7f4)
  • (device) Add device to replay loss trace - (2b3c4bd)
  • (device) Add device to replay delay trace - (3ba9a77)
  • (device) Add BandwidthReplayDevice (#25) - (cb3c132)
  • (device) Add packet queues to bandwidth device (#6) - (9b6a0e5)
  • (device) Add i.i.d loss device - (2b2624d)
  • (device) Replace timerfd impl in bandwidth - (f7d4246)
  • (device) Add bandwidth device - (766e2bc)
  • (device) Add loss device - (8f656fc)
  • (device) Add control interface - (dc17ef3)
  • (device) Add config interface - (993e4e2)
  • (device) Add draft API design for external devices - (134a679)
  • (device) Add delay device as an example for device API design - (11ffb61)
  • (env) Expose internal id in env var RATTAN_ID - (07bb7b6)
  • (env) Support multiple veth for StdNetEnv - (6344448)
  • (env) Optimize the process of obtaining veth address - (fc52e9f)
  • (env) Add mode config for std_env - (7cb1c9a)
  • (http) Shutdown core loop if server exits - (8e2cd31)
  • (io) Add AF_XDP support - (60a66f7)
  • (log) Extract log facilities to separate crate - (a55fe59)
  • (log) Add frag flags and dataofs for tcp log entry - (3952eea)
  • (log) Impl plain for entry struct - (d90a654)
  • (log) Add compressed packet log - (242dbc3)
  • (log) Change packet log to core file log - (4d7f00b)
  • (log) Add detailed description in packet log - (53e65ac)
  • (log) Separate out packet related events - (d9dec2a)
  • (log) Add facilities for packet-level logging - (803bfb5)
  • (metal) Use interface id to add route - (8c00905)
  • (metal) Bring loopback interface up (#26) - (907ba53)
  • (metal) Add timerfd based timer - (80ee022)
  • (netns) Refactor netns - (c885d12)
  • (radix) Remove affinity temporarily - (6d31c4c)
  • (radix) Reduce env build retry max times - (e308f61)
  • (scripts) Add rattan log converter - (7eba046)
  • (trace) Add humanized format for bandwidth - (1e888d3)
  • (veth) Make external veth optional - (a2fb7e6)
  • (veth) Unify base_ts for an instance - (dc8a885)
  • (veth) Use ioctl to disable checksum offload - (f3a05d9)
  • (veth) Add veth based on rtnetlink - (6e80aaa)
  • (veth) Apply the builder pattern on veth configurations - (eb927c2)
  • (veth) Add interface index - (9abfa1c)
  • Make build_rattan_config generic on P to add main-xdp binary - (8968ad4)
  • Automatically set address during creation (#28) - (20e592c)
  • Add docker mode (#5) - (a660b70)
  • Install the latest mainline kernel on all test machines - (f5d150e)
  • Add packet-dump feature - (442a50b)
  • Add tracing - (f7f17d3)

Bug Fixes

  • (bw) Correct transfer time calculation - (bf341d5)
  • (cell) Correct a snake_case naming of the per-packet delay config (#125) - (677396d)
  • (cli) Resolve clap error of Arguments - (32ad049)
  • (cli) Sleep before tokio runtime creation (#34) - (7566201)
  • (config) Support env var in delay and loss trace - (753c35a)
  • (config) Allow to load mahimahi trace file without filename extension - (f7eae09)
  • (control) Use varied ports to run tests concurrently - (8268463)
  • (core) Resolve some issue with serde feature - (1fb6373)
  • (core) Support multiple entries - (bb41736)
  • (core) Handle mpsc channel send error - (40dcff8)
  • (device) Add serde default value to bw_type - (06d3e2e)
  • (device) Replace sleep impl in delay - (00c05bb)
  • (device) Remove unused Sync bound - (cac3aac)
  • (env) Lock suffix with right veth group - (fb5246c)
  • (env) Create better route table (#83) - (8e3e4f0)
  • (env) Sleep between creating veth and adding route - (0da7b07)
  • (env) Randomize the name for concurrent - (7e7c6c0)
  • (http) Keep health-check api available - (ffa958e)
  • (log) Correct timestamp to unix repr (#161) - (cb47212)
  • (log) Rearrange the bit range according to the spec - (16f4c25)
  • (metal) Fix blocking io in timer - (e5ee176)
  • (netns) Avoid double-close persistent file - (b0f8552)
  • (radix) Sleep between namespace entering and process spawning - (675604a)
  • (spycell) Change file creation process (#130) - (b16f3fe)
  • (test) Use [[ instead of [ to fix a syntax error complain - (11708a9)
  • (veth) Avoid panicking again when thread is currently panicking - (ed0a6f9)
  • (veth) Compatible with lower version ethtool - (5ecc44e)
  • Remove redundant memset on af_packet recv - (f3ac476)
  • Only allow workflows from the main repository - (acb2cb6)
  • Fix clippy warnings - (b0699b8)
  • Change to collect the data of iperf3 receiver - (0a299d0)
  • Drop veth without thread spawn - (e0146d2)
  • Clean the veth external test - (15c7bb2)

Refactor

  • (cell) Change to use logical timestamp - (2f2c12a)
  • (cell) Redesign token bucket cell - (d1af2de)
  • (cli) Divide into different subcommands - (440fd65)
  • (config) Flatten RattanCoreConfig - (16d9635)
  • (control) Make it as conditional feature - (755124a)
  • (device) Improve internal logic - (5629aa3)
  • (device) Remove legacy LossPacket - (2cd88a6)
  • (device) Remove IIDLossDevice - (284c116)
  • (device) Change config of delay device - (b7165c7)
  • (env) Seperate env-related code - (5309e13)
  • (env) Improve error handling for env creation (#43) - (6b09b1c)
  • (script) Update log_converter.py to new spec - (fd0701b)
  • (veth) Use once_cell instead of mutex to implement veth pair - (2adb9b6)
  • (veth) Change the build function to async - (c520e3a)
  • (veth) Add builder to create VethPair and VethDevice - (0636354)
  • Rename device to cell - (ccb10e5)
  • Change code structure - (be32cdf)
  • Change ws structure and crate name - (c126098)
  • Improve error message printing - (aaf02ed)
  • Redesign rattan for easy configuration - (56a3f3d)
  • Refactor the usage of rtnetlink - (8227f89)
  • Move global mutex into lib - (4491daf)
  • Change to workspace structure - (9b8b60b)
  • Move standard environment preparation to a module - (de2cc78)

Documentation

  • (README) Add arxiv citation bibtex - (2c05c67)
  • (env) Fix address in env ascii art - (761bd66)
  • (guid) Fix wrong github link - (2bae740)
  • (guide) Explain how Rattan synchronize trace (#158) - (f7bb2e0)
  • (guide) Update to new packet-log spec - (61a40b4)
  • (guide) Fix typo of link path - (6526101)
  • (guide) Add illustration example - (e00d9f8)
  • (guide) Fix installation deps - (acd3e01)
  • (guide) Improve and clarify the doc for packet log - (c1a8adc)
  • (guide) Add arxiv citation to guide - (66b9830)
  • (guide) Correct wrong example command - (9b05731)
  • (readme) Update logo - (82f31b3)
  • Add case examples to guide - (2e87ef2)
  • Add new-cell guide (#97) - (ce0384a)
  • Update guide with deps - (bcae92c)
  • Update some expressions - (d854465)
  • Add user guide - (85a0742)
  • Start to write document - (ac4bfbc)

Performance

  • Improve task scheduling during core loop - (144d3c0)

Styling

  • (cli) Remove unused import - (6a14967)
  • (clippy) Correct some linting error - (5a6f7c1)
  • (clippy) Resolve clippy warnings - (2677f3f)
  • (clippy) Resolve clippy warnings - (e6c6b23)
  • (clippy) Resolve clippy warnings - (3901dfc)
  • (clippy) Resolve clippy warnings - (4580141)
  • (clippy) Resolve clippy warnings - (99f3ea9)
  • Fix typos - (20afbb1)
  • Correct typos and format code (#124) - (42e8eb1)
  • Format the Rust code - (1ed27f2)
  • Fix typos - (db0e105)
  • Fix typos - (2097f3e)
  • Resolve clippy lint warnings - (e38052d)
  • Format code - (f88fcc1)
  • Remove frequent log - (ac2b751)

Testing

  • (bandwidth) Fix cport of iperf3 - (a2c279a)
  • (bw) Fix which side iperf samples in test_replay - (d28e5de)
  • (bw) Add integration test for bw channel - (33be208)
  • (delay) Add integration test for delay channel - (00c08f0)
  • (device) Avoid depends on DeviceFactory - (80778b6)
  • (device) Add unit test for replayed loss - (3787642)
  • (device) Add unit test for replayed delay - (043bcaa)
  • (device) Add unit tests for delay and loss - (d270e27)
  • (http) Add http control endpoint test - (942c219)
  • (ioctl) Add test for ioctl - (6a80901)
  • (loss) Enlarge noise tolerate range - (f226302)
  • (loss) Add integration test for loss channel - (83873be)
  • (net) Add a external test for af_packet interface - (a72eabd)
  • (net) Add netns creation with veth - (88286de)
  • (net) Test veth creation and destruction using: rtnetlink - (78a2176)
  • (spy) Improve tempfile handling and reduce packet count - (303ced1)
  • Update integration tests - (bc4a691)
  • Add slow timeout for tests - (27dd66a)
  • Add feature flag for http tests - (2ad5fd8)
  • Fix leaky subprocess - (25d4181)
  • Use nextest as our test suite - (7163792)
  • Use NetNsGuard to switch netns - (f4c39fb)
  • Add global mutex for getting std_env - (20d3240)

Miscellaneous Tasks

  • (audit) Ignore unmaintained crate paste - (156416d)
  • (build) Remove redundance workflow runs - (943ad19)
  • (cli) Warn if config specified but not exist - (bdb7d66)
  • (docs) Remove out-of-date docs - (7320a10)
  • (libvirt) Increase the VM cpu num to 8 - (56b4da8)
  • (libvirt) Reduce the VM memory to 8 GiB - (e7d00e0)
  • (lint) Use clippy directly - (5369d02)
  • (log) Add test log for easy debugging - (c82affc)
  • (scripts) Change inner function name - (8fce7f9)
  • (scripts) Add sudo for installation - (ff6b62e)
  • (scripts) Grant privileges for installed rattan-cli - (f2b8b0a)
  • (test) Allow parallel running for matrix test - (fd9237c)
  • (test) Remove packet-dump feature in ci test - (f489b09)
  • (test) Allow tests from forks - (849d686)
  • (test) Reduce test concurrency - (ad463c4)
  • (test) Allow parallel running for matrix test - (4d22c96)
  • (test) Limit parallel number of matrix test - (3d8ad90)
  • (verify) Update to new cli format - (a3b0820)
  • Enable caching for LLVM installation to speed up CI - (6b8a2d0)
  • Use KyleMayes/install-llvm-action to install LLVM - (4652d87)
  • Remove common-utils from the devcontainer specification - (6b083e5)
  • Remove remoteUser property on the devcontainer specification - (32fb1aa)
  • Run actions on pull_request - (b9f8301)
  • Bump nightly kernel version to 6.12 - (4a5c9a9)
  • Update test tigger events - (34307f8)
  • Add mdbook-alerts to guide build process - (7897223)
  • Allow schedule event for verify - (01f3bbd)
  • Bump latest kernel to 6.11 - (c3514fe)
  • Allow workflow dispatch running - (014370b)
  • Make FlowEntry public - (6ea0008)
  • Rename CONTRIBUTING.md - (3847f3f)
  • Update scripts to latest cli arguments - (a6c8395)
  • Upgrade the latest kernel to 6.10 - (eecca02)
  • Add cli test - (e2ebd50)
  • Fix iperf verification error - (d5628ba)
  • Allow building CI machines without github runners - (59cc5f0)
  • Fix bbr loading - (adfface)
  • Fix bugs on github runner configurations - (9ff2a1f)
  • Run verification on CST 1:00 AM (UTC 5:00 PM) - (48647b1)
  • Activate our 6.9 machine - (ecd50ba)
  • One more upstream kernel machine - (c0498fa)
  • Reduce the time usage of verification test - (e22244e)
  • Update CI machines - (f9645f0)
  • Use v4 of upload-artifact - (51b74af)
  • Remove tests on kernel v6.6 temporarily - (c8bec59)
  • Load bbr for verify - (4f88b85)
  • Cache rust target for faster build - (d56ffe8)
  • Add runner configuration for test - (aae9b88)
  • Avoid running for non-code changes - (9fd993a)
  • Improve cargo-clippy and add cargo-fmt - (9c1c0d1)
  • Rewrite our slogan - (15aba43)
  • Cancel in progress jobs on the same branch - (4bc8616)
  • Bump to checkout@v4 - (1d51a66)
  • Add cargo audit - (c78fe3c)
  • Ignore .vscode - (3f2fd8b)
  • Add a mantic/6.6 VM (#8) - (805b5a7)
  • Tune TCP parameters of ci machines - (0298d0f)
  • Add performance verification - (655e68f)
  • Update test environments - (de9d83d)
  • Clear unused log - (3d126ba)
  • Add CI badge - (e95d2ac)
  • Add a compound test that uses multiple devices - (035feb0)
  • Add synthetic delay between iperf client/server to stablize ci - (19aaf86)
  • Reduce unnecessary output - (e8e175e)
  • Allow concurrent running of jobs (again) - (5f91559)
  • Add trigger of workflow_dispatch - (6d0c659)
  • Limit the number of concurrency - (b90b0fd)
  • Disable fast-fail to test different kernels - (62d8ed7)
  • Fix bandwidth test - (5808d7d)
  • Install iperf3 instead of iperf - (c0b88b9)
  • Add 5.4 and 6.1 kernels - (14ee23e)
  • Add missing cli tools - (4f12e55)
  • Grant required capabilities to ci containers - (f6708fe)
  • Add ci workflow - (66a510e)
  • Clean codebase - (60156d4)
  • Add provision artifacts of ci machines - (2700a3d)
  • Add rattan logo - (541fa5e)

Bench

  • Move bandwidth upper bound test to benches - (fd6bddf)

Build

  • (cargo) Remove nat from default features - (50896ac)
  • (cargo) Re-add Cargo.lock to version control - (dae607e)
  • (cargo) Raise MSRV to v1.86 - (8cf43f7)
  • (cli) Add more metadata to long version - (c7acbf4)
  • (deps) Bump nix from 0.29.0 to 0.31.1 (#173) - (cbcace6)
  • (deps) Update rtnetlink requirement from 0.17.0 to 0.20.0 - (9c5a89b)
  • (deps) Bump syn, libbpf-sys and unicode-ident - (3824584)
  • (deps) Bump rand from 0.9.2 to 0.10.0 (#168) - (745953b)
  • (deps) Bump toml from 0.9.12+spec-1.1.0 to 1.0.1+spec-1.1.0 (#171) - (09b6af4)
  • (deps) Bump ctrlc from 3.5.1 to 3.5.2 - (12512cd)
  • (deps) Bump futures from 0.3.31 to 0.3.32 - (a6a403a)
  • (deps) Bump serde_with from 3.11.0 to 3.16.1 - (2dd8d5b)
  • (deps) Update reqwest requirement from 0.12.9 to 0.13.1 - (0e5efca)
  • (deps) Update etherparse requirement from 0.18.0 to 0.19.0 - (620efa6)
  • (deps) Update criterion requirement from 0.7.0 to 0.8.1 - (c18372e)
  • (deps) Clean up unused dependencies - (76ef4ab)
  • (deps) Update criterion requirement from 0.6.0 to 0.7.0 - (4af1a79)
  • (deps) Update toml requirement from 0.8.12 to 0.9.2 - (9bd034d)
  • (deps) Update rtnetlink requirement from 0.16.0 to 0.17.0 - (d38b9e6)
  • (deps) Update criterion requirement from 0.5.1 to 0.6.0 - (ac6fe0e)
  • (deps) Update etherparse requirement from 0.17.0 to 0.18.0 - (9813f5e)
  • (deps) Update rtnetlink requirement from 0.15.0 to 0.16.0 - (5879e6a)
  • (deps) Replace humantime with jiff - (7714bc0)
  • (deps) Update rtnetlink requirement to 0.15.0 - (615f18c)
  • (deps) Update bytesize requirement from 1.3.0 to 2.0.1 - (b33f283)
  • (deps) Add 'derive' feature to clap - (818504b)
  • (deps) Update bitfield requirement from 0.18.1 to 0.19.0 - (8a99d05)
  • (deps) Update bitfield requirement from 0.17.0 to 0.18.1 - (581ce75)
  • (deps) Update rand requirement from 0.8.5 to 0.9.0 - (ec7dc03)
  • (deps) Update dirs requirement from 5.0.1 to 6.0.0 - (cdfc190)
  • (deps) Update etherparse requirement from 0.16.0 to 0.17.0 - (030fb94)
  • (deps) Update netem-trace requirement from 0.3.3 to 0.4.0 - (08f1b87)
  • (deps) Update itertools requirement from 0.13.0 to 0.14.0 - (c1773db)
  • (deps) Add 'signal' feature to nix dependency - (9a8f256)
  • (deps) Update nix requirement from 0.26.2 to 0.29.0 - (0de0617)
  • (deps) Update backon requirement from 0.4.4 to 1.2.0 - (1d0e1dd)
  • (deps) Update bitfield requirement from 0.16.1 to 0.17.0 - (487e5ca)
  • (deps) Update etherparse requirement from 0.14.3 to 0.16.0 - (8247787)
  • (deps) Update thiserror requirement from 1.0.40 to 2.0.0 - (2d3591e)
  • (deps) Update reqwest requirement from 0.11.16 to 0.12.9 - (2ebb7e9)
  • Add af_packet rattan as default run - (182480f)
  • Config systemd networkd for stable mac address - (0e0d1c1)
  • Set cargo resolver to 2 - (7df9cf5)
  • Update broken dependency rtnetlink - (cbc0692)
  • Add devcontainer - (50ef752)

Deps

  • (reqwest) Disable default features - (b141d66)
  • (time) Use humantime to parse duration - (9ad0155)