Testowanie funkcji UDP za pomocą interfejsu OT CLI

Wyświetl źródło na GitHubie

OpenThread udostępnia polecenia UDP, których można używać w sieci Thread do testowania komunikacji peer-to-peer między gniazdami UDP. cli udp udostępnia jedno przykładowe gniazdo, z którym współdziałają wszystkie polecenia udp.

Poniższe przykłady pokazują, jak otworzyć i wiązać gniazda, jak podłączyć gniazdo i jak wysyłać wiadomości za pomocą gniazd UDP.

Polecenia UDP

Aby wyświetlić listę poleceń udp, wpisz help:

udp help
bind
close
connect
linksecurity
open
send
Done

Polecenie open

Otwórz gniazdo za pomocą polecenia udp open, aby rozpocząć komunikację UDP. Następnie możesz powiązać gniazdo z określonym adresem IP i portem.

Polecenie bind

Po open gniazda możesz uruchomić polecenie udp bind, aby przypisać adres IPv6 i port do otwartego gniazda. Łączy to gniazdo do komunikacji. Przypisanie adresu i portu IPv6 jest też nazywane nadaniem nazwy gniazdu. Jeśli nie użyjesz gniazda bind bezpośrednio, podłączenie go (udp connect) lub użycie go w poleceniu udp send spowoduje powiązanie gniazda z portem efemerycznym.

Polecenie connect

Polecenie udp connect może posłużyć do podłączenia przykładowego gniazda do adresu gniazda równorzędnego. Następnie możesz uruchomić polecenie udp send, aby wysłać wiadomość do połączenia równorzędnego. Jeśli gniazdo nie jest jeszcze powiązane, uruchomienie polecenia udp connect powoduje też powiązanie go.

Polecenie send

Polecenie udp send wysyła wiadomość korzystającą z przykładowego gniazda do miejsca docelowego, którego adres IP i port UDP można określić za pomocą zmiennych polecenia. Jeśli adres IP ani port nie są określone w poleceniu udp send, wiadomość zostanie wysłana za pomocą przykładowego gniazda do miejsca docelowego określonego w poleceniu udp connect. Wykonanie polecenia udp send wiąże gniazdo z portem tymczasowym, jeśli nie zostało ono jeszcze powiązane.

Polecenie close

Gdy gniazdo nie jest już potrzebne, zalecamy zamknięcie gniazda za pomocą polecenia udp close.

Polecenie linksecurity

Polecenie udp linksecurity może służyć do włączania i wyłączania zabezpieczeń warstwy połączenia danych dla wiadomości.

Wyślij wiadomość między 2 węzłami

  1. W węźle 1 otwórz gniazdo UDP.

    udp open
    Done
    
  2. Połącz gniazdo w węźle 1.

    udp bind :: 1234
    Done
    

    Zastosowanie :: oznacza, że bind powinien używać nieokreślonego adresu IPv6, ponieważ to przez stos UDP/IPv6 przypisuje wiążący adres IPv6. Pełną listę opcji udp bind, takich jak wiązanie z interfejsem sieciowym, znajdziesz w dokumentacji udp bind.

1. W węźle 2 otwórz gniazdo UDP.

udp open
   Done
   

  1. W węźle 2 wyślij prostą wiadomość do węzła 1.

    udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
    Done
    

    W tym poleceniu założono, że węzeł 2 wykrył już adres węzła 1. Poza tym w tym przykładzie administrator węzła 2 zdecydował się nie powiązać gniazda. Dzieje się tak, ponieważ administrator węzła 2 chce wysłać wiadomość do węzła 1, nie wiedząc, które z jego adresów IP i portów będą używane jako źródło węzła 2. W tym scenariuszu gniazdo wybiera adres IP i port jest losowo.

    Pełną listę opcji udp send znajdziesz w artykule o wysyłaniu udp.

  2. Węzeł 1 potwierdza odbiór wiadomości z węzła 2:

    5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
    

Połącz gniazdo z adresem gniazda peera, a następnie wyślij komunikat między 2 węzłami

Ten przykład jest podobny do poprzedniego, ale pokazuje pewne elastyczność, jaką umożliwia korzystanie z gniazd UDP. W ramach tej metody najpierw musisz połączyć gniazdo z adresem gniazda równorzędnego, nie musisz później określać adresu IP ani portu peera za każdym razem, gdy wykonujesz udp send.

  1. W węźle 1 otwórz gniazdo UDP.

    udp open
    Done
    
  2. Połącz gniazdo w węźle 1.

    udp bind :: 1234
    Done
    
  3. W węźle 2 otwórz gniazdo UDP.

    udp open
    Done
    
  4. W węźle 2 użyj polecenia udp connect, aby otworzyć komunikację z węzłem 1.

    udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
    Done
    

    Pełne opcje związane z udp connect znajdziesz na stronie udp connect

  5. W węźle 2 użyj polecenia udp send, aby wysłać wiadomość do węzła 1, ale nie podawaj ip ani port w składni poleceń udp send.

    udp send hello
    Done
    

    Jeśli nie podasz ip ani port, polecenie udp send użyje elementów ip i port określonych w poleceniu udp connect.