Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Thử nghiệm mạng theo chuỗi bằng hình ảnh

1. Giới thiệu

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS và lụa là gì?

Chuỗi cuộc trò chuyện là một giao thức mạng lưới không dây công suất thấp dựa trên IP, cho phép giao tiếp giữa các thiết bị và đám mây bảo mật theo thiết bị. Mạng chuỗi có thể thích ứng với các thay đổi về cấu trúc liên kết để tránh một điểm bị lỗi.

OpenThread do Google phát hành là một cách triển khai nguồn mở của Thread. Mặc dù có kích thước mã nhỏ và dung lượng bộ nhớ, nhưng Openthread hỗ trợ tất cả các tính năng được xác định trong Thread Specification.

Bạn có thể dùng Trình mô phỏng mạng mở chuỗi (OTNS) để mô phỏng mạng Thread bằng cách chạy các nút Openthread mô phỏng trên các nền tảng posix. OTNS cung cấp giao diện Web dễ sử dụng (OTNS-Web) để hiển thị và vận hành mạng Chuỗi mô phỏng.

Silk là một nền tảng thử nghiệm hoàn toàn tự động dùng để xác thực chức năng, tính năng và hiệu suất của hệ thống Openthread với các thiết bị thực.

Nội dung bạn sẽ tìm hiểu

  • Khung xác minh chức năng của Openthread: Lụa
  • Xây dựng OpenThread cho các thiết bị thực với tính năng OTNS được bật
  • Sử dụng giao diện OTNS-Web để theo dõi trạng thái của mạng Chuỗi được tạo bằng cách chạy các trường hợp kiểm tra lụa

Lớp học mã này tập trung vào việc sử dụng lụa với OTNS. Các tính năng khác của lụa và OTNS không được cung cấp.

Những gì bạn cần có

Phần cứng:

  • 6 bảng điều khiển dành cho nhà phát triển Bắc Âu Bán tổng hợp nRF52840
  • 6 cáp USB sang Micro-USB để kết nối các bảng
  • bộ chia USB

Phần mềm:

Điều kiện tiên quyết:

2. Điều kiện tiên quyết

Hoàn tất các lớp học lập trình cơ bản trước đây

Đang kiểm tra các điều kiện tiên quyết về gói

Hãy đảm bảo đáp ứng tất cả các điều kiện tiên quyết.

  1. Chạy which otns để kiểm tra xem tệp thực thi otns có thể tìm kiếm được trong $PATH hay không.
  2. Hãy chạy which wpantund để đảm bảo có wpantund.
  3. Đảm bảo tất cả các gói công cụ ARM GNU, J-Link và nrfjprog đều có sẵn.
  4. Đảm bảo bạn có thể tạo tệp nhị phân OpenThread, chạy make -f examples/Makefile-nrf52840 trong thư mục openthread.

Lưu ý: Vui lòng tham khảo tài liệu được liên kết để biết hướng dẫn thiết lập. Điều kiện tiên quyết số 1 là từ Mô phỏng mạng Thread bằng OTNS và các mạng khác là Xây dựng mạng Thread với các bảng nRF52840 và OpenThread.

3. Thiết lập lụa

Để sao chép lụa và thiết lập môi trường, hãy chạy các lệnh sau đây trong thư mục nguồn của bạn:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Xác định tệp cấu hình phần cứng

Để cho phép lụa thu thập các tài nguyên phần cứng thử nghiệm có sẵn kết nối với máy của bạn, hãy xác định tệp hwconfig.ini ở định dạng sau:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Bạn có thể cài đặt công cụ có tên usbinfo là một phần của lụa. Công cụ này có thể dùng để tìm ra Số sê-ri giao diện và Số giao diện USB. DutSerial là số SN được in trên chip hoặc được usbinfo hiển thị cho các sản phẩm J-Link.

Trường LayoutCenterLayoutRadius trong mục [DEFAULT] xác định hình dạng của bố cục khi thiết bị được hiển thị trên giao diện người dùng web. Bạn có thể bắt đầu bằng cách đặt các giá trị này ở những giá trị được trình bày tại đây.

Sau đó, công cụ này xác định một mục cho mỗi thiết bị thử nghiệm và cung cấp thông tin về phần cứng liên quan.

4. Biên dịch OpenThread có bật OTNS

Đang tạo hình ảnh và nhấp nháy

