ইন্টার‍্যাকশন মডেলের ধারণা

কোনও নোডের ডেটা মডেল (DM) প্রাসঙ্গিক নয় যদি আমরা সেটিতে অপারেশন পারফর্ম করতে না পারি। ইন্টার‍্যাকশন মডেল (IM), কোনও নোডের DM-এর সাথে অন্যান্য নোডের DM-এর সম্পর্ককে সংজ্ঞায়িত করে: DM-এর মধ্যে যোগাযোগের জন্য একটি সাধারণ ভাষা।

নোডগুলি একে অপরের সাথে ইন্টার‍্যাক্ট করে:

  • অ্যাট্রিবিউট ও ইভেন্ট পড়া ও সাবস্ক্রাইব করা
  • অ্যাট্রিবিউটে লেখা
  • কমান্ড ইনভোক করা

কোনও Node যখনই অন্য কোনও Node-এর সাথে এনক্রিপ্ট করা যোগাযোগ সিকোয়েন্স স্থাপন করে, তখন তারা একটি ইন্টার‍্যাকশন সম্পর্ক তৈরি করে। ইন্টার‍্যাকশন এক বা একাধিক ট্রানজ্যাকশন নিয়ে গঠিত হতে পারে এবং ট্রানজ্যাকশন এক বা একাধিক অ্যাকশন নিয়ে গঠিত হয়, যা নোডগুলির মধ্যে IM-লেভেল মেসেজ হিসেবে বোঝা যায়।

ইন্টার‍্যাকশন মডেলের হায়ারার্কি
ছবি ১: ইন্টার‍্যাকশন মডেলের হায়ারার্কি

ট্রানজ্যাকশনে একাধিক অ্যাকশন কাজ করে, যেমন, রিড রিকোয়েস্ট অ্যাকশন যা অন্য নোড থেকে কোনও অ্যাট্রিবিউট বা ইভেন্ট অথবা তার উত্তর, রিপোর্ট ডেটা অ্যাকশন, যা সার্ভার থেকে ক্লায়েন্টে তথ্য নিয়ে যায়।

ইনিশিয়েটর ও টার্গেট

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

গ্রুপ

Matter-এর নোড গ্রুপের অংশ হতে পারে। ডিভাইসের গ্রুপ হল এমন একটি পদ্ধতি যার মাধ্যমে একই অ্যাকশনে একসাথে একাধিক ডিভাইসে মেসেজ পাঠানো ও অ্যাড্রেস করা যায়। গ্রুপের সব নোড একই Group ID শেয়ার করে, এটি হল ১৬-বিট পূর্ণসংখ্যা।

গ্রুপ-লেভেল কমিউনিকেশন (Groupcast) সম্পূর্ণ করতে, Matter IPv6 Multicast মেসেজ ব্যবহার করে এবং গ্রুপের সব মেম্বারের একই Multicast অ্যাড্রেস থাকে।

পাথ

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

যোগাযোগের ক্ষেত্রে দ্রুত উত্তর দেওয়ার জন্য এই পদ্ধতিটি গুরুত্বপূর্ণ। যেমন, কোনও ব্যবহারকারী সব আলো বন্ধ করতে চাইলে, ভয়েস অ্যাসিস্ট্যান্ট একগুচ্ছ আলাদা আলাদা ইন্টার‍্যাকশনের পরিবর্তে কোনও গ্রুপের মধ্যে থাকা একাধিক আলোর সাথে একটি ইন্টার‍্যাকশন স্থাপন করতে পারে। ইনিশিয়েটর প্রতিটি লাইটের সাথে আলাদা আলাদা ইন্টার‍্যাকশন তৈরি করলে, ডিভাইসের রেসপন্সিভনেস হ্রাসে হিউম্যান-পারসেপ্টিবল ল্যাটেন্সি তৈরি হতে পারে। এই এফেক্টের কারণে একাধিক ডিভাইস একটি কমান্ডে প্রতিক্রিয়া দেখায় এবং দু'টি ডিভাইসের মধ্যে দৃশ্যমান বিলম্ব হয়। এটি প্রায়শই "পপকর্ন এফেক্ট" হিসেবে উল্লেখ করা হয়।

