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.

Mô phỏng mạng chuỗi cuộc trò chuyện bằng cách sử dụng OTNS

1. Giới thiệu

5abd22afa2f2ee9a.png

Chuỗi cuộc trò chuyện và OTNS 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.

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

  • Cài đặt OTNS và các phần phụ thuộc
  • Tạo OpenOpen dành cho OTNS
  • Cách thêm/di chuyển/xóa nút trong OTNS-Web
  • Sử dụng các tính năng hữu ích khác của OTNS-Web để vận hành hoạt động mô phỏng mạng
  • Xác minh xem người dùng không đạt điểm lỗi duy nhất trong OpenThread

Lớp học mã này tập trung vào OTNS-CLI và OTNS-Web. Các tính năng khác của OTNS, chẳng hạn như tập lệnh Python, sẽ không được đề cập.

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

  • Linux x86_64 hoặc Mac OS.
  • Git.
  • Truy cập vào phiên bản 1.11+.
  • Trình duyệt web. OTNS-Web sử dụng trình duyệt web để hiển thị trình mô phỏng.
  • Tạo chuỗi. Bạn cần phải biết những khái niệm cơ bản về Chuỗi để hiểu nội dung giảng dạy trong Lớp học lập trình này.

2. Lắp đặt

Cài đặt Go

OTNS yêu cầu Go 1.11+ để tạo.

  1. Cài đặt Go Go từ https://golang.org/dl/
  2. Thêm $(go env GOPATH)/bin (thường là $HOME/go/bin) vào $PATH:
$ export PATH=$PATH:$(go env GOPATH)/bin

Nhận mã OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

Cài đặt phần phụ thuộc

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Bạn có thể được yêu cầu nhập mật khẩu cho sudo.

Cài đặt nâng cấp

Cài đặt otns thành $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Hãy kiểm tra xem otns đã được cài đặt đúng cách hay chưa

  1. Chạy which otns để kiểm tra xem có thể tìm kiếm thực thi otns trong $PATH. hay không
  2. Nếu không tìm thấy lệnh otns, hãy xác minh rằng bạn đã thêm $(go env GOPATH)/bin vào $PATH.

3. Tạo OpenOpen dành cho OTNS

Nhận mã OpenThread từ GitHub

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Xây dựng chuỗi mở với OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Bạn có thể tìm các tệp thực thi OpenThread trong thư mục output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Bây giờ là lúc chạy OTNS...

4. Chạy OTNS

Chạy otns:

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Khi bắt đầu thành công, OTNS sẽ vào bảng điều khiển CLI (OTNS-CLI) và chạy trình duyệt web để quản lý và hình ảnh hóa mạng (OTNS-Web):

a0e05178d66929b1.png

Nếu bạn chỉ có thể thấy một trang trống cho OTNS-Web, thì có thể WebGL không được bật trong trình duyệt của bạn. Vui lòng tham khảohttps://superuser.com/a/836833 về cách bật WebGL.

Trong các phần sau, bạn sẽ tìm hiểu cách quản lý hoạt động mô phỏng OTNS thông qua OTNS-CLIOTNS-Web.

5. Tìm hiểu về OTNS-CLI và OTNS-Web

Bầu hút gió hút khí lạnh

OTNS-CLI cung cấp Giao diện dòng lệnh (CLI) để quản lý hoạt động mô phỏng OTNS.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Bạn có thể nhập các lệnh qua OTNS-CLI. Hãy tham khảo tài liệu tham khảo về CLI cho OTNS để biết danh sách đầy đủ các lệnh. Đừng lo lắng, bạn sẽ chỉ sử dụng một vài lệnh trong số này trong Lớp học lập trình.

OTNS-Web

OTNS-Web là công cụ quản lý và trực quan hóa mạng của OTNS. Tệp này cung cấp thông tin bằng hình ảnh về các nút, thông báo và đường liên kết của mạng Chuỗi mô phỏng. Hãy lưu ý các thành phần của OTNS-Web:

4c5b43509a2ca0d0.png

6. Thêm nút

Thêm nút thông qua OTNS-CLI

Thêm bộ định tuyến ở vị trí (300, 100)

> add router x 300 y 100
1
Done

Bạn sẽ thấy một nút được tạo trong OTNS-Web. Nút này sẽ bắt đầu là một bộ định tuyến và trở thành người dẫn đầu trong một vài giây:

6ca8c2e63ed9818d.png

Thêm các nút khác thông qua OTNS-CLI

> add fed x 200 y 100
2
Done
> add med x 400 y 100
3
Done
> add sed x 300 y 200
4
Done

