Thử nghiệm chức năng UDP bằng CLI OT

Xem nguồn trên GitHub

OpenThread cung cấp các lệnh UDP để dùng với mạng Thread nhằm kiểm thử kết nối ngang hàng giao tiếp giữa các cổng UDP. cli udp cung cấp một ổ cắm mẫu với mà tất cả lệnh udp đều tương tác.

Các ví dụ sau đây minh hoạ cách mở và liên kết ổ cắm, cách kết nối ổ cắm và cách gửi thông báo bằng cổng UDP.

Lệnh UDP

Để xem danh sách các lệnh udp, hãy nhập help:

udp help
bind
close
connect
linksecurity
open
send
Done

Lệnh open

Dùng lệnh udp open để mở ổ cắm nhằm bắt đầu giao tiếp UDP. Sau đó, bạn có tuỳ chọn để liên kết ổ cắm với một địa chỉ IP và cổng cụ thể.

Lệnh bind

Sau khi open ổ cắm, bạn có thể chạy lệnh udp bind để chỉ định một địa chỉ IPv6 và một cổng đến ổ cắm đang mở. Thao tác này sẽ liên kết với ổ cắm để giao tiếp. Chỉ định Cổng và địa chỉ IPv6 cũng được gọi là đặt tên cho ổ cắm. Nếu bạn không trực tiếp bind ổ cắm, kết nối với ổ cắm (udp connect) hoặc dùng ổ cắm trong lệnh udp send liên kết ổ cắm với một cổng tạm thời.

Lệnh connect

Bạn có thể dùng lệnh udp connect để kết nối ổ cắm mẫu với một địa chỉ ổ cắm ngang hàng. Sau đó, bạn có thể phát lệnh udp send để gửi tin nhắn cho ứng dụng ngang hàng. Nếu ổ cắm chưa bị ràng buộc, việc tạo lệnh udp connect cũng sẽ liên kết với socket.

Lệnh send

Lệnh udp send gửi một thông báo bằng ổ cắm mẫu đến một đích đến có địa chỉ IP và cổng UDP có thể được chỉ định bằng các biến lệnh. Nếu địa chỉ IP và cổng không được chỉ định trong Lệnh udp send, tin nhắn sẽ được gửi bằng ổ cắm mẫu vào đích đến được chỉ định trong lệnh udp connect. Việc phát lệnh udp send sẽ liên kết ổ cắm với một cổng tạm thời nếu ổ cắm chưa được ràng buộc.

Lệnh close

Bạn nên dùng lệnh udp close để đóng ổ cắm khi ổ cắm không còn cần thiết nữa.

Lệnh linksecurity

Bạn có thể dùng lệnh udp linksecurity để bật hoặc tắt tính năng bảo mật lớp đường liên kết dữ liệu cho thư.

Gửi thông báo giữa hai nút

  1. Trên Nút 1, hãy mở cổng UDP.

    udp open
    Done
    
  2. Trên Nút 1, hãy liên kết ổ cắm.

    udp bind :: 1234
    Done
    

    Việc sử dụng :: cho biết bind nên dùng địa chỉ IPv6 không xác định, do đó, ngăn xếp UDP/IPv6 chỉ định địa chỉ IPv6 liên kết. Để hoàn tất các tuỳ chọn có udp bind, chẳng hạn như liên kết với một giao diện mạng, tham chiếu đến liên kết udp.

1 Trên Nút 2, mở cổng UDP.

udp open
   Done
   

  1. Trên Nút 2, hãy gửi một thông báo đơn giản đến Nút 1.

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

    Lệnh này giả định rằng Nút 2 đã khám phá ra địa chỉ của Nút 1. Ngoài ra, trong ví dụ này, quản trị viên của Nút 2 đã chọn không ràng buộc ổ cắm. Điều này là do quản trị viên Nút 2 muốn gửi một thông báo đến Nút 1 mà không quan tâm đến địa chỉ IP và cổng nào của nút đó đang được sử dụng làm nguồn Nút 2. Ổ cắm sẽ chọn ngẫu nhiên một địa chỉ IP và cổng trong trường hợp này.

    Để xem các lựa chọn đầy đủ với udp send, hãy tham khảo gửi udp.

  2. Nút 1 xác nhận việc nhận được thông báo từ Nút 2:

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

Kết nối ổ cắm với địa chỉ ổ cắm ngang hàng, rồi gửi một thông báo giữa 2 nút

Ví dụ này tương tự như ví dụ trước, nhưng thể hiện được một số tính linh hoạt mà bạn có khi sử dụng cổng UDP. Với phương pháp này, trước tiên bạn kết nối ổ cắm với địa chỉ cổng ngang hàng, thì bạn không cần chỉ định địa chỉ IP và cổng ngang hàng mỗi khi bạn thực hiện udp send.

  1. Trên Nút 1, hãy mở cổng UDP.

    udp open
    Done
    
  2. Trên Nút 1, hãy liên kết ổ cắm.

    udp bind :: 1234
    Done
    
  3. Trên Nút 2, hãy mở cổng UDP.

    udp open
    Done
    
  4. Trên Nút 2, hãy sử dụng lệnh udp connect để mở giao tiếp với Nút 1.

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

    Để xem các lựa chọn đầy đủ với udp connect, hãy tham khảo kết nối udp

  5. Trên Nút 2, hãy sử dụng lệnh udp send để gửi thông báo đến Nút 1, nhưng không chỉ định ipport trong cú pháp lệnh udp send.

    udp send hello
    Done
    

    Khi không chỉ định ipport, lệnh udp send sẽ sử dụng ipport đã được chỉ định trong lệnh udp connect.