Matter-এ পাথ তৈরি করার জন্য নিচে দেওয়া বিকল্পগুলির মধ্যে একটি ব্যবহার করা যেতে পারে:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

এইসব পাথ বিল্ডিং ব্লকের মধ্যে, endpoint ও cluster-এ একাধিক নোড ইনস্ট্যান্স বেছে নেওয়ার জন্য ওয়াইল্ডকার্ড অপারেটরও থাকতে পারে।

সময়সীমা সহ ও সময়সীমা ছাড়া

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

টাইমড ট্রানজ্যাকশন বুঝতে হলে, ইন্টারসেপ্ট অ্যাটাক কীভাবে হতে পারে এবং টাইমড ট্রানজ্যাকশন কেন গুরুত্বপূর্ণ তা বোঝা দরকার।

ইন্টারসেপ্ট অ্যাটাক

ইন্টারসেপ্ট অ্যাটাকের নিম্নলিখিত প্যাটার্ন থাকে:

  1. অ্যালিস ববকে একটি প্রাথমিক মেসেজ পাঠায়, যেমন, লেখার অনুরোধ অ্যাকশন।
  2. ইভ, একজন ম্যান-ইন-দ্য-মিডল, মেসেজটি ইন্টারসেপ্ট করে এবং ববকে সেটি গ্রহণ করতে বাধা দেয়, যেমন কোনও ধরনের রেডিও জ্যামিংয়ের মাধ্যমে।
  3. ববের থেকে কোনও উত্তর না পেয়ে, অ্যালিস দ্বিতীয় মেসেজ পাঠায়।
  4. ইভ আবার ইন্টারসেপ্ট করে এবং ববকে এটি পেতে বাধা দেয়।
  5. ইভ প্রথম ইন্টারসেপ্ট করা মেসেজটি ববকে পাঠায়, যেন সেটি অ্যালিসের থেকে এসেছে।
  6. বব উত্তরটি অ্যালিস (এবং ইভ)-কে পাঠায়।
  7. ইভ দ্বিতীয় ইন্টারসেপ্ট করা মেসেজটি পরে রিপ্লে করার জন্য রেখে দেয়। যেহেতু বব কখনওই অ্যালিসের থেকে আসল দ্বিতীয় ইন্টারসেপ্ট করা মেসেজটি পায়নি, তাই এটি সেটি গ্রহণ করবে। এই মেসেজটি নিরাপত্তা লঙ্ঘনের ঘটনাকে বোঝায়, যখন মেসেজটি "তালা খোলো"-এর মতো কমান্ড এনকোড করে।

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

টাইমড ট্রানজ্যাকশন, অ্যাকশনের জটিলতা ও সংখ্যা বাড়িয়ে দেয়। তাই, এগুলি প্রতিটি ট্রানজ্যাকশনের জন্য সাজেস্ট করা হয় না, তবে শুধুমাত্র সেইসব ডিভাইসে গুরুত্বপূর্ণ অপারেশনের জন্য সাজেস্ট করা হয় যেগুলি ফিজিক্যাল বা ভার্চুয়াল নিরাপত্তা ও গোপনীয়তা অ্যাসেট কন্ট্রোল করে।

SDK অ্যাবস্ট্রাকশন

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

যে ডেভেলপার Matter SDK ব্যবহার করে প্রোডাক্ট তৈরি করেন, তিনি সাধারণত সরাসরি অ্যাকশন এক্সিকিউট করার জন্য কল করেন না; অ্যাকশনগুলি SDK ফাংশন দ্বারা অ্যাবস্ট্রাক্ট করা হয় যা সেগুলিকে একটি ইন্টার‍্যাকশনে এনক্যাপসুলেট করবে। তবে, ইঞ্জিনিয়ারকে Matter-এর ক্ষমতা সম্পর্কে ভাল দক্ষতা প্রদান করার পাশাপাশি SDK প্রয়োগের উপর সূক্ষ্ম নিয়ন্ত্রণ করার জন্য IM অ্যাকশন বোঝা গুরুত্বপূর্ণ।