הפעלת מעגן OTBR

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

כדי לפתוח רשת שרשורים, צריך להשתמש בצומת OpenThread Border OTR (OTBR). OTBR Docker תומך ב-RCP פיזי (דונגל OpenThread) או בהדמיה של RCP.

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

RCP פיזי

משתמשים בכל פלטפורמת OpenThread נתמכת ל-RCP הפיזי. למידע נוסף, עיינו בשלבים בנייה ופלאש של RCP של המדריך לבנייה ותצורה של נתב OpenThread

צירוף ה-RCP

  1. אחרי הבנייה וההבהוב, יש לחבר את מכשיר ה-RCP למכונה שפועלת בו אביזר עגינה ל-OTBR באמצעות USB.
  2. בודקים את שם היציאה הסידורית של מכשיר ה-RCP על ידי בדיקה של /dev:
    ls /dev/tty*
    /dev/ttyACMO
    

הפעלת מאגר התגים של OTBR ב-Dock

בחלון טרמינל חדש, יש להפעיל את OTBR Dock המשמש ליציאה טורית של RCP. לדוגמה, אם RCP מוטען ב-/dev/ttyACM0:

docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0

לאחר שיסתיים בהצלחה, הפלט יהיה דומה לדוגמה הבאה:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyACM0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

OTBR Dock פועל כעת. משאירים את חלון המסוף פתוח ופועל ברקע. אם סוגרים את התהליך או סוגרים את החלון, סרגל ה-OTBR ייפתח.

עבור אל Test Connectivity כדי להמשיך בהגדרת ה-OTBR Dock.

RCP הדמייה

שימוש בסימולציה של RCP בתקן OpenThread להדמיית RCP. האפשרות הזו שימושית אם רוצים לבדוק ניתוב גבולות באמצעות סימולציה של רשת Thread במחשב יחיד.

יצירת הדמיה של אפליקציית RCP

  1. שכפול המאגר של OpenThread:

    cd ~
    git clone https://github.com/openthread/openthread
    

  2. אתחול ובניית האפליקציה המדמה:

    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

הגדרת מקור נתונים דו-כיווני

יש להשתמש בכלי המשימות של שורת הפקודה socat כדי ליצור מקור נתונים דו-כיווני, כדי להעביר נתונים בין ה-RCP המדמה לבין OTBR Dock.

  1. פותחים חלון חדש של המסוף כדי להפעיל את התהליך, מכיוון שיש להשאיר אותו פועל כאשר OTBR Dock פועל.

  2. התקנת האפליקציה socat:

    sudo apt-get install socat
    

  3. התחלה של socat:

    socat -d -d pty,raw,echo=0 pty,raw,echo=0
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/2
    2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/7
    2018/09/06 09:58:29 socat[242994] N starting data transfer loop with FDs [5,5] and [7,7]
    

שימו לב לשתי היציאות הטוריות שמודגשות בפלט. השתמשו בראשון כדי לדמות את RCP ואת השני ב-OTBR Dock. בפלט לדוגמה שלמעלה:

  • /dev/pts/2 = סימולציה של יציאת RCP
  • /dev/pts/7 = מעגן OTBR

יש להשאיר את חלון המסוף פתוח ולפעול ברקע.

התחלת הסימולציה של ה-RCP

  1. פותחים חלון חדש של המסוף כדי להפעיל הדמיה של RCP, מכיוון שיש להשאיר אותו פועל בזמן ש-OTBR Dock פועל.

  2. באמצעות היציאה הסידורית הראשונה בפלט ה-socat, מפעילים את הסימולציה של אפליקציית ה-RCP. לדוגמה, אם משתמשים בפלט /dev/pts/2 מהפלט socat:

    ~/openthread/output/simulation/bin/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

אין פלט מפקודה זו. יש להשאיר את חלון המסוף פתוח ופועל ברקע.

הפעלת מאגר התגים של OTBR ב-Dock

בחלון טרמינל חדש, מפעילים את OTBR דוקר, באמצעות היציאה הטורית השנייה בפלט socat. לדוגמה, אם משתמשים ב-/dev/pts/7 מהפלט socat:

docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/pts/7:/dev/ttyUSB0 --privileged openthread/otbr

שימו לב שהפקודה משתמשת גם ביציאת /dev/ttyUSB0. זוהי נקודת הטעינה הברירת מחדל בתוך מאגר התגים.

לאחר שיסתיים בהצלחה, הפלט יהיה דומה לדוגמה הבאה:

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers.
RADIO_URL: spinel+hdlc+uart:///dev/ttyUSB0
TUN_INTERFACE_NAME: wpan0
NAT64_PREFIX: 64:ff9b::/96
AUTO_PREFIX_ROUTE: true
AUTO_PREFIX_SLAAC: true
Current platform is ubuntu
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /etc/sysctl.d/60-otbr-ip-forward.conf ...
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
* Applying /etc/sysctl.conf ...
 * Starting userspace NAT64 tayga             [ OK ]
/usr/sbin/service
 * Starting domain name service... bind9      [ OK ]
/usr/sbin/service
 * dbus is not running
 * Starting system message bus dbus           [ OK ]
   ...fail!
otWeb[155]: border router web started on wpan0
otbr-agent[224]: Thread interface wpan0
otbr-agent[224]: Thread is down
otbr-agent[224]: Check if Thread is up: OK
otbr-agent[224]: Stop publishing service
otbr-agent[224]: PSKc is not initialized
otbr-agent[224]: Check if PSKc is initialized: OK
otbr-agent[224]: Initialize OpenThread Border Router Agent: OK
otbr-agent[224]: Border router agent started.

OTBR Dock פועל כעת. משאירים את חלון המסוף פתוח ופועל ברקע. אם סוגרים את התהליך או סוגרים את החלון, סרגל ה-OTBR ייפתח.