روتر مرزی OpenThread (OTBR) به گره Thread RCP برای پیوستن به شبکه Thread نیاز دارد. OTBR Docker هم از یک RCP فیزیکی (دانگل OpenThread) یا یک RCP شبیه سازی شده پشتیبانی می کند.
اگر میخواهید OTBR Docker را به سایر دستگاههای Thread فیزیکی متصل کنید، از یک RCP فیزیکی استفاده کنید. اگر می خواهید مسیریابی مرز را با یک شبکه Thread شبیه سازی شده آزمایش کنید، از یک RCP شبیه سازی شده استفاده کنید.
RCP فیزیکی
از هر پلتفرم OpenThread پشتیبانی شده برای RCP فیزیکی استفاده کنید. برای اطلاعات بیشتر به مرحله ساخت و فلش RCP از راهنمای ساخت و پیکربندی روتر OpenThread Border مراجعه کنید.
RCP را وصل کنید
- پس از ساخت و فلش، دستگاه RCP را از طریق USB به دستگاهی که OTBR Docker را اجرا می کند وصل کنید.
- نام پورت سریال دستگاه RCP را با علامت زدن
/dev
تعیین کنید:ls /dev/tty*
/dev/ttyACMO
ظرف OTBR Docker را راه اندازی کنید
در یک پنجره ترمینال جدید، OTBR Docker را با ارجاع به پورت سریال 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 Docker اکنون در حال اجرا است. این پنجره ترمینال را باز بگذارید و در پس زمینه اجرا شود. اگر فرآیند را ترک کنید یا پنجره را ببندید، OTBR Docker پایین میرود.
برای ادامه راهاندازی OTBR Docker به Test Connectivity بروید.
RCP شبیه سازی شده
از یک ساخت OpenThread RCP شبیه سازی شده برای RCP شبیه سازی شده استفاده کنید. اگر می خواهید مسیریابی مرز را با شبکه Thread شبیه سازی شده روی یک ماشین آزمایش کنید، مفید است.
برنامه RCP شبیه سازی شده را بسازید
مخزن OpenThread را کلون کنید:
cd ~
git clone https://github.com/openthread/openthread
برنامه شبیه سازی شده را بوت استرپ کنید و بسازید:
cd openthread
./script/bootstrap
./script/cmake-build simulation
یک جریان داده دو طرفه راه اندازی کنید
از ابزار خط فرمان socat
برای ایجاد یک جریان داده دو طرفه برای انتقال داده ها بین RCP شبیه سازی شده و OTBR Docker استفاده کنید.
یک پنجره ترمینال جدید برای اجرای این فرآیند باز کنید، زیرا باید در حین اجرای OTBR Docker در حال اجرا باقی بماند.
نصب
socat
:sudo apt-get install socat
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 Docker استفاده کنید. در خروجی مثال بالا:
-
/dev/pts/2
= پورت RCP شبیه سازی شده -
/dev/pts/7
= OTBR Docker
این پنجره ترمینال را باز بگذارید و در پس زمینه اجرا شود.
RCP شبیه سازی شده را شروع کنید
یک پنجره ترمینال جدید برای اجرای RCP شبیه سازی شده باز کنید، زیرا باید در حین اجرای OTBR Docker در حال اجرا باقی بماند.
با استفاده از اولین پورت سریال در خروجی
socat
، برنامه RCP شبیه سازی شده را شروع کنید. به عنوان مثال، اگر از/dev/pts/2
از خروجیsocat
استفاده کنید:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
هیچ خروجی از این دستور وجود ندارد. این پنجره ترمینال را باز بگذارید و در پس زمینه اجرا شود.
ظرف OTBR Docker را راه اندازی کنید
در یک پنجره ترمینال جدید، OTBR Docker را با استفاده از دومین پورت سریال در خروجی 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
نیز استفاده می کند. این نقطه اتصال پیشفرض در ظرف Docker است.
پس از موفقیت، باید خروجی مشابه این داشته باشید:
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 Docker اکنون در حال اجرا است. این پنجره ترمینال را باز بگذارید و در پس زمینه اجرا شود. اگر فرآیند را ترک کنید یا پنجره را ببندید، OTBR Docker پایین میرود.