Skip to content

Commit

Permalink
Document IP neighbors
Browse files Browse the repository at this point in the history
  • Loading branch information
seamlik committed Mar 15, 2024
1 parent f79e337 commit 2a01dd2
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions README.md
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".

0 comments on commit 2a01dd2

Please sign in to comment.