\n| Disconnected<\/td>\n | \u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22, \u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n \u0e40\u0e21\u0e17\u0e23\u0e34\u0e01\u0e0b\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 (P) \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e16\u0e34\u0e15\u0e34\u0e08\u0e23\u0e34\u0e07 \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19 <\/p>\n [ \nP = \\begin{bmatrix} \n0.85 & 0.10 & 0.04 & 0.01\\ \n0.20 & 0.70 & 0.08 & 0.02\\ \n0.15 & 0.10 & 0.70 & 0.05\\ \n0.30 & 0.10 & 0.10 & 0.50 \n\\end{bmatrix} \n]<\/p>\n \u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13 steady\u2011state probability (\\pi) \u0e17\u0e33\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e41\u0e01\u0e49\u0e2a\u0e21\u0e01\u0e32\u0e23 (\\pi P = \\pi) \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02 (\\sum \\pi_i = 1) \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49 <\/p>\n [ \n\\pi = [0.58, 0.25, 0.12, 0.05] \n]<\/p>\n \u0e0b\u0e36\u0e48\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32 58\u202f% \u0e02\u0e2d\u0e07\u0e40\u0e27\u0e25\u0e32\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 Connected, 5\u202f% \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 Disconnected <\/p>\n \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a \u201cre\u2011connect threshold\u201d<\/strong> \n\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32 (\\pi_{\\text{Disconnected}}) \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e1a\u0e48\u0e07\u0e0a\u0e35\u0e49 \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32\u0e40\u0e01\u0e34\u0e19 0.07 (7\u202f%) \u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e32\u0e08\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e16\u0e35\u0e48\u0e02\u0e2d\u0e07 heartbeat \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 fallback server \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e2a\u0e39\u0e48 Connected \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e23\u0e47\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14 <\/p>\n\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Buffer \u0e02\u0e2d\u0e07\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d\u0e41\u0e1a\u0e1a Adaptive Bitrate (ABR)<\/h2>\n\u0e01\u0e32\u0e23\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d\u0e40\u0e01\u0e21\u0e2a\u0e14\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 \u201cbuffer occupancy\u201d (B(t)) \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e40\u0e2b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e41\u0e08\u0e01\u0e44\u0e1e\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e2b\u0e21\u0e38\u0e19\u0e23\u0e39\u0e40\u0e25\u0e47\u0e15\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2b\u0e22\u0e38\u0e14\u0e0a\u0e30\u0e07\u0e31\u0e01 <\/p>\n [ \nB(t) = \\int_{0}^{t} \\big(R_{\\text{in}}(\u03c4) – R_{\\text{out}}(\u03c4)\\big) d\u03c4 \n]<\/p>\n \u0e42\u0e14\u0e22\u0e17\u0e35\u0e48 (R_{\\text{in}}) \u0e04\u0e37\u0e2d\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (bitrate \u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c) \u0e41\u0e25\u0e30 (R_{\\text{out}}) \u0e04\u0e37\u0e2d\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e40\u0e25\u0e48\u0e19 (bitrate \u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e39) <\/p>\n \u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01 bitrate \u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21\u0e17\u0e33\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19 Quality of Experience (QoE) <\/p>\n [ \nR_{\\text{opt}} = \\arg\\max_{R} \\; QoE(B) = \\alpha \\cdot \\frac{B}{B_{\\max}} – \\beta \\cdot \\frac{R_{\\text{switch}}}{R_{\\max}} \n]<\/p>\n \u0e42\u0e14\u0e22 (\\alpha) \u0e41\u0e25\u0e30 (\\beta) \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e19\u0e49\u0e33\u0e2b\u0e19\u0e31\u0e01\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e15\u0e32\u0e21\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07 buffer stability \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2b\u0e25\u0e35\u0e01\u0e40\u0e25\u0e35\u0e48\u0e22\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a bitrate \u0e1a\u0e48\u0e2d\u0e22\u0e04\u0e23\u0e31\u0e49\u0e07 <\/p>\n \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22<\/strong> \n– 3G<\/strong>: (R_{\\text{in}}) \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 1.2\u202fMbps, jitter 80\u202fms \u2192 ABR \u0e40\u0e25\u0e37\u0e2d\u0e01 720p (2\u202fMbps) \u0e41\u0e15\u0e48\u0e25\u0e14\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 480p \u0e40\u0e21\u0e37\u0e48\u0e2d (B(t) < 2\u202fs) \n– 4G<\/strong>: (R_{\\text{in}}) \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 4\u202fMbps, jitter 30\u202fms \u2192 ABR \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e04\u0e07\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48 1080p (4.5\u202fMbps) \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 buffer 5\u202fs \u0e40\u0e1b\u0e47\u0e19 safety net \n– 5G<\/strong>: (R_{\\text{in}}) \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 12\u202fMbps, jitter <\u202f10\u202fms \u2192 ABR \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a 4K (15\u202fMbps) \u0e14\u0e49\u0e27\u0e22 buffer \u0e40\u0e1e\u0e35\u0e22\u0e07 3\u202fs <\/p>\n\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14 buffer \u0e41\u0e1a\u0e1a adaptive \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e21 \u201c\u0e2a\u0e25\u0e47\u0e2d\u0e15\u0e41\u0e1a\u0e1a\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d\u201d \u0e2b\u0e23\u0e37\u0e2d \u201c\u0e23\u0e39\u0e40\u0e25\u0e47\u0e15\u0e2a\u0e14\u201d \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e2a\u0e14\u0e07\u0e20\u0e32\u0e1e\u0e04\u0e21\u0e0a\u0e31\u0e14\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e14 pause \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e2d\u0e42\u0e2b\u0e25\u0e14 <\/p>\n \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e16\u0e2d\u0e14\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e1a\u0e1a End\u2011to\u2011End (E2E) \u0e1a\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c<\/h2>\n\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e01\u0e21\u0e2a\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e34\u0e48\u0e07\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e40\u0e14\u0e34\u0e21\u0e1e\u0e31\u0e19, \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c, \u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e48\u0e27\u0e19\u0e1a\u0e38\u0e04\u0e04\u0e25\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 session key \u0e43\u0e0a\u0e49\u0e2a\u0e39\u0e15\u0e23 <\/p>\n [ \nK = H(\\text{UID} \\,|\\, \\text{timestamp}) \n]<\/p>\n \u0e42\u0e14\u0e22\u0e17\u0e35\u0e48 (H) \u0e04\u0e37\u0e2d\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19 hash (\u0e40\u0e0a\u0e48\u0e19 SHA\u2011256) \u0e41\u0e25\u0e30 UID \u0e04\u0e37\u0e2d\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33\u0e01\u0e31\u0e19 \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 HMAC \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a AES\u2011GCM \u0e2b\u0e23\u0e37\u0e2d ChaCha20\u2011Poly1305 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e44\u0e14\u0e49\u0e04\u0e27\u0e32\u0e21\u0e25\u0e31\u0e1a\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 <\/p>\n \u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a overhead<\/strong> <\/p>\n\n\n\n| Algorithm<\/th>\n | Ciphertext overhead<\/th>\n | CPU cycles (per MB)<\/th>\n | Latency impact<\/th>\n<\/tr>\n<\/thead>\n | \n\n| AES\u2011GCM<\/td>\n | +16\u202fbytes (tag)<\/td>\n | 1,200<\/td>\n | +3\u202fms (4G)<\/td>\n<\/tr>\n | \n| ChaCha20\u2011Poly1305<\/td>\n | +16\u202fbytes (tag)<\/td>\n | 900<\/td>\n | +2\u202fms (4G)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n \u0e43\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2a\u0e25\u0e31\u0e1a\u0e08\u0e32\u0e01 PC \u0e44\u0e1b\u0e22\u0e31\u0e07\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e01\u0e21 \u201c\u0e44\u0e2e\u0e42\u0e25\u0e2a\u0e14\u201d \u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01 ChaCha20\u2011Poly1305 \u0e08\u0e30\u0e25\u0e14 latency \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 1\u202fms \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a AES\u2011GCM \u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e32\u0e08\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e43\u0e19\u0e40\u0e01\u0e21\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19 100\u202fms <\/p>\n \u0e42\u0e21\u0e40\u0e14\u0e25\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13 \u201cFairness Index\u201d \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e21\u0e42\u0e15\u0e4a\u0e30\u0e2a\u0e14\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e15\u0e4a\u0e30\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19<\/h2>\n\u0e04\u0e27\u0e32\u0e21\u0e22\u0e38\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e01\u0e21\u0e42\u0e15\u0e4a\u0e30\u0e2a\u0e14\u0e27\u0e31\u0e14\u0e08\u0e32\u0e01\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e21\u0e48\u0e33\u0e40\u0e2a\u0e21\u0e2d\u0e02\u0e2d\u0e07\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e0a\u0e19\u0e30 (win\u2011rate) \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19 \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14 Fairness Index (F) \u0e43\u0e0a\u0e49\u0e2a\u0e39\u0e15\u0e23 <\/p>\n [ \nF = 1 – \\frac{\\sigma^{2}}{\\mu^{2}} \n]<\/p>\n \u0e42\u0e14\u0e22 (\\mu) \u0e04\u0e37\u0e2d\u0e04\u0e48\u0e32\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 win\u2011rate \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14 \u0e41\u0e25\u0e30 (\\sigma^{2}) \u0e04\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e1b\u0e23\u0e1b\u0e23\u0e27\u0e19\u0e02\u0e2d\u0e07 win\u2011rate \u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e04\u0e48\u0e32 F \u0e43\u0e01\u0e25\u0e49 1 \u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e18\u0e23\u0e23\u0e21 <\/p>\n \u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e41\u0e1a\u0e1a real\u2011time<\/strong> \n1. \u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 win\u2011rate \u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e17\u0e38\u0e01 30\u202f\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \n2. \u0e43\u0e0a\u0e49 sliding window \u0e02\u0e19\u0e32\u0e14 5\u202f\u0e19\u0e32\u0e17\u0e35 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e33\u0e19\u0e27\u0e13 (\\mu) \u0e41\u0e25\u0e30 (\\sigma^{2}) \n3. \u0e2a\u0e48\u0e07\u0e04\u0e48\u0e32 F \u0e44\u0e1b\u0e22\u0e31\u0e07\u0e23\u0e30\u0e1a\u0e1a analytics \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e33\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a dealer seed (\u0e04\u0e48\u0e32 seed \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e38\u0e48\u0e21\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c) \u0e2b\u0e32\u0e01 F < 0.95 <\/p>\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07<\/strong> \n– \u0e42\u0e15\u0e4a\u0e30\u0e1a\u0e32\u0e04\u0e32\u0e23\u0e48\u0e32 5\u2011hand: (\\mu = 48.5\\%), (\\sigma^{2}=2.3\\%) \u2192 (F = 1 – \\frac{2.3}{48.5^{2}} = 0.999) (\u0e22\u0e38\u0e15\u0e34\u0e18\u0e23\u0e23\u0e21) \n– \u0e42\u0e15\u0e4a\u0e30\u0e23\u0e39\u0e40\u0e25\u0e47\u0e15 8\u2011hand: (\\mu = 47.0\\%), (\\sigma^{2}=6.5\\%) \u2192 (F = 0.997) <\/p>\n\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2a\u0e25\u0e31\u0e1a\u0e08\u0e32\u0e01 PC \u0e44\u0e1b\u0e22\u0e31\u0e07\u0e41\u0e17\u0e47\u0e1a\u0e40\u0e25\u0e47\u0e15\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e25\u0e48\u0e19 \u201c\u0e1a\u0e32\u0e04\u0e32\u0e23\u0e48\u0e32 3\u2011Way\u201d \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a F \u0e17\u0e38\u0e01 10\u202f\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 \u0e2b\u0e32\u0e01\u0e04\u0e48\u0e32 F \u0e25\u0e14\u0e25\u0e07\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 latency \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1a\u0e32\u0e07\u0e04\u0e19\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32 \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e1b\u0e23\u0e31\u0e1a seed \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 F \u0e43\u0e01\u0e25\u0e49 1 \u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 <\/p>\n \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19 \u201cSession Continuity Score\u201d \u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e40\u0e0a\u0e34\u0e07\u0e2a\u0e16\u0e34\u0e15\u0e34<\/h2>\nSession Continuity Score (SCS) \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e0a\u0e35\u0e49\u0e27\u0e31\u0e14\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21\u0e2b\u0e25\u0e32\u0e22\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1a\u0e48\u0e07\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d \u201c\u0e02\u0e32\u0e14\u0e15\u0e2d\u0e19\u201d \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 <\/p>\n [ \n\\text{SCS}= \\Bigl(1-\\frac{T_{p}}{T_{\\text{total}}}\\Bigr) \\times \\Bigl(1-\\frac{R_{a}}{Max_{R}}\\Bigr) \\times \\Bigl(1-\\frac{L_{d}}{Max_{L}}\\Bigr) \n]<\/p>\n \n- (T_{p}) = average pause time (\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) <\/li>\n
- (T_{\\text{total}}) = \u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e40\u0e25\u0e48\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) <\/li>\n
- (R_{a}) = \u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21 reconnect <\/li>\n
- (Max_{R}) = \u0e04\u0e48\u0e32 upper bound \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14 (\u0e40\u0e0a\u0e48\u0e19 5) <\/li>\n
- (L_{d}) = \u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e0d\u0e2b\u0e32\u0e22 (MB) <\/li>\n
- (Max_{L}) = \u0e04\u0e48\u0e32 upper bound (\u0e40\u0e0a\u0e48\u0e19 2\u202fMB) <\/li>\n<\/ul>\n
\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 threshold<\/strong> \n– \u0e2b\u0e32\u0e01 SCS \u2265 0.85 \u2192 \u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e22\u0e31\u0e07\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14 \u201c\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e31\u0e14\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30\u201d \n– \u0e2b\u0e32\u0e01 0.70 \u2264 SCS < 0.85 \u2192 \u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32\u0e21\u0e35\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2b\u0e22\u0e38\u0e14\u0e0a\u0e30\u0e07\u0e31\u0e01 \u0e04\u0e27\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 buffer \u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e23\u0e31\u0e1a heartbeat interval \n– \u0e2b\u0e32\u0e01 SCS < 0.70 \u2192 \u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e2a\u0e48\u0e07\u0e01\u0e32\u0e23\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e01\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e17\u0e33\u0e01\u0e32\u0e23 reconnect \u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 <\/p>\n\u0e01\u0e23\u0e13\u0e35\u0e28\u0e36\u0e01\u0e29\u0e32<\/strong> \n\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 A \u0e40\u0e25\u0e48\u0e19 \u201c\u0e2a\u0e25\u0e47\u0e2d\u0e15 777\u201d \u0e1a\u0e19 Android 5\u202fG \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e25\u0e32 30\u202f\u0e19\u0e32\u0e17\u0e35 \u0e21\u0e35 pause time \u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 1.2\u202fs, reconnect 1 \u0e04\u0e23\u0e31\u0e49\u0e07, data loss 0.3\u202fMB <\/p>\n[ \n\\text{SCS}= \\Bigl(1-\\frac{1.2}{1800}\\Bigr) \\times \\Bigl(1-\\frac{1}{5}\\Bigr) \\times \\Bigl(1-\\frac{0.3}{2}\\Bigr)=0.9993 \\times 0.8 \\times 0.85 = 0.68 \n]<\/p>\n \u0e04\u0e48\u0e32 0.68 \u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e23\u0e30\u0e1a\u0e1a \u2013 \u0e2d\u0e32\u0e08\u0e40\u0e1e\u0e34\u0e48\u0e21 pre\u2011fetch buffer \u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49 SCS \u0e02\u0e36\u0e49\u0e19\u0e40\u0e2b\u0e19\u0e37\u0e2d 0.85 <\/p>\n \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 Machine Learning \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e13\u0e4c Latency \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c<\/h2>\n\u0e42\u0e21\u0e40\u0e14\u0e25 LSTM (Long Short\u2011Term Memory) \u0e40\u0e2b\u0e21\u0e32\u0e30\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e19\u0e32\u0e22\u0e04\u0e48\u0e32 latency \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e08\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e23\u0e30\u0e22\u0e30\u0e22\u0e32\u0e27\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 time\u2011series \u0e44\u0e14\u0e49 <\/p>\n \u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15<\/strong> \n– RTT (Round\u2011Trip Time) 5\u202f\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14 (\u0e04\u0e48\u0e32\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22\u0e15\u0e48\u0e2d\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35) \n– Packet loss % \n– CPU usage % \u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c \n– Battery level % (\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e2b\u0e22\u0e31\u0e14\u0e1e\u0e25\u0e31\u0e07\u0e2d\u0e32\u0e08\u0e25\u0e14\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22) <\/p>\n\u0e42\u0e21\u0e40\u0e14\u0e25\u0e1d\u0e36\u0e01\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 10\u202f000 \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e01\u0e21 \u201c\u0e44\u0e1e\u0e48\u0e40\u0e2a\u0e37\u0e2d\u0e21\u0e31\u0e07\u0e01\u0e23\u201d \u0e1a\u0e19 Android \u0e41\u0e25\u0e30 iOS \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e48\u0e07 80\/20 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a train\/test \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c MAE (Mean Absolute Error) \u0e2d\u0e22\u0e39\u0e48\u0e17\u0e35\u0e48 7\u202fms \u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c <\/p>\n \u0e01\u0e32\u0e23\u0e19\u0e33\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e44\u0e1b\u0e43\u0e0a\u0e49<\/strong> \n– \u0e2b\u0e32\u0e01 L\u0302 (latency \u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e01\u0e32\u0e23\u0e13\u0e4c) > 120\u202fms \u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21 \u201cpre\u2011fetch buffer size\u201d \u0e40\u0e1b\u0e47\u0e19 4\u202fs \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a \n– \u0e2b\u0e32\u0e01 L\u0302 < 80\u202fms \u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e32\u0e08\u0e25\u0e14 buffer \u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 2\u202fs \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e23\u0e47\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14 <\/p>\n\u0e01\u0e32\u0e23\u0e1c\u0e2a\u0e32\u0e19 LSTM \u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a ABR \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e21 \u201c\u0e23\u0e39\u0e40\u0e25\u0e47\u0e15\u0e2a\u0e14\u201d \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e04\u0e32\u0e14\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a bitrate \u0e44\u0e14\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e25\u0e14\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e1f\u0e40\u0e1f\u0e2d\u0e23\u0e4c\u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21 SCS \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e35\u0e19\u0e31\u0e22\u0e2a\u0e33\u0e04\u0e31\u0e0d <\/p>\n \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a Stress Test \u0e02\u0e49\u0e32\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e14\u0e49\u0e27\u0e22 Monte\u2011Carlo Simulation<\/h2>\n\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e04\u0e27\u0e32\u0e21\u0e17\u0e19\u0e17\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e0b\u0e34\u0e07\u0e04\u0e4c \u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49 Monte\u2011Carlo Simulation 10\u202f000 \u0e23\u0e2d\u0e1a \u0e42\u0e14\u0e22\u0e01\u0e33\u0e2b\u0e19\u0e14 distribution \u0e02\u0e2d\u0e07 latency \u0e41\u0e25\u0e30 jitter \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 <\/p>\n \n- Latency (L \\sim \\mathcal{N}(\\mu=80\\,\\text{ms}, \\sigma=25\\,\\text{ms})) <\/li>\n
- Jitter (J \\sim \\text{Exponential}(\\lambda=0.04)) (\u0e04\u0e48\u0e32\u0e40\u0e09\u0e25\u0e35\u0e48\u0e22 25\u202fms) <\/li>\n<\/ul>\n
\u0e43\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30\u0e23\u0e2d\u0e1a \u0e40\u0e23\u0e32\u0e04\u0e33\u0e19\u0e27\u0e13 effective sync offset (E) \u0e15\u0e32\u0e21\u0e2a\u0e39\u0e15\u0e23\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e41\u0e23\u0e01 \u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32 (E < 40\\,\\text{ms}) (\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08) <\/p>\n \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c: <\/p>\n \n- Probability of sync failure = 4.7\u202f% <\/li>\n
- 95\u202f% Confidence Interval for failure rate = [4.2\u202f%, 5.2\u202f%] <\/li>\n<\/ul>\n
\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e04\u0e48\u0e32 failure \u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32 5\u202f% \u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14 SLA (Service Level Agreement) \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e27\u0e48\u0e32 \u201c\u0e23\u0e30\u0e1a\u0e1a\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e02\u0e49\u0e32\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e44\u0e21\u0e48\u0e40\u0e01\u0e34\u0e19 5\u202f% \u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07 30\u202f\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a\u201d <\/p>\n \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 Monte\u2011Carlo \u0e19\u0e35\u0e49\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e17\u0e35\u0e21\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32 threshold \u0e02\u0e2d\u0e07 E \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1e\u0e34\u0e48\u0e21 redundancy \u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a SLA \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14 <\/p>\n \u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32: \u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a API \u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a Cross\u2011Device Sync<\/h2>\n\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 API \u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e02\u0e49\u0e32\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21 hybrid \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 REST (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19) \u0e41\u0e25\u0e30 WebSocket (\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c) <\/p>\n Endpoint \u0e17\u0e35\u0e48\u0e2a\u0e33\u0e04\u0e31\u0e0d<\/strong> <\/p>\n\n\n\n| Method<\/th>\n | Endpoint<\/th>\n | Purpose<\/th>\n<\/tr>\n<\/thead>\n | \n\n| POST<\/td>\n | \/session\/create<\/code><\/td>\n| \u0e2a\u0e23\u0e49\u0e32\u0e07 session \u0e43\u0e2b\u0e21\u0e48, \u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 session\u2011id \u0e41\u0e25\u0e30 sync\u2011token<\/td>\n<\/tr>\n | \n| POST<\/td>\n | \/session\/sync<\/code><\/td>\n| \u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 sync \u0e08\u0e32\u0e01\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e40\u0e14\u0e34\u0e21, \u0e2a\u0e48\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e01\u0e21<\/td>\n<\/tr>\n | \n| PUT<\/td>\n | \/buffer\/update<\/code><\/td>\n| \u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 buffer occupancy \u0e08\u0e32\u0e01 client \u0e44\u0e1b\u0e22\u0e31\u0e07 server<\/td>\n<\/tr>\n | \n| GET<\/td>\n | \/heartbeat<\/code><\/td>\n| \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e41\u0e1a\u0e1a ping\/pong<\/td>\n<\/tr>\n | \n| POST<\/td>\n | \/device\/switch<\/code><\/td>\n| \u0e41\u0e08\u0e49\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c, \u0e2a\u0e48\u0e07 UID, device\u2011type, timestamp<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n Pseudo\u2011code \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07<\/strong> <\/p>\ndef handle_device_switch(request):\n # \u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 client\n uid = request.json['uid']\n old_token = request.json['sync_token']\n new_device = request.json['device_type']\n ts = request.json['timestamp']\n\n # \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a token \u0e40\u0e14\u0e34\u0e21\n if not validate_token(uid, old_token):\n return {'error': 'invalid token'}, 401\n\n # \u0e2a\u0e23\u0e49\u0e32\u0e07 sync token \u0e43\u0e2b\u0e21\u0e48\n new_token = generate_sync_token(uid, ts, new_device)\n\n # \u0e14\u0e36\u0e07\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e01\u0e21\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e32\u0e01 cache\n game_state = cache.get(f'game_state:{uid}')\n\n # \u0e2a\u0e48\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e1e\u0e23\u0e49\u0e2d\u0e21 token \u0e43\u0e2b\u0e21\u0e48\n return {\n 'sync_token': new_token,\n 'game_state': game_state,\n 'buffer_level': get_buffer_level(uid)\n }, 200\n<\/code><\/pre>\n\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e23\u0e40\u0e01\u0e47\u0e1a sync_token<\/code> \u0e43\u0e19\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a in\u2011memory (Redis) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e23\u0e47\u0e27\u0e41\u0e25\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33 Invalidation \u0e44\u0e14\u0e49\u0e17\u0e31\u0e19\u0e17\u0e35\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e40\u0e01\u0e21 <\/p>\n\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21<\/strong> <\/p>\n\n- \u0e43\u0e0a\u0e49 TLS 1.3 \u0e17\u0e31\u0e49\u0e07 REST \u0e41\u0e25\u0e30 WebSocket \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 <\/li>\n
- \u0e01\u0e33\u0e2b\u0e19\u0e14 heartbeat interval \u0e17\u0e35\u0e48 5\u202fs \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d, 2\u202fs \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a PC \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e08\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19 <\/li>\n
- \u0e1c\u0e2a\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a analytics (\u0e40\u0e0a\u0e48\u0e19 Grafana) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e21\u0e2d\u0e19\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e04\u0e48\u0e32 E, jitter, \u0e41\u0e25\u0e30 SCS \u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c <\/li>\n<\/ul>\n
\u0e01\u0e32\u0e23\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e21 \u201c\u0e44\u0e1e\u0e48\u0e1b\u0e4a\u0e2d\u0e01\u0e40\u0e14\u0e49\u0e07\u201d \u0e2b\u0e23\u0e37\u0e2d \u201c\u0e44\u0e2e\u0e42\u0e25\u0e2a\u0e14\u201d \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2a\u0e39\u0e0d\u0e40\u0e2a\u0e35\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32 <\/p>\n Conclusion<\/h2>\n\u0e01\u0e32\u0e23\u0e19\u0e33\u0e04\u0e13\u0e34\u0e15\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c\u0e41\u0e25\u0e30\u0e42\u0e21\u0e40\u0e14\u0e25\u0e40\u0e0a\u0e34\u0e07\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e21\u0e32\u0e1b\u0e23\u0e30\u0e22\u0e38\u0e01\u0e15\u0e4c\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e02\u0e49\u0e32\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e43\u0e19\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e41\u0e1a\u0e1a\u0e2a\u0e14 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e27\u0e31\u0e14\u0e41\u0e25\u0e30\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21 latency, jitter, packet loss, \u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 \u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13 effective sync offset, \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 Minimum Spanning Tree \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25, \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 Markov Chains \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e01\u0e32\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01 \u201c\u0e02\u0e32\u0e14\u0e15\u0e2d\u0e19\u201d \u0e44\u0e21\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e36\u0e07\u0e1e\u0e2d\u0e43\u0e08\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e40\u0e25\u0e48\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07 \u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e14\u0e35\u0e15\u0e48\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e20\u0e31\u0e01\u0e14\u0e35\u0e02\u0e2d\u0e07\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e41\u0e25\u0e30\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e01\u0e32\u0e23\u0e1d\u0e32\u0e01\u0e16\u0e2d\u0e19\u0e2d\u0e2d\u0e42\u0e15\u0e49 (deposit\u2011withdraw auto) \u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 <\/p>\n \u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e40\u0e1b\u0e47\u0e19\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e21\u0e2d\u0e07\u0e2b\u0e32\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e1c\u0e39\u0e49\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e22\u0e01\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19 \u0e2d\u0e22\u0e48\u0e32\u0e25\u0e37\u0e21\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e40\u0e17\u0e04\u0e19\u0e34\u0e04\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e43\u0e19\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e40\u0e0a\u0e48\u0e19\u0e17\u0e35\u0e48\u0e41\u0e19\u0e30\u0e19\u0e33\u0e1a\u0e19 Ukedchat \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e14\u0e1c\u0e25 KPI \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19 Fairness Index, Session Continuity Score, \u0e41\u0e25\u0e30 ABR performance \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e40\u0e0a\u0e48\u0e19\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e1b\u0e47\u0e19 \u201c\u0e40\u0e27\u0e47\u0e1a\u0e15\u0e23\u0e07\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e2d\u0e40\u0e22\u0e48\u0e19\u0e15\u0e4c\u201d \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e01\u0e0e\u0e2b\u0e21\u0e32\u0e22\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e47\u0e1a\u0e1e\u0e19\u0e31\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c \u0e41\u0e17\u0e49\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e17\u0e38\u0e01\u0e04\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49.<\/p>\n","protected":false},"excerpt":{"rendered":" \u0e01\u0e32\u0e23\u0e40\u0e25\u0e48\u0e19\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c\u0e43\u0e19\u0e22\u0e38\u0e04\u0e14\u0e34\u0e08\u0e34\u0e17\u0e31\u0e25\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e04\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e2d\u0e35\u0e01\u0e15\u0e48\u0e2d\u0e44\u0e1b \u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19\u0e2a\u0e25\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e21\u0e37\u0e2d\u0e16\u0e37\u0e2d \u0e41\u0e17\u0e47\u0e1a\u0e40\u0e25\u0e47\u0e15 \u0e2b\u0e23\u0e37\u0e2d PC \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e2a\u0e16\u0e32\u0e19\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e15\u0e19\u0e40\u0e2d\u0e07 \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19 \u0e19\u0e31\u0e01\u0e1e\u0e19\u0e31\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e19\u0e31\u0e48\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e42\u0e19\u0e49\u0e15\u0e1a\u0e38\u0e4a\u0e01\u0e2d\u0e32\u0e08\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e22\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2a\u0e21\u0e32\u0e23\u0e4c\u0e17\u0e42\u0e1f\u0e19\u0e02\u0e13\u0e30\u0e40\u0e14\u0e34\u0e19\u0e17\u0e32\u0e07\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e22\u0e38\u0e14\u0e40\u0e01\u0e21\u0e2a\u0e14\u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e14\u0e34\u0e21\u0e1e\u0e31\u0e19\u0e2d\u0e22\u0e39\u0e48 \u0e01\u0e32\u0e23\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 \u201cCross\u2011Device Sync\u201d \u2013 \u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e01\u0e21, \u0e2a\u0e16\u0e32\u0e19\u0e30\u0e01\u0e32\u0e23\u0e40\u0e14\u0e34\u0e21\u0e1e\u0e31\u0e19, \u0e41\u0e25\u0e30\u0e2a\u0e15\u0e23\u0e35\u0e21\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d\u0e04\u0e07\u0e17\u0e35\u0e48\u0e41\u0e21\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e01\u0e47\u0e15\u0e32\u0e21 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e23\u0e32\u0e1a\u0e23\u0e37\u0e48\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e32\u0e28\u0e31\u0e22\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e40\u0e0a\u0e34\u0e07\u0e04\u0e13\u0e34\u0e15\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e0a\u0e31\u0e49\u0e19 \u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19 latency, jitter, \u0e41\u0e25\u0e30 clock drift \u0e44\u0e1b\u0e08\u0e19\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e25\u0e01\u0e2d\u0e23\u0e34\u0e17\u0e36\u0e21\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a peer\u2011to\u2011peer \u0e01\u0e32\u0e23\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c Markov Chains \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e42\u0e21\u0e40\u0e14\u0e25 Machine Learning \u0e04\u0e32\u0e14\u0e01\u0e32\u0e23\u0e13\u0e4c latency \u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e25\u0e31\u0e1a\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19 \u201cMathematical Deep Dive\u201d \u0e17\u0e35\u0e48\u0e08\u0e30\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e32\u0e2a\u0e34\u0e42\u0e19\u0e2a\u0e14\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e1c\u0e39\u0e49\u0e40\u0e25\u0e48\u0e19\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e31\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e2d\u0e19 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e0a\u0e21 \u0e40\u0e27\u0e47\u0e1a\u0e1e\u0e19\u0e31\u0e19\u0e2d\u0e2d\u0e19\u0e44\u0e25\u0e19\u0e4c \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e40\u0e0a\u0e34\u0e07\u0e40\u0e17\u0e04\u0e19\u0e34\u0e04\u0e41\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07 \u0e43\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49 \u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e08\u0e32\u0e30\u0e25\u0e36\u0e01\u0e2d\u0e31\u0e25\u0e01\u0e2d\u0e23\u0e34\u0e17\u0e36\u0e21\u0e41\u0e25\u0e30\u0e42\u0e21\u0e40\u0e14\u0e25\u0e04\u0e13\u0e34\u0e15\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e02\u0e49\u0e32\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e01\u0e21\u0e2a\u0e14\u0e22\u0e2d\u0e14\u0e19\u0e34\u0e22\u0e21 \u0e40\u0e0a\u0e48\u0e19 \u0e1a\u0e32\u0e04\u0e32\u0e23\u0e48\u0e32, \u0e41\u0e1a\u0e25\u0e47\u0e04\u0e41\u0e08\u0e47\u0e04, \u0e41\u0e25\u0e30\u0e23\u0e39\u0e40\u0e25\u0e47\u0e15 \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c\u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2a\u0e39\u0e07 \u0e42\u0e21\u0e40\u0e14\u0e25\u0e04\u0e13\u0e34\u0e15\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e40\u0e27\u0e25\u0e32 (Time\u2011Sync Model) \u0e01\u0e32\u0e23\u0e0b\u0e34\u0e07\u0e04\u0e4c\u0e40\u0e27\u0e25\u0e32\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e33\u0e19\u0e36\u0e07\u0e16\u0e36\u0e07\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e2b\u0e25\u0e31\u0e01\u0e2a\u0e32\u0e21\u0e15\u0e31\u0e27\u0e04\u0e37\u0e2d […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-12581","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/posts\/12581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/comments?post=12581"}],"version-history":[{"count":1,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/posts\/12581\/revisions"}],"predecessor-version":[{"id":12582,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/posts\/12581\/revisions\/12582"}],"wp:attachment":[{"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/media?parent=12581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/categories?post=12581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stellar-academy.net\/index.php\/wp-json\/wp\/v2\/tags?post=12581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
| | | | | | | |