.. | ||
common.c | ||
common.h | ||
Makefile | ||
rcv.c | ||
README.md | ||
snd.c |
Chování BIRD socketů
Požadavky
Kombinace
- Sockety
- UDP
- Raw
- IP
- IPv4
- IPv6
- Způsob vysílání
- Unicast
- Multicast (
224.0.0.9
,ff02::9
) - Directed broadcast podle masky sítě
- Universal broadcast (
255.255.255.255
)
Vlastnosti
-
Na straně odesílání
- Odesila na spravne rozhrani, ackoli routovaci tabulka je jina, ale cilova adresa je dostupna na dane siti
- Na odesilacim rozhrani je vice adres
- Odesila se spravnou nastavenou zdrojovou adresou, ktera nemusi byt na danem rozhrani, ale musi byt alespon na nekterem jinem rozhrani
- Overit, ze packety maji cilovou adresu takovou, kterou ocekavame
-
Na straně přijímání
- Nemelo by prijmout packet z jineho rozhrani nez je nastaveny
- Precist source-addr a local iface
Testcase
Nastavení
- Interface s prefixem /24
- 2 IPv4 adresy (aliasy)
- 2 IPv6 adresy (aliasy)
- Odstranene smerovani v routovaci tabulce (ping nefunguje)
Odesílání
- Jako lokální adresa se použije adresa jiného lokálního zařízení
- TTL 3
Přijímání
- Nastaví se na správný interface
- Nastaví se na jiný interface a nemělo by to nic přijmout
Ukázky (IPv4, raw socket)
Unicast
./rcv -i lnk111
./snd -c 10 -i lnk111 -t 3 -l 192.168.214.188 10.210.1.51
Multicast
./rcv -i lnk111 -m 224.0.0.9
./snd -c 10 -i lnk111 -t 3 -l 192.168.214.188 -m 224.0.0.9
Directed Broadcast
./rcv -i lnk111 -b
./snd -c 10 -i lnk111 -t 3 -l 192.168.214.188 -b 10.210.1.255
Universal Broadcast
./rcv -i lnk111 -b
./snd -c 10 -i lnk111 -t 3 -l 192.168.214.188 -b 255.255.255.255
Kontrola
tcpdump -i <iface> -vvvn
- Správný interface
- Správná IP na obou koncích
Přijímání
- Nastaveno na správný interface
- Přijmutí
- Taková IP odesílatele, kterou jsme nastavili
- Správně rozpoznané rozhraní, na kterém jsme packet přijmuli
- Správná hodnota TTL
- Nastavenona jiný interface
- Nepřijme nic
Výsledky
Linux
Unicast | Multicast | Broadcast | ||
---|---|---|---|---|
IPv4 | Raw | OK | OK | OK |
UDP | ||||
IPv6 | Raw | OK1 | OK1 | - |
UDP |
1) Zdrojová adresa musí být jedna z adres nastavených na daném zařízení, nelze vybrat adresu z jiného zařízení
FreeBSD
Unicast | Multicast | Broadcast | ||
---|---|---|---|---|
IPv4 | Raw | OK2,4,5 | OK | OK2,3,4 |
UDP | OK2,5 | |||
IPv6 | Raw | OK1,2,4,5 | OK1,2 | - |
UDP |
1) Zdrojová adresa musí být jedna z adres nastavených na daném zařízení, nelze vybrat adresu z jiného zařízení.
2) Pakety jsou BIRDem přijímány i na jiných zařízení.
3) Directed broadcast funguje. Universal broadcast lze poslat pomocí IP_ONESBCAST
(directed přepíše na universal)
4) Přijímá multicast bez přihlášení do skupiny.
5) Vyžaduje správné nastavení směrovacích tabulek.
SO_DONTROUTE
umožní odesílání IPv4 Unicast zpráv i při nesprávném nastavení směrovacích tabulek, nicméně při IPv4 Multicastu (Raw/UDP) způsobí chybu Network is unreachable
.
OpenBSD
Unicast | Multicast | Broadcast | ||
---|---|---|---|---|
IPv4 | Raw | OK2,5 | OK | OK2,7 |
UDP | OK2,5,6 | OK6 | OK2,6,7 | |
IPv6 | Raw | OK1,2,5 | OK1 | - |
UDP |
1) Zdrojová adresa musí být jedna z adres nastavených na daném zařízení, nelze vybrat adresu z jiného zařízení.
2) Pakety jsou BIRDem přijímány i na jiných zařízení.
3) Directed broadcast funguje. Universal broadcast lze poslat pomocí IP_ONESBCAST
(directed přepíše na universal)
4) Přijímá multicast bez přihlášení do skupiny.
5) Vyžaduje správné nastavení směrovacích tabulek.
6) Při odesílání nelze nastavit zdrojovou adresou. Chybí IP_SENDSRCADDR
.
7) Universal broadcast se odesílá na systémový výchozí interface. IP_ONESBCAST
na systému neexistuje.
SO_DONTROUTE
vrací chybu Operation not supported
.
NetBSD
Unicast | Multicast | Broadcast | ||
---|---|---|---|---|
IPv4 | Raw | OK2,5 | OK | OK5,7 |
UDP | OK2,5,6 | OK6 | OK5,6,7 | |
IPv6 | Raw | OK1,2,5 | OK1,8 | - |
UDP |
1) Zdrojová adresa musí být jedna z adres nastavených na daném zařízení, nelze vybrat adresu z jiného zařízení.
2) Pakety jsou BIRDem přijímány i na jiných zařízení.
3) Directed broadcast funguje. Universal broadcast lze poslat pomocí IP_ONESBCAST
(directed přepíše na universal)
4) Přijímá multicast bez přihlášení do skupiny.
5) Vyžaduje správné nastavení směrovacích tabulek.
6) Při odesílání nelze nastavit zdrojovou adresou. Chybí IP_SENDSRCADDR
.
7) Universal broadcast se odesílá na systémový výchozí interface. IP_ONESBCAST
na systému neexistuje.
8) TTL nelze nastavit a odesílá TTL 1
SO_DONTROUTE
neumožní odesílání IPv4 Unicast zpráv při nesprávném nastavení směrovacích tabulek a samozřejmě při IPv4 Multicastu (Raw/UDP) způsobí chybu Network is unreachable
.