{"id":20209179,"url":"https://github.com/refraction-networking/tapdance","last_synced_at":"2025-04-10T13:05:48.636Z","repository":{"id":88644867,"uuid":"96826827","full_name":"refraction-networking/tapdance","owner":"refraction-networking","description":"TapDance station code","archived":false,"fork":false,"pushed_at":"2017-08-24T09:12:14.000Z","size":6664,"stargazers_count":104,"open_issues_count":0,"forks_count":19,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-06-19T15:12:51.074Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/refraction-networking.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-07-10T22:27:03.000Z","updated_at":"2024-03-27T20:31:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"d4c76d9b-7c04-45c3-a75d-ca31a47bf4f8","html_url":"https://github.com/refraction-networking/tapdance","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Ftapdance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Ftapdance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Ftapdance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Ftapdance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refraction-networking","download_url":"https://codeload.github.com/refraction-networking/tapdance/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224573382,"owners_count":17333807,"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":[],"created_at":"2024-11-14T05:39:08.425Z","updated_at":"2024-11-14T05:39:08.969Z","avatar_url":"https://github.com/refraction-networking.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"High performance implementation of the Tapdance decoy routing design.\n\n# Building and Running the Tapdance Station\n\nThese instructions are for the standard build, which includes\ndrivers for Intel i40e- and ixgbe-based NICs.\n\n## Station installation\n\n 1. Install Ubuntu 16.04.1 for amd64\n 1. Run `sudo apt-get update`\n 1. Clone this repo into `$HOME/tapdance`\n 1. In `$HOME/tapdance`, run `./scripts/tapdance-prereqs.sh` (NOT sudo/as root)\n 1. In `$HOME/tapdance`, run `./scripts/tapdance-build.sh` (NOT sudo/as root)\n 1. In `$HOME/tapdance/libtapdance`, run `./genkey` (unless you already have\n    a keypair you're planning to use for this station).\n 1. Copy the generated 'pubkey' file to your client: `gotapdance/assets/station_pubkey`\n 1. Installing the PF_RING zero-copy license can wait until you confirm\n    everything is working properly. Even without the license, you can use\n    PF_RING-ZC-enabled programs for 5 minutes at a time.\n 1. Double-check that the interface for the tunneled traffic is running at the expected rate (1Gb or better, usually)\n\n## Once-per-reboot setup\n\nDo this after the above station installation process, as well as after\nevery reboot.\n\n 1. In `$HOME/tapdance`, run `sudo ./startup.sh`. The output should include\n    the following instructions on running the station.\n\n## Running the station (production)\n\nUse the `service` interface, as described in `sysvinit/README`. Note that you\nmight need to wait a few seconds after starting zbalance before you start\ntapdance, to let zbalance come fully online.\n\n## Running the station (development)\n\nIf you want to recompile before running:\n 1. In `$HOME/tapdance`, run `./scripts/tapdance-build.sh` (NOT sudo/as root)\n\nRun these three programs in separate screens, in this order.\n 1. In `$HOME/tapdance/pfring-framework/userland/examples_zc`, run\n    `sudo ./zbalance_ipc -i zc:$INTERFACE -c 99 -n 4 -m 1 -g 1`.\n 1. (Optional) In `$HOME/tapdance/gobbler`, run `./gobbler` after building with\n    `go build gobbler.go`. If gobbler isn't run, the station will still work;\n    the Gobbler's purpose is to collect and report statistics.\n 1. In `$HOME/tapdance/pfring-framework/userland/examples`, run\n    `sudo RUST_BACKTRACE=1 ./zc_tapdance -c 99 -n 4 -K /path/to/privkey`.\n\nThe -n and -c arguments are number of processes to split over, and cluster ID.\nYou can safely change them (-n must be no more than number of logical CPU\ncores on the host machine), but you must give zbalance_ipc and zc_tapdance the\nsame values.\n\n## Registering PF_RING ZC for the network interface\n\n### Getting an order ID for the license(s)\n\n 1. Go to this page: https://shop.ntop.org/cart.php\n 2. Scroll down to the PF_RING section, and find the 10/40 Gbit PF_RING\n    ZC Intel [Linux] driver, and on the right side of the table put as\n    many licenses as you need.  (The price was 149.95 euros at the time\n    of writing)\n 3. Scroll down the bottom of the page and click on the \"go to next\n    page\" button\n 4. From this point on it's just filling out info and paying, which\n    should be straightforward\n\n### Once you have an order ID:\n\nAfter completing the previous steps, you should have an email from an\nntop employee, giving you an OrderId.\n\n 1. Try both tap interfaces (their names in ifconfig should look something like\n    enp5s0f0 and enp5s0f1) to figure out which one is getting traffic. Get the\n    traffic-getting one's MAC address. To check for traffic, you can try running\n    our station program, or even just `./zcount -i theIFname`\n 1. In examples_zc, run `./zcount -h` to get PF_RING ZC version.\n 1. Go to http://shop.ntop.org/mkzclicense/\n 1. Fill in the MAC address, OrderId, and PF_RING ZC Version.\n    Select Product Family PF_RING ZC 10/40/100 Gbit [Intel].\n 1. Click the \"Create PF_RING License\" button.\n 1. Follow the next page's instructions. (After putting the license key string\n    in the MAC-address-named file, you're all set - don't even need to reboot!)\n    You can verify the registration with `sudo ./zcount -C -i zc:enp5s0f0`\n\n# Running the station without zero-copy\n\nIf you have previously configured the station for ZC operation, *you must reboot\nin order to run non-ZC!* (You can run non-ZC and then switch to ZC without\nrebooting).\n\nTo run the non-zero-copy multi-process TapDance station, follow the installation\nand setup instructions as above, but:\n\n 1. Rather than `sudo ./startup.sh`, run `sudo ./startup.sh --nozerocopy`.\n 1. Rather than `./scripts/tapdance-build.sh`, run `./scripts/tapdance-build.sh --nozerocopy`.\n 1. When running the station, you do not need `zbalance_ipc` at all.\n 1. Run the station with `sudo RUST_BACKTRACE=1 ./tapdance -i $INTERFACE -c 7 -o 0 -n 4 -K /path/to/privkey`.\n\nThe gobbler remains the same. Running tapdance-prereqs.sh remains the same.\nn and c are the same as in the ZC version; -o is core id offset. (So, -o 3 -n 4\nwould use cores 3,4,5,6).\n\n# Note\n\nThis is the TapDance station code. You do not need this to be a user\nof TapDance; for that, you will need the [client](https://github.com/sergeyfrolov/gotapdance).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-networking%2Ftapdance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefraction-networking%2Ftapdance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-networking%2Ftapdance/lists"}