Terminoloji
- GTAF: Google Traffic Application Function (Google Trafik Uygulaması İşlevi). Veri Planı Paylaşımı API'sini uygulayan ve Google uygulamaları adına DPA'larla etkileşimde bulunan bir Google hizmeti. Google uygulamaları, kullanıcının veri planı bilgileri için GTAF'ı sorgulayabilir. Alternatif olarak, Google uygulamaları GTAF'ye kaydolursa GTAF, kullanıcının veri planıyla ilgili güncellemeler gönderebilir.
- MSISDN: Mobile Station International Subscriber Directory Number (Mobil İstasyon Uluslararası Abone Dizin Numarası), mobil ağdaki bir aboneliği benzersiz şekilde tanımlayan bir numaradır. Daha çok telefon numarası olarak bilinir.
- CPID Uç Noktası: Mobil şebeke operatörleri tarafından uygulanan ve kullanıcının veri planı bilgilerini aramak için kullanılabilecek bir operatör planı tanımlayıcısı (CPID) oluşturan bir hizmettir. CPID, bir uygulamanın kullanıcının MSISDN'sine erişmeden kullanıcının veri planının ayrıntılarını sorgulamasına olanak tanır. CPID oluşturma prosedürünü aşağıda açıklıyoruz.
- Kullanıcı Anahtarı: Kullanıcı anahtarı, kullanıcının veri planını tanımlamak için kullanılabilen bir dizedir. Bu, MSISDN'ye erişimi olan uygulamalar için CPID veya MSISDN olabilir.
- DPA: Mobil şebeke operatörleri tarafından uygulanan ve kullanıcı verisi planı bilgilerini GTAF ile paylaşan bir hizmet olan Veri Planı Aracısı. DPA, Google Mobil Veri Planı Paylaşımı API'si ile veri gönderip Veri Planı Aracısı API'sini uygulayarak GTAF ile bilgi paylaşabilir. İsteğe bağlı olarak, DPA, CPID uç noktası olarak da işlev görebilir.
- UE: Kullanıcı Ekipmanı, kullanıcının kullandığı cihaz.
Dil Gereksinimleri
Bu kılavuzlardaki "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" ve "OPTIONAL" anahtar kelimeleri, RFC 2119'da açıklandığı şekilde yorumlanmalıdır.
Mobil Veri Planı Paylaşımı
Mobil veri planı paylaşımı genel olarak üç bölümden oluşur:
- Kullanıcı anahtarı olarak kullanılabilecek bir operatör planı tanımlayıcısı (CPID) oluşturma ve güncelleme mekanizması. MSISDN'ye erişimi olan uygulamalar, MSISDN'yi kullanıcı anahtarı olarak kullanabilir.
- Google Mobil Veri Planı Paylaşımı API'si, DPA'nın kullanıcının veri planıyla ilgili bilgileri Google'a göndermesine olanak tanır. Örneğin, DPA bir teklif hakkında kullanıcıyı bilgilendirmek istiyorsa GTAF'yi bilgilendirebilir. GTAF de kullanıcıyı bilgilendirir.
- GTAF'nin kullanıcının veri planı hakkında bilgi almak için DPA'ya sorgu göndermesine olanak tanıyan, DPA tarafından uygulanan bir Veri Planı Aracısı API'si. Örneğin, bir uygulama kullanıcının mevcut veri planı bakiyesini göstermek istiyorsa GTAF'ı sorgulayabilir. GTAF da DPA'yı sorgular.
Bu sayfanın geri kalanında, veri planı terminolojisi tanıtılmakta ve CPID'nin nasıl oluşturulacağı ayrıntılı olarak açıklanmaktadır. Google Mobile Data Plan Sharing API ve Data Plan Agent API Spesifikasyonu'nu aşağıda bulabilirsiniz.
Veri Planı Terminolojisi
API'de tanımlanan planStatus şeması, operatörlerin kullanıcılara sunduğu veri planlarını temsil edebilmelidir. API, kullanıcıları belirli bir URL kümesine yönelik tüm trafik için farklı bir ücretle faturalandıran veri planlarının tanımlanmasını destekler (ör. *.acmefake.com'a yönelik tüm trafik farklı bir ücretle faturalandırılır). API, uygulamadaki belirli işlem türleri için farklı ücretler sunan veri planlarını da destekler. Bu planlara alt uygulama veri planları adını veriyoruz. Alt uygulama veri planı örneği olarak, uygulama içinde video izlerken abonenin veri bakiyesinden veri düşülürken ücretsiz (yani sıfır ücretli) video tarama sunulabilir. Video uygulaması, veri planı bilgileri için sorgu oluştururken bu bilgileri öğrenebilmelidir.
Burada, veri planlarıyla ilgili bazı terimleri tanıtıyoruz. Şekil 1'de, ele almak istediğimiz kavramları temsil eden veri planlarına ilişkin örnekler verilmiştir.
Veri Planı: Abonenin satın aldığı üst düzey mobil hizmet paketi. "30 gün boyunca 10 GB mobil veri" kadar basit olabilir veya modül olarak da bilinen bir bileşenler koleksiyonu olarak tanımlanabilir. Veri planı şunları içerir:
- "ACME Red" gibi bir Veri Planı Adı.
- Planı belirtmek için kullanılan Veri Planı Tanımlayıcısı (ör. satın alma işlemleri sırasında)
- Veri planının süresinin dolacağı geçerlilik bitiş zamanı.
- Plan Kategorisi: Planın ön ödemeli mi yoksa faturalı mı olduğu.
Plan Modülü: Veri planının bir bileşenidir. Özellikle bir plan modülünde şunlar bulunur:
- "Ücretsiz Video Geceleri" gibi Modül Adı.
- Maksimum oran: Bu modül tarafından kullanıcıya sunulan bant genişliği.
- Esnek Zaman Aralığı: Kullanıcıya indirim sunulabilecek zaman aralıkları.
Plan Modülü Trafik Kategorisi (PMTC): Bir modülün uygulandığı veri trafiğinin açıklaması. PMTC, *tüm internet trafiği *kadar genel veya bir ya da daha fazla uygulama, web sitesi ve hatta tek bir uygulama içindeki kullanıcı yolculukları tarafından oluşturulan/tüketilen trafik kadar spesifik olabilir. İkinci türden örneklere "sınırsız müzik", "100 MB Video Veri Paketi (VDP)", "sınırsız oyun verisi" ve "sınırsız video tarama" verilebilir. PMTC'lerin tanımını kolaylaştırmak için aşağıdaki PMTC'leri tanımladık:
GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE
1, MUSIC, GAMING, SOCIAL, MESSAGING
vePMTC_UNSPECIFIED.
Veri hacmi veya zaman sınırı: Plan modülü, etkinleştirildikten sonra veri hacmi veya zaman sınırı (zamana dayalı planlarda, örneğin 600 dakika internet erişimi (önümüzdeki 7 gün içinde) aşılırsa. Aşağıdaki Şekil 1'de, bir abone "ACME Blue" kapsamında, etkinleştirildikten sonra bir hafta içinde kullanılması gereken ve süresi dolmadan 1 GB genel kullanıcı trafiği sağlayan bir plan modülü satın alabilir.
Şekil 1. Örnek veri planları.
CPID oluşturma
GTAF, DPA ile iletişim kurarken aboneyi tanımlamak için kullanıcı anahtarını kullanır. Kullanıcının MSISDN'sine erişimi olan uygulamalar, bunu user_key olarak kullanabilir. Öte yandan, MSISDN'ye erişimi olmayan uygulamaların, kullanıcının MSISDN'sini keşfetmeden bir operatör planı tanımlayıcısı (CPID) oluşturması gerekir. Aşağıda, CPID'yi oluşturan mekanizma açıklanmaktadır.
CPID görüşme akışı
Şekil 2: CPID oluşturmak için arama akışı.
- UE'deki bir Google uygulaması, GTAF'den CPID uç noktasının URL'sini almak için Google'a özel bir API kullanır. Operatör, istemcinin herkese açık IP adresi ve etkin SIM kartın MCC+MNC'si kullanılarak tanımlanır. Sanal mobil şebeke operatörleri (MVNO) söz konusu olduğunda Google, MVNO'yu belirlemek için SPN ve GID1'i kullanır.
- İstemci, CPID uç noktasına bir HTTP GET isteği gönderir. Operatör, isteğin HTTPS üzerinden gönderilmesini DESTEKLEYEBİLİR.
- Operatör, isteği tanımlamak ve kullanıcının telefon numarasını HTTP üst bilgisi olarak isteğe eklemek için Derin Paket İnceleme işlevini KULLANABİLİR.
- CPID uç noktası isteği alır, CPID'yi oluşturur ve CPID'yi UE'ye döndürür. Bu işlem sırasında, UE'nin bu CPID'yi ne kadar süreyle kullanabileceğini belirten bir yaşam süresi (TTL) eklenir.
Operatör, tercih etmesi durumunda CPID uç nokta URL'sinde alan adları yerine IP adreslerini de kullanabilir. IP adresleri özel adres alanında OLABİLİR ancak operatörün ağındaki Google istemcileri tarafından erişilebilir olmalıdır.
Operatör, oryantasyon süreci kapsamında Google'a aşağıdaki bilgileri SAĞLAMALIDIR: 1. Uygulamaların CPID'leri almak için iletişime geçeceği CPID_URL. Bir CPID_URL zorunludur ancak operatör, kullanılabilirliği artırmak için birden fazla URL sağlayabilir. 1. Operatörün sahip olduğu IP öneklerinin listesi ve operatörün sağlanan CPID_URL'lerle eşlenmesini istediği Mobil Ülke Kodu (MCC) ve Mobil Ağ Kodları (MNC). Operatör, ağındaki sanal mobil şebeke operatörlerini ayırt etmek için SPN veya GID1 kullanıyorsa bu bilgiyi de SAĞLAMALIDIR. Google, bu bilgileri kullanarak istemcileri Şekil 2'deki 1. adımda gösterildiği gibi ilgili CPID uç noktalarıyla eşleştirir.
İsteğin biçimi:
GET CPID_URL
Eski nedenlerden dolayı CPID uç noktası, aşağıdaki gibi bir isteği destekleyebilmelidir:
GET CPID_URL?app={app_id}
CPID uç noktası, CPID oluştururken {app_id}
URL parametresini yoksayabilir. Ancak parametreyi içeren bir isteği işleyebilmesi GEREKİR.
CPID uç noktasına yapılan istek Accept-Language
üstbilgisini içerebilir. Başlık eklenmişse DPA'nın Mobil Veri Planı Paylaşımı API'si kullanılarak gönderdiği güncellemelerdeki okunabilir dizeler, CPID isteğinde sağlanan ayarları KULLANMALIDIR.
İstemci her GET CPID_URL isteği gönderdiğinde YENİ bir CPID almalıdır. CPID oluşturma işlemi başarılı olursa CPID uç noktası 200 OK yanıtı DÖNDÜRMELİDİR. Yanıt metni, CPIDResponse öğesinin bir örneğini içermelidir.
{
"cpid": "<CPID_string>",
"ttlSeconds": 2592000
}
Döndürülen CPID, ttlSeconds saniye boyunca geçerli OLMALIDIR. GTAF, DPA'ya yapılan sonraki çağrılarda RFC2396 uyarınca CPID'yi kodlayacaktır.
Bir hata oluşursa CPID uç noktası, ErrorResponse örneğini İÇEREN bir yanıt gövdesiyle HTTP hatası döndürmelidir. Olası neden değerlerinin ve HTTP hata kodlarının listesini burada bulabilirsiniz.
{
"errorMessage": "<error message>",
"cause": "INVALID_NUMBER"
}
Özellikle, operatör ağına ait olmayan (ör. başka bir operatöre ait olan ancak bu CPID uç noktası tarafından sunulan ağda dolaşan) veya veri planı bilgilerini Google ile paylaşmayı tercih etmemiş bir kullanıcı için CPID isteği alınırsa CPID uç noktası HTTP durum kodu 403'ü döndürmelidir.
CPID oluşturma
CPID uç noktasının CPID oluşturması için ÖNERİLEN yöntem şudur:
CPID_string = Base64(AES(MSISDN + TimeStamp + language, secret))
CPID uç noktası, MSISDN'yi, istemci tarafından Accept-Language üstbilgisinde gönderilen dili ve yüksek çözünürlüklü bir zaman damgasını birleştirir ve secret
anahtarını kullanarak AES üzerinden şifreler. Zaman damgası, CPID'nin sona erdiği zamana karşılık GELMELİDİR. Şifrelenmiş çıkış Base64 kodludur. Ayrıca, CPID bir URL'de kullanıldığında Base64'te kullanılan özel karakterleri (/+=) işlemek için URL kodlaması YAPILMALIDIR. Özellikle GTAF, DPA'yı çağırdığında veya DPA, Mobil Veri Planı Paylaşımı API'sini çağırdığında CPID, URL olarak kodlanmalıdır. Bu yaklaşımı kullanarak CPID oluşturmanın avantajlarından biri, DPA ve CPID uç noktasının geçerli CPID'ler ve MSISDN'ler içeren bir veritabanına sahip olmasının gerekmemesidir.
Belirli operatörlerin durumuna bağlı olarak CPID uç noktasını uygulamak kolay olmayabilir. Sık karşılaşılan bir zorluk, CPID uç noktasında MSISDN'ye erişmektir. Operatörlerin ilk katılım sürecinde öğrendiklerimizi paylaşmaktan mutluluk duyuyoruz. Zorluk yaşarsanız lütfen bizimle iletişime geçin.
Güvenlik şartları
İşletmeci, abonelerinin özel bilgilerini korumak için gerekli tüm önlemleri ALMALIDIR. Özellikle, abonelerin telefon numaralarının açığa çıkmasını en aza indirmek için CPID uç noktası güvenlik sınırınızın içinde OLMALIDIR. Ayrıca, operatörün DPI kullandığı durumlarda, operatörün MSISDN'yi HTTP isteğine yerleştirmeden önce şifrelemesi GEREKİR. CPID uç noktası güvenlik sınırınız değilse (ör. CPID uç noktası herkese açık bir bulutta dağıtıldığında) operatör, MSISDN'yi herkese açık internet üzerinden açık bir şekilde iletmemelidir. Operatör, DPI ile CPID uç noktası arasında bir VPN oluşturabilir (Şekil 1'e bakın) veya MSISDN'yi üstbilgiye eklemeden önce şifreleyebilir. İkinci yaklaşımda, CPID uç noktasının, CPID oluşturulmadan önce MSISDN'yi kurtarmak için yerleştirilen başlığın şifresini çözebileceği varsayılır. Ayrıca operatör, CPID oluşturmak için kullanılan gizli anahtarı KORUMALI ve bu anahtarı operatörün güvenlik politikalarına göre DÖNDÜRMELİDİR.
Kullanılabilirlik ve Kapasite Koşulları
CPID'yi alamayan istemciler, Mobil Veri Planı API'sindeki hiçbir bilgiye erişemez. Bu nedenle, operatör, CPID uç noktasının kullanılabilirliğini sağlamak için gerekli önlemleri ALMALIDIR. Bu tür önlemler arasında CPID uç noktasının ve DPI işlevlerinin birden fazla örneğinin bulunması, her iki işlev için fiziksel, site ve ağ yedekliliğinin sağlanması ve sistem kaynakları ile kapasitenin yeterli olduğundan emin olunması yer alır. Ayrıca, CPID uç noktası ve başlığı yerleştiren DPI işlevi, CPID isteyen tüm Google istemcilerinin yükünü kaldırabilecek yeterli kapasiteye sahip olmalıdır. CPID uç noktası, CPID oluşturma sıklığını azaltmak için ttlSeconds alanında daha büyük değerler kullanabilir. Google, 30 günlük bir TTL değeri kullanmanızı önerir.
Notlar
-
VIDEO_OFFLINE PMTC, bu planın yalnızca çevrimdışı kullanım için uygun olduğu anlamına gelir (ör. akış kalitesi çok düşüktür). FlexTime penceresinden bağımsızdır. ↩