Skip to content

Commit 7804787

Browse files
committed
doc: update discovery document
Overhaul text and grammar. Simplify, correct, and add information about the new mDNS settings. Replace 'unit' with 'device', which is the more common term for hardware. Signed-off-by: Joachim Wiberg <[email protected]>
1 parent 3576450 commit 7804787

File tree

1 file changed

+92
-58
lines changed

1 file changed

+92
-58
lines changed

doc/discovery.md

Lines changed: 92 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
Discover Infix Units
2-
====================
1+
# Discover Devices
32

4-
```
5-
.----. Ethernet .-------.
6-
| PC +---------------------+ Infix |
7-
'----' if1 eth0 '-------'
8-
```
9-
Figure 1: PC directly connected over Ethernet to Infix unit (here eth0).
3+
Infix advertises itself via the [mDNS-SD](#mdns-sd) and [LLDP](#lldp)
4+
discovery protocols. mDNS-SD has good client support in Windows, macOS
5+
and on Linux systems. More on these protocols later.
106

7+
An even simpler method is available when directly attached to an Infix
8+
device:
119

12-
When you wish to discover the IP address of an Infix switch, the simplest
13-
way is probably to *ping the IPv6 all-hosts* address (ff02::1) over a
14-
directly connected Ethernet cable. The unit's link-local IPv6 address is
15-
seen in the response.
10+
```
11+
.----. Ethernet .-------.
12+
| PC +---------------------+ Infix |
13+
'----' if1 e1 '-------'
14+
```
1615

17-
In the example below, the PC is connected to Infix via interface *tap0*
18-
(*tap0* is *if1* in Figure 1) and Infix responds with address
16+
With IPv6 you can *ping the all-hosts* address (ff02::1), the device's
17+
link-local IPv6 address is then seen in the response. In the following
18+
example, the PC here uses *tap0* as *if1*, Infix responds with address
1919
*fe80::ff:fec0:ffed*.
2020

2121
```
@@ -31,25 +31,25 @@ rtt min/avg/max/mdev = 0.389/0.455/0.558/0.073 ms
3131
linux-pc:#
3232
```
3333

34-
The PC could connect then connect to Infix, e.g., using SSH.
34+
> [!TIP]
35+
> The `-L` option ignores local responses from the PC.
36+
37+
This address can then be used to connect to the device, e.g., using SSH.
38+
Notice the syntax `username@address%interface`:
3539

3640
```
3741
linux-pc:# ssh admin@fe80::ff:fec0:ffed%tap0
3842
admin@fe80::ff:fec0:ffed%tap0's password: admin
3943
admin@infix-c0-ff-ee:~$
4044
```
4145

42-
## Discovery mechanisms available in Infix
43-
44-
Infix advertises its presence via the [mDNS](#mdns) and [LLDP](#lldp)
45-
discovery protocols.
4646

47+
## LLDP
4748

48-
### LLDP
49+
Infix supports LLDP (IEEE 802.1AB). For a device with factory default
50+
settings, the link-local IPv6 address can be read from the Management
51+
Address TLV using *tcpdump* or other sniffing tools[^1]:
4952

50-
Infix supports LLDP (IEEE 802.1AB). For a unit with factory default
51-
settings, the PC can readout the link-local IPv6 address from the
52-
Management Address TLV using *tcpdump* or other sniffing tools[^1].
5353
```
5454
linux-pc:# tcpdump -i tap0 -Qin -v ether proto 0x88cc
5555
tcpdump: listening on tap0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
@@ -83,11 +83,12 @@ tcpdump: listening on tap0, link-type EN10MB (Ethernet), snapshot length 262144
8383
linux-pc:#
8484
```
8585

86-
If the unit has an IPv4 address assigned, it is shown in an additional
86+
If the device has an IPv4 address assigned, it is shown in an additional
8787
Management Address TLV.
8888

89-
> **Note** The Management Addresses shown by LLDP are not
90-
> necessarily associated with the port transmitting the LLDP message.
89+
> [!NOTE]
90+
> The Management Addresses shown by LLDP are not necessarily associated
91+
> with the port transmitting the LLDP message.
9192
9293
In the example below, the IPv4 address (10.0.1.1) happens to be
9394
assigned to *eth0*, while the IPv6 address (2001:db8::1) is not.
@@ -130,10 +131,6 @@ tcpdump: listening on tap0, link-type EN10MB (Ethernet), snapshot length 262144
130131
linux-pc:#
131132
```
132133

133-
[^1]: [lldpd: implementation of IEEE 802.1ab
134-
(LLDP)](https://github.com/lldp/lldpd) includes *lldpcli*, which
135-
is handy to sniff and display LLDP packets.
136-
137134
The LLDP service can be disabled using the following commands.
138135

139136
```
@@ -143,13 +140,38 @@ admin@infix-c0-ff-ee:/config/> leave
143140
admin@infix-c0-ff-ee:/>
144141
```
145142

146-
### mDNS
147143

148-
DNS-SD/mDNS can be used to discover Infix units and services. Infix
149-
units present their IP addresses, services and hostname within the
150-
.local domain. This method has good client support in Apple and Linux
151-
systems. On Linux, tools such as *avahi-browse* or *mdns-scan*[^2] can
152-
be used to search for devices advertising their services via mDNS.
144+
## mDNS-SD
145+
146+
DNS-SD/mDNS-SD can be used to discover Infix devices and services. By
147+
default, Infix use the `.local` domain for advertising services. Some
148+
networks use `.lan` instead, so this configurable:
149+
150+
```
151+
admin@infix-c0-ff-ee:/> configure
152+
admin@infix-c0-ff-ee:/config/> edit mdns
153+
admin@infix-c0-ff-ee:/config/mdns/> set domain lan
154+
```
155+
156+
Other available settings include limiting the interfaces mDNS responder
157+
acts on:
158+
159+
```
160+
admin@infix-c0-ff-ee:/config/> set interfaces allow e1
161+
```
162+
163+
or
164+
165+
```
166+
admin@infix-c0-ff-ee:/config/> set interfaces deny wan
167+
```
168+
169+
The `allow` and `deny` settings are complementary, `deny` always wins.
170+
171+
----
172+
173+
In Linux, tools such as *avahi-browse* or *mdns-scan*[^2] can be used to
174+
search for devices advertising their services via mDNS.
153175

154176
```
155177
linux-pc:# avahi-browse -ar
@@ -181,9 +203,15 @@ linux-pc:# avahi-browse -ar
181203
linux-pc:#
182204
```
183205

206+
> [!TIP]
207+
> The `-t` option is also very useful, it stops browsing automatically
208+
> when a "more or less complete list" has been printed. However, some
209+
> devices on the LAN may be in deep sleep so run the command again if
210+
> you cannot find the device you are looking for.
211+
184212
Additionally, *avahi-resolve-host-name* can be used to verify domain
185-
name mappings for IP addresses. By default, it translates from IPv4
186-
addresses. This function allows users to confirm that addresses are
213+
name mappings for IP addresses. By default, it translates from IPv4
214+
addresses. This function allows users to confirm that addresses are
187215
mapped correctly.
188216

189217
```
@@ -219,20 +247,21 @@ linux-pc:#
219247
```
220248

221249
To disable mDNS/mDNS-SD, type the commands:
250+
222251
```
223252
admin@infix-c0-ff-ee:/> configure
224253
admin@infix-c0-ff-ee:/config/> no mdns
225254
admin@infix-c0-ff-ee:/config/> leave
226255
```
227256

228-
#### Human-Friendly Hostname Alias
257+
### Human-Friendly Hostname Alias
229258

230-
Each Infix unit will advertise itself as *infix.local*, in addition to
231-
its full hostname (e.g., *infix-c0-ff-ee.local* or *foo.local*). This
232-
alias works seamlessly on a network with a single Infix device, and
233-
makes it easy to connect when the exact hostname is not known in
234-
advance. The examples below show how the alias can be used for
235-
actions such as pinging or establishing an SSH connection:
259+
Each Infix deviuce advertise itself as *infix.local*, in addition to its
260+
full hostname (e.g., *infix-c0-ff-ee.local* or *foo.local*). This alias
261+
works seamlessly on a network with a single Infix device, and makes it
262+
easy to connect when the exact hostname is not known in advance. The
263+
examples below show how the alias can be used for actions such as
264+
pinging or establishing an SSH connection:
236265

237266
```
238267
linux-pc:# ping infix.local -c 3
@@ -254,37 +283,42 @@ linux-pc:# ssh [email protected]
254283
255284
Run the command 'cli' for interactive OAM
256285
257-
linux-pc:#
286+
admin@infix-c0-ff-ee:~$
258287
```
259288

260289
When multiple Infix devices are present on the LAN the alias will not
261290
uniquely identify a device; *infix.local* will refer to any of the
262291
Infix devices, likely the one that first appeared.
263292

264-
> When multiple Infix units are present, use the full hostname (e.g.,
265-
> *infix-c0-ff-ee.local* or *foo.local*) rather than the alias
266-
> infix.local to deterministically connect to a unit.
293+
> [!NOTE]
294+
> When multiple Infix devices are present on the LAN, use the full name,
295+
> e.g., *infix-c0-ff-ee.local* or *foo.local* rather than the alias
296+
> *infix.local* to deterministically connect to the device.
267297
268298

269-
#### Netbrowse service to find all your devices
299+
### Browse Network Using *network.local*
270300

271-
Another mDNS alias that all Infix devices can advertise is
272-
*network.local*. This is a web service which basically runs avahi-browse
273-
and displays a table of other Infix devices and their services.
301+
Another mDNS alias that all Infix devices advertise is *network.local*.
302+
This is a web service which basically runs `avahi-browse` and displays a
303+
table of other Infix devices and their services.
274304

275305
![Netbrowse Service - network.local](img/network-local.png)
276306

277-
With multiple Infix devices on the LAN, one will be your portal to
278-
access all others, if it goes down another will take its place.
307+
With multiple Infix devices on the LAN, one will take the role of your
308+
portal to access all others, if it goes down another takes its place.
309+
310+
To disable the netbrowse service, and the *network.local* alias, the
311+
following commands can be used:
279312

280-
To disable the netbrowse service, the following commands can be used:
281313
```
282314
admin@infix-c0-ff-ee:/> configure
283315
admin@infix-c0-ff-ee:/config/> edit web
284316
admin@infix-c0-ff-ee:/config/web/> no netbrowse
285317
admin@infix-c0-ff-ee:/config/web/> leave
286318
```
287319

320+
321+
[^1]: E.g., [lldpd](https://github.com/lldp/lldpd) which includes the
322+
*lldpcli* too, handy to sniff and display LLDP packets.
288323
[^2]: [mdns-scan](http://0pointer.de/lennart/projects/mdns-scan/): a
289-
tool for scanning for mDNS/DNS-SD published services on the local
290-
network
324+
tool for scanning for mDNS/DNS-SD services on the local network.

0 commit comments

Comments
 (0)