টেথারিং হার্ডওয়্যার অফলোড

টিথারিং অফলোড করার ফলে ডিভাইস, হার্ডওয়্যারে টিথারিং ট্রাফিক (USB, ওয়াই-ফাইয়ের মাধ্যমে) অফলোড করে পাওয়ার সাশ্রয় করতে এবং পারফর্ম্যান্স উন্নত করতে পারে। অ্যাপ প্রসেসরকে বাইপাস করে, মডেম ও পেরিফেরালের মধ্যে সরাসরি পাথ প্রদান করার মাধ্যমে টেথারিং ট্রাফিক অফলোড করা হয়।

স্পেসিফিকেশন

Android 8.1 থেকে শুরু করে, ডিভাইসগুলি হার্ডওয়্যারে IPv4, IPv6 বা IPv4+IPv6 ফরওয়ার্ড করার জন্য টেথারিং অফলোড ব্যবহার করতে পারে।

অফলোড ফিচারের জন্য সব প্যাকেট অফলোড করার প্রয়োজন হয় না। ফ্রেমওয়ার্কটি সফ্টওয়্যারে যেকোনও প্যাকেট হ্যান্ডেল করতে পারে। কন্ট্রোল প্যাকেট সাধারণত সফ্টওয়্যারে প্রসেস করা হয়। কারণ, টিথার করা ট্রাফিক ও ডিভাইস ট্রাফিকের মধ্যে IPv4 পোর্ট শেয়ার করা হয়, তাই IPv4 সেশন সেট-আপ/টিয়ারডাউন প্যাকেট (যেমন, SYN/SYN+ACK, FIN) অবশ্যই সফ্টওয়্যারে প্রসেস করতে হবে যাতে কার্নেল ফ্লো স্টেট কনস্ট্রাক্ট করতে পারে। ফ্রেমওয়ার্ক কন্ট্রোল প্লেন ও স্টেট মেশিন প্রদান করে। এছাড়াও, এটি আপস্ট্রিম এবং ডাউনস্ট্রিম ইন্টারফেস/প্রিফিক্স সংক্রান্ত তথ্য সহ হার্ডওয়্যার প্রদান করে।

IPv4-এর জন্য, হার্ডওয়্যার IPv4 নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন (NAT) সেশন সেট-আপ প্যাকেটকে CPU-তে পৌঁছাতে দেয়। কার্নেল NAT এন্ট্রি তৈরি করে এবং HAL ইমপ্লিমেন্টেশন ফ্রেমওয়ার্ক-প্রোভাইডেড ফাইল ডেসক্রিপ্টর থেকে এন্ট্রি পর্যবেক্ষণ করে এবং হার্ডওয়্যারে এই ফ্লো ম্যানেজ করে। এর অর্থ হল, HAL ইমপ্লিমেন্টেশনের জন্য CAP_NET_* প্রয়োজন নেই, কারণ ফ্রেমওয়ার্ক থেকে HAL খোলা NF_NETLINK_CONNTRACK সকেট পায়। নির্দিষ্ট সময় অন্তর, হার্ডওয়্যার ফ্রেমওয়ার্কে বর্তমানে অ্যাক্টিভ ফ্লোর জন্য NAT স্টেট আপডেট পাঠায়, যা সংশ্লিষ্ট কার্নেল কানেকশন ট্র্যাকিং স্টেট এন্ট্রি রিফ্রেশ করে।

IPv6-এর জন্য, ফ্রেমওয়ার্ক IPv6 ডেস্টিনেশন প্রিফিক্সের একটি তালিকা প্রোগ্রাম করে, যেখানে ট্রাফিক অফলোড করা যাবে না। অন্যান্য সব টিথার করা প্যাকেট অফলোড করা যেতে পারে।

ডেটা ব্যবহারের অ্যাকাউন্টিংয়ের জন্য, NetworkStatsService ডেটা ব্যবহারের পোলিংয়ের কারণে ফ্রেমওয়ার্ক হার্ডওয়্যার থেকে ট্রাফিক সংক্রান্ত পরিসংখ্যানের অনুরোধ করে। এছাড়াও, ফ্রেমওয়ার্কটি HAL-এর মাধ্যমে হার্ডওয়্যারকে ডেটা ব্যবহারের সীমা সম্পর্কে জানায়।

