בחירת רשת Wi-Fi

בדף הזה מפורטים האלגוריתמים והנהלים שמשמשים ב-Android 12 לבחירה של רשתות Wi-Fi ולמעבר ביניהן. מערכת Android מעריכה באופן רציף את האיכות של הרשת המחוברת ואת האיכות של הרשתות הזמינות.

משך החיים של חיבור אוטומטי

בקטע הזה מוסבר איך מכשיר עם Android מעריך את רשתות ה-Wi-Fi הזמינות ומתחבר אליהן.

  1. המכשיר סורק רשתות זמינות באחת מהדרכים הבאות, בהתאם למצב המסך (פועל או כבוי).

    • המסך פועל (מחובר): מערכת המשנה לקישוריות ב-Android בודקת באופן קבוע אם החיבור הנוכחי מספיק טוב כדי לדלג על הסריקה (כפי שמוגדר בסריקות כשהמסך פועל). אם החיבור לא מספיק טוב כדי לדלג על הסריקה, מערכת המשנה של הקישוריות מפעילה סריקה כדי לזהות רשתות זמינות. סריקות כאלה יכולות להיות מופעלות גם על ידי רכיבי מערכת אחרים, כמו מערכת המיקום או אפליקציה (כולל אפליקציית ההגדרות).
    • המסך מופעל (מנותק): מערכת המשנה של הקישוריות ב-Android מבצעת סריקות תקופתיות לפי לוח זמנים של השהיה מעריכית לפני ניסיון חוזר. המודול מעריך את כל תוצאות הסריקה שהתקבלו ומנסה לבחור את הרשת הטובה ביותר להתחברות.
    • המסך כבוי (מנותק): מעבד המארח מתכנת את הקושחה עם רשימה של רשתות מועדפות באמצעות סריקות של העברת רשת מועדפת (PNO) ברגע שהמסך כבוי. הקושחה מעירה את המארח אם היא מוצאת אחת מהרשתות המועדפות. ב-AOSP מניחים שהמכשיר תומך ב-PNO.

    אפשר להשתמש בשיטה WifiManager#allowAutojoinGlobal(boolean) כדי להשבית חיבורים אוטומטיים. זהו API עם הרשאות מיוחדות שיצרני מכשירים יכולים להשתמש בו בנסיבות מוגבלות (לדוגמה, במכשיר לא נייד שהוגדר מראש).

    אם המכשיר מחובר והשכבת-על config_wifi_framework_enable_associated_network_selection מוגדרת ל-false, לא מתבצעות סריקות של הקישוריות, ותוצאות הסריקה לא מפעילות בחירת רשת. להגדרה הזו אין השפעה כשהמכשיר מנותק, כלומר עדיין מתבצעים סריקות של הקישוריות ובחירת רשת.

  2. תוצאות הסריקה נבדקות.

    • אם המכשיר מחובר לרשת 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.

    • כשהמכשיר נע במהירות, אפשר לסנן את תוצאות הסריקה כדי להסיר מזהי BSSID שערכי ה-RSSI שלהם משתנים במהירות (סימן לכך שהם לא נעים יחד עם המכשיר). אפשר להגדיר את האופטימיזציה הזו באמצעות config_wifiHighMovementNetworkSelectionOptimizationEnabled (הפעלה או השבתה של האופטימיזציה), והשכבות config_wifiHighMovementNetworkSelectionOptimizationScanDelayMs ו-config_wifiHighMovementNetworkSelectionOptimizationRssiDelta, שקובעות את דרישת היציבות בתוצאות הסריקה (שינוי RSSI בתוצאות הסריקה שמרווחות מספיק בזמן).

  3. המסגרת מריצה את הכלי לחישוב ניקוד המועמדים כדי ליצור ניקוד לכל מועמד SSID. רשימת ה-SSID המועמדים יכולה לכלול כמה BSSID מועמדים (שנוצרו על ידי מציעי הרשת). המועמד עם הניקוד הכי גבוה הוא המועמד המנצח.

  4. המסגרת מפעילה את האלגוריתם user connect choice, שיכול להפוך רשת שנבחרה על ידי המשתמש למועמדת החדשה המובילה במקום להשתמש במועמדת המובילה מתוך המועמדות שקיבלו ניקוד.

  5. המסגרת קובעת אם המועמד המנצח תואם לרשת המחוברת. כדי שנוכל לזהות התאמה, צריך לעמוד באחד מהתנאים הבאים:

    • למועמד המנצח ולרשת ה-Wi-Fi המחוברת יש אותו BSSID.
    • אם יש אפשרות לנדידת קושחה (כולל יכולת חסימת BSSID), המועמד שנבחר והרשת שאליה מחוברים הם בעלי אותו SSID וסוג אבטחה.

    אם המועמד המנצח תואם לרשת המקושרת, לא מתבצעת פעולה נוספת. אם המועמד הזוכה לא תואם לרשת, המכשיר משויך למועמד הזוכה.

הערכה של רשת מחוברת

מסגרת Android או הקושחה מעריכות מעת לעת את איכות הרשת המחוברת. בקטע הזה מוסבר איך הרשת המחוברת מוערכת כשהמסך מופעל או מושבת.

ההערכה הזו מתבצעת בנוסף לבחירת הרשת שמוסברת בקטעים הקודמים.

מסך מופעל

