হ্যাপি এবং ওয়েভ দিয়ে শুরু করা

1। পরিচিতি

হ্যাপি হল সিমুলেটেড নেটওয়ার্ক টপোলজির লাইটওয়েট অর্কেস্ট্রেশনের জন্য নেস্ট ল্যাব দ্বারা তৈরি একটি টুল। হ্যাপি আইওটি হোম এরিয়া নেটওয়ার্কগুলির বিকাশ এবং পরীক্ষার জন্য দরকারী।

হ্যাপির সাথে, আপনি করতে পারেন:

  • IoT ডিভাইস হার্ডওয়্যার ব্যবহার না করে একটি একক লিনাক্স ডেভেলপমেন্ট মেশিনে নেটওয়ার্ক প্রোটোকল এবং অন্যান্য বিতরণকৃত এক্সিকিউশন প্রোগ্রাম পরীক্ষা করুন
  • একটি নেটওয়ার্ক জুড়ে স্বয়ংক্রিয় কার্যকরী পরীক্ষা সম্পাদন করুন
  • টেস্টিং থ্রুপুট উন্নত করতে একই সিস্টেমে একাধিক সমবর্তী, সমান্তরাল নেটওয়ার্ক চালান

এই কোডল্যাবে , আপনি হ্যাপির সাথে কীভাবে শুরু করবেন, সেইসাথে আইওটি ডিভাইসের জন্য ওয়েভের মূল বিষয়গুলি শিখবেন। আপনি যে ওয়েভ ইমপ্লিমেন্টেশনটি ব্যবহার করবেন তা হল OpenWeave , নেস্ট দ্বারা প্রকাশিত একটি ওপেন-সোর্স সংস্করণ।

f6996428fb06dede.png

আপনি কি শিখবেন

  • হ্যাপি এবং ওপেনওয়েভ কীভাবে তৈরি করবেন
  • কিভাবে ম্যানুয়ালি একটি সিমুলেটেড IoT নেটওয়ার্ক তৈরি করবেন
  • কাস্টম টপোলজিগুলি কীভাবে পরিচালনা করবেন
  • ইন্টারনেটে একটি সিমুলেটেড হ্যাপি নেটওয়ার্ককে কীভাবে সংযুক্ত করবেন
  • ওয়েভ এর মৌলিক বিষয়

আপনি কি প্রয়োজন হবে

  • একটি লিনাক্স মেশিন, শারীরিক বা ভার্চুয়াল
  • Git ক্লায়েন্ট বা cli
  • পাইথন 2.7
  • নেটওয়ার্কিং এবং রাউটিং ধারণাগুলির একটি প্রাথমিক ধারণা

2. শুরু করুন

টুলচেইন এবং নির্ভরতা ইনস্টল করুন

হ্যাপি এবং ওয়েভ তৈরি করতে, নিশ্চিত করুন যে আপনার কাছে একটি সমর্থিত টুলচেন এবং সমস্ত নির্ভরতা ইনস্টল রয়েছে।

$ sudo apt-get update
$ sudo apt-get install -y autotools-dev build-essential git lcov \
                           libdbus-1-dev libglib2.0-dev libssl-dev \
                           libudev-dev make python2.7 software-properties-common \
                           python-setuptools bridge-utils python-lockfile \
                           python-psutil
$ sudo apt-get install -y --force-yes gcc-arm-none-eabi
$ sudo apt-get update -qq

সোর্স কোড পান

কমান্ড লাইন থেকে হ্যাপি এবং ওপেনওয়েভ গিট রিপোজিটরি ক্লোন করুন:

$ cd ~
$ git clone https://github.com/openweave/happy.git
$ git clone https://github.com/openweave/openweave-core.git

হ্যাপি ইনস্টল করুন

হ্যাপি রুট ডিরেক্টরি থেকে, হ্যাপি ইনস্টল করুন:

$ cd ~/happy
$ make

শুভ ইনস্টলেশন যাচাই করুন

হ্যাপি কমান্ড এখন কমান্ড লাইন থেকে অ্যাক্সেসযোগ্য হওয়া উচিত:

$ happy-state
State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes

NODES      Name    Interface    Type                                          IPs

OpenWeave ইনস্টল করুন

OpenWeave রুট ডিরেক্টরি থেকে, OpenWeave ইনস্টল করুন:

$ cd ~/openweave-core
$ make -f Makefile-Standalone

OpenWeave দিয়ে হ্যাপি কনফিগার করুন

Happy এর সাথে OpenWeave ব্যবহার করতে, আপনাকে হ্যাপিকে জানাতে হবে যে কোথায় ওয়েভ ইনস্টলেশন পাবেন। আপনার OpenWeave বিল্ডের মধ্যে /src/test-apps এর পথের সাথে হ্যাপি কনফিগারেশন আপডেট করুন:

$ happy-configuration weave_path ~/openweave-core/build/x86_64-unknown-linux-gnu/src/test-apps

কনফিগারেশন নিশ্চিত করুন:

$ happy-configuration
User Happy Configuration
        weave_path         ~/openweave-core/build/x86_64-unknown-linux-gnu/src/test-apps

OpenWeave ইনস্টলেশন যাচাই করুন

এই কোডল্যাবে প্রয়োজনীয় ওয়েভ কমান্ড কমান্ড লাইন থেকে অ্যাক্সেসযোগ্য:

$ weave-fabric-add -h

    weave-fabric-add creates a weave fabric.

    weave-fabric-add [-h --help] [-q --quiet] [-i --id <FABRIC_ID>]

    Example:
    $ weave-fabric-add 123456
        Creates a Weave Fabric with id 123456

    return:
        0    success
        1    fail

আপনি যদি weave-fabric-add: command not found , তাহলে আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলটি হ্যাপি বাইনারিগুলির জন্য ব্যবহৃত পথের সাথে আপডেট করুন:

$ export PATH=$PATH:~/openweave-core/src/test-apps/happy/bin

3. আপনার প্রথম টপোলজি

হ্যাপি দিয়ে নিচের তিন-নোড টপোলজি তৈরি করি।

a3295ee87fbd9764.png

এই টপোলজি হল একটি সাধারণ হোম এরিয়া নেটওয়ার্ক (HAN) এর উদাহরণ। এই HAN-এ, দুটি নোড একটি থ্রেড নেটওয়ার্কে একসাথে সংযুক্ত থাকে এবং সেই নোডগুলির মধ্যে একটি Wi-Fi এর মাধ্যমে তৃতীয়টির সাথে সংযুক্ত হয়। এই নোডটি পুরো HAN-এর জন্য ইন্টারনেট সংযোগ প্রদানের জন্য বাড়ির একটি ওয়্যারলেস রাউটারের সাথে সংযুক্ত করা যেতে পারে। এই সম্পর্কে পরে আরো.