Đợi vài giây để các nút hợp nhất vào một phân vùng. Bạn sẽ thấy các nút trong OTNS-WEB:

3ee67903c01aa612.png

Thêm nút theo OTNS-Web

Bạn cũng có thể thêm nút thông qua OTNS-Web. Nhấp vào nút New Router của Action Bar. Bạn sẽ thấy một nút được tạo ngay phía trên nút New Router. Kéo nút ở gần Người đứng đầu mà bạn đã tạo thông qua OTNS-CLI. Tất cả các nút cuối cùng phải hợp nhất vào một phân vùng:

420258bb92561146.png

Đồng thời, nhấp vào các nút FED, MED và SED trên Thanh tác vụ để tạo các loại nút khác. Kéo các vị trí đó đến các vị trí gần nút hiện có để đính kèm vào Mạng chuỗi đó:

fe15d6f9726a099e.png

Hiện tại, bạn đã tạo một mạng Chuỗi của một phân vùng có chứa nhiều nút. Trong phần tiếp theo, chúng tôi sẽ điều chỉnh tốc độ mô phỏng để mô phỏng hoạt động nhanh hơn.

7. Điều chỉnh tốc độ

Hiện tại, hoạt động mô phỏng nên chạy ở tốc độ 1X, có nghĩa là thời gian mô phỏng cho đến thời điểm này giống với thời gian thực tế kể từ khi chúng tôi tạo nút đầu tiên.

Điều chỉnh tốc độ qua OTNS-CLI

Bạn có thể điều chỉnh tốc độ mô phỏng thông qua OTNS-CLI.

Đặt tốc độ mô phỏng thành 100X

> speed 100
Done

Bạn sẽ thấy các nút gửi thông báo thường xuyên hơn nhiều so với trước đây.

Đặt tốc độ mô phỏng thành MAX

> speed max
Done

Hiện tại, OTNS đang cố gắng mô phỏng nhanh nhất có thể, vì vậy, bạn sẽ thấy các nút gửi một số lượng thư lớn.

Tạm dừng mô phỏng

> speed 0
Done

Việc đặt tốc độ mô phỏng thành 0 sẽ tạm dừng hoạt động mô phỏng.

Khôi phục hoạt động mô phỏng ở tốc độ bình thường

> speed 1
Done

Việc đặt tốc độ mô phỏng thành giá trị lớn hơn 0 sẽ tiếp tục quá trình mô phỏng.

Điều chỉnh tốc độ qua OTNS-Web

Nút kiểm soát tốc độ

Tìm các nút điều khiển tốc độ 9329157c19662.png trên Action Bar. Các nút này hiển thị tốc độ mô phỏng hiện tại và có thể dùng để điều chỉnh tốc độ mô phỏng và tạm dừng/tiếp tục mô phỏng.

Mô phỏng tăng tốc

Bạn có thể tăng tốc độ mô phỏng bằng cách nhấp vào nút 39b88331779277ad.png cho đến khi tốc độ đạt đến MAX: f5f460b2586d299b.png.

Mô phỏng giảm tốc độ

Bạn có thể làm chậm việc mô phỏng bằng cách nhấp vào nút 31cca8d5b52fa900.png.

Tạm dừng mô phỏng

Nhấp vào nút 46cc2088c9aa7ab6.png để tạm dừng hoạt động mô phỏng khi đang chạy. Nút này sẽ đổi thành ce25eda3496ffcd4.png.

Tiếp tục mô phỏng

Nhấp vào nút ce25eda3496ffcd4.png để tiếp tục quá trình mô phỏng khi tính năng này bị tạm dừng. Nút này sẽ được đổi lại thành 46cc2088c9aa7ab6.png.

Đặt tốc độ mô phỏng thành 10X

Để tiết kiệm thời gian, hãy sử dụng

OTNS-CLI điều chỉnh tốc độ mô phỏng thành

10X để chúng tôi có thể quan sát các thay đổi về cấu trúc liên kết trong mạng nhanh hơn nhiều.

> speed 10
Done

8. Bật/tắt đài

Hiện tại, hoạt động mô phỏng phải chứa 2 Bộ định tuyến (hình lục giác) và nhiều bộ lọc, đồng thời chạy ở tốc độ gấp 10 lần.

Tìm Trưởng nhóm hiện tại (đường viền đỏ) của 2 tuyến đường, chỉ cần nhấp một lần để chọn:

8c6a2e191cdae0c7.png

Tắt radio

Nhấp vào nút 7ca085f470491dd4.png trên Thanh hành động để tắt đài của nút Lãnh đạo:

a3bf58d9d125f95f.png

