Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/losfair/vmesh
VMesh is a decentralized Layer 3 mesh router and protocol designed for open network interconnection.
https://github.com/losfair/vmesh
decentralized mesh network p2p router
Last synced: 2 months ago
JSON representation
VMesh is a decentralized Layer 3 mesh router and protocol designed for open network interconnection.
- Host: GitHub
- URL: https://github.com/losfair/vmesh
- Owner: losfair
- License: mit
- Created: 2019-08-14T11:38:23.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-08-23T17:55:22.000Z (over 2 years ago)
- Last Synced: 2024-10-15T14:03:27.057Z (3 months ago)
- Topics: decentralized, mesh, network, p2p, router
- Language: Go
- Homepage:
- Size: 54.7 KB
- Stars: 32
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# vmesh
### Introduction
VMesh is a decentralized Layer 3 mesh router and protocol designed for open network interconnection.
It securely handles everything you'll need to interconnect your globally distributed
nodes or peer with other networks: packet routing, route announcement, authentication,
distributed configuration management, prefix filtering, and more.VMesh supports only IPv6 in the routed network.
### Getting started
Knowledge of routing protocols such as [BGP](https://en.wikipedia.org/wiki/Border_Gateway_Protocol)
would help a lot in understanding how VMesh works.Take a look at `config.example.json` and `scripts/` to get an idea about the detailed usage.
Usually you need a globally routable IPv6 block to make full use of VMesh, but you can also
request IPv6 prefix allocation and transit from an existing VMesh network through peering.
(See [Peering](#peering), [Interconnect with AS209291](#as209291))Detailed documentation is still TBD.
### Peering
Specify `"external_peer_certs": ["/path/to/your/peers/cert.crt"]` in your `config.json` to
allow interconnection with a node with a certificate outside your PKI tree. It's advised to
prefix-filter announcements from external peers - see the "Distributed config" section for
how to do that.### Distributed config
Use the `vnconfigsign` tool to sign your distributed configuration in JSON format and produce a
`.bin`. Then start any one node with the `-initial-dc your_signed_config.bin` option to sync
the configuration with the rest of your network. As long as any single node on your network
is alive with a latest version of the distributed configuration, all directly/indirectly
connected nodes will eventually be in sync.The JSON format distributed config should look like:
```json
{
"prefix_whitelist": {
"a.vnet.example.com": [
"2001:db8:1000::/48,max_prefix_len=64",
"64:ff9b::/96,max_prefix_len=96"
],
"b.vnet.example.com": [
"2001:db8:2000::/48"
]
}
}
```### Interconnect with AS209291
VMesh is deployed on my network (AS209291) and is handling most internal traffic among nodes in
the globally distributed network.Email me at `[email protected]` if you want to peer.