Terminologi
- GTAF: Google Traffic Application Function. Layanan Google yang menerapkan Data Plan Sharing API dan berinteraksi dengan DPA atas nama aplikasi Google. Aplikasi Google dapat membuat kueri GTAF untuk mendapatkan informasi paket data pengguna. Atau, jika aplikasi Google mendaftar ke GTAF, GTAF dapat mengirimkan info terbaru tentang paket data pengguna.
- MSISDN: Mobile Station International Subscriber Directory Number, yaitu nomor yang secara unik mengidentifikasi langganan dalam jaringan seluler. Lebih umum dikenal sebagai nomor telepon.
- Endpoint CPID: Layanan yang diterapkan oleh operator jaringan seluler yang membuat ID paket operator (CPID) yang dapat digunakan untuk mencari informasi paket data pengguna. CPID memungkinkan aplikasi membuat kueri untuk mengetahui detail paket data pengguna tanpa mengakses MSISDN pengguna. Kami menjelaskan prosedur untuk membuat CPID di bawah.
- Kunci Pengguna: Kunci pengguna adalah string yang dapat digunakan untuk mengidentifikasi paket data pengguna. Ini dapat berupa CPID atau MSISDN untuk aplikasi yang memiliki akses ke MSISDN.
- DPA: Data Plan Agent, layanan yang diterapkan oleh operator jaringan seluler yang membagikan informasi paket data pengguna ke GTAF. DPA dapat membagikan informasi kepada GTAF dengan menggunakan kombinasi pengiriman data menggunakan Google Mobile Data Plan Sharing API dan menerapkan Data Plan Agent API. DPA juga dapat bertindak sebagai endpoint CPID secara opsional.
- UE: Peralatan Pengguna, perangkat yang digunakan oleh pengguna.
Bahasa Persyaratan
Kata kunci "HARUS", "TIDAK BOLEH", "WAJIB", "HARUS", "TIDAK BOLEH", "SEBAIKNYA", "SEBAIKNYA TIDAK", "DIREKOMENDASIKAN", "DAPAT", dan "OPSIONAL" dalam panduan ini harus ditafsirkan seperti yang dijelaskan dalam RFC 2119.
Berbagi Paket Data Seluler
Secara umum, fitur Berbagi Paket Data Seluler terdiri dari tiga bagian:
- Mekanisme untuk membuat dan memperbarui ID paket operator (CPID) yang dapat digunakan sebagai kunci pengguna. Aplikasi yang memiliki akses ke MSISDN dapat menggunakan MSISDN sebagai kunci pengguna.
- Google Mobile Data Plan Sharing API yang memungkinkan DPA mengirimkan informasi tentang paket data pengguna ke Google. Misalnya, jika DPA ingin memberi tahu pengguna tentang penawaran, DPA dapat memberi tahu GTAF yang pada gilirannya memberi tahu pengguna.
- Data Plan Agent API yang diterapkan oleh DPA yang memungkinkan GTAF mengajukan kueri ke DPA untuk mendapatkan informasi tentang paket data pengguna. Misalnya, jika aplikasi ingin menampilkan saldo paket data saat ini kepada pengguna, aplikasi tersebut dapat mengkueri GTAF yang pada gilirannya mengkueri DPA.
Bagian selanjutnya dari halaman ini memperkenalkan terminologi paket data dan menjelaskan secara mendetail cara membuat CPID. Google Mobile Data Plan Sharing API dan Spesifikasi API Data Plan Agent akan dibahas selanjutnya.
Terminologi Paket Data
Skema planStatus yang ditentukan dalam API HARUS dapat merepresentasikan paket data yang ditawarkan oleh operator kepada pengguna. API ini mendukung penentuan paket data yang mengenakan biaya kepada pengguna dengan tarif yang berbeda untuk semua traffic ke sekumpulan URL tertentu (misalnya, semua traffic ke *.acmefake.com dikenai biaya dengan tarif yang berbeda). API ini juga mendukung paket data yang menawarkan tarif berbeda untuk jenis tindakan tertentu dalam aplikasi. Kami menyebutnya paket data sub-aplikasi. Contoh paket data sub-aplikasi adalah menawarkan penjelajahan video gratis (yaitu, tarif nol), sementara menonton video dalam aplikasi mengurangi data dari saldo data pelanggan. Aplikasi video HARUS dapat mempelajari informasi ini saat mengirimkan kueri untuk informasi paket data.
Di sini, kami memperkenalkan beberapa istilah terkait paket data. Gambar 1 memberikan contoh paket data yang representatif dari konsep yang ingin kami ambil.
Paket Data: paket layanan seluler tingkat teratas yang dibeli pelanggan. Paket dapat berupa "data seluler 10 GB selama 30 hari" atau dapat ditentukan sebagai kumpulan komponen, yang juga dikenal sebagai modul. Paket data memiliki:
- Nama Rencana Data, seperti "ACME Merah".
- ID Paket Data, digunakan untuk merujuk ke paket, misalnya selama pembelian.
- Waktu habis masa berlaku, saat paket data berakhir.
- Kategori Paket, apakah paket tersebut merupakan paket prabayar atau paket pascabayar.
Modul Paket: komponen paket data. Secara khusus, modul rencana memiliki:
- Nama Modul, seperti "Malam Video Gratis".
- Kecepatan Maksimum, bandwidth yang ditawarkan kepada pengguna oleh modul ini.
- Rentang Waktu Fleksibel, rentang waktu saat diskon dapat ditawarkan kepada pengguna.
Kategori Traffic Modul Rencana (PMTC), deskripsi traffic data yang diterapkan modul. PMTC dapat bersifat umum seperti *semua traffic Internet *atau spesifik seperti traffic yang dihasilkan/digunakan oleh satu atau beberapa aplikasi, situs, atau bahkan perjalanan pengguna dalam satu aplikasi. Contoh jenis yang terakhir adalah "musik tanpa batas", "Paket Data Video (VDP) 100 MB", "data game tanpa batas", dan "penjelajahan video tanpa batas". Untuk memudahkan definisi PMTC, kami telah menentukan PMTC berikut:
GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE
1, MUSIC, GAMING, SOCIAL, MESSAGING
danPMTC_UNSPECIFIED.
Volume data atau batas waktu, setelah diaktifkan, modul paket akan berakhir jika volume data atau batas waktu tercapai (dalam kasus paket berbasis waktu, misalnya, 600 menit akses Internet selama 7 hari ke depan) terlampaui. Pada Gambar 1 di bawah, pelanggan dapat membeli modul paket, sebagai bagian dari "ACME Blue", yang menyediakan traffic pengguna umum sebesar 1 GB yang harus digunakan dalam waktu satu minggu setelah aktivasi sebelum berakhir.
Gambar 1. Contoh paket data.
Menetapkan CPID
GTAF menggunakan kunci pengguna untuk mengidentifikasi pelanggan saat berkomunikasi dengan DPA. Aplikasi yang memiliki akses ke MSISDN pengguna dapat menggunakannya sebagai user_key. Di sisi lain, aplikasi yang tidak memiliki akses ke MSISDN, perlu membuat ID paket operator (CPID) tanpa menemukan MSISDN pengguna. Berikut ini, kami menjelaskan mekanisme yang membuat CPID.
Alur Panggilan CPID
Gambar 2: Alur panggilan untuk membuat CPID.
- Aplikasi Google di UE menggunakan API internal Google untuk mengambil URL endpoint CPID dari GTAF. Operator diidentifikasi menggunakan alamat IP publik klien dan MCC+MNC kartu SIM aktif. Dalam kasus MVNO, Google akan menggunakan SPN dan GID1 untuk menentukan MVNO
- Klien mengirimkan permintaan HTTP GET ke endpoint CPID. Operator DAPAT mendukung pengiriman permintaan melalui HTTPS.
- Operator DAPAT menggunakan fungsi Deep Packet Inspection untuk mengidentifikasi permintaan dan menyuntikkan nomor telepon pengguna ke permintaan sebagai header HTTP.
- Endpoint CPID menerima permintaan, membuat CPID, dan menampilkan CPID ke UE dengan time to live (TTL) yang menunjukkan durasi UE dapat menggunakan CPID ini.
Operator JUGA DAPAT menggunakan alamat IP, bukan nama domain di URL endpoint CPID jika lebih disukai. Alamat IP MUNGKIN berada di ruang alamat pribadi, tetapi harus dapat dijangkau oleh klien Google di dalam jaringan operator.
Operator HARUS memberikan informasi berikut kepada Google sebagai bagian dari proses aktivasi: 1. CPID_URL yang akan dihubungi aplikasi untuk mendapatkan CPID. Satu CPID_URL wajib ada, tetapi operator dapat memberikan beberapa URL untuk meningkatkan ketersediaan. 1. Daftar awalan IP yang dimiliki operator serta Kode Negara Seluler (MCC) dan Kode Jaringan Seluler (MNC) yang ingin dipetakan operator ke CPID_URL yang diberikan. Jika operator menggunakan SPN atau GID1 untuk membedakan MVNO di jaringannya, operator tersebut JUGA HARUS memberikan informasi ini. Google akan menggunakan informasi ini untuk mencocokkan klien dengan endpoint CPID yang sesuai, seperti yang ditunjukkan pada Langkah 1 Gambar 2.
Format permintaannya adalah:
GET CPID_URL
Untuk alasan lama, endpoint CPID harus dapat mendukung permintaan seperti berikut:
GET CPID_URL?app={app_id}
Endpoint CPID dapat mengabaikan parameter URL {app_id}
saat membuat
CPID. Namun, API HARUS dapat menangani permintaan yang berisi parameter.
Permintaan ke endpoint CPID DAPAT menyertakan header Accept-Language
. Jika
header disertakan, string yang dapat dibaca manusia dalam update yang dikirim DPA
menggunakan Mobile Data Plan Sharing API HARUS menggunakan setelan yang diberikan dalam
permintaan CPID.
Setiap kali klien mengeluarkan permintaan GET CPID_URL, klien HARUS menerima CPID baru. Jika pembuatan CPID berhasil, endpoint CPID HARUS menampilkan respons 200 OK. Isi respons HARUS berisi instance CPIDResponse.
{
"cpid": "<CPID_string>",
"ttlSeconds": 2592000
}
CPID yang ditampilkan HARUS valid selama ttlSeconds detik. GTAF akan mengenkode CPID per RFC2396 dalam panggilan berikutnya ke DPA.
Jika terjadi error, endpoint CPID HARUS menampilkan error HTTP dengan isi respons yang HARUS berisi instance ErrorResponse. Daftar kemungkinan nilai penyebab dan kode error HTTP tersedia di sini.
{
"errorMessage": "<error message>",
"cause": "INVALID_NUMBER"
}
Khususnya, jika permintaan CPID diterima untuk pengguna yang tidak termasuk dalam jaringan operator (misalnya, pengguna yang termasuk dalam operator lain, tetapi melakukan roaming di jaringan yang dilayani oleh endpoint CPID ini) atau yang belum memilih untuk membagikan informasi paket data kepada Google, endpoint CPID HARUS menampilkan kode status HTTP 403.
Pembuatan CPID
Cara yang DISARANKAN agar endpoint CPID membuat CPID adalah:
CPID_string = Base64(AES(MSISDN + TimeStamp + language, secret))
Endpoint CPID menggabungkan MSISDN, bahasa yang dikirim oleh klien di header
Accept-Language, dan stempel waktu resolusi tinggi, lalu mengenkripsinya melalui AES
menggunakan secret
kunci. Stempel waktu HARUS sesuai dengan waktu berakhirnya CPID. Output terenkripsi dienkode Base64. Selain itu, saat CPID digunakan dalam URL, CPID HARUS dienkode URL untuk menangani karakter khusus (/+=) yang digunakan dalam Base64. Khususnya saat GTAF memanggil DPA atau saat DPA memanggil Mobile Data
Plan Sharing API, CPID HARUS dienkode URL. Keuntungan membuat CPID menggunakan pendekatan ini adalah bahwa endpoint DPA dan CPID tidak perlu memiliki database CPID dan MSISDN yang valid.
Bergantung pada situasi operator tertentu, penerapan endpoint CPID mungkin tidak mudah. Tantangan khusus yang sering dihadapi adalah mendapatkan akses ke MSISDN di endpoint CPID. Dengan senang hati kami membagikan pelajaran yang didapat saat mengaktifkan operator. Hubungi kami jika Anda menghadapi masalah.
Persyaratan Keamanan
Operator HARUS mengambil semua tindakan pencegahan yang diperlukan untuk melindungi informasi pribadi pelanggan mereka. Secara khusus, untuk meminimalkan eksposur nomor telepon pelanggan, endpoint CPID HARUS berada di dalam perimeter keamanan Anda. Selain itu, untuk kasus ketika operator menggunakan DPI, operator HARUS mengenkripsi MSISDN sebelum menyuntikkannya ke permintaan HTTP. Jika endpoint CPID bukan perimeter keamanan Anda (misalnya, saat endpoint CPID di-deploy di cloud publik), operator TIDAK BOLEH mengirimkan MSISDN melalui Internet publik tanpa dienkripsi. Operator dapat membuat VPN antara DPI dan endpoint CPID (lihat Gambar 1) atau mengenkripsi MSISDN sebelum menyisipkannya di header. Pendekatan terakhir mengasumsikan bahwa endpoint CPID dapat mendekripsi header yang disisipkan untuk memulihkan MSISDN sebelum membuat CPID. Selain itu, operator HARUS melindungi kunci rahasia yang digunakan untuk membuat CPID dan merotasi kunci ini sesuai dengan kebijakan keamanan operator.
Persyaratan Ketersediaan dan Kapasitas
Jika klien tidak dapat mengambil CPID, mereka tidak dapat mengakses informasi apa pun dari Mobile Data Plan API. Oleh karena itu, operator HARUS mengambil tindakan yang diperlukan untuk memastikan ketersediaan endpoint CPID. Tindakan tersebut mencakup memiliki beberapa instance fungsi DPI dan endpoint CPID serta memiliki redundansi fisik, situs, dan jaringan untuk kedua fungsi tersebut, serta memastikan kapasitas dan resource sistem memadai. Selain itu, endpoint CPID serta fungsi DPI yang menyisipkan header harus memiliki kapasitas yang memadai untuk menangani beban semua klien Google yang meminta CPID. Endpoint CPID dapat menggunakan nilai yang lebih besar di kolom ttlSeconds untuk mengurangi frekuensi pembuatan CPID. Google merekomendasikan penggunaan nilai TTL 30 hari.
Catatan
-
PMTC VIDEO_OFFLINE berarti paket ini hanya bagus untuk offline (misalnya, QoE streaming yang sangat buruk). Fitur ini tidak bergantung pada jendela FlexTime. ↩