הגדרה ותצורה של נתב גבול פתוח

הצגת המקור ב-GitHub

המדריך הזה עוסק בבנייה ובתצורה הבסיסיות של נתב גבול OpenThread (OTBR). לאחר השלמת ההליך הזה, יהיה לכם OTBR שמשמש כמכשיר Thread מלא (FTD) בעיצוב RCP.

הגדרת הפלטפורמה

הגדרת פלטפורמת חומרה נתמכת:

יצירת RCP ופלאש

OTBR פועל על עיצוב RCP. יש לבחור פלטפורמת OpenThread נתמכת שתשמש כ-RCP ולפעול לפי ההוראות של הבניין וההבהוב.

לסקירה כללית על בניית OpenThread, יש לעיין במדריך הבנייה.

הוראות ספציפיות ליצירת פלטפורמות נתמכות באמצעות GNU Autotools מופיעות בתיקיית הפלטפורמות של כל דוגמה.

התקנת OTBR

OTBR מתקשר עם ה-RCP דרך ספינל. כדי להתקין את OTBR בפלטפורמת החומרה, יש לבצע את השלבים הבאים.

שכפול המאגר OTBR:

git clone https://github.com/openthread/ot-br-posix

התקנת יחסי תלות

הגדרת ברירת המחדל מאפשרת את BORDER_ROUTING לרוב הפלטפורמות. לקבלת רשימה מלאה של סימוני ברירת מחדל ב-OTBR, יש לעיין בדוגמאות לפלטפורמות ב-GitHub. בוחרים את הפלטפורמה הרצויה ולוחצים על default, אם היא זמינה.

  • ברירת מחדל לשימוש:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black עם מנהל הרשת (אופציונלי):

    cd ot-br-posix
    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
    

הידור והתקנת OTBR

  • ברירת מחדל של שימוש. סקריפט ההגדרה מפעיל 'ניתוב גבול' כברירת מחדל. כדי להפעיל ניתוב גבול, ציין את ממשק האתרנט או ה-Wi-Fi של הפלטפורמה:

    שימוש ב-Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    השתמש ב-Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Black. שימוש במנהל הרשת (אופציונלי):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

צירוף והגדרה של מכשיר RCP

מחברים את התקן ה-RCP המהבהב אל פלטפורמת Border Router דרך ה-USB.

כדי להגדיר את היציאה הסידורית של מכשיר ה-RCP ב-otbr-agent, ראשית קבע את שם היציאה הטורית עבור מכשיר ה-RCP על-ידי סימון /dev:

ls /dev/tty*

לאחר מכן, יש לבדוק את הגדרות otbr-agent.

cd /etc/default
cat otbr-agent

קובץ התצורה של otbr-agent מכיל את שם הממשק של Thread, את שם הממשק של Ethernet או Wi-Fi ואת שם היציאה הסידורית של RCP.

OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"

לא כל המכשירים מחוברים לאותו שם יציאה טורית. שמות היציאות הנפוצים ביותר הם ttyACM* ו-ttyUSB*. יש לעיין בתיעוד של המכשיר כדי לאתר את השם הצפוי של יציאה טורית.

אם יש צורך, מעדכנים את קובץ התצורה otbr-agent. לדוגמה, עבור ממשק Wi-Fi ושם יציאה טורי של ttyUSB0:

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"

כדי לעדכן ממשק אתרנט:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"

הפעל מחדש את נתב הגבול. אם אתם משתמשים בפלטפורמת BeagleBone Black, זכרולחיצה ארוכה על לחצן ה-BOOT בזמן שהם עושים זאת.

שירות ה-OTBR אמור להתחיל באתחול.

אימות השירותים

צריך לוודא שכל השירותים הנדרשים מופעלים:

sudo systemctl status

אם הסקריפט setup בוצע בהצלחה, השירותים הבאים יופיעו בפלט:

  • mdns.service
  • otbr-agent.service
  • otbr-web.service

למשל:

● raspberrypi
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Thu 1970-01-01 00:00:01 UTC; 47 years 7 months ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─user@1000.service
           │   │ └─init.scope
           │   │   ├─576 /lib/systemd/systemd --user
           │   │   └─580 (sd-pam)
           │   └─session-c1.scope
           │     ├─480 /bin/login --
           │     └─585 -bash
           ├─init.scope
           │ └─1 /sbin/init
           └─system.slice
             ├─systemd-timesyncd.service
             │ └─334 /lib/systemd/systemd-timesyncd
             ├─dbus.service
             │ └─339 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
             ├─hciuart.service
             │ └─442 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow -
             ├─ssh.service
             │ └─621 /usr/sbin/sshd -D
             ├─avahi-daemon.service
             │ ├─341 avahi-daemon: running [raspberrypi.local]
             │ └─361 avahi-daemon: chroot helper
  # enabled  ├─otbr-web.service
             │ └─472 /usr/sbin/otbr-web
             ├─triggerhappy.service
             │ └─354 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
             ├─systemd-logind.service
             │ └─353 /lib/systemd/systemd-logind
  # enabled  ├─otbr-agent.service
             │ └─501 /usr/sbin/otbr-agent -I wpan0
             ├─cron.service
             │ └─350 /usr/sbin/cron -f
             ├─systemd-udevd.service
             │ └─154 /lib/systemd/systemd-udevd
             ├─rsyslog.service
             │ └─345 /usr/sbin/rsyslogd -n
             ├─bluetooth.service
             │ └─445 /usr/lib/bluetooth/bluetoothd
  # enabled  ├─mdns.service
             │ └─725 /usr/sbin/mdnsd
             ├─systemd-journald.service
             │ └─136 /lib/systemd/systemd-journald
             └─dhcpcd.service
               ├─409 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
               └─466 /sbin/dhcpcd -q -w

אם השירותים האלה פועלים, אבל ה-RPi נמצא במצב ירידה, ייתכן שחלק מהשירותים האחרים לא יתחילו לפעול. צריך לבדוק את הנקודות הבאות:

sudo systemctl --failed

ניתן גם לבדוק כל שירות בנפרד:

sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status

otbr-web מופעל כברירת מחדל ברוב הפלטפורמות. אם otbr-web לא מותקן, יש לנסות להעביר את הדגל WEB_GUI:

WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup

אימות RCP

מוודאים שה-RCP נמצא במצב הנכון:

sudo ot-ctl state

ot-ctl הוא שירות שורת פקודה המסופק באמצעות OTBR. הוא משמש לתקשורת עם ממשק שרשור ה-PAN (ברירת המחדל היא wpan0) שה-otbr-agent קשור אליו בעיצוב ה-RCP.

אם ה-RCP פועל בהצלחה והצומת אינו חבר ברשת Thread, הפלט צריך להיות דומה לדוגמה הבאה:

disabled

אם הפלט הוא OpenThread daemon is not running, יש לפתור את הבעיות הבאות:

  1. יש לוודא שנתב הגבול מכיל מתח מספיק (יש להשתמש במתאם AC המתאים).
  2. מנתקים את לוח ה-RCP ומחברים אותו מחדש לפלטפורמת Border Router.
  3. מוודאים שההתקן הסידורי של ה-RCP קיים. לדוגמה, אם המכשיר צריך להיות מוצמד אל /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. אפס את ה-RCP עם sudo ot-ctl reset.

יש לבדוק שוב את סטטוס ה-RCP עם sudo ot-ctl state.