-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
24 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,34 @@ | ||
# Tansa: LAN service discovery over IPv6 multicast | ||
# Tansa: Serverless LAN service discovery over IPv6 | ||
|
||
[![codecov](https://codecov.io/github/seamlik/tansa/graph/badge.svg?token=AH6YGZOMJM)](https://codecov.io/github/seamlik/tansa) | ||
|
||
This project is an opinionated solution of multicast discovery. | ||
This project is an opinionated solution of service discovery within a IPv6-enabled LAN. | ||
Written in pure Rust, it is [cross-platform](https://doc.rust-lang.org/nightly/rustc/platform-support.html) and is suitable to be a unified and portable solution for an application planning to span all major devices like laptops, smartphones and more. | ||
Unlike solutions such as [DNS Service Discovery](http://dns-sd.org), | ||
applications using this solution do not rely on any server/daemon running on the operating system. | ||
|
||
This project offers both a crate and a CLI application. | ||
However, I will not publish it to any public registry since it is highly experimental. | ||
|
||
## Technologies under the hood | ||
|
||
### Multicast | ||
|
||
Service discovery is mostly implemented by exchanging multicast packets on a rendezvous address. | ||
|
||
### IP neighbors | ||
|
||
When multicast is unavailable, services on other devices are naturally undiscoverable. | ||
However, devices connected directly to the host device are still discoverable as IP neighbors. | ||
Applications can still communicate with each other but over link-local addresses. | ||
|
||
This scenario can happen, for example, when 2 Android smartphones are connected via a hotspot or even Wi-Fi Direct. | ||
In this case, no other device exists within the LAN, but applications on the smartphones can still communicate. | ||
|
||
This feature relies on the operating system. Current we support these operating systems: | ||
|
||
* Windows (using [PowerShell](https://learn.microsoft.com/powershell/module/nettcpip/get-netneighbor?view=windowsserver2022-ps)) | ||
|
||
## Project name meaning | ||
|
||
Based on Japanese 探索 with pronounciation "tansaku" meaning "discovery". | ||
Based on Japanese "探索" with pronounciation "tansaku" meaning "discovery". |