টিথারিং

Android 13-এ আপডেট

আপডেট করুন আরও তথ্য
CrossDevice চালু করা হয়েছে CrossDevice
স্প্লিট টানেলিং চালু করা হয়েছে স্প্লিট টানেলিং

এক নজরে

টেথারিং মডিউল কানেক্ট করা অন্যান্য ক্লায়েন্ট ডিভাইসের সাথে Android ডিভাইসের ইন্টারনেট কানেকশন শেয়ার করে। এগুলি ওয়াই-ফাই, USB, ব্লুটুথ বা ইথারনেটের মাধ্যমে টেথারিং ডিভাইসের সাথে কানেক্ট করতে পারে। এই মডিউলে টিথারিং কম্পোনেন্ট (USB, ওয়াই-ফাই অ্যাক্সেস পয়েন্ট, ব্লুটুথ ইত্যাদি) এবং এর ডিপেন্ডেন্সি (টিথারিং এনটাইটেলমেন্ট, IpServer এবং offloadController-এর সাথে ইন্টার‍্যাকশন) অন্তর্ভুক্ত। এই মডিউল আপডেট করা যাবে, অর্থাৎ এটি সাধারণ Android রিলিজ সাইকেলের বাইরেও ফাংশনালিটির আপডেট পেতে পারে।

টিথারিং মডিউল, Android ইকোসিস্টেম জুড়ে OEM-কে একটি সিঙ্গেল, স্ট্যান্ডার্ড রেফারেন্স ইমপ্লিমেন্টেশন ব্যবহার করতে দেয় যা নিম্নলিখিত সুবিধাগুলি প্রদান করে।

  • মডিউল আপডেটের মাধ্যমে এন্ড-ইউজাররা Android ডিভাইস জুড়ে একই ধরনের অভিজ্ঞতা পান এবং ইন্টারঅপারেবিলিটি সংক্রান্ত সমস্যার সমাধান পান।

  • OEM, স্বতন্ত্র কাস্টমাইজেশনের খরচ কমানোর পাশাপাশি ক্যারিয়ারের প্রয়োজনীয়তা পূরণ করতে পারে (কারণ তাদের বিভিন্ন উপায়ে একই প্রয়োজনীয়তার আলাদা আলাদা প্রয়োগের প্রয়োজন নেই)।

স্প্লিট টানেলিং

স্প্লিট টানেলিং ব্যবহারের ক্ষেত্রে সহায়তা করতে, বাদ দেওয়া রুট নির্দিষ্ট করার জন্য Android 13-এ একটি নতুন API যোগ করা হয়েছে।

স্প্লিট টানেলিং হল এমন একটি কনফিগারেশন যেখানে নির্দিষ্ট ট্রাফিক VPN-এর মাধ্যমে যায়, কিন্তু অন্য ট্রাফিক যায় না। একটি সাধারণ উদাহরণ হল যেখানে কোনও সংস্থা সাধারণ ওয়েব সার্ফিং, ব্যান্ডউইথ-হেভি (যেমন, YouTube, Netflix) বা লেটেন্সি-সেনসিটিভ অ্যাপ্লিকেশন (যেমন, Office 365) VPN বাইপাস করতে চায়। স্প্লিট টানেলিং উপলভ্য হওয়ার আগে, VpnService.Builder ভিপিএন ক্লায়েন্টকে এটি ইঙ্গিত করার অনুমতি দেওয়া হত যে শুধুমাত্র কিছু সাবনেটকে সেটির দিকে রুট করা উচিত (অন্তর্ভুক্ত করুন রুট)। স্প্লিট টানেলিংয়ের মাধ্যমে, আপনি ইনভার্স নির্দিষ্ট করতে পারবেন: নির্দিষ্ট সাবনেট বাদ দিয়ে (রুট বাদ দিয়ে) VPN-এ সমস্ত ট্রাফিক রুট করা।

নতুন স্প্লিট টানেলিং API-এর সিগনেচার হল:

public Builder excludeRoute(@NonNull IpPrefix prefix)

CrossDevice

Android 13-এ চালু করা CrossDevice-এর উদ্দেশ্য হল স্ট্যান্ডার্ড প্রোটোকল ব্যবহার করে ক্রস-ডিভাইস কমিউনিকেশন টেকনোলজি প্রদান করা। এটি ডিভাইস খুঁজে পাওয়া, যাচাই করা কানেকশন ও অন্যান্য ক্রস-ডিভাইস অভিজ্ঞতার জন্য API ও ফিচার প্রদান করে।

ক্রস-ডিভাইস মোটিভেশন

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

CrossDevice মডিউল বাউন্ডারি

CrossDevice API packages/modules/CrossDevice/framework-এ
  • NearbyManager
  • AccountProviderBase
CrossDevice Services packages/modules/CrossDevice/service-এ
  • NearbyService - scanning API

CrossDevice প্যাকেজ ফর্ম্যাট

এই মডিউলের প্রধান ফাংশন APEX প্যাকেজে অন্তর্ভুক্ত। APK-তে রিসোর্স প্যাক করা থাকে।

CrossDevice ডিপেন্ডেন্সি

CrossDevice নিম্নলিখিত বিষয়গুলির উপর নির্ভর করে:

  • ওয়াই-ফাই
  • ব্লুটুথ
  • UWB
  • modules-utils-preconditions
  • প্রোটো লাইব্রেরি

CrossDevice কাস্টমাইজেশন বিকল্প

আমরা RRO-এর মাধ্যমে হাফ শিটের জন্য UI কাস্টমাইজ করার অনুমতি OEM-কে দেওয়ার পরিকল্পনা করেছি। কার্যকারিতা কাস্টমাইজ করার কোনও প্ল্যান নেই।

