{"id":18578691,"url":"https://github.com/jech/sbabeld","last_synced_at":"2025-04-10T10:31:20.456Z","repository":{"id":23371696,"uuid":"26733026","full_name":"jech/sbabeld","owner":"jech","description":"Stub-only implementation of the Babel routing protocol","archived":false,"fork":false,"pushed_at":"2023-05-21T15:01:03.000Z","size":36,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T19:39:36.415Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jech.png","metadata":{"files":{"readme":"README","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":"2014-11-17T00:14:53.000Z","updated_at":"2024-07-28T04:00:20.000Z","dependencies_parsed_at":"2024-11-06T23:39:17.910Z","dependency_job_id":"5857ab11-f9a2-45dd-a654-e10dcab9e277","html_url":"https://github.com/jech/sbabeld","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/jech%2Fsbabeld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jech%2Fsbabeld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jech%2Fsbabeld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jech%2Fsbabeld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jech","download_url":"https://codeload.github.com/jech/sbabeld/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248199136,"owners_count":21063641,"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-06T23:36:48.989Z","updated_at":"2025-04-10T10:31:20.140Z","avatar_url":"https://github.com/jech.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"A stub-only implementation of Babel\n===================================\n\nBabel is a loop-avoiding distance vector protocol that is suitable for\nboth wired and wireless networks documented in RFC 6126.  The standard\nimplementation of Babel is a Unix daemon called babeld, that fits in a few\ndozen kilobytes and implements a number of extensions to the protocol.\nFor more information about Babel and babeld, please see\n\n    http://www.pps.univ-paris-diderot.fr/~jch/software/babel/\n\nThe sbabeld daemon is a tiny implementation of Babel that is only suitable\nfor stub routers (routers that only route between their connected networks\nand the rest of the Internet).  It is designed to be small, easy to\nunderstand, and easy to port.  If you can afford to, you should be running\nthe full babeld daemon, as it converges faster while remaining reasonably\nsmall.\n\nSbabeld implements the following features of the Babel protocol:\n\n  * bidirectional reachability detection (Hello/IHU);\n  * learning the best IPv6 default route and timing it out;\n  * announcing an IPv6 /64 prefix;\n  * passive participation in the loop-avoidance protocol;\n  * participation in the request/response protocol.\n\nIt does not implement the following features of the full babeld implementation:\n\n  * IPv4;\n  * learning a full routing table;\n  * reannouncing learned routes;\n  * keeping fallback routes for faster convergence after a failure;\n  * automatic redistribution;\n  * active participation in the loop-avoidance protocol;\n  * link quality estimation for lossy and high-latency links;\n  * detection of interface status;\n  * history-sensitive route selection;\n  * source-specific routing.\n\nThe code could be further simplified by removing route selection and\nbidirectional reachability detection -- this would free us from having to\ndetermine our link-local addresses, and would avoid the need for\na neighbours table.\n\nUsage\n-----\n\nIn order to just learn any default routes that are being announced:\n\n    sbabeld eth0 wlan0\n\nIn order to additionally announce a /64 prefix:\n\n    sbabeld -p 2001:db8:dead:beef:: eth0 wlan0\n\nPorting\n-------\n\nSbabeld was written for Linux.  It should be easy enough to port to other\nsystems that support IPv6 -- see the functions get_local_address and\ninstall_default_route in util.c.\n\nI have assumed that for link-local addresses, sin6_scope_id is the\ninterface index.  That is true on all systems known to me.\n\nAuthor\n------\n\nJuliusz Chroboczek\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjech%2Fsbabeld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjech%2Fsbabeld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjech%2Fsbabeld/lists"}