হার্ডওয়্যার সংক্রান্ত প্রয়োজনীয়তা

টিথারিং অফলোড প্রয়োগ করতে, আপনার হার্ডওয়্যারকে অবশ্যই মডেম ও ওয়াই-ফাই/USB-এর মধ্যে IP প্যাকেট ফরওয়ার্ড করার উপযুক্ত হতে হবে এবং তা মূল প্রসেসরের মাধ্যমে ট্রাফিক না পাঠিয়ে করতে হবে।

প্রয়োগ

টিথারিং অফলোড ফিচার চালু করতে, আপনাকে অবশ্যই নিম্নলিখিত দুটি কনফিগারেশন HAL (IOffloadConfig) এবং কন্ট্রোল HAL (IOffloadControl) প্রয়োগ করতে হবে।

কনফিগারেশন HAL: IOffloadConfig

IOffloadConfig HAL টিথারিং অফলোড ইমপ্লিমেন্টেশন শুরু করে। ফ্রেমওয়ার্কটি HAL ইমপ্লিমেন্টেশনকে আগে থেকে কানেক্ট করা NF_NETLINK_CONNTRACK সকেট প্রদান করে, যা ইমপ্লিমেন্টেশনটি IPv4 ফ্লো পর্যবেক্ষণ করার জন্য ব্যবহার করতে পারে। শুধুমাত্র ফরওয়ার্ড করা ফ্লো ত্বরান্বিত করতে হবে।

Control HAL: IOffloadControl

অফলোড প্রয়োগ করার বিষয়টি IOffloadControl HAL নিয়ন্ত্রণ করে। নিম্নলিখিত পদ্ধতিগুলি অবশ্যই প্রয়োগ করতে হবে:

  • অফলোড হার্ডওয়্যার শুরু/বন্ধ করা: initOffload/stopOffload ব্যবহার করুন এবং setLocalPrefixes-এর মাধ্যমে অফলোড থেকে স্থানীয় IP অ্যাড্রেস বা অন্যান্য নেটওয়ার্ককে ছাড় দিন।
  • আপস্ট্রিম ইন্টারফেস, IPv4 অ্যাড্রেস ও IPv6 গেটওয়ে সেট করুন: setUpstreamParameters ব্যবহার করুন এবং addDownstream/removeDownstream-এর মাধ্যমে ডাউনস্ট্রিম IP অ্যাড্রেসের রেঞ্জ কনফিগার করুন।
  • ডেটা ব্যবহারের অ্যাকাউন্টিং: getForwardedStats/setDataLimit ব্যবহার করুন।

আপনার ভেন্ডর HAL-কেও ITetheringOffloadCallback ইন্টারফেসের মাধ্যমে কলব্যাক পাঠাতে হবে, যা ফ্রেমওয়ার্ককে নিম্নলিখিত বিষয়গুলি সম্পর্কে জানায়:

  • অ্যাসিঙ্ক্রোনাস ইভেন্ট যেমন অফলোড শুরু এবং বন্ধ করা হচ্ছে (OffloadCallbackEvent)
  • NAT টাইমআউট আপডেট, যা নির্দিষ্ট IPv4 ফ্লোতে ট্রাফিক আছে এবং কার্নেল দ্বারা বন্ধ করা যাবে না তা নির্দেশ করার জন্য পর্যায়ক্রমে পাঠাতে হবে

যাচাইকরণ

টিথারিং অফলোডের প্রয়োগ যাচাই করতে, টিথারিং ও ওয়াই-ফাই হটস্পট প্রত্যাশিতভাবে কাজ করছে কিনা তা যাচাই করতে ম্যানুয়াল বা অটোমেটিক টেস্টিং ব্যবহার করুন। The Vendor Test Suite (VTS) টিথারিং অফলোড HAL-এর জন্য টেস্ট কন্টেন্ট থাকে।