בדף הזה מפורטים האלגוריתמים והנהלים שמשמשים ב-Android 12 לבחירה של רשתות Wi-Fi ולמעבר ביניהן. מערכת Android מעריכה באופן רציף את האיכות של הרשת המחוברת, וגם את האיכות של הרשתות הזמינות.
מחזור החיים של חיבור אוטומטי
בקטע הזה מוסבר איך מכשיר עם Android מעריך את רשתות ה-Wi-Fi הזמינות ומתחבר אליהן.
המכשיר סורק רשתות זמינות באחת מהדרכים הבאות, בהתאם למצב המסך (פועל או כבוי).
- המסך פועל (מחובר): מערכת המשנה לקישוריות ב-Android בודקת באופן קבוע אם החיבור הנוכחי טוב מספיק כדי לדלג על הסריקה (כפי שמוגדר בסריקות כשהמסך פועל). אם החיבור לא מספיק טוב כדי לדלג על הסריקה, מערכת המשנה של הקישוריות מפעילה סריקה כדי לזהות רשתות זמינות. סריקות כאלה יכולות להיות מופעלות גם על ידי רכיבי מערכת אחרים, כמו מערכת המיקום או אפליקציה (כולל אפליקציית ההגדרות).
- המסך פועל (מנותק): מערכת המשנה של קישוריות Android מבצעת סריקות תקופתיות לפי לוח זמנים של השהיה מעריכית לפני ניסיון חוזר (exponential backoff). המודול מעריך את כל תוצאות הסריקה שהתקבלו ומנסה לבחור את הרשת הטובה ביותר להתחבר אליה.
- המסך כבוי (מנותק): מעבד המארח מתכנת את הקושחה עם רשימה של רשתות מועדפות באמצעות סריקות של העברת רשתות מועדפות (PNO) ברגע שהמסך כבוי. הקושחה מעירה את המארח אם היא מוצאת אחת מהרשתות המועדפות. ב-AOSP מניחים שהמכשיר תומך ב-PNO.
אפשר להשתמש בשיטה
WifiManager#allowAutojoinGlobal(boolean)כדי להשבית חיבורים אוטומטיים. זהו API עם הרשאות מיוחדות שיצרני מכשירים יכולים להשתמש בו בנסיבות מוגבלות (לדוגמה, במכשיר לא נייד שהוגדר מראש).אם המכשיר מחובר והשכבה
config_wifi_framework_enable_associated_network_selectionמוגדרת ל-false, לא מתבצעות סריקות של הקישוריות, ותוצאות הסריקה לא מפעילות בחירת רשת. להגדרה הזו אין השפעה כשהמכשיר מנותק, כלומר סריקות הקישוריות ובחירת הרשת עדיין מתבצעות.תוצאות הסריקה נבדקות.
אם המכשיר מחובר לרשת Wi-Fi, המסגרת בודקת אם הרשת הנוכחית מספיק טובה כדי לדלג על בחירת הרשת.
רשת מוגדרת כטובה מספיק כדי לדלג על בחירת הרשת אם מתקיים אחד מהתנאים הבאים:
- עברו פחות מ-10 שניות מאז הבחירה האחרונה של הרשת.
- המשתמש התחבר לרשת באופן ידני לאחרונה (ההגדרה של 'לאחרונה' מתבצעת באמצעות שכבת העל
config_wifiSufficientDurationAfterUserSelectionMilliseconds). - המכשיר מחובר לחיבור של הרשמה אונליין (OSU).
כל הדרישות הבאות מתקיימות:
- האינדיקטור של עוצמת האות המתקבל (RSSI) גבוה יותר מסף ה-RSSI הנדרש, או שיש מספיק תנועה בחיבור (ראו סריקות כשהמסך מופעל לגבי ספי ה-RSSI והתנועה).
- הרשת מאומתת (מחוברת לאינטרנט) או שהמשתמש אישר את השימוש בה בלי גישה לאינטרנט.
- הרשת לשימוש חופשי.
אם הרשת טובה מספיק כדי לדלג על בחירת הרשת, לא מתבצעת פעולה נוספת.
אם רשת ה-Wi-Fi שאליה המכשיר מחובר לא מספיק טובה, או אם המכשיר לא מחובר לרשת, המסגרת קוראת לבוחרים ברשת כדי ליצור רשימה של רשתות Wi-Fi פוטנציאליות להתחברות על סמך תוצאות סריקה מסוננות. המועמדים לרשת מאתרים תצורות קיימות של Wi-Fi או יוצרים תצורות חדשות לרשתות המועמדות.
תוצאות הסריקה מסוננות כדי להסיר BSSID עם RSSI נמוך מ-RSSI הכניסה (אפשר להגדיר את זה באמצעות שכבות העל
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz,config_wifi_framework_wifi_score_entry_rssi_threshold_5GHzו-config_wifiFrameworkScoreEntryRssiThreshold6ghz). בנוסף, מתבצע סינון של מזהי BSSID חסומים. אפשר לחסום BSSID על סמך ניסיונות חיבור חוזרים שנכשלו, ניתוקים תכופים ובקשות מפורשות מנקודת הגישה לא לנסות שיוך למשך תקופה מסוימת (MBO-OCE). הסבר על חסימת BSSID מופיע בקטע על חסימת SSID ו-BSSID.כשהמכשיר בתנועה (במהירות נמוכה או גבוהה), כל הרשתות של הספקים מסוננות מתוצאות הסריקה. אפשר להחריג ספקים ספציפיים מהמסנן הזה על ידי הוספת מזהה הספק שלהם ל-
config_wifiMobilityFilterCarrierIdBlocklist.כשהמכשיר נע במהירות, אפשר לסנן עוד את תוצאות הסריקה כדי להסיר מזהי BSSID שערכי ה-RSSI שלהם משתנים במהירות (סימן לכך שהם לא נעים יחד עם המכשיר). אפשר להגדיר את האופטימיזציה הזו באמצעות
config_wifiHighMovementNetworkSelectionOptimizationEnabled(הפעלה או השבתה של האופטימיזציה), והשכבותconfig_wifiHighMovementNetworkSelectionOptimizationScanDelayMsו-config_wifiHighMovementNetworkSelectionOptimizationRssiDelta, שבאמצעותן מגדירים את דרישת היציבות בתוצאות הסריקה (שינוי RSSI בתוצאות הסריקה שמרווחות מספיק בזמן).
המסגרת מריצה את הכלי לחישוב ניקוד של מועמדים כדי ליצור ניקוד לכל מועמד SSID. מועמדי ה-SSID יכולים לכלול כמה מועמדי BSSID (שנוצרו על ידי מועמדי הרשת). המועמד עם הניקוד הכי גבוה הוא המועמד המנצח.
המסגרת מפעילה את האלגוריתם user connect choice, שיכול להפוך רשת שנבחרה על ידי המשתמש למועמדת החדשה המובילה במקום להשתמש במועמדת המובילה מתוך המועמדות שקיבלו ניקוד.
המסגרת קובעת אם המועמד המנצח תואם לרשת המחוברת. כדי שיהיה אפשר להגדיר התאמה, צריך לעמוד באחד מהתנאים הבאים:
- למועמד המנצח ולרשת ה-Wi-Fi המחוברת יש אותו BSSID.
- אם יש אפשרות לנדידת קושחה (כולל יכולת חסימת BSSID), המועמד שנבחר והרשת שאליה מחוברים הם בעלי אותו SSID וסוג אבטחה.
אם המועמד המנצח תואם לרשת המקושרת, לא מתבצעת פעולה נוספת. אם המועמד הזוכה לא תואם לרשת, המכשיר ישייך את עצמו למועמד הזוכה.
הערכה של רשת מחוברת
מסגרת Android או הקושחה מעריכות מעת לעת את איכות הרשת המחוברת. בקטע הזה מוסבר איך הרשת המחוברת מוערכת כשהמסך מופעל או מושבת.
ההערכה הזו מתבצעת בנוסף לבחירת הרשת שמתוארת בקטעים הקודמים.
מסך מופעל
מסגרת Android מעריכה את הרשת המחוברת באופן הבא:
שירות ה-Wi-Fi מבצע סקר של נתוני RSSI ושל שכבת הקישור כל 3 שניות (אפשר להגדיר את זה באמצעות שכבת העל
config_wifiPollRssiIntervalMilliseconds).אם הפעלתם התאמה דינמית של מרווח הדגימה באמצעות שכבת העל
config_wifiAdjustPollRssiIntervalEnabled, מרווח הדגימה משתנה באופן דינמי על סמך מצב הניידות של המכשיר ו-RSSI.- מרווח התשאול מורחב ל-6 שניות (מוגדר על ידי שכבת העל
config_wifiPollRssiLongIntervalMilliseconds) כשהמכשיר נייח וגם עוצמת האות (RSSI) גדולה מ--68 dBm (מוגדר על ידי שכבות העלconfig_wifiClientRssiMonitorThresholdDbmו-config_wifiClientRssiMonitorHysteresisDb). - מרווח התשאול מצטמצם בחזרה ל-3 שניות (כפי שהוגדר בשכבת העל
config_wifiPollRssiIntervalMilliseconds) כשהמכשיר לא נייח או כשעוצמת האות (RSSI) קטנה מ-73- dBm (כפי שהוגדר בשכבת העלconfig_wifiClientRssiMonitorThresholdDbm).
- מרווח התשאול מורחב ל-6 שניות (מוגדר על ידי שכבת העל
שירות ה-Wi-Fi מחשב ציון חיבור על סמך נתוני RSSI ונתונים סטטיסטיים של שכבת הקישור. יש שני מודלים זמינים לחישוב הזה, שאפשר להגדיר באמצעות
config_internalScorerType:- ברירת מחדל: כלי לניקוד שמבוסס על למידת מכונה שאומן על נתונים סטטיסטיים של שכבת הקישור.
- חלופה: כלי ישן יותר לניקוד שמבצע הערכה על סמך שינויים בערך RSSI.
אופציונלי: יצרני ציוד מקורי יכולים להתאים אישית את הלוגיקה של הערכת הרשת המחוברת באמצעות הטמעה של אפליקציה חיצונית לניקוד. כדי לעשות זאת, צריך להטמיע את הממשק
WifiConnectedNetworkScorerולרשום אותו באמצעות ה-APIWifiManager#setWifiConnectedNetworkScorer(executor, scorer).אחרי הרישום, הכלי החיצוני למתן ציונים מקיים אינטראקציה עם המסגרת באמצעות זרימת הנתונים הדו-כיוונית הבאה:
נתוני קלט (מסגרת → כלי לחישוב ניקוד)
המסגרת שולחת לכלי לחישוב הניקוד הודעות על אירועים מרכזיים במחזור החיים ובאיכות:- מחזור החיים של הסשן:
onStart()ו-onStop()מציינים מתי חיבור ה-Wi-Fi מתחיל או מסתיים. - נתונים סטטיסטיים של Wi-Fi: המערכת שמחשבת את הניקוד מקבלת עדכונים תקופתיים של נתונים סטטיסטיים של שכבת הקישור (כמו RSSI, מהירות הקישור ומספר החבילות) באמצעות
OnWifiUsabilityStatsListener#onWifiUsabilityStats(). כדי לקבל את העדכונים האלה, המעריך צריך לרשום מאזין באמצעותWifiManager#addOnWifiUsabilityStatsListener().
- מחזור החיים של הסשן:
פעולות (scorer → framework)
ה-scorer מנחה את שירות ה-Wi-Fi באמצעות קריאה לשיטות באובייקט הקריאה החוזרתScoreUpdateObserver:- סטטוס השימושיות: התקשרות
notifyStatusUpdate(sessionId, isUsable)היא המנגנון העיקרי לשליטה בבחירת הרשת.isUsable = true: הרשת תקפה. המסגרת מקדמת את הרשת הזו לרשת ברירת המחדל לתנועת נתונים במערכת.isUsable = false: הרשת לא תקינה. המסגרת לא משתמשת בחיבור הזה כברירת מחדל, וגורמת למעבר אוטומטי לחבילת גלישה.
- בדיקות נגישות: כשמתקשרים אל
requestNudOperation()triggers מופעלת בדיקה פעילה של זיהוי חוסר נגישות של שכן (NUD) (לדוגמה, בדיקת ARP או ND) כדי לוודא שאפשר להגיע לשער. - הוספה לרשימת חסימה של BSSID: קריאה ל-
blocklistCurrentBssid()מונעת מהמכשיר לשייך מחדש לנקודת הגישה (AP) הנוכחית. האפשרות הזו שימושית אם הכלי לניקוד מזהה בעיות ספציפיות ל-AP.
- סטטוס השימושיות: התקשרות
אם יצרן ציוד מקורי הטמיע כלי משלו לדירוג רשתות כמו שמתואר בשלב 3, שירות ה-Wi-Fi דוחה החלטות שקשורות להערכת רשתות מחוברות לכלי הדירוג של יצרן הציוד המקורי.
אם יצרן ציוד מקורי לא הטמיע כלי משלו לחישוב הניקוד, שירות ה-Wi-Fi משתמש בניקוד שחושב בשלב 2 כדי לקבוע אם לעבור לחבילת גלישה לצורך חיבור לאינטרנט.
המסך כבוי
המסגרת לא מתחילה הערכה ברשת המחוברת, אבל תהליך בחירת הרשת עדיין יכול להתרחש אם סריקות מופעלות על ידי רכיבים אחרים (לדוגמה, שירותי מיקום). הקושחה מעריכה את איכות הרשת, ואם האיכות נמוכה, הקושחה עשויה לבצע נדידה או (בסופו של דבר) לבטל את השיוך לרשת ולהפעיל את המארח.
סריקות קישוריות
הסריקות מתבצעות אוטומטית בהתאם למצב המסך במכשיר: המסך מופעל, המסך מושבת והמכשיר מחובר ל-Wi-Fi, או המסך מושבת והמכשיר לא מחובר ל-Wi-Fi.
מסך מופעל
המסגרת מפעילה החלטות סריקה במרווחי זמן הולכים וגדלים כשהמסך מופעל. מרווחי ההחלטה של הסריקה מוגדרים באמצעות שכבות העל config_wifiDisconnectedScanIntervalScheduleSec, config_wifiConnectedScanIntervalScheduleSec ו-config_wifiSingleSavedNetworkConnectedScanIntervalScheduleSec (שהן מערכים של מספרים שלמים). כברירת מחדל, הסריקות מתבצעות במרווחי זמן של השהיה מעריכית לפני ניסיון חוזר של 20, 40, 80 ו-160 שניות, ויכול להיות שהסריקות הבאות יתבצעו במרווחי זמן של 160 שניות (אלה ערכי ברירת המחדל של שכבות העל האלה).
מרווחי הסריקה של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) מאופסים ומתחילים מחדש ב-20 שניות בכל פעם שמצב המסך משתנה, כלומר כשהמסך מופעל או מושבת.
(Android מגרסה 13 ואילך) אם נדרשים מרווחי סריקה שונים בזמן הריצה, אפליקציה עם הרשאות OEM יכולה לקרוא ל-API WifiManager#setScreenOnScanSchedule(screenOnScanSchedule) כדי להגדיר באופן דינמי את לוח הזמנים של הסריקה כשהמסך מופעל.
ההחלטה אם לבצע סריקה או לדלג עליה מתבססת על השאלה אם החיבור הנוכחי לרשת מספיק טוב כדי לדלג על הסריקה. חיבור מספיק טוב כדי לדלג על הסריקה אם מתקיימת אחת מהדרישות הבאות:
- המכשיר מחובר לחיבור של הרשמה אונליין (OSU).
- יש מספיק תנועה בחיבור (בהמשך מפורטים ספי תנועה).
- ערך ה-RSSI גבוה מסף ה-RSSI הנדרש (ראו את ספי ה-RSSI בהמשך), וגם בחירת הרשת בוצעה לאחרונה (10 דקות כברירת מחדל, אבל אפשר להגדיר את זה באמצעות שכבת העל
config_wifiConnectedHighRssiScanMinimumWindowSizeSec), וגם הרשת אומתה (התחברה לאינטרנט) או שהמשתמש אישר את השימוש בה ללא גישה לאינטרנט.
סף עוצמת האות (RSSI) וסף התנועה הם:
- הערך של RSSI גדול מ--73 dBm בתדר 2.4 GHz, שהוגדר עם שכבת העל
config_wifi_framework_wifi_score_low_rssi_threshold_24GHz, או גדול מ--70 dBm בתדרים 5 GHz ו-6 GHz, שהוגדרו עם שכבות העלconfig_wifi_framework_wifi_score_low_rssi_threshold_5GHzו-config_wifiFrameworkScoreLowRssiThreshold6ghz. - התנועה (שידור או קבלה) גדולה מ-16 מנות בשנייה (pps) שהוגדרו עם שכבת העל
config_wifiFrameworkMinPacketPerSecondActiveTraffic.
כשהמכשיר מחובר והמסך פועל, מערכת ניקוד מחוברת עוקבת מעת לעת אחרי איכות ה-Wi-Fi על ידי בדיקת אותות כמו RSSI ומספר החבילות שהועברו. אם איכות ה-Wi-Fi נקבעת כנמוכה (כפי שמפורט בהמשך) והמכשיר תומך בתחנות כפולות בו-זמניות, מתבצעת סריקה. אפשר להשתמש בשכבת העל config_wifiLowConnectedScoreThresholdToTriggerScanForMbb כדי להגדיר את סף הניקוד שמפעיל את הסריקה. אפשר להשתמש בשכבת העל config_wifiLowConnectedScoreScanPeriodSeconds כדי להגדיר את התקופה של הסריקות האלה.
המסך כבוי והמכשיר מחובר ל-Wi-Fi
כשהמסך כבוי והמכשיר מחובר לרשת Wi-Fi, הקושחה (Wi-Fi SoC) מבצעת סריקות של נדידה. המסגרת לא מבצעת סריקות כשהמסך כבוי.
המסך כבוי ואין חיבור ל-Wi-Fi (מצב מנותק)
כשהמסך כבוי וה-Wi-Fi מנותק, הקושחה מבצעת סריקות PNO של מזהי SSID. המסגרת מגדירה את הקושחה עם רשימה של רשתות SSID לסריקה ורשימה של ערוצים לסריקה. אם נמצא SSID מוגדר, הקושחה מעירה את המסגרת.
ה-framework גם מגדיר את המרווח שבו הקושחה תבצע סריקות PNO, באמצעות מצב הניידות של המכשיר כדי לבחור מרווחי סריקה שונים.
במצב של ניידות נמוכה (המכשיר נייח), המרווח הוא 60 שניות עבור שלוש הסריקות הראשונות (נשלט על ידי שכבת העל config_wifiStationaryPnoScanIntervalMillis), ו-180 שניות (מכפיל קבוע של 3x של שכבת העל) עבור סריקות עוקבות. במצב ניידות גבוהה, המרווח הוא 20 שניות לשלושת הסריקות הראשונות (נשלט על ידי שכבת העל config_wifiMovingPnoScanIntervalMillis), ו-60 שניות (מכפיל קבוע של 3x של שכבת העל) לסריקות הבאות.
מועמדים לרשת
המועמדים לרשת מוצאים או יוצרים תצורות (WifiConfiguration) לרשתות שהן:
- זמינה (על סמך תוצאות הסריקה) או הרשת שאליה המכשיר מחובר (שלפעמים לא מופיעה בתוצאות סריקה לא יציבות).
- רמת האות (RSSI) צריכה להיות מינימלית. עוצמת האות המינימלית (RSSI) היא -80 dBm עבור פס 2.4 GHz ו--77 dBm עבור פס 5 GHz ו-6 GHz. אפשר להגדיר את עוצמת האות באמצעות שכבות העל
config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz,config_wifi_framework_wifi_score_entry_rssi_threshold_5GHzו-config_wifiFrameworkScoreEntryRssiThreshold6ghz. - לא חסום, למשל בגלל כשלים קודמים בחיבור.
- הרשת לא מציינת שהיא לא ניתנת לשימוש (לדוגמה, באמצעות MBO/OCE).
- יכול להיות שזה קשור לשימוש בפרטי הכניסה שזמינים במכשיר.
המועמדים הבאים לרשתות נמצאים בשימוש:
- המלצה לרשת שמורה: הערכה של כל הרשתות השמורות (כולל מינויים שמורים ל-Passpoint).
- הצעות לרשתות: הערכה של כל הרשתות שסופקו על ידי אפליקציות באמצעות Suggestion API (כולל הצעות למינויים ל-Passpoint).
משתמשים שהשיגו את הניקוד הגבוה ביותר
הבודקים של המועמדים מעריכים כל מועמד ומועמדת ונותנים להם ציון. הציון של ThroughputScorer (הכלי לחישוב הציון שמוגדר כברירת מחדל) מבוסס על:
- ציון הבסיס מחושב על סמך RSSI, כאשר ה-RSSI מוגבל ל--73 dBm עבור תחום התדרים של 2.4 GHz או ל--70 dBm עבור תחום התדרים של 5 GHz ו-6 GHz (מוגדר באמצעות שכבות העל
config_wifi_framework_wifi_score_low_rssi_threshold_24GHz, config_wifi_framework_wifi_score_low_rssi_threshold_5GHzו-config_wifiFrameworkScoreLowRssiThreshold6ghz). - השיפור בציון מחושב על סמך הערכה של קצב העברת הנתונים שנגזרת מהטכנולוגיה, מהתדר של הערוץ, מרוחב הפס, מ-RSSI, מתנאי הערוץ, מהמספר המקסימלי של זרמי נתונים מרחביים ומפרמטרים אחרים. אפשר להגדיר את העלייה בציון באמצעות שכבות העל
config_wifiFrameworkThroughputBonusNumeratorו-config_wifiFrameworkThroughputBonusDenominator, והיא מוגבלת לערך מקסימלי שמוגדר באמצעות שכבת העלconfig_wifiFrameworkThroughputBonusLimit. - רשת מועמדת שנבחרה לאחרונה על ידי המשתמש או על ידי אפליקציה מקבלת ניקוד גבוה יותר למשך זמן שניתן להגדרה באמצעות שכבת העל
config_wifiFrameworkLastSelectionMinutes(במשך הזמן הזה הרשת מאומתת כרשת שנבחרה על פני רשתות שלא נבחרו על ידי המשתמש). - מועמד שתואם לרשת הנוכחית מקבל בוסט לציון שהוגדר על ידי שכבות העל
config_wifiFrameworkCurrentNetworkBonusMinו-config_wifiFrameworkCurrentNetworkBonusPercent(הוא מקבל בונוס נוסף על סמך אחוז מציון ה-RSSI והתפוקה שלו, עד למינימום שניתן להגדרה). - רשת מאובטחת מקבלת ניקוד גבוה יותר מרשת פתוחה. הבונוס מוגדר באמצעות שכבת העל
config_wifiFrameworkSecureNetworkBonus. - רשת שימוש חופשי (חינמית) מקבלת ניקוד גבוה יותר מרשת בחיוב לפי צריכת נתונים (בתשלום).
הבונוס מוגדר באמצעות שכבת העל
config_wifiFrameworkUnmeteredNetworkBonus. - רשת שמורה מקבלת ניקוד גבוה יותר מרשת שמוצעת באמצעות Suggestion API. הבונוס מוגדר באמצעות שכבת העל
config_wifiFrameworkSavedNetworkBonus. - רשתות לא מהימנות (שאפשר לשלוח לגביהן בקשה כחלק מ-Suggestion API) מקבלות ניקוד נמוך יותר מכל רשת אחרת.
- רשת שזוהה בעבר שאין לה גישה לאינטרנט מקבלת ציון 0 אם המכשיר מחובר לרשת אחרת שיש לה גישה לאינטרנט.
בונוס ברירת המחדל שמוגדר לשימוש בנתונים שמורים לעומת נתונים שמוצעים, ולשימוש בנתונים לא מדויקים לעומת נתונים מדויקים (כלומר, ערכי ברירת המחדל של שכבת העל) יוצר סדר עדיפויות קפדני לנתונים שמורים, לנתונים מוצעים, לנתונים מדויקים ולנתונים לא מדויקים:
- רשתות ללא הגבלת נפח נתונים שנשמרו
- הצעות לרשתות לשימוש חופשי
- רשתות עם חיוב לפי שימוש בנתונים שנשמרו
- הצעות לרשתות עם חיוב לפי שימוש בנתונים
המשמעות היא שרשת שמורה שימוש חופשי (בחינם) תמיד תיבחר לפני רשת שמורה בחיוב לפי צריכת נתונים (בתשלום). יכול להיות שבונוס הניקוד שנבחר לאחרונה (על ידי המשתמש או האפליקציה) יבטל את העדיפות המחמירה הזו.
יכולים להיות כמה מודלים לדירוג מועמדים שמותקנים במסגרת, אבל רק אחד מהם יכול להיות פעיל בכל פעם. אפשר להשתמש בשיטות הניקוד האחרות למדדים (כדי לבדוק אלגוריתמים חלופיים). ב-Android 11, ברירת המחדל של הדירוג היא ThroughputScorer.
חסימת SSID ו-BSSID
יכול להיות שהמסגרת תחסום את ה-SSID או ה-BSSID, כלומר היא לא תביא אותם בחשבון לצורך חיבורים, באופן זמני או קבוע.
חסימת BSSID
חסימת BSSID פועלת באמצעות שני מוני כישלונות, מונה כישלונות רציף ומונה רצף, לכל סוג כישלון ספציפי (בהמשך מופיעה רשימה של סוגי כישלונות). כשמתרחשת שגיאה:
- המונה של סוג הכשל המתאים גדל.
- אם מגיעים לסף הכשלים של סוג הכשל הזה:
- ה-BSSID חסום.
- מונה הרצף של הכשל גדל.
משך הזמן שבו מזהה BSSID חסום מתחיל בערך בסיסי שניתן להגדרה. ערך הבסיס הזה מצוין בשכבות העל config_wifiBssidBlocklistMonitorBaseBlockDurationMs או config_wifiBssidBlocklistMonitorBaseLowRssiBlockDurationMs, בהתאם ל-RSSI. משך הזמן גדל באופן אקספוננציאלי עד שהוא מגיע לגבול העליון שניתן להגדרה ומצוין על ידי שכבת העל config_wifiBssidBlocklistMonitorFailureStreakCap. המשך גדל אם הכישלונות מתרחשים ברציפות באותו BSSID. המשך הוא משך הבסיס שגדל באופן אקספוננציאלי בהתאם לרצף הכשלים. לדוגמה, רצף של 2 כשלים פירושו משך חסימה שהוא פי 4 ממשך הבסיס.
הסף לחסימת BSSID תלוי בסיבת הכשל, ואפשר להתאים אותו באמצעות שכבות-על:
- נקודת הגישה דוחה את השיוך באמצעות MBO/OCE Unable to handle new STA code:
config_wifiBssidBlocklistMonitorApUnableToHandleNewStaThreshold. - האימות של האינטרנט דרך הרשת הזו נכשל:
config_wifiBssidBlocklistMonitorNetworkValidationFailureThreshold. - קוד שגיאה של אימות סיסמה שגויה:
config_wifiBssidBlocklistMonitorWrongPasswordThreshold. - קוד שגיאה של אימות כשל ב-EAP עבור רשתות EAP:
config_wifiBssidBlocklistMonitorEapFailureThreshold. - דחיית שיוך, דחיות כלליות אחרות של שיוך:
config_wifiBssidBlocklistMonitorAssociationRejectionThreshold. - תם הזמן הקצוב לקישור:
config_wifiBssidBlocklistMonitorAssociationTimeoutThreshold. - האימות נכשל, כשלים כלליים אחרים באימות:
config_wifiBssidBlocklistMonitorAuthenticationFailureThreshold. - שגיאת DHCP, הקצאת DHCP נכשלה:
config_wifiBssidBlocklistMonitorDhcpFailureThreshold. - ניתוק לא תקין, המכשיר נותק מהרשת תוך פרק זמן קצר מאוד אחרי החיבור:
config_wifiBssidBlocklistMonitorAbnormalDisconnectThreshold. אפשר להגדיר את חלון הזמן באמצעותconfig_wifiBssidBlocklistAbnormalDisconnectTimeWindowMs.
תנאים למחיקת רשימת החסימות של BSSID
מזהה BSSID נמחק מרשימת החסימה במקרים הבאים:
- כשמחליפים את מצב ה-Wi-Fi, כל ה-BSSID מוסרים מרשימת החסימה.
- כשמשתמש מקיש על רשת בכלי לבחירת רשת Wi-Fi, כל מזהי ה-BSSID של הרשת שנבחרה על ידי המשתמש מוסרים מרשימת החסימה.
- כשמגיעים למשך החסימה (פסק זמן), מזהי ה-BSSID מוסרים מרשימת החסימה.
- כשמבצעים הפעלה מחדש של המערכת, כל רשימות החסימה מתרוקנות.
- כשמסירים רשת, כל מזהי ה-BSSID שמשויכים לרשת הזו מוסרים מרשימת החסימה.
תנאים לאיפוס של מוני הכשלים ורצף הצפייה:
- כשהמערכת מופעלת מחדש, הדלפקים מאופסים לכל ה-BSSID.
- כשמסירים רשת, המונים מאופסים עבור מזהי BSSID שמשויכים לרשת הזו.
כשחיבור L2 מצליח, הדלפקים מאופסים לקודי השגיאות הבאים:
REASON_AP_UNABLE_TO_HANDLE_NEW_STAREASON_WRONG_PASSWORDREASON_EAP_FAILUREREASON_ASSOCIATION_REJECTIONREASON_ASSOCIATION_TIMEOUTREASON_AUTHENTICATION_FAILURE-
REASON_ABNORMAL_DISCONNECT(מתבצע ניקוי מותנה רק אם הפעם האחרונה שבה המכשיר התחבר ל-BSSID הזה הייתה לפני יותר מ-3 שעות) REASON_NONLOCAL_DISCONNECT_CONNECTING
אם אימות הרשת מצליח, הדלפקים מאופסים עבור קוד השגיאה הבא:
REASON_NETWORK_VALIDATION_FAILURE
אם הקצאת ה-DHCP מצליחה, הדלפקים מאופסים עבור קוד השגיאה הבא:
REASON_DHCP_FAILURE
חסימת SSID
חסימת SSID פועלת באופן דומה לחסימת BSSID. מונה הכשלים לכל סוג כשל בכל רשת גדל כשמתרחשים כשלים בחיבור מהסוג הזה.
כשמספר הכשלים מסוג מסוים חורג מסף מסוים, ה-SSID נחסם באופן קבוע או זמני בהתאם להגדרה. ההגדרה של כל סוג כשל מקודדת ב-WifiConfiguration.NetworkSelectionStatus.DISABLE_REASON_INFOS ומסוכמת בטבלה הבאה.
|
* ברשתות שהושבתו באופן זמני, משך ההשבתה משתנה באופן דינמי בהתאם למספר הכשלים הרצופים בחיבור לרשת. אם רשת נכשלת חמש פעמים ברציפות, כל כישלון נוסף יגרום להשבתה למשך זמן כפול מהמשך הקודם. לדוגמה, אם יש רשת עם חמש שגיאות רצופות, היא מושבתת למשך 5 דקות, ואז למשך 10 דקות בשגיאה השישית, למשך 20 דקות בשגיאה השביעית וכך הלאה, עד למגבלה המקסימלית של 18 שעות. |
||||
| קוד הכשל | תיאור | סף | משך הזמן הבסיסי להשבתה* | סוג ההשבתה |
|---|---|---|---|---|
DISABLED_DHCP_FAILURE |
הקצאת DHCP נכשלה | 5 | 5 דקות | זמני |
DISABLED_NO_INTERNET_TEMPORARY |
האימות של הרשת נכשל, אבל המשתמש ציין שהוא רוצה להמשיך להתחבר לרשת הזו בעתיד | 1 | 10 דקות | זמני |
DISABLED_AUTHENTICATION_NO_CREDENTIALS |
ל-Supplicant אין פרטי כניסה להתחברות לרשת | 1 | לא רלוונטי | קבוע |
DISABLED_NO_INTERNET_PERMANENT |
ברירת המחדל לכשל באימות הרשת | 1 | לא רלוונטי | קבוע |
DISABLED_BY_WIFI_MANAGER |
הוצאה משימוש ולא נמצאת בשימוש | 1 | לא רלוונטי | קבוע |
DISABLED_BY_WRONG_PASSWORD |
הסיסמה שגויה, ולא היה חיבור מוצלח לרשת הזו | 1 | לא רלוונטי | קבוע |
DISABLED_AUTHENTICATION_NO_SUBSCRIPTION |
כשל ב-EAP כשאין מינוי לכרטיס ה-SIM | 1 | לא רלוונטי | קבוע |
DISABLED_ASSOCIATION_REJECTION |
כשלים בדחיית שיוך | 5 | 5 דקות | זמני |
DISABLED_AUTHENTICATION_FAILURE |
כשלים אחרים באימות (כלומר, לא סיסמה שגויה או כשל ב-EAP) | 5 | 5 דקות | זמני |
DISABLED_AUTHENTICATION_PRIVATE_EAP_ERROR |
כשל ב-EAP ספציפי לספק (פרטי). | 1 | לא רלוונטי | קבוע |
DISABLED_NETWORK_NOT_FOUND |
הלקוח לא הצליח למצוא ברשת תוצאות סריקה שתואמות לרשת שהמסגרת ביקשה להתחבר אליה (כולל יכולות הרשת). | 2 | 5 דקות | זמני |
DISABLED_CONSECUTIVE_FAILURES |
החיבור לרשת נכשל חמש פעמים ברציפות או יותר. סוג הכשלים האלה כולל, בין היתר, את סוגי הכשלים שמפורטים בטבלה הזו. |
5 | 5 דקות | זמני |
רשת שהושבתה באופן זמני מופעלת מחדש במקרים הבאים:
- חלף משך הזמן שבו ההשבתה הייתה אמורה להיות בתוקף.
- המשתמש בוחר ידנית את הרשת שאליה הוא רוצה להתחבר.
- המשתמש מעביר את המתג של ה-Wi-Fi.
- המערכת מופעלת מחדש.
- הרשת הושבתה ב-RSSI נמוך מאוד, אבל הרשת מזוהה שוב מאוחר יותר ב-RSSI בינוני או גבוה יותר.
רשת שהושבתה באופן קבוע מופעלת מחדש במקרים הבאים:
- המשתמש בוחר ידנית את הרשת שאליה הוא רוצה להתחבר.
המונים של כשלים ברשת מאופסים במקרים הבאים:
- הרשת מוסרת.
- המכשיר התחבר לרשת בהצלחה.
- הרשת הופעלה מחדש אחרי שחלף פרק הזמן שבו היא הייתה מושבתת.
- המשתמש בוחר ידנית את הרשת שאליה הוא רוצה להתחבר.
- המערכת מופעלת מחדש.
כרטיסי מידע
כרטיסי ניקוד, שהוצגו ב-Android 10, מתעדים נתונים סטטיסטיים במכשיר לגבי BSSID. כרטיסי הניקוד נשמרים באמצעות שירות IpMemoryStore.
לא נעשה שימוש בכרטיסי ניקוד בבחירת רשת ב-Android 11.
אפשרות הבחירה של המשתמשים להתחבר
ל-Android יש אלגוריתם לבחירת חיבור משתמש שמאפשר לתהליך הבחירה להעדיף רשתות Wi-Fi שהמשתמש התחבר אליהן באופן מפורש, למשל רשת ביתית. יכול להיות שהמשתמשים יעדיפו רשתות כאלה על פני רשתות ציבוריות, גם אם הביצועים שלהן נמוכים יותר מרשת ציבורית, כי הן מספקות שירותים נוספים כמו היכולת לשלוט במכשירים ביתיים.
העדפת המשתמש לגבי רשת נשמרת על ידי סימון כל הגדרות ה-Wi-Fi הגלויות ועוצמת האות שלהן בזמן שהמשתמש בוחר רשת. אם אחת מהגדרות ה-Wi-Fi המסומנות נבחרת במהלך תהליך הבחירה האוטומטי, ורשת שנבחרה על ידי המשתמש זמינה, אלגוריתם הבחירה של המשתמש מחליף את הבחירה ברשת שנבחרה על ידי המשתמש אם התנאים הבאים מתקיימים:
- בפעם האחרונה שהשתמשו ברשת שהמשתמש בחר להתחבר אליה, הייתה לה גישה לאינטרנט.
- הבחירה של המשתמש להתחבר היא בעלת עוצמת אות שלא נמוכה יותר מהעוצמה שהייתה כשהוא נבחר במקור, עם שולי שגיאה. אפשר להגדיר את מרווח השגיאה באמצעות שכבת העל
config_wifiEstimateRssiErrorMarginDb.
הבחירה של המשתמש לגבי הרשת שאליה הוא מתחבר נשמרת גם אחרי הפעלה מחדש. האפשרות לבחירת רשת להתחברות פועלת עבור רשתות שמורות, רשתות Passpoint ורשתות מוצעות.
תחנות כפולות בו-זמניות
בקטע הזה מתואר תהליך הבחירה של רשת Wi-Fi כשמכשיר תומך בחיבור לשתי רשתות Wi-Fi בו-זמנית.
Make-before-break
אם הפונקציה make-before-break מופעלת, המכשיר מנסה להתחבר לרשת החדשה לפני שהוא מתנתק מהרשת הישנה. בתהליך make-before-break נעשה שימוש באותו אלגוריתם לבחירת רשת כמו בתהליך break-before-make למעבר בין רשתות (שמתרחש כשהמכשיר מתנתק מהרשת הישנה לפני שהוא מתחבר לרשת החדשה). אם האלגוריתם לבחירת הרשת בוחר רשת שלא ניתן לעבור אליה באמצעות שיטת make-before-break, המכשיר חוזר אוטומטית לשיטת break-before-make.
חיבור מוגבל וחיבור לאינטרנט בו-זמנית
אם הפונקציה חיבור בו-זמני מוגבל וחיבור לאינטרנט מופעלת, המכשיר יכול להתחבר לרשת Wi-Fi משנית מוגבלת שזמינה רק לאפליקציות נבחרות שהוגדרו על ידי יצרן המכשיר. הוראות ליצרני מכשירים להגדרת התכונה הזו מופיעות במאמר חיבור מוגבל וחיבור לאינטרנט בו-זמנית.
כשהאלגוריתם לבחירת הרשת מזהה תוצאות סריקה שתואמות להצעה בתשלום או להצעה פרטית של יצרן ציוד מקורי, הוא מתחבר אליה באופן אוטומטי כרשת שנייה. בחירת הרשת עבור רשת ה-Wi-Fi הראשית (שמספקת חיבור לאינטרנט לאפליקציות רגילות) מתבצעת בדרך כלל במקביל.
שאלות נפוצות
האם לרשתות מאובטחות תמיד יש עדיפות על פני רשתות פתוחות?
לא. 'שמורה' לעומת 'מוצעת' ו'בחיוב לפי צריכת נתונים' לעומת 'לשימוש חופשי' הן קטגוריות עיקריות שבהן הרשתות נבדקות. בכל קטגוריה, לרשתות מאובטחות יש עדיפות מסוימת על פני רשתות פתוחות, אבל האיכות של החיבור מקבלת משקל גבוה בהרבה.
הסיבה לכך היא שאבטחת נתוני המשתמשים בפועל מסופקת על ידי הצפנה מקצה לקצה (לדוגמה, TLS). רשתות מאובטחות מצפינות רק את החלק הראשון של התקשורת, וגם אז, ברשתות עם מפתחות משותפים מראש, הן לא מספקות פרטיות רבה.
למה רשתות שמורות מקבלות עדיפות על פני הצעות לרשתות?
רשתות שמורות בחינם (ללא הגבלת נפח) מקבלות עדיפות על פני רשתות מוצעות בחינם, ורשתות שמורות בחיוב לפי צריכת נתונים מקבלות עדיפות על פני רשתות מוצעות בחיוב לפי צריכת נתונים.
לרשתות שמורות יש עדיפות על פני רשתות מוצעות, כי אלה רשתות שהמשתמש הוסיף למכשיר באופן מפורש. המשמעות היא שהמכשיר יעדיף להתחבר לרשתות האלה כשהדבר אפשרי.
שימו לב: משתמשים יכולים להשבית את ההתנהגות של חיבור אוטומטי לרשתות שמורות ספציפיות. כלומר, הם יכולים לציין שצריך להשתמש ברשתות האלה רק באופן ידני, ולא להתחבר אליהן באופן אוטומטי במכשיר.
האם אפשר לשנות את סדר העדיפות המחמיר או להסיר אותו לגמרי?
כדי לשנות את ההחלטות לגבי בחירת הרשת, אפשר לשנות את שכבות העל של הבונוס שמופיעות בקטעים הקודמים. עם זאת, לא מומלץ לשנות את ערכי ברירת המחדל, כי הם נבחרו אחרי בחינה מדוקדקת של תרחישי שימוש רבים.