Theo mặc định, các thiết bị OpenThread không phát ra thông báo liên quan đến OTNS. Để cho phép các bảng phát triển phát ra thông báo trạng thái tới nhật ký các giao diện cần thiết cho việc hiển thị OTNS, hãy chạy lệnh sau trong thư mục nguồn Openthread để tạo hình ảnh FTD và chuyển nó sang định dạng hex.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Để nhấp nháy các bảng, hãy làm theo hướng dẫn trong bước 4 của Lớp học lập trình về mạng theo chuỗi để sử dụng nrfjprog. Sau đó, kết nối tất cả các bảng thông qua cổng USB nRF với máy chủ. cùng một bộ cáp USB với Micro-USB có thể được ngắt kết nối khỏi cổng J-Link và kết nối với cổng USB nRF của bảng phát triển nRF52840. Do đó, chỉ cần thực hiện 6 cáp thử nghiệm này. Để tránh rắc rối, hãy sử dụng 12 cáp và kết nối với cả hai cổng.

5. Đang chạy máy chủ OTNS với chế độ thực

Việc chạy OTNS với các thông số mặc định cho phép người dùng mô phỏng mạng Chuỗi. Để sử dụng tính năng này làm công cụ hình ảnh hóa cho một mạng thực tế, hãy chạy công cụ đó với:

otns -raw -real -ot-cli otns-silk-proxy

Các đối số này cho OTNS biết các thông báo gRPC và UDP mô tả cách hình ảnh của mạng Chuỗi cuộc trò chuyện, thay vì chạy nhiều quy trình ot-cli để mô phỏng mạng. Trình duyệt của bạn sẽ tự động mở trang trực quan hóa với một canvas trống.

4dd5b41bf7e71334.png

6. Chạy thử nghiệm lụa trong thời gian có hỗ trợ OTNS

lụa là một nền tảng thử nghiệm hoàn toàn tự động dùng để xác thực chức năng, tính năng và hiệu suất của hệ thống Openthread với thiết bị thực. Hướng dẫn trong dự án README trình bày cách sử dụng thuộc tính này.

Tệp silk_run_test.py nằm tại silk/unit_tests sẽ giúp bạn khởi động. lụa hỗ trợ OTNS khi chạy một trường hợp kiểm tra. Vì dịch vụ chế độ thực OTNS đã chạy cục bộ, nên chúng tôi chỉ cần sửa đổi tệp silk_run_test.py với các vị trí mong muốn cho tệp nhật ký đầu ra, tập lệnh thử nghiệm nhập và tệp hwconfig.ini. Đối số -s localhost cho phép lụa gửi tin nhắn OTNS tới localhost.

Ví dụ: một người có thể chạy thử nghiệm có tên ot_test_form_network.py bằng các tùy chọn sửa đổi sau đây đối với tệp silk_run_test.py. /opt/openthread_test/ là đường dẫn mặc định mà lụa dùng cho đầu ra nhật ký và tệp cấu hình, nhưng bạn có thể dùng bất kỳ đường dẫn nào.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

Hình ảnh cấu trúc liên kết của mạng được hình thành sẽ hiển thị trên giao diện người dùng web OTNS.

ee443b66e0a6620b.png

Góc trên cùng bên trái hiển thị số liệu thống kê trực quan, phiên bản OT và tiêu đề thử nghiệm. Góc dưới cùng bên trái có các tùy chọn điều khiển của cửa sổ nhật ký hiển thị ở bên phải. Ban đầu, các nút được thêm nhưng không có mạng nào được hình thành. Trong quá trình thử nghiệm, chế độ và vai trò của từng nút sẽ thay đổi và các đường liên kết sẽ được hình thành.

5c38e2c72519e620.png

7. Chúc mừng

Xin chúc mừng! Bạn đã chạy thành công một thử nghiệm lụa trên các thiết bị Chuỗi vật lý và hình ảnh hóa nó bằng cách sử dụng OTNS!

Bạn đã thực hiện thử nghiệm lụa bằng cách sử dụng các bảng phát triển được flash với chương trình cơ sở có hỗ trợ OTNS. Các bảng này sẽ báo cáo trạng thái của chúng cho một máy chủ lụa. Máy chủ này sẽ theo dõi và tổng hợp tất cả các tệp này và gửi đến dịch vụ OTNS cùng với các thông tin thử nghiệm khác. OTNS chạy ở chế độ thực trực quan hóa mạng Chuỗi trên giao diện web.

Tiếp theo là gì?

Thử chạy các trường hợp thử nghiệm OpenThread khác có trong gói lụa.

Đọc thêm

Truy cập vào openthread.ioSilk để biết nhiều tài nguyên Openthread.

Tài liệu tham khảo