diff --git a/socktest/README.md b/socktest/README.md new file mode 100644 index 00000000..63375aff --- /dev/null +++ b/socktest/README.md @@ -0,0 +1,231 @@ +# 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í + +1. Nastaví se na *správný* interface +2. 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 -vvvn` + - Správný interface + - Správná IP na obou koncích + +#### Přijímání +1. + - Přijmutí + - Taková IP odesílatele, kterou jsme nastavili + - Správně rozpoznané rozhraní, na kterém jsme packet přijmuli + - Správná hodnota TTL +2. + - Nepřijme nic + +## Výsledky + +### Linux + + + + + + + + + + + + + + + + + + + + + + + + + +
UnicastMulticastBroadcast +
IPv4RawOKOKOK
UDP
IPv6RawOK1OK1-
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 + + + + + + + + + + + + + + + + + + + + + + + + + +
UnicastMulticastBroadcast +
IPv4RawOK2,4,5OKOK2,3,4
UDPOK2,5
IPv6RawOK1,2,4,5OK1,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 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UnicastMulticastBroadcast +
IPv4RawOK2,5OKOK2,7
UDPOK2,5,6OK6OK2,6,7
IPv6RawOK1,2,5OK1-
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 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UnicastMulticastBroadcast +
IPv4RawOK2,5OKOK5,7
UDPOK2,5,6OK6OK5,6,7
IPv6RawOK1,2,5OK1,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`. +