מסגרת Android מעריכה את הרשת המחוברת באופן הבא:

  1. שירות ה-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).
  2. שירות ה-Wi-Fi מחשב ציון חיבור על סמך RSSI ונתונים סטטיסטיים של שכבת הקישור. יש שני מודלים זמינים לחישוב הזה, שאפשר להגדיר באמצעות config_internalScorerType:

    • ברירת מחדל: כלי לניקוד שמבוסס על למידת מכונה שאומן על נתונים סטטיסטיים של שכבת הקישור.
    • חלופה: כלי ישן יותר לחישוב ציון שמעריך על סמך שינויים בערך RSSI.
  3. אופציונלי: יצרני ציוד מקורי יכולים להתאים אישית את הלוגיקה של הערכת הרשת המחוברת באמצעות הטמעה של אפליקציה חיצונית לחישוב ניקוד. כדי לעשות זאת, צריך להטמיע את הממשק WifiConnectedNetworkScorer ולרשום אותו באמצעות ה-API‏ WifiManager#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() מפעילה בדיקת זיהוי של שכנים לא נגישים (NUD) (לדוגמה, בדיקת ARP או בקשה לבדיקת תקינות (probe) של ND) כדי לוודא שהשער נגיש.
      • חסימה של BSSID: קריאה ל-blocklistCurrentBssid() מונעת מהמכשיר לשייך את עצמו מחדש לנקודת הגישה הנוכחית (AP). האפשרות הזו שימושית אם הכלי לניקוד מזהה בעיות ספציפיות ל-AP.
  4. אם יצרן ציוד מקורי הטמיע כלי משלו לדירוג רשתות כמו שמתואר בשלב 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 אם המכשיר מחובר לרשת אחרת שיש לה גישה לאינטרנט.

בונוס ברירת המחדל על שמירה לעומת הצעה, ועל שימוש חופשי לעומת בחיוב לפי צריכת נתונים (כלומר, ערכי ברירת המחדל של שכבת העל) יוצר סדר עדיפויות מחמיר לשמירה, להצעה, בחיוב לפי צריכת נתונים ולשימוש חופשי:

  1. רשתות לשימוש חופשי שנשמרו
  2. הצעות לרשתות לשימוש חופשי
  3. רשתות עם חיוב לפי שימוש בנתונים שנשמרו
  4. הצעות לרשתות עם חיוב לפי שימוש בנתונים

המשמעות היא שרשת שמורה לשימוש חופשי (בחינם) תמיד תיבחר לפני רשת שמורה בחיוב לפי צריכת נתונים (בתשלום). יכול להיות שבונוס הניקוד שנבחר לאחרונה (על ידי המשתמש או האפליקציה) יבטל את העדיפות המחמירה הזו.

יכולים להיות כמה מודלים לדירוג מועמדים שמותקנים במסגרת, אבל רק אחד מהם יכול להיות פעיל בכל פעם. אפשר להשתמש בשיטות הניקוד האחרות למדדים (כדי לבדוק אלגוריתמים חלופיים). ב-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: 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_STA
    • REASON_WRONG_PASSWORD
    • REASON_EAP_FAILURE
    • REASON_ASSOCIATION_REJECTION
    • REASON_ASSOCIATION_TIMEOUT
    • REASON_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 שגיאות רצופות ברשת, היא מושבתת למשך 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 הראשית (שמספקת חיבור לאינטרנט לאפליקציות רגילות) מתבצעת בדרך כלל במקביל.

שאלות נפוצות

  1. האם לרשתות מאובטחות תמיד יש עדיפות על פני רשתות פתוחות?

    לא. 'שמורה' לעומת 'מוצעת' ו'בחיוב לפי צריכת נתונים' לעומת 'לשימוש חופשי' הן קטגוריות עיקריות שבהן הרשתות נבדקות. בכל קטגוריה, לרשתות מאובטחות יש עדיפות מסוימת על פני רשתות פתוחות, אבל משקל גבוה בהרבה ניתן לאיכות החיבור.

    הסיבה לכך היא שאבטחת מידע של המשתמשים בפועל מסופקת על ידי הצפנה מקצה לקצה (לדוגמה, TLS). רשתות מאובטחות מצפינות רק את החלק הראשון של התקשורת, וגם אז, ברשתות עם מפתחות משותפים מראש, הן לא מספקות פרטיות רבה.

  2. למה יש עדיפות לרשתות שמורות על פני הצעות לרשתות?

    רשתות חינמיות (שימוש חופשי) שמורות מקבלות עדיפות על פני רשתות חינמיות מוצעות, ורשתות בחיוב לפי צריכת נתונים שמורות מקבלות עדיפות על פני רשתות בחיוב לפי צריכת נתונים מוצעות.

    לרשתות שמורות יש עדיפות על פני רשתות מוצעות, כי אלה רשתות שהמשתמש הוסיף למכשיר באופן מפורש. המשמעות היא שיש העדפה להתחבר לרשתות האלה כשזה אפשרי.

    שימו לב: משתמשים יכולים להשבית את ההתנהגות של חיבור אוטומטי לרשתות שמורות ספציפיות. כלומר, הם יכולים לציין שצריך להשתמש ברשתות האלה רק באופן ידני, ולא להתחבר אליהן באופן אוטומטי במכשיר.

  3. האם אפשר לשנות את סדר העדיפות המחמיר או להסיר אותו לגמרי?

    כדי לשנות את ההחלטות לגבי בחירת הרשת, אפשר לשנות את שכבות העל של הבונוס שמופיעות בקטעים הקודמים. עם זאת, לא מומלץ לשנות את ערכי ברירת המחדל, כי הם נבחרו אחרי בחינה מדוקדקת של תרחישי שימוש רבים.