{"id":18611606,"url":"https://github.com/twosigma/mbeat-core","last_synced_at":"2025-08-10T23:37:48.359Z","repository":{"id":66351407,"uuid":"102149648","full_name":"twosigma/mbeat-core","owner":"twosigma","description":"Command-line utilities for testing multicast network.","archived":false,"fork":false,"pushed_at":"2018-04-05T20:54:11.000Z","size":190,"stargazers_count":10,"open_issues_count":14,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-03T18:10:23.976Z","etag":null,"topics":["c99","freebsd","linux","multicast","networking"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twosigma.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-09-01T20:14:58.000Z","updated_at":"2024-02-29T16:53:34.000Z","dependencies_parsed_at":"2023-02-27T00:00:29.499Z","dependency_job_id":null,"html_url":"https://github.com/twosigma/mbeat-core","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/twosigma/mbeat-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twosigma%2Fmbeat-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twosigma%2Fmbeat-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twosigma%2Fmbeat-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twosigma%2Fmbeat-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twosigma","download_url":"https://codeload.github.com/twosigma/mbeat-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twosigma%2Fmbeat-core/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269807653,"owners_count":24478490,"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","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c99","freebsd","linux","multicast","networking"],"created_at":"2024-11-07T03:14:23.546Z","updated_at":"2025-08-10T23:37:48.331Z","avatar_url":"https://github.com/twosigma.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mbeat-core\n\n[![Build Status](https://travis-ci.org/twosigma/mbeat-core.svg?branch=master)](https://travis-ci.org/twosigma/mbeat-core)\n\nMulticast heartbeat - `mbeat` - is a set of command-line utilities perform\ntesting and debugging multicast network configurations by transmitting\ndiagnostic payloads and reporting the perceived state. The project\nconsists of two components: the publisher and the subscriber. Each\ncomponent is implemented as a separate executable, named `mpub` and `msub`\nrespectively.\n\n## Example\nThe following example runs the two programs on different hosts, `freebsd`\nand `linux`, where the publishers process sends 10 datagrams, all\nsuccessfully received by the subscriber process, and the respective lines\nprinted to the standard output stream in the CSV format. Detailed\nexplanation of the command-line options and the output columns can be\nfound in the manual pages for each program.\n\n### Publisher\n```\ndlovasko@freebsd:~$ mpub -c10 -k100 -t32 -i1s em0=239.192.40.1\n```\n\n### Subscriber\n```\ndlovasko@linux:~$ msub -k100 eth0=239.192.40.1\nKey,SeqNum,SeqLen,McastAddr,McastPort,SrcTTL,DstTTL,PubIf,PubHost,SubIf,SubHost,TimeDep,TimeArr\n100,0,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174712.965,1506174712.965\n100,1,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174713.971,1506174713.971\n100,2,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174714.976,1506174714.977\n100,3,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174715.979,1506174715.979\n100,4,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174716.990,1506174716.991\n100,5,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174717.993,1506174717.993\n100,6,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174719.003,1506174719.003\n100,7,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174720.007,1506174720.007\n100,8,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174721.017,1506174721.017\n100,9,10,239.192.40.1,22999,32,31,em0,freebsd,eth0,linux,1506174722.021,1506174722.022\n```\n\n## Build\nThe project was designed with portability in mind - hence absolutely no\nexternal dependencies are required. The language standard used across the\ncodebase is C99, while targeting the POSIX.1-2008 standard. Exceptions are\ntaken with respect to event-driven frameworks, such as `epoll` and\n`kqueue`.\n\nTo build `mbeat` on Linux:\n```\n$ make CC=gcc\n$ make install\n```\n\nTo build `mbeat` on FreeBSD:\n```\n$ make CC=clang FTM= \n$ make install\n```\n\n### Supported platforms\nThe project aims at supporting 32-bit and 64-bit architectures, Linux and\nFreeBSD operating systems and all major C compilers, e.g. `gcc` and\n`clang`. If any combination of the above does not work, please feel free\nto notify the project maintainers and/or submit a patch.\n\n## Publisher\nThe publisher program `mpub` is responsible for sending diagnostic\npayloads to a list of user-selected endpoints. Each endpoint is a tuple:\nlocal network interface that should be used for the communication and a\nmulticast group. It is possible to select the number of sent payloads,\ntime interval between them, the initial Time-To-Live value, and unique\nkey to distinguish among multiple running `mpub` processes. The full\nlist of command-line options can be found in the respective manual page.\n\n## Subscriber\nThe subscriber program `msub` is responsible to receiving diagnostic\npayloads from a list of user-selected endpoints. Just like in the case of\nthe publisher, each endpoint is represented by a pair of an interface and\na multicast group. Each received payload is printed to the standard output\nstream in the form of a CSV record, allowing for further analysis of the\ndata. For performance reasons, the subscriber process relies on the event\nqueue frameworks, `epoll` on Linux and `kqueue` on FreeBSD. The full\nlisting of the command-line options can be found the respective manual\npage.\n\n## Documentation\nThe `mpub` and `msub` programs are documented via standard UNIX manual\npages, located in the `man/` directory. Both manual pages belong the\nsection 8 of the manual.  The `make install` command copies the manual\npage files to the standard system location.\n\n## Future work\nThe project currently implements the essential communication of the\ncomponents and straightforward reporting of the state. Further work might\ninclude detailed analysis built on to of the subscriber's output,\norchestration of large-scale tests and daemonization of the components.\n\n## License\nThe `mbeat-core` project is licensed under the terms of the [2-cause BSD\nlicense](LICENSE).\n\n## Authors \u0026 maintainers\nDaniel Lovasko \u003cdlovasko@twosigma.com\u003e\n\n## Acknowledgements\nThe project was initially developed in collaboration with Reenen Kroukamp.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwosigma%2Fmbeat-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwosigma%2Fmbeat-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwosigma%2Fmbeat-core/lists"}