החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
סקירה כללית על סטטיסטיקות של ממשקי רשת
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
ב-Android 4.0, הנתונים הסטטיסטיים שמדווחים על ידי ממשקי הרשת של Linux מתועדים לאורך זמן, ומשמשים לאכיפת מגבלות המכסות ברשת, ליצירת תרשימים שגלויים למשתמשים ועוד.
כל מנהל של מכשיר רשת (כולל Wi-Fi) חייב לפעול בהתאם למחזור החיים הרגיל של מכשיר הליבה, ולהחזיר נתונים סטטיסטיים נכונים דרך dev_get_stats()
. במיוחד, הנתונים הסטטיסטיים שמוחזרים חייבים להישאר מונוטוניים לחלוטין בזמן שהממשק פעיל. הנהגים יכולים לאפס את הנתונים הסטטיסטיים רק אחרי שהם משלימים unregister_netdev()
או את הפעולה המקבילה שיוצרת אירוע NETDEV_UNREGISTER
לקריאות חוזרות (callbacks) שמוגדרות ב-register_netdevice_notifier()
, ב-register_inetaddr_notifier()
או ב-register_inet6addr_notifier()
.
בדרך כלל, מפעילי הסלולר מודדים את השימוש בנתונים בשכבת האינטרנט (IP). כדי להתאים את הגישה הזו ל-Android 4.0, אנחנו מסתמכים על העובדה שבמכשירי הליבה שאנחנו מתעניינים בהם, הערכים rx_bytes
ו-tx_bytes
שמוחזרים על ידי dev_get_stats()
הם בדיוק הבייטים שהועברו בשכבת האינטרנט (IP
). אבל אנחנו מבינים שיכול להיות שזה לא המצב במכשירים אחרים. בשלב הזה, התכונה מסתמכת על המאפיין הזה. גם לדרייברים חדשים צריך להיות המאפיין הזה, וערכים של dev_get_stats()
לא יכולים לכלול עלויות עיבוד מיותרות של אנוקפסולציה בשכבות רשת נמוכות יותר (כמו כותרות Ethernet), ומומלץ שלא יכללו תעבורת נתונים אחרת (כמו ARP) אלא אם היא זניחה.
מסגרת Android אוספת נתונים סטטיסטיים רק מממשקי רשת שמשויכים ל-NetworkStateTracker
ב-ConnectivityService
. כך אפשר לזהות באופן ספציפי כל ממשק רשת, כולל הסוג שלו (למשל TYPE_MOBILE
או TYPE_WIFI
) וזהות המנוי (למשל IMSI). כל ממשקי הרשת שמשמשים לניתוב נתונים צריכים להיות מיוצגים על ידי NetworkStateTracker
כדי שאפשר יהיה לחשב את הנתונים הסטטיסטיים בצורה נכונה.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-03-26 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-03-26 (שעון UTC)."],[],[],null,["# Network interface statistics overview\n\nIn Android 4.0, statistics reported by Linux network interfaces are\nrecorded over time, and are used to enforce network quota limits,\nrender user-visible charts, and more.\n\nEach network device driver (Wi-Fi included) must follow the standard\nkernel device lifecycle, and return correct statistics through\n`dev_get_stats()`. In particular, statistics returned must remain\nstrictly monotonic while the interface is active. Drivers may reset\nstatistics only after successfully completing an `unregister_netdev()`\nor the equivalent that generates a `NETDEV_UNREGISTER` event for\ncallbacks registered with `register_netdevice_notifier()` /\n`register_inetaddr_notifier()` / `register_inet6addr_notifier()`.\n\nMobile operators typically measure data usage at the Internet layer\n(IP). To match this approach in Android 4.0, we rely on the fact that\nfor the kernel devices we care about the `rx_bytes` and `tx_bytes`\nvalues returned by `dev_get_stats()` return exactly the Internet layer\n(`IP`) bytes transferred. But we understand that for other devices it\nmight not be the case. For now, the feature relies on this\npeculiarity. New drivers should have that property also, and the\n`dev_get_stats()` values must not include any encapsulation overhead\nof lower network layers (such as Ethernet headers), and should\npreferably not include other traffic (such as ARP) unless it is\nnegligible.\n\nThe Android framework only collects statistics from network interfaces\nassociated with a `NetworkStateTracker` in `ConnectivityService`. This\nenables the framework to concretely identify each network interface,\nincluding its type (such as `TYPE_MOBILE` or `TYPE_WIFI`) and\nsubscriber identity (such as IMSI). All network interfaces used to\nroute data should be represented by a `NetworkStateTracker` so that\nstatistics can be accounted correctly."]]