{"id":15190187,"url":"https://github.com/takehaya/vinbero","last_synced_at":"2025-10-27T13:30:30.576Z","repository":{"id":54817805,"uuid":"234463797","full_name":"takehaya/Vinbero","owner":"takehaya","description":"A complete subset of SRv6 local function \u0026 transit written in XDP","archived":false,"fork":false,"pushed_at":"2023-01-01T11:16:33.000Z","size":3315,"stargazers_count":36,"open_issues_count":6,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T05:41:18.610Z","etag":null,"topics":["ebpf","gtpu","network-programming","srv6","srv6-functions","vinbero","xdp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/takehaya.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}},"created_at":"2020-01-17T03:35:21.000Z","updated_at":"2025-01-24T10:54:22.000Z","dependencies_parsed_at":"2023-01-31T22:00:58.081Z","dependency_job_id":null,"html_url":"https://github.com/takehaya/Vinbero","commit_stats":null,"previous_names":["takehaya/srv6-gtp"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takehaya%2FVinbero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takehaya%2FVinbero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takehaya%2FVinbero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takehaya%2FVinbero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takehaya","download_url":"https://codeload.github.com/takehaya/Vinbero/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238497666,"owners_count":19482296,"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":["ebpf","gtpu","network-programming","srv6","srv6-functions","vinbero","xdp"],"created_at":"2024-09-27T20:05:52.357Z","updated_at":"2025-10-27T13:30:30.090Z","avatar_url":"https://github.com/takehaya.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vinbero\nVinbero is a very fast high-performance SRv6 implementation\nVibero is about 3-5 Mpps in single flow, which is 2-3 times better performance than linux!\n\n\u003cdiv style=\"text-align:center;\"\u003e\n\u003cimg src=\"./design/logo-100.jpg\" style=\"height:auto;width:60vw;\"\u003e\n\u003c/div\u003e\n\nThe goal of this project is to implement the basic functions of SRv6 so that users can enjoy network programming:)\nFor example, L2,L3VPN, ServiceChain, Mobile Uplane(in UPF)...etc,\n\nThis implementation is also very powerful because it is written in XDP.\nIt does not require any special equipment like P4.\nAll you need is the latest linux kernel to run it.\nIt is also a very small implementation compared to VPP.\nIt's easy to understand and easy to add functionality.It is also possible to incorporate these:)(e.g. CNI, NOS...etc)\n\nPlease raise issue with use case description if you want to any SRv6 functions not implemented yet or let's make a contribution!\n\n## Required package\n* linux: 5.8\u003c=x\n  * It means that the version you are testing is 5.8 or higher. Actually, if BTF supports it, I think there is no problem.\n* golang: 1.3\u003c=x\n* clang: 9\u003c=x\n\n## Setup\n```\nulimit -l unlimited\n\n# if \"ulimit -l unlimited\" is not working when plz check\necho \"DefaultLimitMEMLOCK=infinity\"\u003e\u003e/etc/systemd/system.conf\necho \"DefaultLimitMEMLOCK=infinity\"\u003e\u003e/etc/systemd/user.conf\n```\n\nremove offload\n```\nfor i in rx tx tso ufo gso gro lro tx nocache copy sg txvlan rxvlan; do\n       /sbin/ethtool -K eth1 $i off 2\u003e\u00261 \u003e /dev/null;\ndone\n```\n\nuse irqaffinity. this mellanox nic case.\n```\ngit clone https://github.com/Mellanox/mlnx-tools.git\ncd mlnx-tools/\n./set_irq_affinity.sh ens4f0np0\n```\n\n\n## Build\n```\ncd include\nwget https://raw.githubusercontent.com/cloudflare/xdpcap/master/hook.h\ncd ..\nmake\n```\n## ConfigExample\nThis is an example of performing the End operation.\n```yaml\ninternal:\n  devices:\n    - eth1\n    - eth2\nsettings:\n  functions:\n    - action: SEG6_LOCAL_ACTION_END\n      triggerAddr: fc00:2::1/128\n      actionSrcAddr: fc00:1::1\n      flaver: NONE\n    - action: SEG6_LOCAL_ACTION_END\n      triggerAddr: fc00:2::2/128\n      actionSrcAddr: fc00:1::1\n      flaver: NONE\n```\n\nIn the transit case, actionSrcAddr works as a so-called bsid.\n\nSee this for details: [vinbero.yml.sample](./vinbero.yml.sample)\n\n## Run\n```\n./bin/vinbero\n```\n\n## List of SRv6 functions of interest and status (a.k.a. Road Map)\n\n### Reference list\n* [draft-filsfils-spring-srv6-network-programming](https://datatracker.ietf.org/doc/draft-ietf-spring-srv6-network-programming/)\n* [draft-ietf-dmm-srv6-mobile-uplane](https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/)\n* [draft-murakami-dmm-user-plane-message-encoding](https://datatracker.ietf.org/doc/draft-murakami-dmm-user-plane-message-encoding)\n\n### Transit behaviors\n\n| Function | schedule | description |\n|----------|----------|-------------|\n| T | n/a | Transit behavior|\n| T.Insert | future | |\n| T.Insert.Red |  | |\n| T.Encaps | Done | |\n| T.Encaps.Red |  | |\n| T.Encaps.L2 | future | |\n| T.Encaps.L2.Red |  | |\n\n### Functions associated with a SID\n\n| Function | schedule | description |\n|----------|----------|-------------|\n| End | Done | |\n| End.X | Fed, 2020 | |\n| End.T | | |\n| End.DX2 (V) | | |\n| End.DT2 (U/M) | | |\n| End.DX6 | Done | |\n| End.DX4 | Done | |\n| End.DT6 | | |\n| End.DT4 | | |\n| End.DT46 | | |\n| End.B6.Insert | | |\n| End.B6.Insert.Red | | |\n| End.B6.Encaps | | |\n| End.B6.Encaps.Red | | |\n| End.BM | | |\n| End.S | | |\n| Args.Mob.Session | Done | Consider with End.MAP, End.DT and End.DX |\n| End.MAP | | |\n| End.M.GTP6.D | Mar, 2021 | GTP-U/IPv6 =\u003e SRv6, For implementation purposes, it is treated as transit　|\n| End.M.GTP6.D.Di | Mar, 2021 | GTP-U/IPv6 =\u003e SRv6, For implementation purposes, it is treated as transit |\n| End.M.GTP6.E | Mar, 2021 | SRv6 =\u003e GTP-U/IPv6 |\n| End.M.GTP4.E | partial Done, Mar, 2021 | SRv6 =\u003e GTP-U/IPv4 gtpv1ext hdr is not supported. |\n| H.M.GTP4.D | partial Done, Mar, 2021 | GTP-U/IPv4 =\u003e SRv6, Currently, gtpv1ext hdr is not supported. |\n| End.Limit | | Rate Limiting function |\n\n### Non functional design items\n\n| Item name | schedule |\n|-----------|----------|\n| BSID friendly table structure | future |\n\n### Flavours\n\n| Function | schedule | description |\n|----------|----------|-------------|\n| PSP | future | Penultimate Segment Pop |\n| USP | | Ultimate Segment Pop |\n| USD | | Ultimate Segment Decapsulation |\n\n## Respectful implementation\nI'm using these as a reference. thanks:)\n* [p4srv6](https://github.com/ebiken/p4srv6)\n* [linux/samples/bpf](https://github.com/torvalds/linux/tree/master/samples/bpf)\n* [VPP/srv6_mobile_plugin_doc](https://docs.fd.io/vpp/20.05/d7/d3c/srv6_mobile_plugin_doc.html)\n\n## Trivia\nThe Vinbero is an Esperanto word meaning `grape`\nA meshed node running SRv6 looks like a grape when viewed from above:)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakehaya%2Fvinbero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakehaya%2Fvinbero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakehaya%2Fvinbero/lists"}