প্রথমে তিনটি নোড তৈরি করুন:

$ happy-node-add 01ThreadNode
$ happy-node-add 02BorderRouter
$ happy-node-add 03WiFiNode

আসুন নিশ্চিত করুন যে তারা বিদ্যমান:

$ happy-node-list
01ThreadNode
02BorderRouter
03WiFiNode

এখন কিছু নেটওয়ার্ক তৈরি করা যাক:

$ happy-network-add ThreadNetwork thread
$ happy-network-add WiFiNetwork wifi

নেটওয়ার্ক বিদ্যমান কিনা যাচাই করুন:

$ happy-network-list
ThreadNetwork
WiFiNetwork

সুখী অবস্থা পরীক্ষা করুন:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP
    WiFiNetwork         wifi      UP

NODES      Name    Interface    Type                                          IPs
   01ThreadNode
 02BorderRouter
     03WiFiNode

শুধুমাত্র একটি নেটওয়ার্ক নিয়ে আসাই যথেষ্ট নয়-আমাদের নেটওয়ার্কগুলিতে নোড যোগ করতে হবে। আমাদের টপোলজি ডায়াগ্রাম অনুসরণ করে, উপযুক্ত নেটওয়ার্কে প্রতিটি নোড যোগ করুন:

$ happy-node-join 01ThreadNode ThreadNetwork
$ happy-node-join 02BorderRouter ThreadNetwork
$ happy-node-join 02BorderRouter WiFiNetwork
$ happy-node-join 03WiFiNode WiFiNetwork

মনে রাখবেন যে 02BorderRouter ThreadNetwork এবং WiFiNetwork উভয় ক্ষেত্রেই যোগ করা হয়েছে। কারণ আমাদের HAN-এর মধ্যে একটি বর্ডার রাউটার হিসেবে, এই নোড দুটি পৃথক নেটওয়ার্ককে একত্রে সংযুক্ত করে।

সুখী অবস্থা পরীক্ষা করুন. প্রতিটি নোডের ইন্টারফেস আপ আছে:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP
    WiFiNetwork         wifi      UP

NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread
 02BorderRouter        wpan0  thread
                       wlan0    wifi
     03WiFiNode        wlan0    wifi

আমাদের টপোলজি এখন এই মত দেখায়:

2d054e6c4e54089c.png

আমাদের হ্যাপি নেটওয়ার্ক নিয়ে আসার শেষ ধাপ হল প্রতিটি নোডের প্রতিটি ইন্টারফেসে IP ঠিকানা বরাদ্দ করা। একটি নেটওয়ার্কের জন্য IP উপসর্গ নির্দিষ্ট করুন, এবং Happy স্বয়ংক্রিয়ভাবে আপনার জন্য IP ঠিকানা বরাদ্দ করে।

যেহেতু থ্রেড প্রোটোকল IPv6 ব্যবহার করে, থ্রেড নেটওয়ার্কে একটি IPv6 উপসর্গ যোগ করুন:

$ happy-network-address ThreadNetwork 2001:db8:1:2::

সুখী অবস্থা পরীক্ষা করুন. প্রতিটি থ্রেড নোডের থ্রেড ইন্টারফেসের আইপি ঠিকানা রয়েছে:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP                       2001:0db8:0001:0002/64

    WiFiNetwork         wifi      UP

NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread   2001:0db8:0001:0002:3e36:13ff:fe33:732e/64

 02BorderRouter        wpan0  thread   2001:0db8:0001:0002:a651:3eff:fe92:6dbc/64

                       wlan0    wifi
     03WiFiNode        wlan0    wifi

WiFi নেটওয়ার্কের জন্য, IPv4 এবং IPv6 উভয় উপসর্গ যোগ করুন:

$ happy-network-address WiFiNetwork 2001:db8:a:b::
$ happy-network-address WiFiNetwork 10.0.1.0

সুখী অবস্থা আরও একবার পরীক্ষা করুন। সমস্ত ইন্টারফেস প্রতিটি Wi-Fi ইন্টারফেসের জন্য দুটি সহ IP ঠিকানা বরাদ্দ করেছে:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP                       2001:0db8:0001:0002/64

    WiFiNetwork         wifi      UP                       2001:0db8:000a:000b/64
                                                                        10.0.1/24


NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread   2001:0db8:0001:0002:3e36:13ff:fe33:732e/64

 02BorderRouter        wpan0  thread   2001:0db8:0001:0002:a651:3eff:fe92:6dbc/64

                       wlan0    wifi                                  10.0.1.2/24
                                       2001:0db8:000a:000b:426c:38ff:fe90:01e6/64

     03WiFiNode        wlan0    wifi   2001:0db8:000a:000b:9aae:2bff:fe71:62fa/64
                                                                      10.0.1.3/24

এখানে আমাদের আপডেট করা টপোলজি আছে:

84eecd23871618ca.png

4. সংযোগ পরীক্ষা করুন

এখন যেহেতু আমাদের হ্যাপি নেটওয়ার্ক চালু এবং চলছে, আসুন 01ThreadNode থেকে অন্যান্য 01ThreadNode করে এর সংযোগ পরীক্ষা করি:

$ happy-ping 01ThreadNode 02BorderRouter
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    10.0.1.2 -> 100% packet loss
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    2001:0db8:0001:0002:a651:3eff:fe92:6dbc -> 0% packet loss
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    2001:0db8:000a:000b:426c:38ff:fe90:01e6 -> 100% packet loss

$ happy-ping 01ThreadNode 03WiFiNode
[Ping] ping from 01ThreadNode to 03WiFiNode on address
    2001:0db8:000a:000b:9aae:2bff:fe71:62fa -> 100% packet loss
[Ping] ping from 01ThreadNode to 03WiFiNode on address
    10.0.1.3 -> 100% packet loss

happy-ping কমান্ড টার্গেট নোডের প্রতিটি ইন্টারফেসের জন্য প্রতিটি আইপি ঠিকানা পিং করার চেষ্টা করে। আমরা IPv4 ঠিকানাগুলি উপেক্ষা করতে পারি কারণ থ্রেড শুধুমাত্র IPv6 ব্যবহার করে।

