הרכבה והגדרה של נתב גבולות

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

המדריך הזה עוסק ביצירה ובהגדרה הבסיסיות של נתב Open Border Router (OTBR). בסיום ההליך הזה, יהיה לכם OTBR שמתפקד כמכשיר עם שרשור מלא (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 עבור רוב הפלטפורמות. בדוגמאות של פלטפורמות ב-GitHub תוכלו למצוא רשימה מלאה של הסימונים כברירת מחדל ב-OTBR. בוחרים את הפלטפורמה שלכם ולוחצים על default, אם היא זמינה.

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

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

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

עריכה והתקנה של OTBR

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

    שימוש באתרנט:

    INFRA_IF_NAME=eth0 ./script/setup
    

    שימוש ב-Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Black – שימוש ב-Network Manager (אופציונלי):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

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

יש לחבר את התקן ה-RCP המהבהב לפלטפורמת נתב הגבול באמצעות USB.

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

ls /dev/tty*

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

cd /etc/default
cat otbr-agent

קובץ התצורה של otbr-agent מכיל את שם ממשק השרשור, את שם האתרנט או את ממשק ה-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", זכרו ללחוץ לחיצה ארוכה על הלחצן אתחול תוך כדי פעולה.

שירות 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 של Thread (ברירת המחדל הוא wpan0) שאליו otbr-agent משויך בעיצוב RCP.

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

disabled

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

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

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

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