हार्डवेयर से तेज़ी लाने के लिए टेदर करने की सुविधा

टेदरिंग ऑफ़लोड की सुविधा से, डिवाइसों को पावर बचाने और परफ़ॉर्मेंस बेहतर करने में मदद मिलती है. इसके लिए, टेदरिंग ट्रैफ़िक (यूएसबी, वाई-फ़ाई के ज़रिए) को हार्डवेयर पर ऑफ़लोड किया जाता है. टेदरिंग ट्रैफ़िक को ऑफ़लोड करने के लिए, मॉडेम और पेरिफ़ेरल के बीच सीधा पाथ उपलब्ध कराया जाता है. इससे, ऐप्लिकेशन प्रोसेसर को बायपास किया जाता है.

विशेषताएं

Android 8.1 से, डिवाइस, IPv4, IPv6 या IPv4+IPv6 फ़ॉरवर्डिंग को हार्डवेयर पर ऑफ़लोड करने के लिए, टेदरिंग ऑफ़लोड की सुविधा का इस्तेमाल कर सकते हैं.

ऑफ़लोड सुविधा के लिए, सभी पैकेट ऑफ़लोड करना ज़रूरी नहीं है. फ़्रेमवर्क, सॉफ़्टवेयर में किसी भी पैकेट को हैंडल कर सकता है. आम तौर पर, कंट्रोल पैकेट को सॉफ़्टवेयर में प्रोसेस किया जाता है. टेदर किए गए ट्रैफ़िक और डिवाइस ट्रैफ़िक के बीच, IPv4 पोर्ट शेयर किए जाते हैं. इसलिए, IPv4 सेशन सेटअप/टीयरडाउन पैकेट (उदाहरण के लिए, SYN/SYN+ACK, FIN) को सॉफ़्टवेयर में प्रोसेस किया जाना चाहिए, ताकि कर्नल फ़्लो स्टेट बना सके. फ़्रेमवर्क, कंट्रोल प्लेन और स्टेट मशीन उपलब्ध कराता है. यह हार्डवेयर को अपस्ट्रीम और डाउनस्ट्रीम इंटरफ़ेस/प्रीफ़िक्स के बारे में भी जानकारी देता है.

IPv4 के लिए, हार्डवेयर, IPv4 नेटवर्क अड्रेस ट्रांसलेशन (NAT) सेशन सेटअप पैकेट को सीपीयू तक पहुंचने की अनुमति देता है. कर्नल, NAT एंट्री बनाता है. साथ ही, HAL लागू करने की प्रोसेस, फ़्रेमवर्क से मिले फ़ाइल डिस्क्रिप्टर से एंट्री को मॉनिटर करती है और हार्डवेयर में इन फ़्लो को हैंडल करती है. इसका मतलब है कि HAL लागू करने की प्रोसेस के लिए, CAP_NET_* की ज़रूरत नहीं होती. ऐसा इसलिए, क्योंकि HAL को फ़्रेमवर्क से NF_NETLINK_CONNTRACK सॉकेट मिलते हैं. समय-समय पर, हार्डवेयर, फ़्रेमवर्क को फ़िलहाल चालू फ़्लो के लिए NAT स्टेट अपडेट भेजता है. इससे, कर्नल कनेक्शन ट्रैकिंग स्टेट की एंट्री रीफ़्रेश हो जाती हैं.

IPv6 के लिए, फ़्रेमवर्क, IPv6 डेस्टिनेशन प्रीफ़िक्स की सूची प्रोग्राम करता है. इस सूची में शामिल प्रीफ़िक्स के लिए, ट्रैफ़िक को ऑफ़लोड नहीं किया जाना चाहिए. टेदर किए गए अन्य सभी पैकेट को ऑफ़लोड किया जा सकता है.

डेटा खर्च की जानकारी के लिए, NetworkStatsService डेटा खर्च के पोल की वजह से, फ़्रेमवर्क, हार्डवेयर से ट्रैफ़िक के आंकड़े का अनुरोध करता है. फ़्रेमवर्क, HAL के ज़रिए हार्डवेयर को डेटा खर्च की सीमाएं भी बताता है.

हार्डवेयर की ज़रूरी शर्तें

टेदरिंग ऑफ़लोड की सुविधा लागू करने के लिए, आपके हार्डवेयर में मॉडेम और वाई-फ़ाई/यूएसबी के बीच आईपी पैकेट फ़ॉरवर्ड करने की क्षमता होनी चाहिए. साथ ही, ट्रैफ़िक को मुख्य प्रोसेसर के ज़रिए नहीं भेजा जाना चाहिए.

लागू करना

टेदरिंग ऑफ़लोड की सुविधा चालू करने के लिए, आपको कॉन्फ़िगरेशन HAL (IOffloadConfig) और कंट्रोल HAL (IOffloadControl), दोनों को लागू करना होगा.

कॉन्फ़िगरेशन HAL: IOffloadConfig

IOffloadConfig HAL, टेदरिंग ऑफ़लोड लागू करने की प्रोसेस शुरू करता है. फ़्रेमवर्क, HAL लागू करने की प्रोसेस को पहले से कनेक्ट किए गए NF_NETLINK_CONNTRACK सॉकेट उपलब्ध कराता है. इनका इस्तेमाल, IPv4 फ़्लो को मॉनिटर करने के लिए किया जा सकता है. सिर्फ़ फ़ॉरवर्ड किए गए फ़्लो को तेज़ किया जाना चाहिए.

कंट्रोल HAL: IOffloadControl

The IOffloadControl HAL, ऑफ़लोड लागू करने की प्रोसेस को कंट्रोल करता है. इन तरीकों को लागू करना ज़रूरी है:

  • ऑफ़लोड हार्डवेयर शुरू/बंद करना: initOffload/stopOffload का इस्तेमाल करें. साथ ही, setLocalPrefixes की मदद से, स्थानीय आईपी पतों या अन्य नेटवर्क को ऑफ़लोड से बाहर रखें.
  • अपस्ट्रीम इंटरफ़ेस, IPv4 पता, और IPv6 गेटवे सेट करना: setUpstreamParameters का इस्तेमाल करें. साथ ही, addDownstream/removeDownstream की मदद से, डाउनस्ट्रीम आईपी पते की रेंज कॉन्फ़िगर करें.
  • डेटा खर्च की जानकारी: getForwardedStats/setDataLimit का इस्तेमाल करें.

आपके वेंडर HAL को ITetheringOffloadCallback इंटरफ़ेस के ज़रिए कॉलबैक भी भेजने होंगे. इससे, फ़्रेमवर्क को इनके बारे में जानकारी मिलती है:

  • एसिंक्रोनस इवेंट, जैसे कि ऑफ़लोड शुरू और बंद होना (OffloadCallbackEvent)
  • NAT टाइमआउट अपडेट. इन्हें समय-समय पर भेजा जाना चाहिए, ताकि यह पता चल सके कि किसी खास IPv4 फ़्लो में ट्रैफ़िक है और इसे कर्नल से बंद नहीं किया जाना चाहिए

सत्यापन

टेदरिंग ऑफ़लोड लागू करने की प्रोसेस को मान्य करने के लिए, मैन्युअल या ऑटोमेटेड टेस्टिंग का इस्तेमाल करें. इससे, यह पुष्टि की जा सकती है कि टेदरिंग और वाई-फ़ाई हॉटस्पॉट, उम्मीद के मुताबिक काम कर रहे हैं. Vendor Test Suite (VTS) में, टेदरिंग ऑफ़लोड HAL के लिए टेस्ट शामिल हैं.