মনে রাখবেন যে শুধুমাত্র একটি IPv6 পিং সফল হয়েছে: 02BorderRouter এর wpan0 ইন্টারফেসের একটি, যেটি একমাত্র ঠিকানা 01ThreadNode সরাসরি পৌঁছাতে পারে:

5447bcbdf7d539df.png

অন্যান্য IPv6 ঠিকানা ব্যর্থ হয়েছে কারণ 02BorderRouter-এ wpan0 এবং wlan0 এর মধ্যে ফরওয়ার্ডিং সক্ষম করা 02BorderRouter । সুতরাং, 01ThreadNode এর কোন ধারণা নেই 03WiFiNode বিদ্যমান, বা কিভাবে এটিতে পৌঁছানো যায়। হ্যাপি সিমুলেটেড নেটওয়ার্ক নিয়ে এসেছে, কিন্তু নোডের মধ্যে সমস্ত রাউটিং এবং ফরওয়ার্ডিং সক্ষম করেনি।

রুট যোগ করুন

HAN জুড়ে IPv6 ট্র্যাফিক রুট করতে, প্রতিটি নেটওয়ার্কের প্রতিটি নোডে সঠিক রুট যোগ করুন, উভয় দিকেই (তাই পিং জানে কিভাবে উৎস নোডে ফিরতে হয়)।

প্রতিটি নোডের জন্য, আপনাকে জানতে হবে:

  • নিকটতম নেটওয়ার্ক গেটওয়ে—এই ক্ষেত্রে, উভয়ের জন্য 02BorderRouter
  • লক্ষ্য নেটওয়ার্ক—গেটওয়ের পরে কোথায় যেতে হবে

আমাদের তিনটি নোড নেটওয়ার্কের জন্য, এটি আমাদের নিম্নলিখিত দেয়:

সোর্স নেটওয়ার্ক থেকে

টার্গেট নেটওয়ার্কে

গেটওয়ে মাধ্যমে

ThreadNetwork

WiFiNetwork

02BorderRouter wlan0 2001:db8:1:2::/64 prefix

WiFiNetwork

ThreadNetwork

02BorderRouter wpan0 2001:db8:a:b::/64 prefix

happy-node-route সহ প্রতিটি নোডের জন্য এটি পৃথকভাবে করা যেতে পারে, তবে happy-network-route সহ প্রতিটি নেটওয়ার্কের সমস্ত নোডের জন্য এটি করা সহজ।

$ happy-network-route -a -i ThreadNetwork -t default -v 02BorderRouter -p 2001:db8:1:2::/64
$ happy-network-route -a -i WiFiNetwork -t default -v 02BorderRouter -p 2001:db8:a:b::/64

কমান্ড-লাইন ফ্ল্যাগগুলির ব্যাখ্যার জন্য, happy-network-route -h ব্যবহার করুন।

happy-network-route কমান্ড প্রয়োজন অনুযায়ী প্রতিটি নোডের জন্য IPv4 এবং IPv6 ফরওয়ার্ডিং চালু করে। এটি একটি নোডের মধ্যে একটি ইন্টারফেস থেকে অন্য ইন্টারফেসে ট্রাফিককে রুট করার অনুমতি দেয়।

এখন পিং পুনরায় চেষ্টা করুন:

$ happy-ping 01ThreadNode 02BorderRouter
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    10.0.1.2 -> 100% packet loss
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    2001:0db8:0001:0002:a651:3eff:fe92:6dbc -> 0% packet loss
[Ping] ping from 01ThreadNode to 02BorderRouter on address
    2001:0db8:000a:000b:426c:38ff:fe90:01e6 -> 0% packet loss

উভয় IPv6 পিং কাজ! ফরওয়ার্ড করার সাথে সাথে, এটি জানে কিভাবে wlan0 ইন্টারফেসে পৌঁছাতে হয়। IPv4 পিং এখনও ব্যর্থ হয়, কারণ আমরা শুধুমাত্র IPv6 রুট এবং ফরওয়ার্ডিং কনফিগার করেছি (এছাড়াও থ্রেড IPv4-এর উপর চলে না)।

যেহেতু আমরা উভয় দিকে নেটওয়ার্ক রুট যোগ করেছি, আসুন নেটওয়ার্ক জুড়ে পিং করি:

$ happy-ping 01ThreadNode 03WiFiNode
[Ping] ping from 01ThreadNode to 03WiFiNode on address
    2001:0db8:000a:000b:9aae:2bff:fe71:62fa -> 0% packet loss
[Ping] ping from 01ThreadNode to 03WiFiNode on address
    10.0.1.3 -> 100% packet loss

IPv6 পিং প্রত্যাশিত হিসাবে কাজ করে। আপনার কাছে এখন একটি সম্পূর্ণ-কার্যকর, সিমুলেটেড IPv6 HAN আছে।

5bb53be0280b3320.png

সবকিছু একসাথে সংযুক্ত করার আরও নিরাপদ এবং নির্ভরযোগ্য উপায় সক্ষম করতে, আসুন HAN-এর উপরে ওয়েভ যোগ করি।

5. বুনা যোগ করুন

ওয়েভ হল একটি নেটওয়ার্ক অ্যাপ্লিকেশন স্তর যা নেস্ট পণ্যগুলির জন্য নিরাপদ এবং নির্ভরযোগ্য যোগাযোগের ব্যাকবোন প্রদান করে। আমরা ওপেনওয়েভের সাথে উইভ কার্যকারিতা যোগ করতে পারি, ওয়েভের ওপেন-সোর্স সংস্করণ।

ওয়েভের একটি বাস্তবায়নকে "ফ্যাব্রিক" বলা হয়। একটি ওয়েভ ফ্যাব্রিক হল একটি নেটওয়ার্ক যা সমস্ত HAN নোড, নেস্ট পরিষেবা এবং HAN-এ অংশগ্রহণকারী যেকোনো মোবাইল ডিভাইস নিয়ে গঠিত। এটি HAN-এর উপরে বসে এবং বিভিন্ন অন্তর্নিহিত নেটওয়ার্ক লিঙ্ক প্রযুক্তি (উদাহরণস্বরূপ, থ্রেড বা Wi-Fi) জুড়ে সহজ রাউটিং সক্ষম করে।

ফ্যাব্রিক আইডি হিসাবে fab1 ব্যবহার করে আপনার HAN এর জন্য ওয়েভ ফ্যাব্রিক তৈরি করুন, তারপর ওয়েভের জন্য সমস্ত নোড কনফিগার করুন:

$ weave-fabric-add fab1
$ weave-node-configure

