Android 12 या इसके बाद के वर्शन पर काम करने वाले डिवाइसों के लिए, Android 5G नेटवर्क स्लाइसिंग की सुविधा देता है. इसमें नेटवर्क वर्चुअलाइज़ेशन का इस्तेमाल करके, एक नेटवर्क कनेक्शन को कई अलग-अलग वर्चुअल कनेक्शन में बांटा जाता है. इससे अलग-अलग तरह के ट्रैफ़िक को अलग-अलग मात्रा में संसाधन मिलते हैं. 5G नेटवर्क स्लाइसिंग की मदद से, नेटवर्क ऑपरेटर नेटवर्क के एक हिस्से को ग्राहकों के किसी खास सेगमेंट के लिए, कुछ खास सुविधाएं उपलब्ध कराने के लिए इस्तेमाल कर सकते हैं. Android 12 में, 5G एंटरप्राइज़ नेटवर्क स्लाइसिंग की ये सुविधाएं उपलब्ध हैं. नेटवर्क ऑपरेटर, अपने एंटरप्राइज़ क्लाइंट को ये सुविधाएं दे सकते हैं:
पूरी तरह से मैनेज किए जा रहे डिवाइसों के लिए, एंटरप्राइज़ डिवाइस स्लाइसिंग की सुविधा
जो एंटरप्राइज़ अपने कर्मचारियों को पूरी तरह से मैनेज किए गए कंपनी डिवाइस उपलब्ध कराते हैं उनके लिए नेटवर्क सेवा देने वाली कंपनियां, एक या उससे ज़्यादा चालू एंटरप्राइज़ नेटवर्क स्लाइस उपलब्ध करा सकती हैं. इन स्लाइस पर, कंपनी के डिवाइसों पर मौजूद ट्रैफ़िक को रूट किया जाता है. Android 12 से, Android, APN के ज़रिए स्लाइस सेट अप करने के बजाय, URSP नियमों के ज़रिए कैरियर को एंटरप्राइज़ स्लाइस उपलब्ध कराने की अनुमति देता है.
वर्क प्रोफ़ाइल वाले डिवाइसों के लिए, एंटरप्राइज़ कारोबार के ऐप्लिकेशन को स्लाइस करना
वर्क प्रोफ़ाइल का इस्तेमाल करने वाली कंपनियों के लिए, Android 12 की मदद से डिवाइस, वर्क प्रोफ़ाइल में मौजूद सभी ऐप्लिकेशन से मिले ट्रैफ़िक को एंटरप्राइज़ नेटवर्क स्लाइस पर भेज सकते हैं. एंटरप्राइज़, डिवाइस नीति कंट्रोलर (डीपीसी) की मदद से, इस सुविधा को चालू कर सकते हैं.
वर्क प्रोफ़ाइल सलूशन, पुष्टि करने की प्रोसेस को अपने-आप पूरा करता है. साथ ही, ऐक्सेस कंट्रोल की सुविधा देता है. इससे कंपनियां यह पक्का कर पाती हैं कि वर्क प्रोफ़ाइल में मौजूद एंटरप्राइज़ ऐप्लिकेशन से आने वाला ट्रैफ़िक ही एंटरप्राइज़ नेटवर्क स्लाइस पर भेजा जाए. वर्क प्रोफ़ाइल में मौजूद ऐप्लिकेशन को, एंटरप्राइज़ नेटवर्क स्लाइस का अनुरोध करने के लिए साफ़ तौर पर बदलाव करने की ज़रूरत नहीं होती.
AOSP में 5G नेटवर्क स्लाइसिंग कैसे काम करती है
Android 12 में, 5G नेटवर्क स्लाइसिंग की सुविधा जोड़ी गई है. इसके लिए, AOSP में टेलीफ़ोनी कोडबेस और टेथरिंग मॉड्यूल में बदलाव किए गए हैं. इससे कनेक्टिविटी के मौजूदा एपीआई को शामिल किया जा सकेगा, जो नेटवर्क स्लाइसिंग के लिए ज़रूरी हैं.
Android टेलीफ़ोनी प्लैटफ़ॉर्म, HAL और टेलीफ़ोनी एपीआई उपलब्ध कराता है. इनकी मदद से, कोर नेटवर्किंग कोड और मॉडम में 5G स्लाइसिंग की सुविधाओं के ज़रिए फ़ाइल किए गए नेटवर्क अनुरोधों के आधार पर स्लाइसिंग की जा सकती है. पहली इमेज में, 5G नेटवर्क स्लाइसिंग की सुविधा के कॉम्पोनेंट के बारे में बताया गया है.
पहली इमेज. AOSP में 5G नेटवर्क स्लाइसिंग आर्किटेक्चर.
टेलीफ़ोनी और कनेक्टिविटी प्लैटफ़ॉर्म इन सुविधाओं के साथ काम करता है:
- स्लाइस कैटगरी के लिए नेटवर्क अनुरोधों को ट्रैफ़िक डिस्क्रिप्टर में बदलना. इसके बाद, इन्हें मॉडेम को भेजा जाता है, ताकि यूआरएसपी ट्रैफ़िक मैच किया जा सके और रूट चुना जा सके
- अगर एंटरप्राइज़ नेटवर्क स्लाइस उपलब्ध नहीं है, तो डिफ़ॉल्ट नेटवर्क पर वापस आ जाना
- वर्क प्रोफ़ाइल में मौजूद सभी ऐप्लिकेशन से ट्रैफ़िक को संबंधित कनेक्शन पर रूट करना
एंटरप्राइज़ स्लाइसिंग की सुविधा
- डिवाइस पर वर्क प्रोफ़ाइल की मौजूदगी का पता लगाना
- कारोबार के आईटी एडमिन की ओर से इस्तेमाल किए गए डीपीसी से मिली अनुमतियों या रास्तों की जानकारी की जांच की जा रही है
Android 12 में, कोर नेटवर्किंग सेवा के तहत टेदरिंग मॉड्यूल में ये बदलाव किए गए हैं:
android.net.*की ज़्यादातर सार्वजनिक या सिस्टम एपीआई क्लास को Tethering मॉड्यूल में जोड़ता हैटेथरिंग मॉड्यूल की सीमाओं को इन तक बढ़ाता है:
f/b/core/java/android/net/…f/b/services/net/…f/b/services/core/java/com/android/server/connectivity/…f/b/services/core/java/com/android/server/ConnectivityService.javaf/b/services/core/java/com/android/server/TestNetworkService.java
वीपीएन कोड को टेदरिंग मॉड्यूल से बाहर ले जाता है
Android 12, इन सुविधाओं वाले कोड को टीथरिंग मॉड्यूल में ले जाता है:
- ऐप्लिकेशन से नेटवर्क कनेक्शन के लिए अनुरोध पाना
- सिस्टम से अनुरोध पाना (उदाहरण के लिए, "इन ऐप्लिकेशन को एंटरप्राइज़ स्लाइस पर रखें"; यह सुविधा Android 12 में जोड़ी गई थी)
- सिस्टम से टेलीफ़ोनी कोड को अनुरोध भेजना. यह कोड, HAL API और मॉडेम का इस्तेमाल करके नेटवर्क या स्लाइस सेट अप करने की कोशिश करता है
- netd को यह जानकारी देना कि हर ऐप्लिकेशन के हिसाब से ट्रैफ़िक को कैसे रूट किया जाए (Android 12 में यह सुविधा जोड़ी गई है)
ConnectivityManagerएपीआई के ज़रिए, ऐप्लिकेशन को यह जानकारी देना कि उनके नेटवर्क ट्रैफ़िक के साथ क्या हो रहा है. जैसे,NetworkCallback,getActiveNetwork,getNetworkCapabilities.
लागू करना
किसी डिवाइस पर 5G स्लाइसिंग की सुविधा काम करने के लिए, डिवाइस में ऐसा मॉडम होना चाहिए जो IRadio 1.6 HAL के साथ काम करता हो. इसमें setupDataCall_1_6 एपीआई होता है. यह एपीआई, डेटा कनेक्शन सेट अप करता है. साथ ही, इसमें 5G स्लाइसिंग के लिए ये पैरामीटर शामिल होते हैं:
trafficDescriptor: इससे मॉडम को भेजे गए ट्रैफ़िक डिस्क्रिप्टर के बारे में पता चलता हैsliceInfo: EPDG से 5G पर हैंडओवर करने के मामले में, इस्तेमाल किए जाने वाले नेटवर्क स्लाइस की जानकारी देता हैmatchAllRuleAllowed: इससे यह तय किया जाता है कि डिफ़ॉल्ट रूप से सभी से मैच होने वाले यूआरएसपी नियम का इस्तेमाल किया जा सकता है या नहीं. टेलीफ़ोनी, डिफ़ॉल्ट नेटवर्क के लिए इसे सही पर सेट करती है, लेकिन स्लाइस के लिए नहीं. 'सभी से मिलान करें' नियम, डिफ़ॉल्ट नेटवर्क पर लागू होता है. जब कोई ऐप्लिकेशन किसी ऐसी स्लाइस का अनुरोध करता है जो उपलब्ध नहीं है, तो उस स्लाइस को 'उपलब्ध नहीं है' के तौर पर रिपोर्ट किया जाता है. एंटरप्राइज़ ऐप्लिकेशन के लिए, टेलीफ़ोनी फ़्रेमवर्क डिफ़ॉल्ट नेटवर्क पर वापस आ सकता है. ऐसा तब होता है, जब एंटरप्राइज़ नेटवर्क उपलब्ध न हो.
मॉडेम को getSlicingConfig एपीआई लागू करना होगा. हालांकि, अगर getHalDeviceCapabilities एपीआई के साथ काम न करने की जानकारी दी जाती है, तो ऐसा करने की ज़रूरत नहीं है.
एंटरप्राइज़ के लिए ज़रूरी शर्तें
यहां Android Enterprise की मदद से डिप्लॉय किए गए डिवाइसों पर, 5G नेटवर्क स्लाइसिंग का इस्तेमाल करने के लिए ज़रूरी शर्तें बताई गई हैं.
- पक्का करें कि पूरी तरह से मैनेज किए जा रहे डिवाइस या कर्मचारियों के डिवाइस, वर्क प्रोफ़ाइल के साथ सेट अप किए गए हों. साथ ही, उनमें ऐसे मॉडेम हों जो 5G SA की सुविधा के साथ काम करते हों और
setupDataCall_1_6एपीआई के साथ काम करते हों. - स्लाइस सेटअप और परफ़ॉर्मेंस या एसएलए की विशेषताओं के लिए, कैरियर पार्टनर के साथ काम करना.
वर्क प्रोफ़ाइल के साथ सेट अप किए गए डिवाइसों पर 5G स्लाइसिंग की सुविधा चालू करना
वर्क प्रोफ़ाइल के साथ सेट अप किए गए डिवाइसों के लिए, AOSP में 5G नेटवर्क स्लाइसिंग की सुविधा डिफ़ॉल्ट रूप से बंद होती है. नेटवर्क स्लाइसिंग की सुविधा चालू करने के लिए, एंटरप्राइज़ आईटी एडमिन, EMM DPC के ज़रिए हर कर्मचारी के हिसाब से, वर्क प्रोफ़ाइल वाले ऐप्लिकेशन के ट्रैफ़िक को एंटरप्राइज़ नेटवर्क स्लाइस पर रूट करने की सुविधा चालू या बंद कर सकते हैं. EMM DPC, DevicePolicyManager (DPM) API में setPreferentialNetworkServiceEnabled तरीके का इस्तेमाल करता है. यह API, Android 12 में लॉन्च किया गया था.
कस्टम डीपीसी वाले ईएमएम वेंडर को, एंटरप्राइज़ क्लाइंट की सहायता के लिए DevicePolicyManager API को इंटिग्रेट करना होगा.
यूआरएसपी के नियम
इस सेक्शन में, मोबाइल और इंटरनेट सेवा देने वाली कंपनियों के लिए, अलग-अलग स्लाइस कैटगरी के लिए यूआरएसपी के नियमों को कॉन्फ़िगर करने के बारे में जानकारी दी गई है. इनमें एंटरप्राइज़, सीबीएस, कम लेटेंसी, और ज़्यादा बैंडविड्थ वाला ट्रैफ़िक शामिल है. अलग-अलग स्लाइस कैटगरी के लिए URSP के नियम कॉन्फ़िगर करते समय, कैरियर को Android के लिए खास तौर पर तैयार की गई इन वैल्यू का इस्तेमाल करना होगा.
| आईडी | मान | ब्यौरा |
|---|---|---|
| OSId | 97a498e3-fc92-5c94-8986-0333d06e4e47 |
Android के लिए OSId, वर्शन 5 का यूयूआईडी है. इसे नेमस्पेस ISO OID और नाम "Android" का इस्तेमाल करके जनरेट किया जाता है. |
कैरियर को हर स्लाइस ट्रैफ़िक के लिए, यूआरएसपी के नियम कॉन्फ़िगर करने होंगे. इसके लिए, ट्रैफ़िक डिस्क्रिप्टर कॉम्पोनेंट को "ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप" के तौर पर सेट करना होगा. उदाहरण के लिए, "ENTERPRISE" स्लाइस के लिए, 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 की वैल्यू देना ज़रूरी है.
यह वैल्यू, OSId, OSAppId (0x0A) की लंबाई, और OSAppId को मिलाकर बनती है.
ट्रैफ़िक डिस्क्रिप्टर कॉम्पोनेंट टाइप के बारे में ज़्यादा जानने के लिए, 3GPP TS 24.526 टेबल 5.2.1 देखें.
यहां दी गई टेबल में, स्लाइस की अलग-अलग कैटगरी के लिए OSAppId वैल्यू के बारे में बताया गया है.
| स्लाइस की कैटगरी | OSAppId | ब्यौरा |
|---|---|---|
ENTERPRISE |
0x454E5445525052495345 |
OSAppId, ENTERPRISE स्ट्रिंग का बाइट कलेक्शन है |
ENTERPRISE2 |
0x454E544552505249534532 |
OSAppId, ENTERPRISE2 स्ट्रिंग का बाइट कलेक्शन है |
ENTERPRISE3 |
0x454E544552505249534533 |
OSAppId, ENTERPRISE3 स्ट्रिंग का बाइट कलेक्शन है |
ENTERPRISE4 |
0x454E544552505249534534 |
OSAppId, ENTERPRISE4 स्ट्रिंग का बाइट कलेक्शन है |
ENTERPRISE5 |
0x454E544552505249534535 |
OSAppId, ENTERPRISE5 स्ट्रिंग का बाइट कलेक्शन है |
CBS |
0x434253 |
OSAppId, CBS स्ट्रिंग का बाइट कलेक्शन है |
PRIORITIZE_LATENCY |
0x5052494f524954495a455f4c4154454e4359 |
OSAppId, PRIORITIZE_LATENCY स्ट्रिंग का बाइट कलेक्शन है |
PRIORITIZE_BANDWIDTH |
0x5052494f524954495a455f42414e445749445448 |
OSAppId, PRIORITIZE_BANDWIDTH स्ट्रिंग का बाइट कलेक्शन है |
PRIORITIZE_UNIFIED_COMMUNICATIONS |
0x5052494f524954495a455f554e49464945445f434f4d4d554e49434154494f4e53 |
OSAppId, PRIORITIZE_UNIFIED_COMMUNICATIONS स्ट्रिंग का बाइट कलेक्शन है |
यूआरएसपी के नियमों के उदाहरण
यहां दी गई टेबल में, एंटरप्राइज़, सीबीएस, कम समय में डेटा ट्रांसफ़र, ज़्यादा बैंडविड्थ, और डिफ़ॉल्ट ट्रैफ़िक के लिए, URSP के नियमों के उदाहरण दिए गए हैं.
Enterprise 1
Enterprise 1 के लिए सहायता, Android 12 और उसके बाद के वर्शन में उपलब्ध है. यहां ENTERPRISE1 ट्रैफ़िक के लिए URSP नियम का उदाहरण दिया गया है:
| URSP नियम #1 (enterprise1) | |
|---|---|
| प्राथमिकता | 1 (0x01) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E470A454E5445525052495345 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | एंटरप्राइज़ |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | एंटरप्राइज़ |
Enterprise 2
Enterprise 2 के लिए सहायता, Android 13 और इसके बाद के वर्शन में उपलब्ध है. ENTERPRISE2 ट्रैफ़िक के लिए, URSP के नियम का उदाहरण यहां दिया गया है:
| URSP का नियम #2 (enterprise2) | |
|---|---|
| प्राथमिकता | 2 (0x02) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534532 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | enterprise2 |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | enterprise2 |
Enterprise 3
Enterprise 3 के लिए सहायता, Android 13 और इसके बाद के वर्शन में उपलब्ध है. यहां ENTERPRISE3 ट्रैफ़िक के लिए, URSP के नियम का उदाहरण दिया गया है:
| URSP का नियम #3 (enterprise3) | |
|---|---|
| प्राथमिकता | 3 (0x03) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534533 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | enterprise3 |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | enterprise3 |
Enterprise 4
Enterprise 4 के लिए सहायता, Android 13 और इसके बाद के वर्शन में उपलब्ध है. यहां ENTERPRISE4 ट्रैफ़िक के लिए, URSP के नियम का उदाहरण दिया गया है:
| URSP का नियम #4 (enterprise4) | |
|---|---|
| प्राथमिकता | 4 (0x04) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534534 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | enterprise4 |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | enterprise4 |
Enterprise 5
Enterprise 5 के लिए सहायता, Android 13 और इसके बाद के वर्शन में उपलब्ध है. यहां ENTERPRISE5 ट्रैफ़िक के लिए, URSP नियम का एक उदाहरण दिया गया है:
| URSP का नियम #5 (enterprise5) | |
|---|---|
| प्राथमिकता | 5 (0x05) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E470B454E544552505249534535 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | enterprise5 |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | enterprise5 |
CBS
सीबीएस की सुविधा, Android 13 और इसके बाद के वर्शन में उपलब्ध है. यहां CBS ट्रैफ़िक के लिए URSP नियम का उदाहरण दिया गया है:
| URSP नियम #6 (CBS) | |
|---|---|
| प्राथमिकता | 6 (0x06) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E4703434253 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | cbs |
| रास्ता चुनने का ब्यौरा #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | cbs |
लाइव स्ट्रीमिंग करने और उसके दिखने के बीच इंतज़ार का समय कम रखना
कम समय में प्रोसेस होने वाले डेटा की सुविधा, Android 13 और इसके बाद के वर्शन में उपलब्ध है. कम समय में डेटा ट्रांसफ़र करने वाले ट्रैफ़िक के लिए, URSP के नियम का उदाहरण यहां दिया गया है:
| URSP का नियम #7 (कम लैटेंसी) | |
|---|---|
| प्राथमिकता | 7 (0x07) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 0x97A498E3FC925C9489860333D06E4E47125052494f524954495a455f4c4154454e4359 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | इंतज़ार का समय |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | इंतज़ार का समय |
ज़्यादा बैंडविथ
ज़्यादा बैंडविड्थ की सुविधा, Android 13 और इसके बाद के वर्शन में उपलब्ध है. ज़्यादा बैंडविथ वाले ट्रैफ़िक के लिए, यूआरएसपी के नियम का उदाहरण यहां दिया गया है:
| यूआरएसपी नियम #8 (हाई बैंडविड्थ) | |
|---|---|
| प्राथमिकता | 8 (0x08) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| ओएस आईडी + ओएस ऐप्लिकेशन आईडी टाइप | 97A498E3FC925C9489860333D06E4E47145052494f524954495a455f42414e445749445448 |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
| कॉम्पोनेंट #2: डीएनएन | बैंडविथ |
| रास्ता चुनने का डिस्क्रिप्टर #2 | |
| प्राथमिकता | 2 (0x02) |
| कॉम्पोनेंट #1: DNN | बैंडविथ |
डिफ़ॉल्ट
| यूआरएसपी का नियम #9 (डिफ़ॉल्ट) | |
|---|---|
| प्राथमिकता | 9 (0x09) |
| ट्रैफ़िक डिस्क्रिप्टर #1 | |
| match-all | लागू नहीं |
| रास्ता चुनने वाले डिसक्रिप्टर #1 | |
| प्राथमिकता | 1 (0x01) |
| कॉम्पोनेंट #1: S-NSSAI | SST:XX SD:YYYYYY |
जांच करना
5G नेटवर्क स्लाइसिंग की जांच करने के लिए, मैन्युअल टेस्ट का इस्तेमाल करें.
टेस्टिंग के लिए डिवाइस सेट अप करने के लिए, यह तरीका अपनाएं:
पक्का करें कि यूआरएसपी नीति को ऐसे गैर-डिफ़ॉल्ट नियम के साथ कॉन्फ़िगर किया गया हो जो एंटरप्राइज़ कैटगरी से मेल खाता हो. साथ ही, उससे जुड़ा रूट-सिलेक्शन डिस्क्रिप्टर, एंटरप्राइज़ कैटगरी को एंटरप्राइज़ स्लाइस पर मैप करता हो. इसके अलावा, एक डिफ़ॉल्ट नियम, ट्रैफ़िक को डिफ़ॉल्ट इंटरनेट स्लाइस पर रीडायरेक्ट करता हो.
पक्का करें कि डिवाइस पर वर्क प्रोफ़ाइल कॉन्फ़िगर की गई हो.
डीपीसी के ज़रिए नेटवर्क स्लाइसिंग का इस्तेमाल करने के लिए ऑप्ट इन करें
5G नेटवर्क स्लाइसिंग के व्यवहार की जांच करने के लिए, यह तरीका अपनाएं:
- पुष्टि करें कि एंटरप्राइज़ स्लाइस के साथ पीडीयू सेशन सेट अप किया गया है. उदाहरण के लिए, किसी खास आईपी पते का इस्तेमाल करके. साथ ही, पुष्टि करें कि वर्क प्रोफ़ाइल में मौजूद ऐप्लिकेशन, उस पीडीयू सेशन का इस्तेमाल करते हैं.
- पुष्टि करें कि डिफ़ॉल्ट इंटरनेट स्लाइस के साथ एक अलग पीडीयू सेशन बनाया गया हो और निजी प्रोफ़ाइल में मौजूद ऐप्लिकेशन, पीडीयू सेशन का इस्तेमाल करते हों.
5G स्लाइसिंग अपसेल
5G स्लाइसिंग अपसेल की सुविधा, Android 14 QPR1 से उपलब्ध है. इसकी मदद से मोबाइल और इंटरनेट सेवा देने वाली कंपनियां, 5G नेटवर्क स्लाइसिंग के ज़रिए अपने उपयोगकर्ताओं को बेहतर नेटवर्क सुविधाएं (लेटेंसी और बैंडविड्थ) दे सकती हैं.
5G स्लाइसिंग अपसेल की सुविधा, खरीदारी के फ़्लो को आगे बढ़ाने के लिए, कैरियर के एनटाइटलमेंट सर्वर से मिले TS.43 रिस्पॉन्स का इस्तेमाल करती है. कैरियर, जवाब का इस्तेमाल इन कामों के लिए कर सकते हैं: कैरियर के खरीदारी वाले वेबव्यू के लिए यूआरएल तय करना, वेबव्यू को अतिरिक्त डेटा भेजना, और यह बताना कि स्लाइस को चालू कर दिया गया है और यह कैरियर नेटवर्क पर उपलब्ध है या नहीं.
कैरियर, 5G स्लाइसिंग अपसेल सुविधा के व्यवहार को अपने कॉन्फ़िगरेशन के हिसाब से बदल सकते हैं. इससे यह कंट्रोल किया जा सकता है कि खरीदारी के अनुरोध किए जा सकते हैं या नहीं, ऐप्लिकेशन को प्रीमियम सुविधाएं कब ऐक्सेस करने की अनुमति दी जाती है, और टेलीफ़ोनी फ़्रेमवर्क, उपयोगकर्ता या नेटवर्क से जवाब मिलने का इंतज़ार कब तक करता है.
5G स्लाइसिंग अपसेल सुविधा, DataBoostWebServiceFlow नाम का एक इंटरफ़ेस उपलब्ध कराती है. इससे Android और कैरियर वेबव्यू के बीच कम्यूनिकेशन किया जा सकता है.
दूसरी इमेज में, 5G स्लाइसिंग के अपसेल का खरीदारी का फ़्लो दिखाया गया है:
दूसरी इमेज. 5G स्लाइसिंग अपसेल खरीदारी का फ़्लो.
TS.43 एनटाइटलमेंट प्रोसेस
जब कोई उपयोगकर्ता नेटवर्क की बेहतर सुविधाओं के लिए अनुरोध करता है, तो Telephony फ़्रेमवर्क, अनुरोध की गई प्रीमियम सुविधा के लिए सेवा के एनटाइटलमेंट कॉन्फ़िगरेशन का अनुरोध करता है. अगर TS.43 रिस्पॉन्स मान्य है, तो Telephony फ़्रेमवर्क, खरीदारी के अनुरोध को पूरा करने के लिए एचटीटीपी रिस्पॉन्स से मिले फ़ील्ड का इस्तेमाल करता है.
परचेज़ फ़ील्ड को स्लाइस करना
TS.43 एनटाइटलमेंट कॉन्फ़िगरेशन में, स्लाइस खरीदने के लिए ये फ़ील्ड शामिल होते हैं:
- पात्रता स्थिति
बटन:
EntitlementStatusटाइप:
intइस्तेमाल की जा सकने वाली वैल्यू:
0(बंद है),1(चालू है),2(काम नहीं करता),3(प्रोविज़निंग),4(शामिल है)- प्रावधान स्थिति
बटन:
ProvStatusटाइप:
intइस्तेमाल की जा सकने वाली वैल्यू:
0(provisioned नहीं किया गया),1(provisioned किया गया),2(उपलब्ध नहीं है),3(जारी है)
टेलीफ़ोनी फ़्रेमवर्क, एनटाइटलमेंट स्टेटस और प्रोविज़निंग स्टेटस के कॉम्बिनेशन का इस्तेमाल करके, स्लाइस खरीदने की मौजूदा स्थिति का पता लगाता है. नतीजा इनमें से कोई एक हो सकता है:
PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASEDPURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESSPURCHASE_PREMIUM_CAPABILITY_RESULT_ENTITLEMENT_CHECK_FAILEDPURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_ERROR
अगर एनटाइटलमेंट की स्थिति 1 (चालू है) और प्रोविज़निंग की स्थिति 0 (प्रोविज़न नहीं किया गया) है, तो टेलीफ़ोनी फ़्रेमवर्क, उपयोगकर्ता को अपसेल सूचना दिखाता है. इससे उपयोगकर्ता, कैरियर वेबव्यू के ज़रिए बूस्ट खरीद सकता है. नीचे दी गई टेबल में, टेलीफ़ोनी फ़्रेमवर्क के व्यवहार के बारे में बताया गया है. यह व्यवहार, प्रोविज़निंग और एनटाइटलमेंट स्टेटस की वैल्यू के अलग-अलग कॉम्बिनेशन के हिसाब से तय होता है.
| प्रोविज़निंग की स्थिति | |||||
|---|---|---|---|---|---|
प्रोविज़न नहीं किया गया (0) |
प्रोविज़न किया गया (1) |
उपलब्ध नहीं है (2) |
जारी है (3) |
||
| एनटाइटलमेंट का स्टेटस | बंद है (0) |
कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका |
चालू है (1) |
वेबव्यू दिखाएं | पहले ही खरीद लिया है | पहले ही खरीद लिया है | जारी है | |
काम नहीं करता (2) |
कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका | कनेक्ट नहीं हो सका | |
प्रोविज़निंग (3) |
कैरियर से जुड़ी गड़बड़ी | कैरियर से जुड़ी गड़बड़ी | जारी है | जारी है | |
शामिल है (4) |
कैरियर से जुड़ी गड़बड़ी | पहले ही खरीद लिया है | पहले ही खरीद लिया है | कैरियर से जुड़ी गड़बड़ी | |
सेवा के फ़्लो वाले फ़ील्ड
TS.43 रिस्पॉन्स में यूआरएल, उपयोगकर्ता का डेटा, और कॉन्टेंट टाइप के बारे में जानकारी दी जाती है. इससे, कैरियर की खरीदारी वाली वेबव्यू सुविधा के व्यवहार को पसंद के मुताबिक बनाया जा सकता है. अगर कॉन्टेंट का टाइप नहीं बताया गया है, तो यूआरएल को GET अनुरोध के तौर पर लोड किया जाता है. अगर उपयोगकर्ता का डेटा मौजूद है, तो इसे यूआरएल में क्वेरी पैरामीटर के तौर पर जोड़ा जाता है. उदाहरण के लिए, https://www.android.com?encodedValue=Base64EncodedUserData. अगर यह डेटा मौजूद नहीं है, तो यूआरएल का इस्तेमाल वैसे ही किया जाता है. उदाहरण के लिए, https://www.android.com.
अगर कॉन्टेंट का टाइप JSON या XML फ़ॉर्मैट में तय किया गया है, तो यूआरएल को POST अनुरोध के तौर पर लोड किया जाता है. साथ ही, उपयोगकर्ता के डेटा को POST अनुरोध के डेटा के तौर पर भेजा जाता है. अगर डेटा को Base 64 में कोड किया गया है, तो उसे डिकोड किया जाता है.
- यूआरएल
बटन:
ServiceFlow_URLटाइप:
Stringउदाहरण:
"https://www.android.com"- उपयोगकर्ता का डेटा
बटन:
ServiceFlow_UserDataटाइप:
Stringउदाहरण:
"encodedValue=Base64EncodedUserData"- कॉन्टेंट का टाइप
बटन:
ServiceFlow_ContentsTypeटाइप:
Stringइस्तेमाल की जा सकने वाली वैल्यू:
0(जानकारी नहीं दी गई है),1(JSON),2(एक्सएमएल)
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के कॉन्फ़िगरेशन
5G स्लाइसिंग के अपसेल की सुविधा के व्यवहार को पसंद के मुताबिक बनाने के लिए, ये कैरियर कॉन्फ़िगरेशन उपलब्ध हैं.
KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAYप्रीमियम सुविधाओं की सूची, जो काम करती हैं. यह
TelephonyManager.PremiumCapabilityका इंट ऐरे है. इन प्रीमियम सुविधाओं की वैल्यू, उनसे जुड़ीNetworkCapabilities.NetCapabilityक्लास की वैल्यू के बराबर होती है. अगर किसी प्रीमियम सुविधा का अनुरोध किया जाता है और वह इस कॉन्फ़िगरेशन में शामिल नहीं है, तो खरीदारी का अनुरोध पूरा नहीं होगा. साथ ही,CARRIER_DISABLEDनतीजा दिखेगा.Android 14 में, सिर्फ़
PREMIUM_CAPABILITY_PRIORITIZE_LATENCYइस्तेमाल किया जा सकता है.KEY_PREMIUM_CAPABILITY_MAXIMUM_DAILY_NOTIFICATION_COUNT_INTखरीदारी के अपसेल की सूचना, उपयोगकर्ता को हर दिन ज़्यादा से ज़्यादा कितनी बार दिखाई जाती है. अगर हर दिन के लिए तय की गई सीमा पूरी हो जाती है, तो अपसेल की सूचना नहीं दिखाई जाती. साथ ही, खरीदारी के अनुरोधों (इसमें एनटाइटलमेंट सर्वर के अनुरोध भी शामिल हैं) को अगले दिन आधी रात तक सीमित कर दिया जाता है. हर दिन के लिए तय की गई सीमा पूरी होने के बाद किए गए खरीदारी के अनुरोध पूरे नहीं होते. इसके लिए,
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLEDनतीजा दिखता है.KEY_PREMIUM_CAPABILITY_MAXIMUM_MONTHLY_NOTIFICATION_COUNT_INTखरीदारी के लिए अपसेल करने वाली सूचना, उपयोगकर्ता को महीने में ज़्यादा से ज़्यादा इतनी बार दिखाई जाती है. अगर महीने के लिए तय की गई ज़्यादा से ज़्यादा सीमा पूरी हो जाती है, तो अपसेल की सूचना नहीं दिखाई जाती. साथ ही, खरीदारी के अनुरोधों (इसमें एनटाइटलमेंट सर्वर के अनुरोध भी शामिल हैं) को अगले महीने के पहले दिन तक सीमित कर दिया जाता है. महीने के लिए तय सीमा पूरी होने के बाद, खरीदारी के अनुरोध पूरे नहीं किए जा सकते. ऐसे अनुरोधों के लिए,
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLEDनतीजा दिखता है.KEY_PREMIUM_CAPABILITY_PURCHASE_URL_STRINGयह बैकअप कैरियर का खरीदारी वाला यूआरएल है. यह तब दिखता है, जब उपयोगकर्ता अपसेल की सूचना पर क्लिक करता है. अगर एनटाइटलमेंट सर्वर से मिले TS.43 रिस्पॉन्स में खरीदारी का यूआरएल नहीं मिलता है, तो इस वैल्यू का इस्तेमाल किया जाता है. अगर TS.43 रिस्पॉन्स या कैरियर कॉन्फ़िगरेशन से मिला यूआरएल मान्य नहीं है, तो खरीदारी का अनुरोध
PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLEDनतीजे के साथ पूरा नहीं होगा.KEY_PREMIUM_CAPABILITY_SUPPORTED_ON_LTE_BOOLयह तय करना कि डिवाइस के Long-Term Evolution (एलटीई) से कनेक्ट होने पर, प्रीमियम सुविधाएं खरीदने की अनुमति दी जाए या नहीं. अगर
true, तो एलटीई और न्यू रेडियो (एनआर), दोनों पर खरीदारी के अनुरोध किए जा सकते हैं. अगरfalse, तो खरीदारी के अनुरोध सिर्फ़ एनआर पर किए जा सकते हैं. साथ ही, एलटीई पर किए गए अनुरोधPURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLEके साथ पूरे नहीं किए जा सकते.KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONGखरीदारी के दौरान अपसेल की सूचना को उपयोगकर्ता को कितने समय तक दिखाया जाए. इसके बाद, यह सूचना अपने-आप रद्द हो जाती है. सूचना रद्द होने पर, बाद के अनुरोधों को थ्रॉटल कर दिया जाता है और वे
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLEDनतीजे के साथ फ़ेल हो जाते हैं.KEY_PREMIUM_CAPABILITY_NOTIFICATION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONGटाइम आउट या उपयोगकर्ता के रद्द करने की वजह से खरीदारी का अनुरोध पूरा न होने के बाद, खरीदारी के अगले अनुरोधों को कितने समय तक थ्रॉटल किया जाना चाहिए. अगर उपयोगकर्ता,
KEY_PREMIUM_CAPABILITY_NOTIFICATION_DISPLAY_TIMEOUT_MILLIS_LONGके तय किए गए टाइम आउट के अंदर खरीदारी के अपसेल नोटिफ़िकेशन पर क्लिक नहीं करता है या वह सूचना को रद्द कर देता है या खारिज कर देता है, तो यह बैकऑफ़ टाइमर शुरू हो जाता है. टाइमर चालू होने पर, खरीदारी के अनुरोध पूरे नहीं किए जा सकते. आपकोPURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLEDमैसेज दिखेगा.KEY_PREMIUM_CAPABILITY_PURCHASE_CONDITION_BACKOFF_HYSTERESIS_TIME_MILLIS_LONGमोबाइल और इंटरनेट सेवा देने वाली कंपनी या नेटवर्क की वजह से खरीदारी पूरी न होने पर, खरीदारी के अगले अनुरोधों को कितने समय तक थ्रॉटल किया जाना चाहिए. अगर एनटाइटलमेंट की जांच नहीं हो पाती है, यूआरएल उपलब्ध नहीं है या कैरियर के खरीदारी वाले यूआरएल से पता चलता है कि खरीदारी नहीं हो पाई है, तो यह बैकऑफ़ टाइमर शुरू हो जाता है. यह टाइमर चालू होने पर, खरीदारी के अनुरोध पूरे नहीं किए जा सकते. इसके लिए,
PURCHASE_PREMIUM_CAPABILITY_RESULT_THROTTLEDकोड का इस्तेमाल किया जाता है.KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONGवह समयसीमा जिसके अंदर नेटवर्क को, खरीदारी के प्रीमियम फ़ायदे के लिए स्लाइसिंग कॉन्फ़िगरेशन सेट अप करना होगा. इस अवधि के दौरान, खरीदारी के बाद के अनुरोध ब्लॉक कर दिए जाते हैं और
PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUPनतीजा मिलता है. अगर नेटवर्क, स्लाइसिंग कॉन्फ़िगरेशन को समय पर सेट अप नहीं कर पाता है, तो ऐप्लिकेशन फिर से प्रीमियम सुविधाएं खरीदने का अनुरोध कर सकते हैं. Telephony, किसी खरीदारी को तब तक पूरा नहीं मानता, जब तक उससे जुड़ा स्लाइसिंग कॉन्फ़िगरेशन नहीं भेजा जाता. भले ही, उपयोगकर्ता ने कैरियर को पेमेंट किया हो या नहीं.
JavaScript इंटरफ़ेस
जब कोई उपयोगकर्ता नेटवर्क बूस्ट की सूचना पर क्लिक करता है, तो उसे WebView ऑब्जेक्ट दिखता है. इसमें कैरियर से खरीदारी करने का यूआरएल होता है. कैरियर, DataBoostWebServiceFlow JavaScript इंटरफ़ेस में दिए गए एपीआई का इस्तेमाल कर सकते हैं. इससे वे खरीदारी के लिए बनी अपनी वेबसाइट पर, स्लाइस खरीदने वाले ऐप्लिकेशन से कम्यूनिकेट कर पाएंगे.
कैरियर की वेबसाइट, getRequestedCapability() तरीके से अनुरोध की गई प्रीमियम सुविधा पा सकती है.
अगर खरीदारी पूरी हो जाती है, तो कैरियर की वेबसाइट को स्लाइस खरीदने वाले ऐप्लिकेशन को notifyPurchaseSuccessful() या notifyPurchaseSuccessful(duration) के ज़रिए सूचना देनी होगी. यहां duration एक वैकल्पिक पैरामीटर है, जो स्लाइस की तय की गई अवधि के बारे में बताता है.
अगर खरीदारी पूरी नहीं होती है, तो कैरियर की वेबसाइट को notifyPurchaseFailed(code, reason) तरीके से, स्लाइस खरीदने वाले ऐप्लिकेशन को इसकी सूचना देनी होगी. इसमें code, खरीदारी पूरी न होने की वजह बताने वाला कोड है. वहीं, reason, खरीदारी पूरी न होने की वजह है. यह वजह, आम बोलचाल की भाषा में लिखी जाती है. ऐसा तब किया जाता है, जब खरीदारी पूरी न होने की वजह बताने वाला कोड पता न हो.
अगर इनमें से किसी भी तरीके का इस्तेमाल नहीं किया जाता है, तो खरीदारी को पूरा नहीं माना जाएगा. साथ ही, खरीदारी का अनुरोध आखिर में टाइम आउट हो जाएगा.
खरीदारी पूरी न होने पर, ये मान्य कोड, कैरियर की वेबसाइट से मिल सकते हैं:
FAILURE_CODE_UNKNOWNFAILURE_CODE_CARRIER_URL_UNAVAILABLEFAILURE_CODE_AUTHENTICATION_FAILEDFAILURE_CODE_PAYMENT_FAILEDFAILURE_CODE_NO_USER_DATA
खरीदारी पूरी होने के बाद, कैरियर को उपयोगकर्ता के डिवाइस पर PRIORITIZE_LATENCY स्लाइस के साथ यूआरएसपी के नियम अपडेट करने होंगे.
ओटीटी वॉइस और वीडियो के लिए, 5G स्लाइसिंग की सुविधा के साथ ऑटो-राउटिंग
Android 17 में, ओवर-द-टॉप (ओटीटी) वॉइस और वीडियो कॉल को प्रीमियम नेटवर्क कनेक्शन पर अपने-आप रूट करने की सुविधा मिलती है. इस सुविधा की मदद से, सिस्टम वॉइस और वीडियो कॉल के ट्रैफ़िक को अपने-आप किसी खास प्रीमियम नेटवर्क इंटरफ़ेस (जैसे कि प्रीमियम 5G स्लाइस या प्रीमियम 4G PDN कनेक्शन) पर भेज सकता है. इसके लिए, ऐप्लिकेशन के नेटवर्किंग स्टैक में बदलाव करने की ज़रूरत नहीं होती.
यह प्लैटफ़ॉर्म-लेवल का समाधान है. इससे ऐप्लिकेशन डेवलपर को नेटवर्क की सुविधाओं के लिए साफ़ तौर पर अनुरोध करने की ज़रूरत नहीं पड़ती. इससे डेवलपर और असली उपयोगकर्ताओं, दोनों को बेहतर अनुभव मिलता है.
यह कैसे काम करता है
Android में, कनेक्टिविटी और टेलीकॉम फ़्रेमवर्क में किए गए बदलावों की वजह से, ऑटो-राउटिंग की सुविधा काम करती है. अपने-आप रूट बदलने की सुविधा इस तरह काम करती है:
- कॉल का पता लगाना: सिस्टम, Telecom Jetpack के मौजूदा एपीआई का इस्तेमाल करता है. इनका इस्तेमाल ओटीटी ऐप्लिकेशन, वॉइस या वीडियो कॉल शुरू और खत्म होने का पता लगाने के लिए करते हैं.
- कनेक्शन मैनेजमेंट: कॉल का पता चलने पर, Android एक तय किया गया प्रीमियम नेटवर्क इंटरफ़ेस दिखाता है. जैसे, यूनीफ़ाइड कम्यूनिकेशन स्लाइस.
- ट्रैफ़िक स्टीयरिंग: कॉल के दौरान, प्लैटफ़ॉर्म ऐप्लिकेशन की पहचान उसके यूआईडी से करता है. साथ ही, उसके ट्रैफ़िक को प्रीमियम नेटवर्क कनेक्शन पर अपने-आप रूट कर देता है.
- कॉल खत्म होने के बाद फ़ॉलबैक: कॉल खत्म होने पर, प्लैटफ़ॉर्म रूटिंग के नियम को हटा देता है. इसके बाद, ऐप्लिकेशन का ट्रैफ़िक, सिस्टम के डिफ़ॉल्ट नेटवर्क पर वापस आ जाता है. यह नेटवर्क, कॉलिंग के अलावा अन्य कामों के लिए इस्तेमाल होता है. जैसे, मैसेज भेजना.
ज़रूरी शर्तें
ओटीटी कॉल के लिए, कॉल अपने-आप रूट होने की सुविधा काम करने के लिए, ये ज़रूरी शर्तें पूरी होनी चाहिए:
- मोबाइल और इंटरनेट सेवा देने वाली कंपनियां: इन्हें यूआरएसपी के सही नियमों को कॉन्फ़िगर करके, यूनिफ़ाइड कम्यूनिकेशन स्लाइस उपलब्ध कराना होगा. मोबाइल और इंटरनेट सेवा देने वाली कंपनियों को, यूआरएसपी में यूनीफ़ाइड कम्यूनिकेशन ट्रैफ़िक के लिए एक खास
OSAppIDडालना होगा. - ऐप्लिकेशन: कॉल की स्थितियों का पता लगाने के लिए, सिस्टम को Android Telecom Jetpack API का इस्तेमाल करना होगा.
- डिवाइस बनाने वाली कंपनियां: Android 17 या इसके बाद का वर्शन होना ज़रूरी है.