Trưởng nhóm sẽ không thể gửi hoặc nhận tin nhắn khi bạn tắt đài.

Đợi khoảng 12 giây (120 giây trong thời gian mô phỏng) để Bộ định tuyến khác trở thành Trưởng nhóm mới:

e3d32f85c4a1b990.png

Mạng Chuỗi tự động khôi phục từ lỗi Lãnh đạo bằng cách tạo một phân vùng mới có hàng chính mới. Phân vùng mới cũng có màu phân vùng mới.

Bật radio

Chọn Trưởng nhóm có đài phát thanh đang tắt. Nhấp vào nút 2d9cecb8612b42aa.png trên Action Bar để khôi phục khả năng kết nối radio:

7370a7841861aa3a.png

Trưởng nhóm phải kết nối lại với mạng sau khi kết nối mạng vô tuyến được khôi phục.

9. Di chuyển nút

OTNS cho phép người dùng dễ dàng di chuyển các nút qua OTNS-CLI hoặc OTNS-Web.

Di chuyển nút qua OTNS-CLI

Di chuyển nút 5 đến vị trí mới:

> move 5 600 300
Done

Vì nút 5 lúc này cách xa Bộ định tuyến khác nên họ sẽ mất kết nối với nhau và sau khoảng 12 giây (120 giây theo thời gian mô phỏng), cả hai đều trở thành Lãnh đạo trong phân vùng của riêng họ:

c06b4d0a4f183299.png

Di chuyển nút thông qua OTNS-Web

Di chuyển nút 5 về vị trí ban đầu bằng cách kéo. Hai phân vùng phải hợp nhất lại thành một phân vùng:

9ba305c4c5a5f892.png

10. Xóa nút

Xóa các nút qua OTNS-CLI

Xóa nút 8:

> del 8
Done

Nút 8 sẽ biến mất khỏi hoạt động mô phỏng:

18156770d9f8bf83.png

Xóa các nút qua OTNS-Web

Chọn nút 5 và nhấp vào nút 7ff6afd565f4ewiki.png trên Action Bar để xóa nút 5:

d4079successea0105f0.png

Node 1 phải trở thành Người đứng đầu và Node 7 phải tách ra vì không thể kết nối với bất kỳ Bộ định tuyến nào.

Mô phỏng rõ ràng (xóa tất cả các nút)

Bạn có thể xóa hoạt động mô phỏng bằng cách xóa tất cả các nút thông qua OTNS-Web.

Nhấp vào nút 89618191721e79a0.png trên Action Bar. Tất cả các nút sẽ biến mất cùng một lúc.

Trước khi tiếp tục...

Hãy tự thêm một số nút vào hoạt động mô phỏng để bạn có thể tiếp tục làm theo hướng dẫn này.

11. Ngữ cảnh nút OTNS-CLI

OTNS-CLI cung cấp chế độ ngữ cảnh nút để dễ dàng tương tác với các nút nhằm giúp nhà phát triển chẩn đoán trạng thái của một nút.

Vào chế độ ngữ cảnh nút

Nhập ngữ cảnh nút của nút 1:

> node 1
Done
node 1>

Lời nhắc CLI đã thay đổi thành node 1> , cho biết ngữ cảnh nút hiện tại. Bạn có thể nhập lệnh CLI trong chuỗi mở để được thực thi trên nút như thể bạn đang tương tác trực tiếp với nút.

Thực thi các lệnh trong ngữ cảnh nút

node 1> state
leader
Done
node 1> channel
11
Done
node 1> panid
0xface
Done
node 1> networkname
OpenThread
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:d800
fdde:ad00:beef:0:2175:8a67:1000:6352
fe80:0:0:0:2075:82c2:e9e9:781d
Done

Chuyển sang một ngữ cảnh nút khác

node 1> node 2
Done
node 2> 

Thoát khỏi ngữ cảnh nút

node 1> exit
Done
>

12. Chúc mừng

Xin chúc mừng, bạn đã thực hiện thành công việc mô phỏng OTNS đầu tiên của mình!

Bạn đã tìm hiểu cách cài đặt OTNS và các phần phụ thuộc của OTNS đó. Bạn đã tạo Openthread cho OTNS và bắt đầu mô phỏng OTNS với các phiên bản mô phỏng OpenThread. Bạn đã tìm hiểu cách thao tác khi mô phỏng theo nhiều cách thông qua cả OTNS-CLIOTNS-Web.

Giờ đây, bạn đã biết OTNS là gì và cách sử dụng OTNS để mô phỏng mạng Openthread.

Tiếp theo là gì?

Hãy xem một số lớp học lập trình này...

Tài liệu tham khảo