এখন যেহেতু ওয়েভ কনফিগার করা হয়েছে, হ্যাপি স্টেট চেক করুন:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP                       2001:0db8:0001:0002/64

    WiFiNetwork         wifi      UP                       2001:0db8:000a:000b/64
                                                                        10.0.1/24


NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread   2001:0db8:0001:0002:3e36:13ff:fe33:732e/64
                                       fd00:0000:fab1:0006:6bca:9502:eb69:11e7/64

 02BorderRouter        wpan0  thread   fd00:0000:fab1:0006:6a6a:f236:eb69:11e7/64
                                       2001:0db8:0001:0002:a651:3eff:fe92:6dbc/64

                       wlan0    wifi   fd00:0000:fab1:0001:6a6a:f236:eb69:11e7/64
                                                                      10.0.1.2/24
                                       2001:0db8:000a:000b:426c:38ff:fe90:01e6/64

     03WiFiNode        wlan0    wifi   2001:0db8:000a:000b:9aae:2bff:fe71:62fa/64
                                                                      10.0.1.3/24
                                       fd00:0000:fab1:0001:6b82:6e60:eb69:11e7/64

প্রতিটি নোড উইভ ফ্যাব্রিকে যোগ করা হয়েছে, এবং প্রতিটি ইন্টারফেসে fd00 দিয়ে শুরু করে একটি নতুন IPv6 ঠিকানা রয়েছে। ওয়েভ ফ্যাব্রিক সম্পর্কে আরও তথ্য পেতে, উইভ weave-state কমান্ডটি ব্যবহার করুন:

$ weave-state

State Name: weave

NODES           Name       Weave Node Id    Pairing Code
        01ThreadNode    69ca9502eb6911e7          8ZJB5Q
      02BorderRouter    686af236eb6911e7          B5YV3P
          03WiFiNode    69826e60eb6911e7          L3VT3A

FABRIC     Fabric Id           Global Prefix
                fab1     fd00:0000:fab1::/48

এখানে নীল রঙে Weave মান সহ আমাদের আপডেট করা টপোলজি রয়েছে:

ce3fa9082408355b.png

বুনন কাপড়

ওয়েভ এবং হ্যাপি রাজ্যে অনেক নতুন তথ্য রয়েছে। weave-state থেকে ফ্যাব্রিক দিয়ে শুরু করা যাক:

FABRIC     Fabric Id           Global Prefix
                fab1     fd00:0000:fab1::/48

উইভ প্রতিটি নোডের জন্য fd00::/48 এর একটি IPv6 উপসর্গ ব্যবহার করে। এই ব্লকের ঠিকানাগুলিকে অনন্য স্থানীয় ঠিকানা বলা হয় এবং HAN-এর মতো ব্যক্তিগত নেটওয়ার্কগুলির মধ্যে ব্যবহারের জন্য মনোনীত করা হয়৷ এটিকে ফ্যাব্রিক আইডির সাথে সংযুক্ত করলে উপরে দেখানো উইভ গ্লোবাল প্রিফিক্স তৈরি হয়।

বুনা নোড

ওয়েভ ফ্যাব্রিকের প্রতিটি নোডকে একটি পেয়ারিং কোড সহ একটি অনন্য নোড আইডি বরাদ্দ করা হয়:

NODES           Name       Weave Node Id    Pairing Code
        01ThreadNode    69ca9502eb6911e7          8ZJB5Q
      02BorderRouter    686af236eb6911e7          B5YV3P
          03WiFiNode    69826e60eb6911e7          L3VT3A

নোড আইডি বিশ্বব্যাপী ওয়েভ ফ্যাব্রিকের একটি নোড সনাক্ত করে। পেয়ারিং কোডটি পেয়ারিং প্রক্রিয়া চলাকালীন একটি "জোয়ারের শংসাপত্র" হিসাবে ব্যবহৃত হয় এবং সাধারণত একটি পণ্যের QR কোডের পাশাপাশি প্রিন্ট করা হয়।

উদাহরণস্বরূপ, আপনি যদি নেস্ট প্রোটেক্ট বা নেস্ট ক্যামের QR কোড দেখেন, আপনি একটি 6-অক্ষরের স্ট্রিং লক্ষ্য করবেন, প্রায়শই এন্ট্রি কী হিসাবে উল্লেখ করা হয়। এটি ওয়েভ পেয়ারিং কোড।

e7c6fa3e24d61d1b.png

ফেব্রিকের প্রতিটি নোড এবং ইন্টারফেসের জন্য Weave-নির্দিষ্ট IPv6 ঠিকানা তৈরি করতে ওয়েভ গ্লোবাল প্রিফিক্স, ফ্যাব্রিক আইডি এবং নোড আইডির সংমিশ্রণ ব্যবহার করে।

বুনন ঠিকানা

লক্ষ্য করুন যে হ্যাপি টপোলজিতে চারটি নতুন IPv6 ঠিকানা রয়েছে, fd00:0000:fab1::/48 এর আমাদের Weave গ্লোবাল প্রিফিক্স দিয়ে শুরু।

NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread   2001:0db8:0001:0002:3e36:13ff:fe33:732e/64
                                       fd00:0000:fab1:0006:6bca:9502:eb69:11e7/64

 02BorderRouter        wpan0  thread   fd00:0000:fab1:0006:6a6a:f236:eb69:11e7/64
                                       2001:0db8:0001:0002:a651:3eff:fe92:6dbc/64

                       wlan0    wifi   fd00:0000:fab1:0001:6a6a:f236:eb69:11e7/64
                                                                      10.0.1.2/24
                                       2001:0db8:000a:000b:426c:38ff:fe90:01e6/64

     03WiFiNode        wlan0    wifi   2001:0db8:000a:000b:9aae:2bff:fe71:62fa/64
                                                                      10.0.1.3/24
                                       fd00:0000:fab1:0001:6b82:6e60:eb69:11e7/64

ওয়েভ প্রোটোকলগুলি প্রতিটি নোডে নির্ধারিত আদর্শ IPv6 ঠিকানাগুলির পরিবর্তে, ওয়েভ ফ্যাব্রিক জুড়ে যোগাযোগ করতে এই ঠিকানাগুলি ব্যবহার করে।

নেটওয়ার্ক গেটওয়ে বুনন

একটি থ্রেড নেটওয়ার্কে বুনন নোডগুলি জানতে হবে যে সেই নেটওয়ার্ক থেকে কোথায় প্রস্থান করতে হবে। একটি ওয়েভ নেটওয়ার্ক গেটওয়ে - সাধারণত একটি থ্রেড বর্ডার রাউটারে - এই কার্যকারিতা প্রদান করে।