CrossDevice টেস্টিং স্ট্র্যাটেজি

আমরা CrossDevice ফাংশনালিটি যাচাই করতে Android কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্ট এবং MTS-এ ক্রস ডিভাইস টেস্টিং যোগ করার পরিকল্পনা করেছি।

eBPF টেথারিং অফলোড

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

Android 12 থেকে, এই ফাংশনালিটি (যার মধ্যে eBPF প্রোগ্রাম কোড অন্তর্ভুক্ত) সম্পূর্ণভাবে টিথারিং মডিউল প্রদান করে, যা নিম্নলিখিত বিষয়গুলি সমর্থন করে:

  • IPv6 ডাউনলোড (টেথার করা ডিভাইসে ট্রাফিক ফ্লো হচ্ছে)
  • IPv6 আপলোড (টিথার করা ডিভাইস থেকে ট্রাফিক ফ্লো হচ্ছে)
  • IPv4 TCP/UDP আপলোড ও ডাউনস্ট্রিম (টেথার করা ডিভাইসে/থেকে ট্রাফিক ফ্লো করা)
  • eBPF অফলোড

এই ফিচার ডিফল্ট হিসেবে চালু করা থাকে, ব্যবহারকারী RRO-এর মাধ্যমে config_tether_enable_bpf_offload কনফিগারেশনকে false হিসেবে ওভাররাইড করতে পারেন। আরও তথ্যের জন্য কাস্টমাইজেশন দেখুন।

IPv4 ও IPv6 কাজ করে

টিথারিং মডিউল IPv4 ও IPv6 ডুয়াল স্ট্যাক সাপোর্ট করে।

  • IPv4 নেটওয়ার্কের জন্য, মডিউলটি নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন (NAT) সেট-আপ করে এবং IP অ্যাড্রেস অ্যাসাইন করার জন্য ডায়নামিক হোস্ট কনফিগারেশন প্রোটোকল (DHCP) গ্রহণ করে।

  • IPv6 নেটওয়ার্কের জন্য, IP অ্যাড্রেস অ্যাসাইন করার জন্য মডিউল IPv6 স্টেটলেস অ্যাড্রেস অটো কনফিগারেশন (SLAAC) গ্রহণ করে।

মডিউল বাউন্ডারি

Android 12 ও তার পরের যেকোনও ভার্সনের জন্য, packages/modules/Connectivity-এর অধীনে থাকা সব ফাইল/ফোল্ডার টিথারিং মডিউল স্কোপে থাকে।

Android 11 ও এর আগের যেকোনও ভার্সনের জন্য, টেথারিং মডিউলে packages/modules/Tethering-এ নিম্নলিখিত Android 10 ফাইল আছে।

  • frameworks/base/services/core/java/com/android/server/connectivity/Tethering.java
  • frameworks/base/services/core/java/com/android/server/connectivity/tethering/
  • frameworks/base/services/core/java/com/android/server/NetworkManagementService.java
  • frameworks/base/services/net/java/android/net/ip/{InterfaceController,IpServer,RouterAdvertisementDaemon}.java
  • frameworks/base/services/net/java/android/net/{netlink,dhcp}/*
  • frameworks/base/services/net/java/android/net/util/{InterfaceSet,InterfaceParams,NetdService,PrefixUtils,SharedLog,VersionedBroadcastListener}.java
  • frameworks/base/core/java/android/net/{ITetheringEventCallback,ITetheringStatsProvider}.aidl
  • frameworks/base/core/java/android/net/{NetworkUtils,util/IpUtils}.java
  • frameworks/base/core/java/com/android/internal/util/{BitUtils,IndentingPrintWriter,State,StateMachine}.java
  • frameworks/base/core/java/com/android/server/connectivity/MockableSystemProperties.java
  • frameworks/base/core/java/android/os/INetworkManagementService.aidl
  • frameworks/base/core/java/android/bluetooth/BluetoothPan.java
  • frameworks/base/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp
  • packages/apps/Settings/src/com/android/settings/wifi/tether/TetherService.java
  • packages/apps/Settings/src/com/android/settings/network/TetherProvisioningActivity.java

মডিউল ফর্ম্যাট

টিথারিং মডিউল (com.android.tethering) APEX ফর্ম্যাটে আছে এবং এটি Android 11 বা এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে উপলভ্য।

ConnectivityService অন্তর্ভুক্ত করুন

Android 12 থেকে, L3+ কানেক্টিভিটির মূল কম্পোনেন্ট প্রয়োগকারী ConnectivityService কোডটি Tethering APEX-এ যোগ করা হয়েছে। টেথারিংয়ের পরিধি কানেক্টিভিটি মডিউলে প্রসারিত হয়।

মডিউল ডিপেন্ডেন্সি

টেথারিং মডিউলের নিম্নলিখিত ডিপেন্ডেন্সি আছে:

  • সিস্টেম সার্ভারে পাবলিক ও সিস্টেম API পদ্ধতি
  • সিস্টেম সার্ভারের সাথে স্থিতিশীল AIDL IPC ইন্টারফেস
  • tetheroffload HIDL (hardware/interfaces/tetheroffload/-এ সংজ্ঞায়িত)
  • DHCP সার্ভার (নেটওয়ার্ক স্ট্যাক মডিউলের অংশ)

কাস্টমাইজেশন

টেথারিং মডিউলে কাস্টমাইজেশনের সুবিধা নেই।

পরীক্ষা করা

Android কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS), টিথারিং মডিউলের কার্যকারিতা যাচাই করে।