האפליקציה שלך דורשת זמן השהיה ותפוקה מובטחים? — לא, היא דורשת הבטחות קפדניות. טלרפואה, בקרי תעשייה או שיתוף פעולה ב-AR — כל תרחיש הוא קריטי לפרמטרי הרשת. 5G Network Slicing ויקיפדיה פותר זאת: משאב רשת וירטואלי ייעודי מהמפעיל עם SLAs קבועים. Slices שומרים חלק ממשאבי הרדיו (RAN), רשת ההולכה (backhaul) והליבה (Core), ומבטיחים זמן השהיה עד 1 אלפית השנייה עבור URLLC או תפוקה עד 10 Gbps עבור eMBB. 3GPP TS 23.501 מגדיר את ארכיטקטורת Network Slicing כעקרון בידוד מקצה לקצה של פונקציות רשת. בקשו הערכת פרויקט — המהנדסים שלנו יכינו תוכנית אינטגרציה עבור התשתית שלכם.
איך Network Slicing נראה בפועל
רשת ה-5G הפיזית מחולקת ל"slices" מבודדים. כל slice הוא קונטיינר רשת נפרד עם משאבי RAN, הולכה וליבה ייעודיים. עבור האפליקציה זה אומר:
- eMBB (Enhanced Mobile Broadband) — תפוקה מקסימלית, עד 10 Gbps. לסטרימינג 4K/8K, VR.
- URLLC (Ultra-Reliable Low-Latency Communication) — זמן השהיה מתחת ל-1 אלפית השנייה, אמינות 99.999%. לשליטה בציוד תעשייתי, ניתוח מרחוק.
- mMTC (Massive Machine-Type Communication) — צריכת חשמל נמוכה, אלפי מכשירים. לחיישני IoT, טלמטריה.
Slices זמינים רק דרך APIs של מפעילים שתומכים בהם: ברוסיה — MTS, Rostelecom באזורי פיילוט; באירופה — Deutsche Telekom, Telefonica, Vodafone. ללא חוזה מפעיל ותמיכת כרטיס SIM, ה-slice אינו זמין.
איך לבקש Network Slicing מאפליקציה ניידת?
אין API ישיר של מערכת ההפעלה למפתח כדי לבקש slice. המנגנון תלוי בפלטפורמה ובשותפות עם המפעיל.
Android (API 33+): TelephonyManager.isDataCapable(), NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY, NET_CAPABILITY_PRIORITIZE_BANDWIDTH. עם Android 13, NetworkRequest מאפשר לציין דרישות איכות — מערכת ההפעלה מתרגמת אותן לבקשת slice דרך המפעיל.
val networkRequest = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build()
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager.requestNetwork(networkRequest, object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
// слайс предоставлен, биндим сокеты к этой сети
network.bindSocket(mySocket)
}
override fun onUnavailable() {
// слайс недоступен, fallback на стандартный bearer
}
})iOS: אין API ישיר לבקשת slice. אפל לא חושפת פרמטרי חיבור PDN מ-val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build() val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager connectivityManager.requestNetwork(networkRequest, object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { // слайс предоставлен, биндим сокеты к этой сети network.bindSocket(mySocket) } override fun onUnavailable() { // слайс недоступен, fallback на стандартный bearer } }) . אינטגרציות שותפים דרך Carrier App Extensions — רק לאפליקציות מפעיל (eSIM, הגדרות SIM). עבור iOS, Network Slicing מיושם דרך פרופיל VPN או APN ייעודי שהמפעיל מגדיר ברמת הרשת, לא דרך SDK.
React Native: קראו ל-API המקורי של Android דרך Kotlin Native Module.
למה קשירת socket היא קריטית
לאחר קבלת אובייקט PDN connection parameters דרך CoreTelephony, עליכם לקשור במפורש את כל פעולות הרשת לרשת זו. אחרת, המערכת תבחר ב-bearer ברירת המחדל (LTE/5G כללי).
// OkHttp: передаём network.socketFactory()
val client = OkHttpClient.Builder()
.socketFactory(network.socketFactory)
.build()
// Стандартный Socket
val socket = Socket()
network.bindSocket(socket)
socket.connect(InetSocketAddress(host, port))עבור React Native, המודול המקורי קושר את ה-socket ומחזיר Network לצד ה-JS. האבסטרקציה נראית כמו לקוח HTTP רגיל, אבל מתחת למכסה המנוע זה slice.
איך לוודא את איכות ה-slice?
לאחר קבלת ה-slice, עקבו אחר הפרמטרים בפועל דרך NetworkCallback ו-// OkHttp: передаём network.socketFactory() val client = OkHttpClient.Builder() .socketFactory(network.socketFactory) .build() // Стандартный Socket val socket = Socket() network.bindSocket(socket) socket.connect(InetSocketAddress(host, port)) :
connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback( FLAG_INCLUDE_LOCATION_INFO ) {
override fun onCapabilitiesChanged( network: Network, capabilities: NetworkCapabilities ) {
val downBandwidth = capabilities.linkDownstreamBandwidthKbps // кбит/с
val upBandwidth = capabilities.linkUpstreamBandwidthKbps
val latency = capabilities.transportInfo // TransportInfo с latency на Android 12+
}
})אם הפרמטרים בפועל שונים מה-SLA של ה-slice — תעדו את החריגה והודיעו לשרת הניטור. עבור אפליקציות URLLC, השפלה של ה-slice עשויה לדרוש מעבר מיידי לעיבוד ענן.
אילו תרחישים מרוויחים מ-slicing?
Network Slicing אינו אוניברסלי. הוא מוצדק כאשר LTE/5G סטנדרטי אינו מבטיח את המאפיינים הנדרשים. לדוגמה:
- שליטה מרחוק ברובוט במפעל דורשת URLLC עם זמן השהיה <1 אלפית השנייה ואמינות 99.999%;
- שידור חי 8K VR באצטדיון — eMBB עם 10 Gbps מובטחים;
- מערכת ניטור לאלפי חיישני IoT — mMTC עם צריכת חשמל נמוכה.
השוואת פלטפורמות: ה-API של Android מאפשר לבקש slice ב-0.5 אלפית השנייה, בעוד iOS דורש הגדרת מפעיל, שלוקחת ימים. חיסכון בתעבורה מ-slicing יכול להגיע ל-40% עם לוגיקה אדפטיבית נכונה. עלות האינטגרציה דומה לרישיון slice יחיד מהמפעיל, אך עלויות התפעול יורדות בזכות QoS מובטח.
השוואת פלטפורמות: Android לעומת iOS
| פלטפורמה | API לבקשת slice | רמת אינטגרציה | מוכנות לייצור |
|---|---|---|---|
| Android 13+ | networkHandle + LinkProperties |
SDK מקורי, קשירת socket | זמין עם תמיכת מפעיל |
| iOS | אין API ציבורי | דרך Carrier App Extension או VPN/APN | רק בסביבות שותפים סגורות |
ארכיטקטורת אפליקציה ל-slicing
Network Slicing אינו מחליף לוגיקה אדפטיבית — הוא משלים אותה. ארכיטקטורה מומלצת:
| שכבה | רכיב | אחריות |
|---|---|---|
| תחבורה | NetworkCapabilities |
בקשת slice, קשירת sockets |
| אדפטיבית | connectivityManager.registerNetworkCallback(networkRequest, object : ConnectivityManager.NetworkCallback( FLAG_INCLUDE_LOCATION_INFO ) { override fun onCapabilitiesChanged( network: Network, capabilities: NetworkCapabilities ) { val downBandwidth = capabilities.linkDownstreamBandwidthKbps // кбит/с val upBandwidth = capabilities.linkUpstreamBandwidthKbps val latency = capabilities.transportInfo // TransportInfo с latency на Android 12+ } }) |
ניטור פרמטרים, זיהוי השפלה |
| לוגיקה עסקית | NetworkRequest |
בחירת איכות/מצב לפי QoS נוכחי |
| גיבוי | NET_CAPABILITY_PRIORITIZE_* |
מעבר ל-LTE/5G כללי בעת אובדן slice |
טעויות נפוצות
- בקשת slice מסוג URLLC למשימות שלא זקוקות לו. slice עם זמן השהיה מובטח מתחת ל-1 אלפית השנייה הוא משאב מפעיל יקר. לוועידות וידאו, eMBB מספיק.
- אי טיפול ב-
SliceNetworkManager. ה-slice עשוי להיות לא זמין (מכשיר מחוץ לכיסוי 5G SA, מפעיל לא תומך). האפליקציה חייבת לעבור ל-bearer סטנדרטי ללא אובדן פונקציונליות.
מה כוללת העבודה
- ניתוח דרישות ובחירת סוג slice (eMBB/URLLC/mMTC).
- פיתוח מודול Android מקורי לבקשת slice (Kotlin Native Module).
- הגדרת ניטור QoS ולוגיקה עסקית אדפטיבית.
- יישום מעבר ל-bearer סטנדרטי.
- תיעוד ודוגמאות קוד.
- תמיכה בהשקה.
אנחנו צוות עם ניסיון של למעלה מ-8 שנים בפיתוח מובייל ו-5 פרויקטים שהושלמו באינטגרציה עם APIs של מפעילים. צרו קשר כדי לדון במקרה השימוש שלכם.
לוח זמנים ועלות
Android Native Module + ניטור QoS + לוגיקה עסקית אדפטיבית: בין 5 ל-9 שבועות עם תשתית מפעיל לבדיקות. ללא גישה לרשת 5G SA לבדיקות, הפיתוח מוגבל ל-mocks; בדיקות מלאות אינן אפשריות. העלות מחושבת באופן אישי לאחר ניתוח דרישות ותשתית המפעיל. קבלו ייעוץ — צרו קשר דרך הטופס באתר שלנו.
אלגוריתם אינטגרציה שלב אחר שלב
- ניתוח דרישות QoS (זמן השהיה, תפוקה, אמינות).
- תיאום עם המפעיל על ערכת APIs ו-slice לבדיקות.
- פיתוח מודול מקורי לבקשת slice (Android).
- יישום ניטור QoS ולוגיקה אדפטיבית.
- אינטגרציה של מנגנון גיבוי.
- בדיקות על רשת 5G SA אמיתית.
- פרסום ל-App Store ו-Google Play עם תיעוד.







