OpenThread बॉर्डर राऊटर (OTBR) को Thread नेटवर्क से जुड़ने के लिए, Thread आरसीपी नोड की ज़रूरत होती है. OTBR Docker, फ़िज़िकल आरसीपी (OpenThread डॉंगल) या सिम्युलेटेड आरसीपी, दोनों के साथ काम करता है.
अगर आपको OTBR Docker को अन्य फ़िज़िकल थ्रेड डिवाइसों से कनेक्ट करना है, तो फ़िज़िकल आरसीपी का इस्तेमाल करें. अगर आपको सिम्युलेट किए गए Thread नेटवर्क की मदद से, बॉर्डर रूटिंग की जांच करनी है, तो सिम्युलेट किए गए आरसीपी का इस्तेमाल करें.
फ़िज़िकल आरसीपी
फ़िज़िकल आरसीपी के लिए, काम करने वाले किसी भी OpenThread प्लैटफ़ॉर्म का इस्तेमाल करें. ज़्यादा जानकारी के लिए, OpenThread बॉर्डर राउटर के बिल्ड और कॉन्फ़िगरेशन की गाइड में, आरसीपी बनाना और फ़्लैश करना चरण देखें.
आरसीपी अटैच करना
- बिल्ड करने और फ़्लैश करने के बाद, यूएसबी के ज़रिए RCP डिवाइस को, OTBR Docker चलाने वाली मशीन से कनेक्ट करें.
/dev
देखकर, आरसीपी डिवाइस के सीरियल पोर्ट का नाम तय करें:ls /dev/tty*
/dev/ttyACMO
OTBR Docker कंटेनर शुरू करना
नई टर्मिनल विंडो में, RCP के सीरियल पोर्ट का रेफ़रंस देकर, OTBR Docker शुरू करें.
उदाहरण के लिए, अगर आरसीपी /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 सेटअप जारी रखने के लिए, कनेक्शन की जांच करें पर जाएं.
सिम्युलेट किया गया आरसीपी
सिम्युलेट किए गए आरसीपी के लिए, सिम्युलेट किए गए OpenThread आरसीपी बिल्ड का इस्तेमाल करें. यह तरीका तब काम आता है, जब आपको एक ही मशीन पर सिम्युलेटेड Thread नेटवर्क की मदद से बॉर्डर रूटिंग की जांच करनी हो.
सिम्युलेट किया गया आरसीपी ऐप्लिकेशन बनाना
OpenThread डेटा स्टोर करने की जगह का क्लोन बनाएं:
cd ~
git clone https://github.com/openthread/openthread
सिम्युलेट किया गया ऐप्लिकेशन बूटस्ट्रैप करें और बनाएं:
cd openthread
./script/bootstrap
./script/cmake-build simulation
डेटा को दोनों तरफ़ भेजने और पाने की सुविधा वाली डेटा स्ट्रीम सेट अप करना
सिम्युलेट किए गए आरसीपी और ओटीबीआर डॉकर के बीच डेटा ट्रांसफ़र करने के लिए, socat
कमांड लाइन की सुविधा का इस्तेमाल करके, डेटा की द्वि-दिशात्मक स्ट्रीम सेट अप करें.
इस प्रोसेस को चलाने के लिए, एक नई टर्मिनल विंडो खोलें, क्योंकि 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]
आउटपुट में बोल्ड किए गए दो सीरियल पोर्ट का नोट बनाएं. पहले को सिम्युलेट किए गए आरसीपी के लिए और दूसरे को ओटीबीआर डॉकर के लिए इस्तेमाल करें. ऊपर दिए गए उदाहरण के आउटपुट में:
/dev/pts/2
= सिम्युलेट किया गया आरपीसी पोर्ट/dev/pts/7
= OTBR Docker
इस टर्मिनल विंडो को खुला रहने दें और बैकग्राउंड में चलाएं.
सिम्युलेट किया गया आरसीपी शुरू करना
सिम्युलेट किया गया आरसीपी चलाने के लिए, एक नई टर्मिनल विंडो खोलें, क्योंकि ओटीबीआर डॉकर के चलने के दौरान इसे चालू रखना ज़रूरी है.
socat
आउटपुट में पहले सीरियल पोर्ट का इस्तेमाल करके, सिम्युलेट किया गया आरसीपी ऐप्लिकेशन शुरू करें. उदाहरण के लिए, अगरsocat
आउटपुट से/dev/pts/2
का इस्तेमाल किया जा रहा है, तो:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
इस कमांड से कोई आउटपुट नहीं मिलता. इस टर्मिनल विंडो को खुला और बैकग्राउंड में चालू रखें.
OTBR Docker कंटेनर शुरू करना
नई टर्मिनल विंडो में, socat
आउटपुट में दूसरे सीरियल पोर्ट का इस्तेमाल करके, OTBR Docker शुरू करें. उदाहरण के लिए, अगर socat
आउटपुट से /dev/pts/7
का इस्तेमाल किया जा रहा है, तो:
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 बंद हो जाएगा.