আমাদের নমুনা টপোলজিতে, বর্ডাররাউটার নোডটিকে উইভ নেটওয়ার্ক গেটওয়ে হিসাবে মনোনীত করা যাক:

$ weave-network-gateway ThreadNetwork 02BorderRouter

এই কমান্ডটি সমস্ত থ্রেড নোড থেকে ওয়েভ ফ্যাব্রিক সাবনেটে ( fd:0:fab1::/48 ) একটি রুট যোগ করে BorderRouter নোডের থ্রেড ইন্টারফেস ( wpan0 ) এর মাধ্যমে, যা প্রতিটি থ্রেড নোডকে থ্রেড নেটওয়ার্কের বাইরে যেকোনো ওয়েভ নোডে পৌঁছাতে সক্ষম করে। এটি happy-network-route কমান্ডের সাথে সাদৃশ্যপূর্ণ, যা আমরা আগে ব্যবহার করেছি, তবে উইভ ফ্যাব্রিক রুটের জন্য নির্দিষ্ট।

6. টপোলজি রক্ষণাবেক্ষণ

যেটি হ্যাপিকে এত শক্তিশালী করে তোলে তা হল কিভাবে এটি সহজে একটি সিমুলেটেড টপোলজির সমস্ত সেটআপ এবং টিয়ারডাউন পরিচালনা করে।

পরবর্তী ব্যবহারের জন্য আপনার শুভ টপোলজি সংরক্ষণ করুন:

$ happy-state -s codelab.json

এটি আপনার রুট ~/ ফোল্ডারে সম্পূর্ণ টপোলজি সহ একটি JSON ফাইল রাখে। JSON ফাইলটি আপনার বর্তমান হ্যাপি স্টেটের একটি কপি, যা ~/.happy_state.json এ পাওয়া যায়।

একবার সংরক্ষণ করা হলে, বর্তমান টপোলজি মুছুন:

$ happy-state-delete

এটি ~/.happy-state.json ফাইলে পাওয়া সমস্ত নেটওয়ার্ক নেমস্পেস এবং সম্পর্কিত কনফিগারেশন মুছে দেয়। একটি খালি কনফিগারেশন নিশ্চিত করতে happy-state এবং weave-state চেক করুন:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes

NODES      Name    Interface    Type                                          IPs


$ weave-state

State Name: weave

NODES           Name       Weave Node Id    Pairing Code

FABRIC     Fabric Id           Global Prefix

একটি সংরক্ষিত কনফিগারেশন পুনরায় লোড করতে, দুটি কমান্ডের একটি ব্যবহার করুন:

  • happy-state-load — উইভ প্লাগইন সমর্থন করে না
  • weave-state-load — Weave প্লাগইন সমর্থন করে

তাই যদি আপনার টপোলজিতে Weave থাকে, তাহলে সবসময় weave-state-load কমান্ড ব্যবহার করুন যাতে Weave ফ্যাব্রিক এবং সংশ্লিষ্ট কনফিগারেশন প্রয়োগ করা হয়।

সংরক্ষিত হ্যাপি টপোলজি পুনরায় লোড করুন:

$ weave-state-load codelab.json

একটি সফল লোডিং নিশ্চিত করতে সমস্ত রাজ্য পরীক্ষা করুন:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
  ThreadNetwork       thread      UP                       2001:0db8:0001:0002/64

    WiFiNetwork         wifi      UP                       2001:0db8:000a:000b/64
                                                                        10.0.1/24


NODES      Name    Interface    Type                                          IPs
   01ThreadNode        wpan0  thread   2001:0db8:0001:0002:eef6:a0ff:feca:6697/64
                                       fd00:0000:fab1:0006:6bca:9502:eb69:11e7/64

 02BorderRouter        wpan0  thread   fd00:0000:fab1:0006:6a6a:f236:eb69:11e7/64
                                       2001:0db8:0001:0002:5e53:bbff:fe05:484b/64

                       wlan0    wifi   2001:0db8:000a:000b:2e61:fdff:fed9:4fbc/64
                                       fd00:0000:fab1:0001:6a6a:f236:eb69:11e7/64
                                                                      10.0.1.2/24

     03WiFiNode        wlan0    wifi   fd00:0000:fab1:0001:6b82:6e60:eb69:11e7/64
                                                                      10.0.1.3/24
                                       2001:0db8:000a:000b:5e8e:c9ff:fed2:bdd1/64


$ weave-state

State Name: weave

NODES           Name       Weave Node Id    Pairing Code
        01ThreadNode    69ca9502eb6911e7          8ZJB5Q
      02BorderRouter    686af236eb6911e7          B5YV3P
          03WiFiNode    69826e60eb6911e7          L3VT3A

FABRIC     Fabric Id           Global Prefix
                fab1     fd00:0000:fab1::/48

হ্যাপি রিপোজিটরিতে শেল-স্ক্রিপ্ট এবং JSON ফর্ম্যাটে বেশ কয়েকটি পূর্ব-সংজ্ঞায়িত টপোলজি প্রদান করা হয়েছে। ~/happy/topologies এ তাদের খুঁজুন।

ওপেনওয়েভ পরীক্ষার উদ্দেশ্যে নির্বাচিত প্রাক-সংজ্ঞায়িত হ্যাপি টপোলজির সাথেও আসে। ~/openweave-core/src/test-apps/happy/topologies/standalone এ তাদের খুঁজুন।

7. এটি কিভাবে কাজ করে

হ্যাপি জটিল টপোলজি অনুকরণ করতে লিনাক্স নেটওয়ার্ক নেমস্পেস ব্যবহার করে। সাধারণত, একটি নেটওয়ার্ক কনফিগারেশন সমগ্র Linux OS জুড়ে প্রযোজ্য। নেটওয়ার্ক নেমস্পেস আপনাকে নেটওয়ার্ক কনফিগারেশন পার্টিশন করতে দেয় যাতে প্রতিটি নেমস্পেসের নিজস্ব ইন্টারফেস এবং রাউটিং টেবিল থাকে।

হ্যাপির প্রতিটি নোড এবং নেটওয়ার্ক হল একটি নেটওয়ার্ক নেমস্পেস, যখন তাদের মধ্যে লিঙ্কগুলি হল নেটওয়ার্ক ইন্টারফেস।

উদাহরণস্বরূপ, আমাদের টপোলজি ব্যবহার করে:

7d6654c2e4907f2a.png

আসুন দেখি হ্যাপি এর জন্য কী কী নামস্থান তৈরি করেছে:

$ ip netns list
happy004
happy003
happy002
happy001
happy000

আপনি যদি হ্যাপি স্টেট JSON ফাইলের netns বিভাগটি পরীক্ষা করেন, আপনি দেখতে পাবেন প্রতিটি নেমস্পেস কোন নোড এবং নেটওয়ার্কগুলির সাথে মিলে যায়:

$ happy-state -j | grep "netns" -A 5
"netns": {
    "01ThreadNode": "000",
    "02BorderRouter": "001",
    "03WiFiNode": "002",
    "ThreadNetwork": "003",
    "WiFiNetwork": "004",

49cfdce6ff9dd745.png

রান-টাইম লগ

নোডগুলিতে জারি করা কমান্ডগুলি প্রতিটি নোডের নামস্থানের মধ্যে থেকে কার্যকর করা মৌলিক টার্মিনাল কমান্ড। এটি দেখার একটি সহজ উপায় হল হ্যাপি রান-টাইম লগ সক্রিয় করা।

একটি দ্বিতীয় টার্মিনাল উইন্ডো খুলুন এবং লগগুলি চালু করুন, তারা এই উইন্ডোতে ক্রমাগত চলবে:

$ happy-state -l

প্রথম উইন্ডোতে ফিরে যান এবং একটি শুভ পিং চালান:

$ happy-ping 01ThreadNode 02BorderRouter

দ্বিতীয় টার্মিনাল উইন্ডোতে সবচেয়ে সাম্প্রতিক লগ এন্ট্রি পরীক্ষা করুন। আপনি লগগুলিতে এই মত একটি লাইন দেখতে হবে:

DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ping6 -c 1 2001:0db8:0001:0002:5e53:bbff:fe05:484b

happy-ping কমান্ডটি হ্যাপি happy000 নেমস্পেসে ( 01ThreadNode ) ping6 কমান্ড চালানো ছাড়া আর কিছুই নয়।

একটি নোড লিখুন

নন-হ্যাপি কমান্ডগুলি চালানোর জন্য happy-shell ব্যবহার করুন যেন নোডগুলির মধ্যে একটিতে লগ ইন করা হয়েছে (নেটওয়ার্ক নামস্থান):

$ happy-shell 01ThreadNode
root@01ThreadNode:#

সিমুলেটেড ডিভাইসগুলি প্রতিটি নামস্থানের মধ্যে চালিত হয় এবং তাদের শুধুমাত্র হ্যাপির মাধ্যমে নির্দিষ্ট করা নেটওয়ার্ক কনফিগারেশনে অ্যাক্সেস থাকে।

নোডের জন্য ইন্টারফেস কনফিগারেশন পরীক্ষা করুন। এটি আপনার OS-ওয়াইড কনফিগারেশনের থেকে আলাদা হবে এবং খুশি অবস্থায় যা তালিকাভুক্ত করা হয়েছে তা প্রতিফলিত করা উচিত:

root@01ThreadNode:# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:152 (152.0 B)  TX bytes:152 (152.0 B)

wpan0     Link encap:Ethernet  HWaddr ec:f6:a0:ca:66:97
          inet6 addr: fd00:0:fab1:6:6bca:9502:eb69:11e7/64 Scope:Global
          inet6 addr: 2001:db8:1:2:eef6:a0ff:feca:6697/64 Scope:Global
          inet6 addr: fe80::eef6:a0ff:feca:6697/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2832 (2.8 KB)  TX bytes:2348 (2.3 KB)

নোডের নামস্থান ছেড়ে exit করুন ব্যবহার করুন:

root@01ThreadNode:# exit

8. একটি পরিষেবার সাথে সংযোগ করুন৷

হ্যাপি কীভাবে লিনাক্স নেটওয়ার্ক নেমস্পেস ব্যবহার করে তা বোঝার সাথে, আপনি এখন বুঝতে পারেন যে ইন্টারনেটে একটি সিমুলেটেড হ্যাপি নেটওয়ার্ক সংযোগ করা এবং সিমুলেটেড নোডের মধ্যে থেকে সর্বজনীন ঠিকানাগুলি অ্যাক্সেস করা সম্ভব। এটি আপনার সিমুলেটেড ডিভাইসগুলিকে একটি বাস্তব পরিষেবার সাথে সংযুক্ত করার জন্য দরকারী (যেমন নেস্ট পরিষেবা ওভার ওয়েভ)।

ওয়েভ-এর পরিষেবা হল একটি ক্লাউড-ভিত্তিক অবকাঠামো যা HAN নোডগুলিকে একটি ডেটা মডেলে সংযুক্ত করে, দূরবর্তী অ্যাক্সেস প্রদান করে এবং একটি বিস্তৃত ইকোসিস্টেম তৈরি করতে বুদ্ধিমান কন্ট্রোলার প্রয়োগ করে৷

হ্যাপির সাথে পরিষেবাটি দুটি প্রাথমিক উপায়ে উপস্থাপন করা যেতে পারে:

  • নিজস্ব নেটওয়ার্ক নামস্থানে একটি সিমুলেটেড পরিষেবা হিসাবে (হ্যাপি নোড)
  • ইন্টারনেটে একটি বাস্তব ক্লাউড পরিষেবা হিসাবে

প্রতিটি পরিষেবার দৃশ্যের উদাহরণ হিসেবে ~/happy/topologies এ পূর্ব-সংজ্ঞায়িত টপোলজি প্রদান করা হয়েছে।

একটি শুভ নোডে সিমুলেটেড পরিষেবা

বিদ্যমান হ্যাপি টপোলজিগুলি সরান:

$ happy-state-delete

happy-state এবং weave-state কমান্ড সহ একটি খালি অবস্থা নিশ্চিত করুন।

অ্যাক্সেস পয়েন্ট (এপি) এবং পরিষেবা নোড সহ একটি পূর্ব-সংজ্ঞায়িত টপোলজি লোড করুন:

$ weave-state-load ~/happy/topologies/thread_wifi_ap_service.json

6d04cbfcc84038e2.png

টপোলজি নিশ্চিত করতে হ্যাপি এবং ওয়েভ স্টেট পরীক্ষা করুন। এই টপোলজিতে, onhub হল AP, যখন cloud হল সিমুলেটেড পরিষেবা৷ দ্রষ্টব্য উভয়ই wan টাইপের একটি Internet নেটওয়ার্কের সাথে সংযুক্ত:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
     HomeThread       thread      UP                       2001:0db8:0111:0001/64

       HomeWiFi         wifi      UP                       2001:0db8:0222:0002/64
                                                                        10.0.1/24

       Internet          wan      UP                               192.168.100/24


NODES      Name    Interface    Type                                          IPs
   BorderRouter        wpan0  thread   2001:0db8:0111:0001:f624:13ff:fe4a:6def/64
                                       fd00:0000:fab1:0006:1ab4:3000:0000:0005/64

                       wlan0    wifi                                  10.0.1.2/24
                                       fd00:0000:fab1:0001:1ab4:3000:0000:0005/64
                                       2001:0db8:0222:0002:9e31:97ff:fe73:29f0/64

     ThreadNode        wpan0  thread   2001:0db8:0111:0001:c237:fbff:fecc:b082/64
                                       fd00:0000:fab1:0006:1ab4:3000:0000:0009/64

          cloud         eth0     wan                             192.168.100.3/24

          onhub        wlan0    wifi                                  10.0.1.3/24
                                       2001:0db8:0222:0002:3266:20ff:fe98:6ee2/64

                        eth0     wan                             192.168.100.2/24


$ weave-state

State Name: weave

NODES           Name       Weave Node Id    Pairing Code
        BorderRouter    18B4300000000005          AAA123
          ThreadNode    18B4300000000009          AAA123

FABRIC     Fabric Id           Global Prefix
                fab1     fd00:0000:fab1::/48

সুড়ঙ্গ বুনন

একটি ওয়েভ টানেল ওয়েভ ফ্যাব্রিককে একটি পরিষেবার সাথে সংযুক্ত করে। এটি একটি নিরাপদ রুট যা HAN এবং পরিষেবার মধ্যে IPv6 UDP বার্তা স্থানান্তর করে। এই টপোলজিতে, BorderRouter নোড হল ওয়েভ নেটওয়ার্ক গেটওয়ে, যা HAN-এ টানেল এন্ডপয়েন্ট হিসেবে কাজ করে।

ওয়েভ টানেল তৈরি করুন:

$ weave-tunnel-start BorderRouter cloud

সুখী রাষ্ট্র পুনরায় পরীক্ষা করুন. আপনি cloud নোডে একটি Weave IPv6 ঠিকানা সহ একটি নতুন টানেল ইন্টারফেস দেখতে পাবেন:

NODES      Name    Interface    Type                                          IPs

          cloud service-tun0     tun   fd00:0000:fab1:0005:1ab4:3002:0000:0011/64

                        eth0     wan                             192.168.100.3/24

c5ffca09d7cd3208.png

আপনি এখন সফলভাবে উইভ ফ্যাব্রিকের নোড এবং পরিষেবার উইভ গ্লোবাল প্রিফিক্সের মধ্যে পিং করতে পারেন:

$ happy-ping ThreadNode cloud
[Ping] ping from ThreadNode to cloud on address
    fd00:0000:fab1:0005:1ab4:3002:0000:0011 -> 0% packet loss

ইন্টারনেটে বাস্তব ক্লাউড পরিষেবা

বিদ্যমান হ্যাপি টপোলজিগুলি সরান:

$ happy-state-delete

happy-state এবং weave-state কমান্ড সহ একটি খালি অবস্থা নিশ্চিত করুন।

একটি অ্যাক্সেস পয়েন্ট (AP) নোড সহ একটি পূর্ব-সংজ্ঞায়িত টপোলজি লোড করুন:

$ weave-state-load ~/happy/topologies/thread_wifi_ap_internet.json

c75127417ef3833a.png

এই টপোলজিতে, onhub হল AP. সুখী অবস্থা পরীক্ষা করুন. এটি Internet নেটওয়ার্ক এবং cloud নোড ছাড়াই আগের টপোলজির মতো:

$ happy-state

State Name:  happy

NETWORKS   Name         Type   State                                     Prefixes
     HomeThread       thread      UP                       2001:0db8:0111:0001/64

       HomeWiFi         wifi      UP                       2001:0db8:0222:0002/64
                                                                        10.0.1/24


NODES      Name    Interface    Type                                          IPs
   BorderRouter        wpan0  thread   2001:0db8:0111:0001:ca3f:71ff:fe53:1559/64
                                       fd00:0000:fab1:0006:1ab4:3000:0000:0006/64

                       wlan0    wifi   2001:0db8:0222:0002:32e7:dfff:fee2:107a/64
                                       fd00:0000:fab1:0001:1ab4:3000:0000:0006/64
                                                                      10.0.1.2/24

     ThreadNode        wpan0  thread   2001:0db8:0111:0001:c2fb:97ff:fe04:64bd/64
                                       fd00:0000:fab1:0006:1ab4:3000:0000:000a/64

          onhub        wlan0    wifi                                  10.0.1.3/24
                                       2001:0db8:0222:0002:3a3c:8dff:fe38:999b/64


$ weave-state

State Name: weave

NODES           Name       Weave Node Id    Pairing Code
        BorderRouter    18B4300000000006          AAA123
          ThreadNode    18B430000000000A          AAA123

FABRIC     Fabric Id           Global Prefix
                fab1     fd00:0000:fab1::/48

যেহেতু প্রতিটি হ্যাপি নোড একটি নেটওয়ার্ক নেমস্পেস, সেগুলি ডিফল্টরূপে সর্বজনীন ইন্টারনেট থেকে বিভাজিত হয়। একটি শুভ নোড প্রবেশ করে এবং একটি সর্বজনীন ইন্টারনেট ঠিকানা পিং করে এটি পরীক্ষা করুন৷ আমরা 8.8.8.8 ব্যবহার করব, google.com-এর IPv4 ঠিকানাগুলির মধ্যে একটি৷

$ happy-shell onhub
root@onhub:# ping -c2 8.8.8.8
connect: Network is unreachable

onhub ইন্টারনেটের সাথে সংযুক্ত করতে, এটিকে অবশ্যই লিনাক্স ওএস-স্তরের কনফিগারেশনে সেই ইন্টারফেসের সাথে ব্রিজ করতে হবে।

নোড থেকে প্রস্থান করুন:

root@onhub:# exit

route কমান্ড দিয়ে আপনার ইন্টারনেট সংযোগের জন্য ইন্টারফেস নির্ধারণ করুন:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.0     0.0.0.0         UG    0      0        0 em1

default রুট খুঁজুন. এটি আপনার লিনাক্স মেশিনের জন্য ইন্টারনেট সংযোগ। Iface কলাম নির্দেশ করে যে সংযোগের জন্য কোন ইন্টারফেস ব্যবহার করা হচ্ছে। উপরের উদাহরণে, এটি em1

আপনার ডিফল্ট রুটের ইন্টারফেস ব্যবহার করে ব্রিজ সেট আপ করতে happy-internet ব্যবহার করুন। --isp পতাকার জন্য, ট্রেলিং নম্বর ছাড়াই ইন্টারফেসের নাম ব্যবহার করুন। এই উদাহরণে, এটা em . আপনার ডিফল্ট ইন্টারফেস eth1 হলে, --isp পতাকা হবে eth

$ happy-internet --node onhub --interface em1 --isp em --seed 249

happy-state আউটপুটে কোনও দৃশ্যমান পরিবর্তন হবে না, তবে onhub নোডে ইন্টারনেট সংযোগ থাকা উচিত। আসুন নোডে ফিরে যাই এবং পরীক্ষা করি:

$ happy-shell onhub
root@onhub:# ping -c2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=1.81 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=1.81 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.814/1.816/1.819/0.042 ms

সফলতার !

c4d411ab1734131.png

ডিএনএস

হ্যাপি নোডের বিল্ট-ইন ডিএনএস ক্ষমতা নেই। আপনি google.com পিং করার চেষ্টা করলে, এটি ব্যর্থ হয়:

root@onhub:# ping -c2 google.com
ping: unknown host google.com

সৌভাগ্যবশত, Happy DNS-এর জন্য সমর্থন প্রদান করে। নোড থেকে প্রস্থান করুন এবং আপনার লিনাক্স মেশিনের জন্য DNS সার্ভার খুঁজুন। উপযুক্ত ডিফল্ট ইন্টারফেস ব্যবহার নিশ্চিত করুন:

root@onhub:# exit
$ nmcli dev list iface em1 | grep domain_name_servers
DHCP4.OPTION[13]:                       domain_name_servers = 172.16.255.1 172.16.255.153 172.16.255.53

happy-dns সাথে এই DNS ঠিকানাগুলি ব্যবহার করুন:

$ happy-dns 172.16.255.1 172.16.255.153 172.16.255.53

এখন onhub নোডের মধ্যে থেকে google.com পিং করার চেষ্টা করুন:

$ happy-shell onhub
root@onhub:# ping -c2 google.com
PING google.com (64.233.191.113) 56(84) bytes of data.
64 bytes from ja-in-f113.1e100.net (64.233.191.113): icmp_seq=1 ttl=46 time=36.9 ms
64 bytes from ja-in-f113.1e100.net (64.233.191.113): icmp_seq=2 ttl=46 time=37.0 ms

--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 36.978/36.995/37.013/0.193 ms

আপনার হয়ে গেলে onhub নোড থেকে প্রস্থান করুন:

root@onhub:# exit

সুড়ঙ্গ বুনন

সিমুলেটেড পরিষেবার মতো, হ্যাপি এবং পরিষেবার সিমুলেটেড HAN-এর মধ্যে একটি ওয়েভ টানেল সেট আপ করতে হবে। একটি বাস্তব ক্লাউড পরিষেবার সাথে, টানেল সেটআপে পরিষেবাটির IP ঠিকানা বা URL ব্যবহার করুন৷ উদাহরণ স্বরূপ:

$ weave-tunnel-start BorderRouter mycloud.service.com

3ed2c3c0df67f4d2.png

9. পরিষ্কার করা

আপনার লিনাক্স নেটওয়ার্ক কনফিগারেশনের সমস্যাগুলি এড়াতে, হ্যাপি টপোলজিগুলি সেগুলির সাথে কাজ শেষ করার জন্য সর্বদা পরিষ্কার করা গুরুত্বপূর্ণ।

আপনি যদি আপনার টপোলজিতে DNS সমর্থন সক্ষম করে থাকেন, তাহলে প্রথমে -d (delete) ফ্ল্যাগ দিয়ে সেই কমান্ডটি পুনরায় চালু করে এটি সরিয়ে ফেলুন। নেটওয়ার্ক কনফিগারেশন সঠিকভাবে আপডেট করা হয়েছে তা নিশ্চিত করার জন্য যেকোন হ্যাপি নোডগুলি সরানোর আগে এটি অবশ্যই চালানো উচিত।

$ happy-dns -d 172.16.255.1 172.16.255.153 172.16.255.53

এর পরে, হ্যাপি স্টেটটি মুছুন:

$ happy-state-delete

কখনও কখনও, কিছু রাষ্ট্রীয় ফাইল একটি রাষ্ট্র মুছে ফেলার পরে থেকে যেতে পারে. আপনি যদি সমস্যায় পড়েন এবং হ্যাপি প্রত্যাশিতভাবে কাজ না করে, তাহলে happy-state-delete দিয়ে স্টেটটি মুছে দিন এবং তারপরে অবশিষ্ট ক্লিন আপ করতে বাধ্য করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

$ ip netns | xargs -I {} sudo ip netns delete {}
$ rm -rf ~/.*state.json
$ rm -rf ~/.*state.json.lock

আপনার মেশিনটি তার স্বাভাবিক নেটওয়ার্ক কনফিগারেশনে ফিরে আসা উচিত।

10. অভিনন্দন!

আপনি এখন জানেন:

  • আপনার নিজের আইওটি হোম এরিয়া নেটওয়ার্কগুলিকে অনুকরণ করতে হ্যাপি কীভাবে ব্যবহার করবেন
  • হ্যাপি টপোলজিগুলিকে কীভাবে ইন্টারনেটে সংযুক্ত করবেন
  • ওপেনওয়েভের মাধ্যমে ওয়েভের মৌলিক বিষয়, নেস্ট-এর ওপেন-সোর্স সংস্করণ

পরবর্তী পদক্ষেপ

এই কোডল্যাবটি তৈরি করে, নিম্নলিখিত অনুশীলনগুলি চেষ্টা করুন:

  • প্রতিটি থ্রেড এবং ওয়াই-ফাই নেটওয়ার্কে একাধিক নোড সহ একটি বড় টপোলজি তৈরি করুন এবং সমস্ত নোডের মধ্যে সংযোগ স্থাপন করুন
  • happy-state-load বা weave-state-load লোডের মাধ্যমে টপোলজি লোড করতে একটি ব্যাশ স্ক্রিপ্ট তৈরি করুন
  • হ্যাপি happy-traceroute এবং happy-process-* এর মতো অন্যান্য হ্যাপি কমান্ডগুলি অন্বেষণ করুন

আরও পড়া

বিভিন্ন রেফারেন্সের জন্য openweave.io দেখুন, যার মধ্যে রয়েছে:

f6996428fb06dede.png