Android 13 या इसके बाद के वर्शन वाले डिवाइसों पर, Android, वाई-फ़ाई 7 (IEEE 802.11be) स्टैंडर्ड के साथ काम करता है. इस पेज पर, Android Wi-Fi 7 की सुविधाओं के बारे में बताया गया है. इनमें बेसलाइन और मल्टी-लिंक ऑपरेशन (एमएलओ) भी शामिल हैं.
बेसलाइन वाई-फ़ाई 7 की सुविधाएं
इस सेक्शन में, Android 13 और इसके बाद के वर्शन में शामिल, Wi-Fi 7 की बुनियादी सुविधाओं के बारे में बताया गया है.
डिवाइस पर वाई-फ़ाई 7 की सुविधा
Android फ़्रेमवर्क में WifiManager#isWifiStandardSupported(int standard)
एपीआई शामिल है. ऐप्लिकेशन, ScanResults.WIFI_STANDARD_11BE
आर्ग्युमेंट के साथ इस एपीआई को कॉल करके यह पता लगा सकते हैं कि कोई डिवाइस, वाई-फ़ाई 7 के साथ काम करता है या नहीं.
इस एपीआई को कॉल करने पर, वाई-फ़ाई मॉड्यूल यह जांच करता है कि config_wifi11beSupportOverride
कॉन्फ़िगरेशन ओवरले का इस्तेमाल, बदलाव करने के तौर पर किया गया है या नहीं. साथ ही, यह ये काम करता है:
- अगर ओवरले को
true
पर सेट किया गया है, तो माना जाता है कि डिवाइस पर nl80211 से मिले जवाब के बावजूद, वाई-फ़ाई 7 काम करता है. यह बदलाव सिर्फ़ उन डिवाइस मैन्युफ़ैक्चरर के लिए फ़ायदेमंद है जिनके पास ऐसे ड्राइवर नहीं हैं जो वाई-फ़ाई 7 की सुविधा देते हैं. - अगर ओवरले को
false
(डिफ़ॉल्ट वैल्यू) पर सेट किया गया है, तो वाई-फ़ाई मॉड्यूल, nl80211 से मिली जानकारी का इस्तेमाल करता है. वाई-फ़ाई मॉड्यूल, wificond से जानकारी का अनुरोध करता है. यह nl80211 कमांडNL80211_CMD_GET_WIPHY
को कॉल करता है. अगर ड्राइवर से मिले रिस्पॉन्स मेंNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY
एट्रिब्यूट मौजूद है, तो माना जाता है कि डिवाइस पर वाई-फ़ाई 7 काम करता है.
स्कैन किए गए एपी वाई-फ़ाई 7 के साथ काम करता है
Android फ़्रेमवर्क में int ScanResult#getWifiStandard()
एपीआई शामिल होता है. ऐप्लिकेशन इस एपीआई को कॉल करके यह पता लगा सकते हैं कि स्कैन किया गया ऐक्सेस पॉइंट (एपी), वाई-फ़ाई 7 के साथ काम करता है या नहीं. अगर एपी, Wi-Fi 7 के साथ काम करता है, तो एपीआई ScanResults.WIFI_STANDARD_11BE
दिखाता है.
ऐप्लिकेशन के लिए इस एपीआई का इस्तेमाल करने के लिए, ज़रूरी नहीं है कि डिवाइस पर वाई-फ़ाई 7 की सुविधा हो.
इस एपीआई को कॉल करने पर, वाई-फ़ाई मॉड्यूल यह जांच करता है कि EHT Capability IE
, कनेक्शन स्कैन के नतीजों में शामिल है या नहीं. अगर स्कैन के नतीजों में EHT Capability IE
दिखता है, तो इसका मतलब है कि स्कैन किया गया एपी, वाई-फ़ाई 7 के साथ काम करता है.
AOSP WifiTracker
क्लास, ज़्यादा जानकारी वाले मोड में चलने पर, यूज़र इंटरफ़ेस में सहायता से जुड़ी यह जानकारी दिखाती है.
एसटीए कनेक्शन मोड
Android फ़्रेमवर्क में int WifiInfo#getWifiStandard()
एपीआई शामिल होता है. ऐप्लिकेशन इस एपीआई को कॉल करके यह पता लगा सकते हैं कि मौजूदा स्टेशन (एसटीए) कनेक्शन मोड, वाई-फ़ाई 7 है या नहीं. जब डिवाइस और कनेक्ट किया गया एपी, दोनों वाई-फ़ाई 7 के साथ काम करते हैं, तब एसटीए कनेक्शन मोड वाई-फ़ाई 7 होता है. अगर कनेक्शन मोड वाई-फ़ाई 7 है, तो एपीआई ScanResults.WIFI_STANDARD_11BE
दिखाता है.
getWifiStandard
को कॉल करने पर, वाई-फ़ाई मॉड्यूल, ISupplicantStaIface#getConnectionCapabilities()
एचएएल एपीआई को कॉल करके मोड तय करता है. wpa_supplicant
एआईडीएल लेयर में इस एचएएल एपीआई को लागू करने से यह पता चलता है कि कनेक्टिविटी सेटअप के दौरान, EHT Capability IE
, AssocReq
और AssocRsp
, दोनों में मौजूद है या नहीं.
नेटवर्क चुनना
Android 13 में, नेटवर्क चुनने की सुविधा कई पैरामीटर का इस्तेमाल करके यह तय करती है कि किस एपी से कनेक्ट किया जाए. एपी का अनुमानित थ्रूपुट एक पैरामीटर है. इसका अनुमान, ThroughputPredictor
ब्लॉक का इस्तेमाल करके लगाया जाता है. ThroughputPredictor
ब्लॉक, डिवाइस और स्कैन किए गए एपी, दोनों के PHY पैरामीटर का इस्तेमाल करता है.
Android 13 में, ThroughputPredictor
कैलकुलेशन के लिए, एपी की इन सुविधाओं का इस्तेमाल करता है:
- वाई-फ़ाई 7 (802.11be) के साथ काम करना
- 320 MHz चैनल चौड़ाई के साथ काम करना
ThroughputPredictor
लॉजिक में इन सुविधाओं को शामिल करने से, डिवाइस के इन सुविधाओं का इस्तेमाल करने पर, वाई-फ़ाई 7 की सुविधा वाले एपी चुनने की संभावना बढ़ जाती है.
वाई-फ़ाई आरटीटी पर आधारित रेंजिंग
Android, Wi-Fi RTT के लिए, EHT प्रीऐंबेल और 320 MHz चैनल की चौड़ाई के लिए एपीआई की सुविधा देता है. इससे, चिप के साथ काम करने पर, आरटीटी रेंजिंग में वाई-फ़ाई 7 से जुड़ी सुविधाओं का इस्तेमाल किया जा सकता है.
HAL API
आरटीटी पर आधारित रेंजिंग के लिए, ये एचएएल एपीआई, Wi-Fi 7 की सुविधाओं के साथ काम करते हैं:
EHT
:enum RttPreamble
औरenum WifiRatePreamble
में एक जैसाWIDTH_320
:enum WifiChannelWidthInMhz
में स्थिरBW_320MHz
:enum RttBw
में स्थिर
API
ऐप्लिकेशन, वाई-फ़ाई 7 आरटीटी (रेंजिंग के लिए ट्रैवल टाइम) के आधार पर रेंजिंग के लिए, इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#PREAMBLE_EHT
ResponderConfig#PREAMBLE_EHT
(SystemApi)
सॉफ़्ट एपी
Android, सॉफ़्ट एपी में Wi-Fi 7 के साथ काम करता है. साथ ही, ये सुविधाएं भी देता है.
सॉफ़्ट एपी शुरू करना
Android, वाई-फ़ाई 7 मोड में सॉफ्ट एपी शुरू करने की सुविधा देता है.
यह config_wifiSoftapIeee80211beSupported
ओवरले कॉन्फ़िगरेशन से कंट्रोल होता है.
वाई-फ़ाई मॉड्यूल, IHostApd#addAccessPoint()
एपीआई कॉल में बूलियन HwModeParams#enable80211BE
को सेट करने के लिए, ओवरले config_wifiSoftapIeee80211beSupported
का इस्तेमाल करता है. hostapd AIDL लेयर में, इस वैल्यू का इस्तेमाल hostapd.conf
पैरामीटर सेट करने के लिए किया जाता है.
HAL API
hostapd HAL में HwModeParams
में enable80211BE
वाला बोलियन, वाई-फ़ाई 7 मोड में सॉफ़्ट एपी शुरू करने की सुविधा देता है.
सॉफ्ट एपी की जानकारी की शिकायत करना
Android में एपीआई की सुविधा शामिल है, ताकि रिपोर्ट किए गए सॉफ़्ट एपी की जानकारी में वाई-फ़ाई 7 और 320 MHz चैनल की चौड़ाई की जानकारी शामिल की जा सके.
HAL API
hostapd HAL में Generation.aidl
एआईडीएल इंटरफ़ेस में WIFI_STANDARD_11BE
कॉन्स्टेंट, IHostapdCallback#onApInstanceInfoChanged()
कॉलबैक में रिपोर्ट किए गए ApInfo
में इस्तेमाल किया जाता है. यह सॉफ्ट एपी की जानकारी को रिपोर्ट करने की सुविधा देता है.
API
ऐप्लिकेशन, सॉफ्ट एपी की जानकारी की शिकायत करने के लिए, SoftApInfo
में इन तरीकों (सिस्टम एपीआई) का इस्तेमाल कर सकते हैं.
SoftApInfo#getWifiStandard()
: अगर सॉफ्ट एपी को वाई-फ़ाई 7 मोड में शुरू किया जाता है, तो यहScanResults.WIFI_STANDARD_11BE
दिखाता है.SoftApInfo#getBandwidth()
: अगर 320 MHz चैनल की चौड़ाई का इस्तेमाल किया जाता है, तो यह वैल्यूSoftApInfo#CHANNEL_WIDTH_320MHZ
दिखाती है.
MLO वाई-फ़ाई 7 की सुविधाएं
मल्टी-लिंक ऑपरेशन (एमएलओ), वाई-फ़ाई 7 (802.11be) के स्पेसिफ़िकेशन की मुख्य सुविधा है. एमएलओ, वाई-फ़ाई 7 पर काम करने वाले मल्टी-लिंक डिवाइसों (एमएलडी) के लिए ज़रूरी सुविधा है. भले ही, वे एक साथ या अलग-अलग काम कर रहे हों.
पहली इमेज. MLO डायग्राम.
जैसा कि पहली इमेज में दिखाया गया है, AP-MLD और STA-MLD, दोनों में हर लिंक पर एक से ज़्यादा AP या STA इंस्टेंस चलते हैं. हर लिंक का एक अलग एपी या एसटीए मैक पता होता है. डिवाइस की पहचान करने के लिए, एपी या एसटीए में भी एमएलडी मैक पता होता है.
MLO लिंक का रेप्रज़ेंटेशन
android.net.wifi.MloLink
क्लास, एमएलओ लिंक को दिखाती है. इस क्लास में ये पैरामीटर शामिल हैं:
int getLinkId()
: एपी एमएलडी के विज्ञापन में बताया गया लिंक आईडी.MacAddress getApMacAddress()
: एपी का एमएसी पता. उस लिंक के लिए एपी इंस्टेंस का बीएसएसआईडी.MacAddress getStaMacAddress()
: एसटीए का एमएसी पता. लिंक पर मौजूद STA इंस्टेंस के लिए, स्थानीय तौर पर असाइन किया गया MAC पता.int getChannel()
: चैनल लिंक करें. लिंक का चैनल नंबर.int getBand()
: लिंक बैंड. लिंक का बैंड.int getState()
: लिंक का स्टेटस. इनमें से कोई एक स्थिति हो सकती है:MLO_LINK_STATE_INVALID
: अमान्य. इसका इस्तेमाल, शुरू करने और गड़बड़ी के मामलों के लिए किया जाता है.MLO_LINK_STATE_UNASSOCIATED
: असोसिएट नहीं किया गया. लिंक किसी एपी से नहीं जुड़ा है.MLO_LINK_STATE_IDLE
: इस्तेमाल में नहीं है. लिंक जुड़ा है, लेकिन चालू नहीं है (लिंक पर कोई ट्रैफ़िक आइडेंटिफ़ायर (TID) मैप नहीं किया गया है).MLO_LINK_STATE_ACTIVE
: चालू है. लिंक जुड़ा हो और चालू हो (लिंक से कम से कम एक TID मैप किया गया हो). कोई चालू लिंक, पावर सेव मोड में हो सकता है, क्योंकि फ़्रेमवर्क, लिंक की पावर की स्थिति पर नज़र नहीं रखता.
स्कैन किए गए वाई-फ़ाई 7 एपी एमएलओ की जानकारी
जब वाई-फ़ाई मॉड्यूल को एपी-एमएलडी से ScanResult
ऑब्जेक्ट मिलता है, तो ऐप्लिकेशन को वाई-फ़ाई 7 एपी एमएलडी के लिए एमएलओ पैरामीटर मिल सकते हैं. AOSP WifiTracker
, ज़्यादा जानकारी वाले मोड में चलने पर MLO पैरामीटर दिखाता है.
एमएलओ की जानकारी इकट्ठा करने के लिए, Wi-Fi मॉड्यूल ये काम करता है:
- यह एपी एमएलडी मैक पते और मौजूदा लिंक आईडी को पढ़ने के लिए, बीकन या प्रोब रिस्पॉन्स में शामिल मल्टी-लिंक इन्फ़ॉर्मेशन एलिमेंट (आईई) को पार्स करता है.
- यह फ़ंक्शन, सहयोगी लिंक की जानकारी की सूची पढ़ने के लिए, बीकन या जांच के जवाब में शामिल कम की गई नेबर रिपोर्ट (आरएनआर) आईई को पार्स करता है.
API
स्कैन किए गए एपी एमएलओ की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
ScanResult#BSSID
: एपी इंस्टेंस का एमएसी पता (उस लिंक के लिए जिस पर स्कैन का नतीजा मिला है)MacAddress ScanResult#getApMldMacAddress()
: यह एपी का एमएलडी एमएसी पता दिखाता है.int ScanResult#getApMloLinkId()
: इससे उस लिंक का लिंक आईडी मिलता है जिस पर ScanResult मिला था.List<MloLink> ScanResult#getAffiliatedMloLinks()
: यह AP-MLD के ज़रिए विज्ञापन किए गए सभी लिंक के लिए,MloLink
ऑब्जेक्ट की सूची दिखाता है. इसमें वह लिंक भी शामिल होता है जिस पर ScanResult मिला था.
कनेक्ट किए गए Wi-Fi 7 AP MLO की जानकारी
जब कोई डिवाइस, वाई-फ़ाई 7 AP-MLD से कनेक्ट होता है, तो फ़्रेमवर्क WifiInfo
ऑब्जेक्ट से कनेक्शन के MLO पैरामीटर इकट्ठा करता है. AOSP
WifiTracker
ऑब्जेक्ट, ज़्यादा जानकारी वाले मोड में चलने पर यह जानकारी दिखाता है.
जब डिवाइस, एपी-एमएलडी से कनेक्ट होता है, तो वाई-फ़ाई मॉड्यूल, एपी से मिले ScanResult
ऑब्जेक्ट से एमएलओ की जानकारी कॉपी करता है. इसके बाद, मॉड्यूल ISupplicantStaIface#getConnectionMloLinksInfo()
HAL API को कॉल करता है, ताकि वह एपी और एसटीए, दोनों के लिए हर लिंक के एमएसी पते को पढ़ सके. साथ ही, इससे जुड़े लिंक की स्थिति को अपडेट कर सके.
API
एमएलओ कनेक्शन की जानकारी पाने के लिए, ऐप्लिकेशन इन एपीआई का इस्तेमाल कर सकते हैं:
WifiInfo#getBSSID()
: डिवाइस के कनेक्ट किए गए लिंक के लिए, एपी इंस्टेंस का मैक पता दिखाता है.MacAddress WifiInfo#getApMldMacAddress()
: यह एपी का एमएलडी एमएसी पता दिखाता है.int WifiInfo#getApMloLinkId()
: इस फ़ंक्शन से उस लिंक का लिंक आईडी मिलता है जिस पर एसटीए, एपी से जुड़ा है.List<MloLink> WifiInfo#getAffiliatedMloLinks()
: AP-MLD की मदद से विज्ञापन दिखाए गए सभी लिंक के लिए,MloLink
ऑब्जेक्ट की सूची दिखाता है. इसमें लिंक से जुड़ा लिंक भी शामिल है. हरMloLink
ऑब्जेक्ट पर, एपी और एसटीए, दोनों के मैक पते के लिए क्वेरी की जा सकती है.
AP-MLD स्कैनिंग
वेंडर सॉफ़्टवेयर, वाई-फ़ाई फ़्रेमवर्क को हर बीकन या प्रोब रिस्पॉन्स के लिए स्कैन के नतीजे उपलब्ध कराता है. इसका मतलब है कि Wi-Fi फ़्रेमवर्क:
- एक ही एपी-एमएलडी से कई
ScanResults
ऑब्जेक्ट मिल सकते हैं, क्योंकि एपी में कई बीकनिंग लिंक हो सकते हैं. - हो सकता है कि आपको एपी-एमएलडी के एपी लिंक के लिए, स्कैन के नतीजों का सिर्फ़ कुछ हिस्सा मिले. ऐसा इसलिए, क्योंकि फ़र्मवेयर को इनमें से कुछ लिंक सिग्नल नहीं मिल सकते.
वेंडर सॉफ़्टवेयर सिर्फ़ एयर के ज़रिए मिले स्कैन के नतीजों की रिपोर्ट करता है. साथ ही, उसे एपी-एमएलडी के विज्ञापन वाले लिंक के आधार पर, स्कैन के नतीजे नहीं बनाने चाहिए.
वेंडर के सॉफ़्टवेयर में, स्कैन के नतीजों में एपी इंस्टेंस से मिले बुनियादी वैरिएंट मल्टी-लिंक और आरएनआर आईई शामिल होने चाहिए. अगर स्कैन के नतीजों में, एफ़िलिएटेड एपी की जानकारी मौजूद नहीं है, तो वेंडर सॉफ़्टवेयर, मल्टी-लिंक प्रोब अनुरोध (प्रोब अनुरोध फ़्रेम, जिसमें प्रोब अनुरोध मल्टी-लिंक एलिमेंट शामिल होता है) भेज सकता है. इससे, रिस्पॉन्स फ़्रेम में टारगेट किए गए एपी-एमएलडी के साथ, एपी की क्षमताओं, पैरामीटर, और ऑपरेशन एलिमेंट का पूरा या कुछ हिस्सा शामिल किया जा सकता है.
ज़रूरत पड़ने पर, वेंडर सॉफ़्टवेयर, एमएल-प्रॉबिंग को ट्रिगर कर सकता है. इसके लिए, वह प्रोब रिक्वेस्ट फ़्रेम में प्रोब रिक्वेस्ट वैरिएंट एमएल आईई का इस्तेमाल करता है.
AP-MLD नेटवर्क असोसिएशन
जब कोई डिवाइस किसी AP-MLD नेटवर्क से जुड़ता है, तो वेंडर सॉफ़्टवेयर, सिग्नल भेजने के लिए चुने गए AP लिंक (लिंक से जुड़ा) का इस्तेमाल करता है. वेंडर सॉफ़्टवेयर, डिवाइस पर काम करने वाले सभी या कुछ लिंक से जुड़ सकता है.
असोसिएशन पूरा होने पर, ड्राइवर, AP-MLD के लिए लिंक के BSSID के साथ ISupplicantStaIfaceCallback#onStateChanged()
की रिपोर्ट करता है. इसके बाद, ड्राइवर AP-MLD का कोई लिंक चुनता है. हालांकि, ऐसा तब ही होता है, जब उस लिंक के लिए स्कैन के नतीजे, फ़्रेमवर्क को रिपोर्ट किए गए हों.
नेटवर्क स्कोरिंग
Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, Android वाई-फ़ाई नेटवर्क चुनने की सुविधा Wi-Fi 7 MLO के साथ काम करती है. इसका मतलब है कि एमएलओ के लिए उपलब्ध लिंक की संख्या के आधार पर, Android डिवाइस के लिए सबसे अच्छा वाई-फ़ाई नेटवर्क चुनता है.
एमएलओ के साथ काम करने के लिए, नेटवर्क चुनने वाला एल्गोरिदम, वाई-फ़ाई चिप की इन एमएलओ क्षमताओं का इस्तेमाल करता है:
- ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या
- असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या
- एक साथ कई बैंड कॉम्बिनेशन
दूसरी इमेज. एमएलओ नेटवर्क चुनना.
ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या
एक साथ भेजना और पाना (एसटीआर), मल्टी-लिंक ऑपरेशन के लिए वाई-फ़ाई मीडियम कॉन्टेंट स्कीम है. अलग-अलग लिंक के बीच सिग्नल अलग-अलग होने चाहिए, ताकि लिंक अलग-अलग काम कर सकें और एक साथ अलग-अलग लिंक में सिग्नल भेज और पा सकें. एसटीआर, लेगसी सिंगल लिंक (एसएल) एसटीए और लेगसी ड्यूअल बैंड ड्यूअल कंसिस्टेंट (डीबीडीसी) एसटीए से अलग है. एसटीए एमएलडी से जुड़े एसटीए, एक ही ट्रांसमीटर सीक्वेंस नंबर (एसएन) शेयर करते हैं. साथ ही, अलग-अलग लिंक के लिए डेटा ट्रांसमिशन के लिए एक ही स्पेस को तब एलोकेट किया जाता है, जब एक से ज़्यादा लिंक के ट्रांसमिशन की एक ही ऐक्सेस कैटगरी (एसी) हो.
इस्तेमाल किए गए एसटीआर लिंक की ज़्यादा से ज़्यादा संख्या, चिप के साथ काम करने वाले रेडियो की ज़्यादा से ज़्यादा संख्या से अलग हो सकती है. दूसरे उदाहरण में, स्ट्रिंग के लिए ज़्यादा से ज़्यादा दो लिंक हो सकते हैं.
यहां दिए गए AIDL HAL इंटरफ़ेस, ज़्यादा से ज़्यादा STR लिंक की संख्या और असोसिएशन लिंक की संख्या की सुविधाओं के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या
बेहतर मल्टी-लिंक सिंगल रेडियो (eMLSR) और कॉन्टेंटशन स्कीम का इस्तेमाल करके, एक ही रेडियो पर कई लिंक काम कर सकते हैं. अगर कोई मल्टी-लिंक डिवाइस, लिंक के सेट पर कुछ बुनियादी कंट्रोल फ़्रेम पा सकता है और लिंक के सेट पर एक साथ क्लियर चैनल आकलन (सीसीए) कर सकता है, तो वह लिंक के सेट पर eMLSR का इस्तेमाल करता है. हालांकि, एमएलडी एक बार में सिर्फ़ एक लिंक पर डेटा भेजता है या पाता है. यह लिंक, हर ट्रांसमिशन अवसर (टीएक्सओपी) की अवधि में डाइनैमिक तौर पर चुना जाता है.
अगर चिप में STR और eMLSR मोड काम करते हैं, तो एक ही लिंक वाले लेगसी स्टेशन की तुलना में, बेहतर भरोसेमंदता, बेहतर थ्रूपुट, और कम इंतज़ार (लेटेंसी) के लिए, एमएलडी स्टेशन, असोसिएशन लिंक की संख्या को बढ़ा सकता है. दूसरे चित्र में, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या तीन है.
यहां दिए गए AIDL HAL इंटरफ़ेस, असोसिएशन लिंक की ज़्यादा से ज़्यादा संख्या के साथ काम करते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
एक साथ कई बैंड कॉम्बिनेशन
फ़्रेमवर्क, IWifiChip.aidl
AIDL इंटरफ़ेस की मदद से, एक साथ काम करने वाले रेडियो कॉम्बिनेशन पाने के लिए चिप से क्वेरी करता है. इस जानकारी से, फ़्रेमवर्क एक साथ इस्तेमाल किए जा सकने वाले बैंड कॉम्बिनेशन का पता लगाता है. एक साथ इस्तेमाल किए जा सकने वाले बैंड कॉम्बिनेशन (गीगाहर्ट्ज़) की सूची का उदाहरण यहां दिया गया है:
- 2.4
- 5
- 6
- 2.4 x 5
- 2.4 x 6
- 5 x 6
यहां दिया गया AIDL HAL इंटरफ़ेस, एक साथ कई रेडियो कॉम्बिनेशन के साथ काम करता है:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
नेटवर्क चुनना
नेटवर्क चुनने (एमएलओ) के दौरान, उम्मीदवारों की सूची को एक ही एमएलडी एमएसी पते वाले सदस्यों के हिसाब से ग्रुप किया जाता है. हर ग्रुप के लिए, अनुमानित मल्टी-लिंक थ्रुपुट स्कोर का हिसाब लगाया जाता है. यह स्कोर, चिप के साथ काम करने वाले ज़्यादा से ज़्यादा एसटीआर लिंक की संख्या और एक साथ काम करने वाले बैंड कॉम्बिनेशन के आधार पर लगाया जाता है. अगर उम्मीदवार के पास एक से ज़्यादा लिंक की सुविधा है और चिप में एसटीआर की सुविधा है, तो अनुमानित थ्रुपुट स्कोर को एक से ज़्यादा लिंक वाले अनुमानित थ्रुपुट स्कोर से बदल दिया जाता है. इससे नेटवर्क चुनने के दौरान, एमएलओ उम्मीदवारों को फ़ायदा मिलता है.
किसी AP-MLD नेटवर्क से जुड़ते समय, फ़्रेमवर्क ScanResults
ऑब्जेक्ट में मिली जानकारी के आधार पर एसएसआईडी चुनता है. यह जानकारी, वेंडर के सॉफ़्टवेयर से मिलती है. फ़्रेमवर्क के ज़रिए एसएसआईडी चुनने के बाद, सबसे अच्छे एपी (या एपी लिंक) के लिए बीएसएसआईडी चुनने की ज़िम्मेदारी, वेंडर सॉफ़्टवेयर की होती है, ताकि उसे असोसिएशन के लिए इस्तेमाल किया जा सके.
डिवाइस के STA MAC पते को मैनेज करना
इस सेक्शन में बताया गया है कि डिवाइस के STA MAC पते (MLD MAC पते और हर लिंक के STA MAC पते) को कैसे मैनेज किया जाता है.
एमएलडी मैक पता
वाई-फ़ाई फ़्रेमवर्क, डिवाइस के एमएलडी एमएसी पते को मैनेज करता है. MLD MAC पता उसी तरह मैनेज किया जाता है जिस तरह कोई नॉन-एमएलडी डिवाइस अपना मैक पता मैनेज करता है.
उपयोगकर्ता की पसंद के आधार पर, एमएसी पता अपने-आप चुना गया एमएसी पता या हार्डवेयर से तय किया गया एमएसी पता हो सकता है. IWifiStaIface#setMacAddress()
HAL API का इस्तेमाल करके, फ़्रेमवर्क, एमएलडी एमएसी पता सेट करता है.
हर लिंक के लिए STA का मैक पता
वेंडर सॉफ़्टवेयर, हर लिंक के लिए इंस्टेंस STA मैक पते मैनेज करता है. जब कोई डिवाइस किसी एपी से जुड़ता है, तो वेंडर सॉफ़्टवेयर, हर लिंक के लिए एक इंस्टेंस मैक पता असाइन करता है.
वेंडर सॉफ़्टवेयर, अपने एल्गोरिदम के आधार पर हर लिंक के लिए MAC पते असाइन करता है. एल्गोरिदम को दोहराया जा सकता हो और यह इनके फ़ंक्शन के तौर पर काम करता हो:
- वाई-फ़ाई फ़्रेमवर्क से सेट किया गया STA-MLD MAC पता.
- लिंक आईडी (एपी से मिला)
इसका मतलब है कि अगर फ़्रेमवर्क एक ही एमएलडी एमएसी पते का फिर से इस्तेमाल करता है, तो वेंडर को हर इंस्टेंस के लिए, उससे जुड़े एमएसी पते का फिर से इस्तेमाल करना होगा. इसके अलावा, अगर वेंडर हर इंस्टेंस के लिए, उससे जुड़े एमएसी पते का फिर से इस्तेमाल करता है, तो फ़्रेमवर्क को एक ही एमएलडी एमएसी पते का फिर से इस्तेमाल करना होगा. इससे यह पक्का होता है कि जब किसी SSID के लिए, फ़्रेमवर्क से जनरेट किया गया STA-MLD पता लगातार मौजूद रहता है, तो हर STA के MAC पते भी लगातार मौजूद रहते हैं.
यहां हर लिंक के लिए एसटीए मैक पते के असाइनमेंट के लिए, एल्गोरिदम का एक उदाहरण दिया गया है (वेंडर, एल्गोरिदम की शर्तों को पूरा करने वाले किसी भी एल्गोरिदम को लागू कर सकते हैं):
- ऑक्टेट 0: पक्का करें कि स्थानीय तौर पर मैनेज किया जाने वाला बिट सेट हो
- ऑक्टेट 1-4: STA-MLD MAC पते जैसा ही
- पांचवां ऑक्टेट: हर एसटीए = (एसटीए-एमएलडी + लिंक आईडी + 1) MOD (256)
एक से ज़्यादा लिंक हैंडल करना
वेंडर फ़र्मवेयर, लिंक स्विच करने की सुविधा दे सकता है. साथ ही, वाई-फ़ाई फ़्रेमवर्क के इनपुट के बिना, लिंक को चालू या बंद करने के लिए, पावर सेव मोड को मैनेज कर सकता है.
लिंक की स्थिति बदलने पर, वाई-फ़ाई फ़्रेमवर्क को सूचना नहीं मिलती.
बैटरी सेव करने की सुविधा की सेटिंग मैनेज करना
वाई-फ़ाई फ़्रेमवर्क पर, पावर सेव मोड डिफ़ॉल्ट रूप से चालू होता है. बिजली बचाने की स्थिति में, वेंडर फ़र्मवेयर, ट्रैफ़िक पैटर्न और लिंक को चालू या बंद करने के फ़ैसलों के आधार पर, अलग-अलग लिंक की बिजली बचाने की स्थिति को मैनेज करता है.
हालांकि, वाई-फ़ाई फ़्रेमवर्क, ISupplicantStaIface::setPowerSave(false)
HAL API को कॉल करके, बैटरी सेव करने की स्थिति को बंद कर सकता है. अगर फ़्रेमवर्क की वजह से पावर सेव मोड बंद है, तो वेंडर फ़र्मवेयर को कम से कम एक लिंक चालू रखना होगा (पावर सेव मोड बंद). इस स्थिति में, फ़र्मवेयर लागू करने की प्रोसेस यह तय करती है कि कौनसा लिंक सेट किया जाए.
डेटा पाथ
इसमें, अपलिंक और डाउनलोड ट्रैफ़िक को मैनेज करने के लिए, वेंडर फ़र्मवेयर लागू करने के बारे में बताया गया है.
अपलिंक ट्रैफ़िक
फ़र्मवेयर, अपने इंटरनल लागू होने के आधार पर अपलिंक ट्रैफ़िक को एक (या एक से ज़्यादा) लिंक पर भेजता है. वेंडर फ़र्मवेयर यह तय करता है कि ट्रैफ़िक के पैटर्न के आधार पर, ट्रैफ़िक को कब लोड बैलेंस करना है, डुप्लीकेट करना है या इकट्ठा करना है. हमारा सुझाव है कि इन मामलों में, फ़र्मवेयर के डुप्लीकेट ट्रैफ़िक को एक से ज़्यादा लिंक पर भेजा जाए:
- जब
IWifiChip#setLatencyMode()
HAL API की मदद से लो-लेटेंसी मोड सेट किया जाता है. - जब उपयोगकर्ता की प्राथमिकता 6 और 7 वाला ट्रैफ़िक हो.
डाउनलिंक ट्रैफ़िक
फ़र्मवेयर को, मैक हेडर के हर एसटीए के (डेस्टिनेशन) मैक पते को MLD-STA मैक पते से बदलना होगा. साथ ही, मैक हेडर के हर एपी के (सोर्स) मैक पते को MLD-AP मैक पते से बदलना होगा. फ़र्मवेयर को APF फ़िल्टर से गुज़रने से पहले, एमएसी पते का यह बदलाव करना होगा, क्योंकि APF फ़िल्टर कमांड में एमएलडी एमएसी पतों के आधार पर फ़िल्टर होते हैं. किसी AP-MLD के सभी लिंक के लिए, एक ही एपीएफ़ फ़िल्टर होता है.
एक साथ कई काम करना
एक ही इंटरफ़ेस के लिंक के लिए कई रेडियो इस्तेमाल करने के बजाय, एक ही समय पर कई काम करने की सुविधा वाले ऐसे मामलों में, नए इंटरफ़ेस के लिए रेडियो का इस्तेमाल करना ज़्यादा प्राथमिकता होना चाहिए. एक साथ कई टास्क करने की सुविधा वाले उदाहरणों को एमएलओ से ज़्यादा प्राथमिकता दी जानी चाहिए. भले ही, कोई भी उदाहरण पहले आया हो. एक इंटरफ़ेस के लिए एक से ज़्यादा लिंक का इस्तेमाल करना, मौके के हिसाब से किया जाता है. इसका मतलब है कि एक से ज़्यादा लिंक का इस्तेमाल सिर्फ़ तब किया जाता है, जब:
- लोड बैलेंसिंग, एग्रीगेशन या डुप्लीकेशन के लिए फ़र्मवेयर के फ़ैसले के आधार पर, एमएलओ ज़रूरी है.
- एमएलओ उपलब्ध है. इसका मतलब है कि किसी दूसरे इंटरफ़ेस के लिए रेडियो की ज़रूरत नहीं है.
TID से लिंक की मैपिंग
Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, जब Wi-Fi 7 एपी, बीकन, प्रोब रिस्पॉन्स, और असोसिएशन रिस्पॉन्स फ़्रेम में भेजे गए TID-to-link मैपिंग एलिमेंट की मदद से, किसी एक लिंक को कुछ समय के लिए बंद करने का एलान करता है, तो Wi-Fi 7 स्टेशन, सेट अप किए गए बाकी लिंक का इस्तेमाल करके एपी से कनेक्ट रहता है. ऐसा करने के लिए, उसे कोई दूसरा असोसिएशन नहीं करना पड़ता.
Android 13 या इससे पहले के वर्शन वाले डिवाइसों के लिए, वाई-फ़ाई फ़्रेमवर्क, TID से लिंक मैपिंग की वजह से लिंक की स्थिति में बदलाव होने पर सूचनाएं पाने की सुविधा नहीं देता. भले ही, उससे जुड़ा लिंक किसी TID से लिंक न हो.
एआईडीएल एचएएल
वाई-फ़ाई सुप्लिकेंट, TID से लिंक मैपिंग में हुए बदलावों के बारे में वाई-फ़ाई फ़्रेमवर्क को बताता है. इसके लिए, वह इन एआईडीएल इंटरफ़ेस का इस्तेमाल करता है:
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MloLinksInfo.aidl
API
ऐप्लिकेशन, इन एपीआई का इस्तेमाल करके TID से लिंक की मैपिंग में हुए बदलावों के बारे में जानकारी पा सकते हैं:
ConnectivityManager.NetworkCallback.onCapabilitiesChanged()
: TID से लिंक की मैपिंग में बदलाव होने पर, फ़्रेमवर्क से ट्रिगर किया गया नेटवर्क कॉलबैक.WifiInfo#getAssociatedMloLinks()
: इससे, उससे जुड़े एमएलओ के लिंक मिलते हैं.MloLink#getState()
: यह लिंक की स्थिति दिखाता है, जो किMLO_LINK_STATE_ACTIVE
याMLO_LINK_STATE_IDLE
हो सकती है.
टीआईडी से लिंक मैपिंग की बातचीत की सुविधाएं
Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, स्टेशन और एपी के लिए TID-to-link मैप नेगोशिएशन की सुविधाएं पाने के लिए, ये एपीआई उपलब्ध हैं.
चिप की सुविधा
यहां दिए गए इंटरफ़ेस, TID से लिंक मैपिंग के लिए चिप की सुविधा के साथ काम करते हैं.
AIDL HAL
TID-to-link मैपिंग के लिए, बातचीत करने वाला AIDL इंटरफ़ेस FeatureSetMask
में hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
में मौजूद है. T2LM_NEGOTIATION = 1 << 8
सुविधा से पता चलता है कि चिप, TID से लिंक मैपिंग के साथ काम करती है.
एपीआई
WifiManager.isTidToLinkMappingNegotiationSupported()
: TID-to-link मैपिंग नेगोशिएशन के साथ काम करने वाला चिप दिखाता है.
एपी की सुविधा
नीचे दिए गए इंटरफ़ेस, TID से लिंक मैपिंग के लिए एपी की सुविधा के साथ काम करते हैं.
AIDL HAL
फ़्रेमवर्क, मौजूदा कनेक्शन की सुविधा के साथ-साथ, सुप्लाइंट से एपी की सुविधा के बारे में क्वेरी करता है.
apTidToLinkMapNegotiationSupported
: यह जांच करता है कि एपी, TID-to-link मैप नेगोशिएशन की सुविधा के साथ काम करता है या नहीं.
एपीआई
WifiInfo.isApTidToLinkMappingNegotiationSupported()
: यह बताता है कि एपी, TID से लिंक मैपिंग की बातचीत के साथ काम करता है या नहीं.
लिंक लेयर के आंकड़े
लिंक लेयर के आंकड़ों में, वाई-फ़ाई लिंक से जुड़ी जानकारी शामिल होती है. जैसे, आरएसएसआई, अलग-अलग TX और RX पैकेट काउंटर, और रेडियो के आंकड़े. वाई-फ़ाई फ़्रेमवर्क, सबसे अच्छा नेटवर्क चुनने या कनेक्ट किए गए नेटवर्क की क्वालिटी का आकलन करने के लिए, समय-समय पर लिंक लेयर के आंकड़े और आरएसएसआई को पोल करता है. Android 14 या इसके बाद के वर्शन वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में कई लिंक के साथ काम करने की सुविधा शामिल होती है. वाई-फ़ाई 7 के साथ काम करने के लिए, Android लिंक लेयर के आंकड़ों और सिग्नल पोलिंग, दोनों में MLO का इस्तेमाल करता है.
लिंक से जुड़े आंकड़े, इन लिंक लेयर एआईडीएल इंटरफ़ेस में मिलते हैं:
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerIfaceStats.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerLinkStats.aidl
android.net.wifi.WifiManager#addOnWifiUsabilityStatsListener()
सिस्टम एपीआई, लिंक लेयर के सभी आंकड़े सुनता है. वाई-फ़ाई के इस्तेमाल से जुड़े आंकड़ों को अपडेट करने के लिए, फ़्रेमवर्क समय-समय पर इस एपीआई को कॉल करता है.
लिंक से जुड़े ये एपीआई, android.net.wifi.WifiUsabilityStatsEntry
में उपलब्ध हैं.
int getRssi(int linkId)
int getLinkState(int linkId)
int getRadioId(int linkId)
int getTxLinkSpeedMbps(int linkId)
long getTotalTxSuccess(int linkId)
long getTotalTxRetries(int linkId)
long getTotalTxBad(int linkId)
long getTotalRxSuccess(int linkId)
long getTotalBeaconRx(int linkId)
int getRxLinkSpeedMbps(int linkId)
int getTimeSliceDutyCycleInPercent(int linkId)
ContentionTimeStats getContentionTimeStats(int linkId, @WmeAccessCategory int ac)
List<RateStats> getRateStats(int linkId)
उपलब्ध लिंक आईडी के बारे में क्वेरी करने के लिए, ऐप्लिकेशन android.net.wifi.WifiUsabilityStatsEntry#getLinkIds()
वाला तरीका इस्तेमाल कर सकते हैं.
एक लिंक (एमएलओ नहीं) के लिए android.net.wifi.WifiUsabilityStatsEntry
में मौजूद एपीआई, एमएलओ कनेक्शन के लिए इकट्ठा किए गए आंकड़े दिखाते हैं. एग्रीगेशन की ज़रूरी शर्तें ये हैं:
पैकेट के लिए एग्रीगेट किए गए ये आंकड़े, हर लिंक के आंकड़े के योग का इस्तेमाल करते हैं:
public long getTotalTxSuccess() public long getTotalTxRetries() public long getTotalTxBad() public long getTotalRxSuccess() public int getRxLinkSpeedMbps()
यहां दिए गए आंकड़े, सबसे ज़्यादा आरएसएसआई वाले लिंक के डेटा का इस्तेमाल करते हैं:
public int getRssi() public int getLinkSpeedMbps() public long getTotalBeaconRx() public int getTimeSliceDutyCycleInPercent() public ContentionTimeStats getContentionTimeStats(@WmeAccessCategory int ac) public List<RateStats> getRateStats()
Android 13 में लिंक लेयर के आंकड़े
Android 13 पर काम करने वाले डिवाइसों के लिए, लिंक लेयर के आंकड़ों में, एक ही इंटरफ़ेस के लिए कई लिंक के इस्तेमाल को शामिल नहीं किया जाता. एमएलओ के साथ काम करने के लिए, IWifi# getLinkLayerStats_1_6()
HAL API के ज़रिए LinkLayerStats
की रिपोर्टिंग करते समय, वेंडर सॉफ़्टवेयर को एग्रीगेशन का यह लॉजिक लागू करना होगा. सबसे अच्छा लिंक वह होता है जिसका आरएसएसआई सबसे ज़्यादा होता है.
StaLinkLayerStats.iface.beaconRx
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, बीकन की संख्या की रिपोर्ट करें.StaLinkLayerStats.iface.avgRssiMgmt
: इंटरफ़ेस के लिए इस्तेमाल किए गए सबसे अच्छे लिंक के लिए,avgRssiMgmt
रिपोर्ट करें.StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस के लिंक पर, पैकेट के एग्रीगेट किए गए आंकड़े (कुल) की रिपोर्ट दें.StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo, Vi, Be,Bk): इंटरफ़ेस पर इस्तेमाल किए गए सबसे अच्छे लिंक के लिए, टकराव के समय के आंकड़ों की रिपोर्ट दें (टकराव के सबसे कम समय के आंकड़े).
एमएलओ लिंक को फिर से कॉन्फ़िगर करना
जब वाई-फ़ाई 7 ऐक्सेस पॉइंट के किसी लिंक का इस्तेमाल किसी दूसरे काम के लिए किया जाता है, तो एपी, एमएलओ लिंक के रीकॉन्फ़िगरेशन की मदद से, लिंक हटाने की सूचना दे सकता है. स्टेशन, बाकी लिंक पर फिर से असोसिएट किए बिना, एपी के साथ आसानी से कनेक्ट रह सकते हैं.
onMloLinksInfoChanged
एआईडीएल इंटरफ़ेस, ISupplicantStaIfaceCallback.aidl
पर वाई-फ़ाई सुप्लाइंट में मौजूद है. यह लिंक को फिर से कॉन्फ़िगर करने (लिंक से एपी हटाने) की सुविधा देता है.
जब वाई-फ़ाई फ़्रेमवर्क किसी लिंक को हटाने की प्रोसेस करता है, तो लिंक की स्थिति को MLO_LINK_STATE_UNASSOCIATED
पर सेट कर दिया जाता है.
इसके बाद, लिंक की स्थिति में बदलाव होने पर फ़्रेमवर्क,
ConnectivityManager.NetworkCallback#onCapabilitiesChanged()
ट्रिगर होता है.
WifiInfo#getAffiliatedMloLinks
वाला तरीका, अफ़िलिएटेड एमएलओ के लिंक दिखाता है. MloLink#getState
वाला तरीका, लिंक की स्थिति दिखाता है. अगर लिंक हटा दिया जाता है, तो लिंक की स्थिति MLO_LINK_STATE_UNASSOCIATED
के तौर पर दिखती है.
चिप एमएलओ की रणनीति
MLO की मदद से, डिवाइस एक ही समय पर कई वाई-फ़ाई लिंक पर डेटा भेज और पा सकते हैं. इससे उन ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हो सकती है जिनके लिए कम इंतज़ार, ज़्यादा बैंडविड्थ, और कम पावर जैसी खास ज़रूरतें होती हैं. चिप वेंडर, उपलब्ध लिंक का इस्तेमाल करने के तरीके के लिए एल्गोरिदम बना सकते हैं.
खास सुविधाओं वाले ऐप्लिकेशन, Wifimanager
में setMloMode
के तरीके का इस्तेमाल करके, इन एल्गोरिदम में बदलाव कर सकते हैं. साथ ही, ये ऐप्लिकेशन ये मोड सेट कर सकते हैं:
MLO_MODE_DEFAULT = 0
MLO_MODE_LOW_LATENCY = 1
MLO_MODE_HIGH_THROUGHPUT = 2
MLO_MODE_LOW_POWER = 3
फ़्रेमवर्क, एमएलओ मोड सेट करने के लिए, IWifiChip
एआईडीएल इंटरफ़ेस में setMloMode
का इस्तेमाल करता है.