{"id":16161416,"url":"https://github.com/gamemann/ipipdirect-tc","last_synced_at":"2025-03-18T22:30:38.949Z","repository":{"id":92735680,"uuid":"252584062","full_name":"gamemann/IPIPDirect-TC","owner":"gamemann","description":"Sends outgoing IPIP packets back to the client directly instead of back through the IPIP tunnel/forwarding server. Uses TC egress filter for fast packet processing.","archived":false,"fork":false,"pushed_at":"2024-09-13T11:06:59.000Z","size":291,"stargazers_count":19,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T12:30:09.695Z","etag":null,"topics":["bpf","direct","ebpf","egress","ipip","linux-tc","tc","traffic-control"],"latest_commit_sha":null,"homepage":"https://moddingcommunity.com/","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/gamemann.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":"2020-04-02T23:07:24.000Z","updated_at":"2025-02-16T12:55:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"92b40710-f3f8-460b-b977-18a199ef9b34","html_url":"https://github.com/gamemann/IPIPDirect-TC","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/gamemann%2FIPIPDirect-TC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FIPIPDirect-TC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FIPIPDirect-TC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FIPIPDirect-TC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamemann","download_url":"https://codeload.github.com/gamemann/IPIPDirect-TC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243950813,"owners_count":20373664,"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":["bpf","direct","ebpf","egress","ipip","linux-tc","tc","traffic-control"],"created_at":"2024-10-10T02:25:12.142Z","updated_at":"2025-03-18T22:30:38.713Z","avatar_url":"https://github.com/gamemann.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IPIP Direct (TC)\n\n## Description\nA program made to attach to the TC hook using the egress filter. This program makes it so any outgoing IPIP packets are sent directly back to the client instead of back through the IPIP tunnel. In cases where you don't need the end-application replies to go back through the forwarding server/IPIP tunnel, this is very useful and will result in less load on the forwarding server. With that said, in other cases it can result in less latency and more.\n\n## Usage\nUsage is as follows:\n\n```\n./IPIPDirect_Loader \u003cInterface\u003e\n```\n\nExample:\n\n```\n./IPIPDirect_Loader ens18\n```\n\n## Installation\nUse the MAKE file to install the program. These commands should do:\n\n```\nmake\nmake install\n```\n\nYou may also clean the installation by executing:\n\n```\nmake clean\n```\n\n## Systemd File\nA `systemd` file is located in the other/ directory and is installed via `make install`. You will need to edit the system file if you are using an interface other than `ens18`.\n\nYou may enable the service by executing so it'll start on bootup:\n\n```\nsystemctl enable IPIPDirect\n```\n\nYou may start/stop/restart the service by executing:\n\n```\nsystemctl restart IPIPDirect # Restart service.\nsystemctl stop IPIPDirect # Stop service.\nsystemctl start IPIPDirect # Start service.\n```\n\n## Kernel Requirements\nKernel \u003e= 5.3 is required for this. Newer kernels add the `BPF_ADJ_ROOM_MAC` mode to the `bpf_skb_adjust_room()` function which is needed for this program to work correctly.\n\n## Notes\nWhen compiling, you may need to copy `/usr/src/linux-headers-xxx/include/uapi/linux/bpf.h` to `/usr/include/linux/bpf.h`. For some reason, newer kernels don't have an up-to-date `/usr/include/linux/bpf.h` file. I'm unsure if this is intentional or a bug. However, I got the program to compile properly by copying that file.\n\n**Update** - Apparently this is only a bug on Ubuntu.\n\n## Credits\n* [Christian Deacon](https://www.linkedin.com/in/christian-deacon-902042186/) - Creator","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fipipdirect-tc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamemann%2Fipipdirect-tc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fipipdirect-tc/lists"}