0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-23 02:01:55 +00:00
bird/socktest/README.md
2016-04-07 10:01:47 +02:00

7.3 KiB

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 <iface> -vvvn
    • Správný interface
    • Správná IP na obou koncích

Přijímání

  1. 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
  2. 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.