OTBR ডকার চালান, OTBR ডকার চালান

GitHub-এ উৎস দেখুন

ওপেন থ্রেড বর্ডার রাউটার (OTBR) একটি থ্রেড নেটওয়ার্কে যোগদানের জন্য একটি থ্রেড RCP নোড প্রয়োজন। OTBR ডকার একটি ফিজিক্যাল RCP (ওপেন থ্রেড ডঙ্গল) বা সিমুলেটেড RCP উভয়ের জন্যই সমর্থন প্রদান করে।

আপনি যদি অন্যান্য শারীরিক থ্রেড ডিভাইসের সাথে OTBR ডকার সংযোগ করতে চান, তাহলে একটি শারীরিক RCP ব্যবহার করুন। আপনি যদি একটি সিমুলেটেড থ্রেড নেটওয়ার্কের সাথে বর্ডার রাউটিং পরীক্ষা করতে চান, একটি সিমুলেটেড RCP ব্যবহার করুন।

শারীরিক RCP

শারীরিক RCP-এর জন্য যেকোনো সমর্থিত OpenThread প্ল্যাটফর্ম ব্যবহার করুন। আরও তথ্যের জন্য ওপেন থ্রেড বর্ডার রাউটার বিল্ড এবং কনফিগারেশন গাইড থেকে বিল্ড এবং ফ্ল্যাশ RCP ধাপটি দেখুন।

RCP সংযুক্ত করুন

  1. বিল্ডিং এবং ফ্ল্যাশ করার পরে, USB এর মাধ্যমে OTBR ডকার চালিত মেশিনের সাথে RCP ডিভাইসটি সংযুক্ত করুন।
  2. /dev চেক করে RCP ডিভাইসের সিরিয়াল পোর্টের নাম নির্ধারণ করুন:
    ls /dev/tty*
    /dev/ttyACMO
    

OTBR ডকার কন্টেইনার শুরু করুন

একটি নতুন টার্মিনাল উইন্ডোতে, RCP-এর সিরিয়াল পোর্ট উল্লেখ করে OTBR ডকার শুরু করুন। উদাহরণস্বরূপ, যদি 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 ডকার এখন চলছে। এই টার্মিনাল উইন্ডোটি খোলা রেখে পটভূমিতে চলমান রাখুন। আপনি প্রক্রিয়াটি ছেড়ে দিলে বা উইন্ডোটি বন্ধ করলে, OTBR ডকার নিচে চলে যাবে।

OTBR ডকার সেটআপ চালিয়ে যেতে টেস্ট কানেক্টিভিটিতে যান।

সিমুলেটেড RCP

সিমুলেটেড RCP-এর জন্য একটি সিমুলেটেড OpenThread RCP বিল্ড ব্যবহার করুন। আপনি যদি একটি মেশিনে একটি সিমুলেটেড থ্রেড নেটওয়ার্কের সাথে বর্ডার রাউটিং পরীক্ষা করতে চান তবে এটি কার্যকর।

সিমুলেটেড RCP অ্যাপ্লিকেশন তৈরি করুন

  1. OpenThread সংগ্রহস্থল ক্লোন করুন:

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

  2. বুটস্ট্র্যাপ করুন এবং সিমুলেটেড অ্যাপ্লিকেশন তৈরি করুন:

    cd openthread
    ./script/bootstrap
    ./script/cmake-build simulation
    

একটি দ্বিমুখী ডেটা স্ট্রিম সেট আপ করুন

সিমুলেটেড RCP এবং OTBR ডকারের মধ্যে ডেটা স্থানান্তর করতে একটি দ্বিমুখী ডেটা স্ট্রিম স্থাপন করতে socat কমান্ড লাইন ইউটিলিটি ব্যবহার করুন।

  1. এই প্রক্রিয়াটি চালানোর জন্য একটি নতুন টার্মিনাল উইন্ডো খুলুন, কারণ OTBR ডকার চলাকালীন এটি চলমান থাকতে হবে।

  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 ডকারের জন্য দ্বিতীয়টি ব্যবহার করুন৷ উপরের উদাহরণে আউটপুট:

  • /dev/pts/2 = সিমুলেটেড RCP পোর্ট
  • /dev/pts/7 = OTBR ডকার

এই টার্মিনাল উইন্ডোটি খোলা রেখে পটভূমিতে চলমান রাখুন।

সিমুলেটেড RCP শুরু করুন

  1. সিমুলেটেড আরসিপি চালানোর জন্য একটি নতুন টার্মিনাল উইন্ডো খুলুন, কারণ OTBR ডকার চলাকালীন এটিকে চলমান থাকতে হবে।

  2. socat আউটপুটে প্রথম সিরিয়াল পোর্ট ব্যবহার করে, সিমুলেটেড RCP অ্যাপ্লিকেশন শুরু করুন। উদাহরণস্বরূপ, যদি socat আউটপুট থেকে /dev/pts/2 ব্যবহার করা হয়:

    ~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

এই কমান্ড থেকে কোন আউটপুট নেই. এই টার্মিনাল উইন্ডোটি খোলা রেখে পটভূমিতে চলমান রাখুন।

OTBR ডকার কন্টেইনার শুরু করুন

একটি নতুন টার্মিনাল উইন্ডোতে, socat আউটপুটে দ্বিতীয় সিরিয়াল পোর্ট ব্যবহার করে OTBR ডকার শুরু করুন। উদাহরণস্বরূপ, যদি 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 পোর্টও ব্যবহার করছে। এটি ডকার কন্টেইনারের মধ্যে ডিফল্ট মাউন্ট পয়েন্ট।

সাফল্যের পরে, আপনার এটির মতো আউটপুট থাকা উচিত:

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 ডকার এখন চলছে। এই টার্মিনাল উইন্ডোটি খোলা রেখে পটভূমিতে চলমান রাখুন। আপনি প্রক্রিয়াটি ছেড়ে দিলে বা উইন্ডোটি বন্ধ করলে, OTBR ডকার নিচে চলে যাবে।