Bắt đầu sử dụng tính năng Chia sẻ gói dữ liệu di động

Thuật ngữ

  • GTAF: Chức năng ứng dụng lưu lượng truy cập của Google. Một dịch vụ của Google triển khai Data Plan Sharing API và tương tác với DPA thay mặt cho các ứng dụng của Google. Các ứng dụng của Google có thể truy vấn GTAF để biết thông tin về gói dữ liệu của người dùng. Ngoài ra, nếu các ứng dụng Google đăng ký với GTAF, thì GTAF có thể gửi thông tin cập nhật về gói dữ liệu của người dùng.
  • MSISDN: Số thư mục quốc tế của thuê bao trạm di động, là một số nhận dạng duy nhất cho một thuê bao trong mạng di động. Thường được gọi là số điện thoại.
  • Điểm cuối CPID: Một dịch vụ do nhà mạng di động triển khai để tạo ra giá trị nhận dạng gói của nhà mạng (CPID) mà bạn có thể dùng để tra cứu thông tin về gói dữ liệu của người dùng. CPID cho phép ứng dụng truy vấn thông tin chi tiết về gói dữ liệu của người dùng mà không cần truy cập vào MSISDN của người dùng. Chúng tôi mô tả quy trình tạo CPID ở bên dưới.
  • Khoá người dùng: Khoá người dùng là một chuỗi có thể dùng để xác định gói dữ liệu của người dùng. Đây có thể là CPID hoặc MSISDN đối với những ứng dụng có quyền truy cập vào MSISDN.
  • DPA: Data Plan Agent (Tác nhân gói dữ liệu), một dịch vụ do nhà mạng di động triển khai để chia sẻ thông tin gói dữ liệu của người dùng với GTAF. DPA có thể chia sẻ thông tin với GTAF bằng cách kết hợp gửi dữ liệu bằng Google Mobile Data Plan Sharing API và triển khai Data Plan Agent API. DPA cũng có thể hoạt động như điểm cuối CPID (không bắt buộc).
  • UE: Thiết bị người dùng, thiết bị mà người dùng sử dụng.

Ngôn ngữ yêu cầu

Các từ khoá "PHẢI", "KHÔNG ĐƯỢC", "BẮT BUỘC", "SẼ", "SẼ KHÔNG", "NÊN", "KHÔNG NÊN", "NÊN", "CÓ THỂ" và "KHÔNG BẮT BUỘC" trong các hướng dẫn này được diễn giải như mô tả trong RFC 2119.

Chia sẻ gói dữ liệu di động

Ở cấp độ cao, tính năng Chia sẻ gói dữ liệu di động bao gồm 3 phần:

  1. Cơ chế thiết lập và cập nhật giá trị nhận dạng gói dịch vụ của nhà mạng (CPID) có thể dùng làm khoá người dùng. Các ứng dụng có quyền truy cập vào MSISDN có thể sử dụng MSISDN làm khoá người dùng.
  2. Một API chia sẻ gói dữ liệu di động của Google cho phép DPA gửi thông tin về gói dữ liệu của người dùng cho Google. Ví dụ: nếu DPA muốn thông báo cho người dùng về một ưu đãi, thì DPA có thể thông báo cho GTAF, sau đó GTAF sẽ thông báo cho người dùng.
  3. Một Data Plan Agent API do DPA triển khai, cho phép GTAF truy vấn DPA để biết thông tin về gói dữ liệu của người dùng. Ví dụ: nếu muốn hiển thị số dư gói dữ liệu hiện tại cho người dùng, ứng dụng có thể truy vấn GTAF, sau đó GTAF sẽ truy vấn DPA.

Phần còn lại của trang này giới thiệu thuật ngữ về gói dữ liệu và trình bày chi tiết cách thiết lập CPID. Tiếp theo là Google Mobile Data Plan Sharing API và Data Plan Agent API Specification.

Thuật ngữ trong kế hoạch dữ liệu

Giản đồ của planStatus được xác định trong API PHẢI có thể biểu thị các gói dữ liệu mà nhà mạng cung cấp cho người dùng. API này hỗ trợ việc xác định các gói dữ liệu tính phí người dùng ở mức giá khác cho tất cả lưu lượng truy cập đến một nhóm URL cụ thể (ví dụ: tất cả lưu lượng truy cập đến *.acmefake.com đều được tính phí ở mức giá khác). API này cũng hỗ trợ các gói dữ liệu cung cấp nhiều mức giá cho một số loại hành động nhất định trong ứng dụng. Chúng tôi gọi đây là các gói dữ liệu ứng dụng con. Ví dụ về gói dữ liệu ứng dụng con là cung cấp dịch vụ duyệt xem video miễn phí (tức là mức giá bằng 0), trong khi việc xem video trong ứng dụng sẽ trừ dữ liệu khỏi số dư dữ liệu của người đăng ký. Sau đó, ứng dụng video PHẢI có thể tìm hiểu thông tin này khi truy vấn thông tin về gói dữ liệu.

Ở đây, chúng tôi giới thiệu một số thuật ngữ liên quan đến gói dữ liệu. Hình 1 đưa ra ví dụ về các gói dữ liệu đại diện cho những khái niệm mà chúng tôi muốn nắm bắt.

Gói dữ liệu: gói dịch vụ di động cấp cao nhất mà người đăng ký mua. Gói này có thể đơn giản như "10 GB dữ liệu di động trong 30 ngày" hoặc có thể được xác định là một tập hợp các thành phần, còn được gọi là mô-đun. Gói dữ liệu có:

  • Tên kế hoạch dữ liệu, chẳng hạn như "ACME Red".
  • Giá trị nhận dạng gói dữ liệu, được dùng để tham chiếu đến gói, ví dụ: trong quá trình mua.
  • Thời gian hết hạn, khi gói dữ liệu hết hạn.
  • Danh mục gói, cho biết gói là gói trả trước hay gói trả sau.

Mô-đun kế hoạch: một thành phần của gói dữ liệu. Cụ thể, một mô-đun kế hoạch có:

  • Tên mô-đun, chẳng hạn như "Đêm xem video miễn phí".
  • Tốc độ tối đa, băng thông mà mô-đun này cung cấp cho người dùng.
  • Khoảng thời gian linh hoạt, khoảng thời gian mà người dùng có thể được chiết khấu.
  • Danh mục lưu lượng truy cập của mô-đun kế hoạch (PMTC), nội dung mô tả về lưu lượng truy cập dữ liệu mà một mô-đun áp dụng. PMTC có thể chung chung như *tất cả lưu lượng truy cập Internet *hoặc cụ thể như lưu lượng truy cập do một hoặc nhiều ứng dụng, trang web tạo/tiêu thụ, hoặc thậm chí là hành trình của người dùng trong một ứng dụng duy nhất. Ví dụ về loại gói này là "gói nhạc không giới hạn", "gói dữ liệu video 100 MB (VDP)", "gói dữ liệu chơi game không giới hạn" và "gói duyệt xem video không giới hạn". Để tạo điều kiện thuận lợi cho việc xác định PMTC, chúng tôi đã xác định các PMTC sau: GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE1, MUSIC, GAMING, SOCIAL, MESSAGINGPMTC_UNSPECIFIED.

  • Giới hạn về thời gian hoặc lượng dữ liệu: sau khi được kích hoạt, mô-đun kế hoạch sẽ hết hạn khi đạt đến giới hạn về thời gian hoặc lượng dữ liệu (trong trường hợp kế hoạch dựa trên thời gian, ví dụ: 600 phút truy cập Internet trong 7 ngày tiếp theo). Trong Hình 1 bên dưới, người đăng ký có thể mua một mô-đun gói, trong đó có "ACME Blue", cung cấp 1 GB lưu lượng truy cập chung của người dùng và phải được sử dụng trong vòng một tuần kể từ khi kích hoạt trước khi hết hạn.

Gói mẫu Data Plan API

Hình 1. Gói dữ liệu mẫu.

Thiết lập CPID

GTAF sử dụng khoá người dùng để xác định người đăng ký khi giao tiếp với DPA. Những ứng dụng có quyền truy cập vào MSISDN của người dùng có thể sử dụng MSISDN này làm user_key. Mặt khác, những ứng dụng không có quyền truy cập vào MSISDN cần thiết lập một mã nhận dạng gói dịch vụ của nhà mạng (CPID) mà không cần khám phá MSISDN của người dùng. Trong phần tiếp theo, chúng ta sẽ mô tả cơ chế thiết lập CPID.

Luồng cuộc gọi CPID

Hình 2: Luồng cuộc gọi để thiết lập CPID.

  1. Một ứng dụng của Google ở Liên minh Châu Âu sử dụng một API nội bộ của Google để truy xuất URL của điểm cuối CPID từ GTAF. Nhà mạng được xác định bằng địa chỉ IP công khai của máy khách và MCC+MNC của thẻ SIM đang hoạt động. Trong trường hợp MVNO, Google sẽ sử dụng SPNGID1 để xác định MVNO
  2. Ứng dụng khách gửi một yêu cầu HTTP GET đến điểm cuối CPID. Nhà mạng CÓ THỂ hỗ trợ gửi yêu cầu qua HTTPS.
  3. Nhà mạng CÓ THỂ sử dụng chức năng Kiểm tra gói dữ liệu chuyên sâu để xác định yêu cầu và chèn số điện thoại của người dùng vào yêu cầu dưới dạng tiêu đề HTTP.
  4. Điểm cuối CPID nhận yêu cầu, tạo CPID và trả về CPID cho UE với thời gian tồn tại (TTL) cho biết thời gian UE có thể sử dụng CPID này.

Nhà khai thác CŨNG CÓ THỂ sử dụng địa chỉ IP thay vì tên miền trong URL điểm cuối CPID nếu muốn. Địa chỉ IP CÓ THỂ nằm trong không gian địa chỉ riêng tư nhưng phải có thể truy cập được bởi các máy khách của Google trong mạng của nhà khai thác.

Nhà khai thác PHẢI cung cấp cho Google thông tin sau trong quá trình tham gia: 1. CPID_URL mà các ứng dụng sẽ liên hệ để lấy CPID. Bạn bắt buộc phải có một CPID_URL nhưng nhà khai thác có thể cung cấp nhiều URL để tăng khả năng cung cấp. 1. Danh sách tiền tố IP mà nhà mạng sở hữu, Mã di động quốc gia (MCC) và(các) Mã mạng di động (MNC) mà nhà mạng muốn được liên kết với CPID_URL đã cung cấp. Nếu nhà mạng sử dụng SPN hoặc GID1 để phân biệt MVNO trong mạng của họ, thì nhà mạng CẦN cung cấp thông tin này. Google sẽ sử dụng thông tin này để so khớp các máy khách với các điểm cuối CPID tương ứng, như minh hoạ trong Bước 1 của Hình 2.

Định dạng của yêu cầu là: GET CPID_URL Vì lý do cũ, điểm cuối CPID phải có thể hỗ trợ một yêu cầu như sau:

GET CPID_URL?app={app_id}

Điểm cuối CPID có thể bỏ qua tham số URL {app_id} khi tạo CPID. Tuy nhiên, nó PHẢI có khả năng xử lý yêu cầu chứa tham số này.

Yêu cầu đến điểm cuối CPID CÓ THỂ bao gồm tiêu đề Accept-Language. Nếu tiêu đề được đưa vào, thì các chuỗi mà con người có thể đọc được trong nội dung cập nhật mà DPA gửi bằng Mobile Data Plan Sharing API PHẢI sử dụng các chế độ cài đặt được cung cấp trong yêu cầu CPID.

Mỗi lần đưa ra yêu cầu GET CPID_URL, máy khách PHẢI nhận được một CPID mới. Nếu tạo CPID thành công, thì điểm cuối CPID PHẢI trả về phản hồi 200 OK. Nội dung phản hồi PHẢI chứa một phiên bản của CPIDResponse.

{
    "cpid": "<CPID_string>",
    "ttlSeconds": 2592000
}

CPID được trả về PHẢI có hiệu lực trong ttlSeconds giây. GTAF sẽ mã hoá CPID theo RFC2396 trong các lệnh gọi tiếp theo đến DPA.

Nếu xảy ra lỗi, điểm cuối CPID PHẢI trả về một lỗi HTTP có nội dung phản hồi PHẢI chứa một phiên bản của ErrorResponse. Danh sách các giá trị cause có thể xảy ra và mã lỗi HTTP có tại đây.

{
    "errorMessage": "<error message>",
    "cause": "INVALID_NUMBER"
}

Cụ thể, nếu nhận được yêu cầu CPID cho một người dùng không thuộc mạng của nhà mạng (ví dụ: một người dùng thuộc nhà mạng khác nhưng chuyển vùng trên mạng do điểm cuối CPID này cung cấp) hoặc người dùng chưa chọn chia sẻ thông tin gói dữ liệu với Google, thì điểm cuối CPID PHẢI trả về mã trạng thái HTTP 403.

Tạo CPID

Cách ĐƯỢC ĐỀ XUẤT để điểm cuối CPID tạo CPID là:

CPID_string = Base64(AES(MSISDN + TimeStamp + language, secret))

Điểm cuối CPID nối MSISDN, ngôn ngữ do máy khách gửi trong tiêu đề Accept-Language, dấu thời gian có độ phân giải cao và mã hoá dấu thời gian đó thông qua AES bằng khoá secret. Dấu thời gian PHẢI tương ứng với thời gian CPID hết hạn. Đầu ra được mã hoá là Base64. Ngoài ra, khi CPID được dùng trong một URL, bạn PHẢI mã hoá URL để xử lý các ký tự đặc biệt (/+=) được dùng trong Base64. Đặc biệt là khi GTAF gọi DPA hoặc khi DPA gọi Mobile Data Plan Sharing API, CPID PHẢI được mã hoá URL. Một ưu điểm của việc tạo CPID bằng phương pháp này là DPA và điểm cuối CPID không cần phải có cơ sở dữ liệu gồm các CPID và MSISDN hợp lệ.

Tuỳ thuộc vào tình huống của một nhà khai thác cụ thể, việc triển khai điểm cuối CPID có thể không đơn giản. Một thách thức cụ thể thường gặp phải là việc truy cập vào MSISDN tại điểm cuối CPID. Chúng tôi rất vui khi được chia sẻ những bài học kinh nghiệm trong quá trình tham gia của các nhà khai thác. Vui lòng liên hệ với chúng tôi nếu bạn gặp phải bất kỳ khó khăn nào.

Yêu cầu về bảo mật

Nhà khai thác PHẢI thực hiện mọi biện pháp phòng ngừa cần thiết để bảo vệ thông tin riêng tư của người đăng ký. Cụ thể, để giảm thiểu việc lộ số điện thoại của người đăng ký, điểm cuối CPID PHẢI nằm trong phạm vi bảo mật của bạn. Ngoài ra, đối với những trường hợp nhà mạng sử dụng DPI, nhà mạng NÊN mã hoá MSISDN trước khi chèn MSISDN vào yêu cầu HTTP. Nếu điểm cuối CPID không phải là chu vi bảo mật của bạn (ví dụ: khi điểm cuối CPID được triển khai trên đám mây công cộng), thì nhà khai thác KHÔNG NÊN truyền MSISDN qua Internet công cộng ở dạng văn bản thuần tuý. Nhà khai thác có thể thiết lập VPN giữa DPI và điểm cuối CPID (xem Hình 1) hoặc mã hoá MSISDN trước khi chèn vào tiêu đề. Phương pháp thứ hai giả định rằng điểm cuối CPID có thể giải mã tiêu đề được chèn để khôi phục MSISDN trước khi tạo CPID. Ngoài ra, nhà khai thác PHẢI bảo vệ khoá bí mật dùng để tạo CPID và xoay vòng khoá này theo chính sách bảo mật của nhà khai thác.

Yêu cầu về phạm vi cung cấp và năng lực

Nếu không truy xuất được CPID, thì ứng dụng sẽ không thể truy cập vào bất kỳ thông tin nào từ Mobile Data Plan API. Vì lý do này, nhà khai thác PHẢI thực hiện các biện pháp cần thiết để đảm bảo tính khả dụng của điểm cuối CPID. Các biện pháp như vậy bao gồm việc có nhiều phiên bản của điểm cuối CPID và các chức năng DPI, đồng thời có tính dự phòng về vật lý, trang web và mạng cho cả hai chức năng, đồng thời đảm bảo rằng tài nguyên và dung lượng hệ thống là đủ. Ngoài ra, điểm cuối CPID cũng như chức năng DPI chèn tiêu đề phải có đủ dung lượng để xử lý tải của tất cả các ứng dụng Google yêu cầu CPID. Điểm cuối CPID có thể sử dụng các giá trị lớn hơn trong trường ttlSeconds để giảm tần suất tạo CPID. Google khuyên bạn nên sử dụng giá trị TTL là 30 ngày.

Ghi chú


  1. PMTC VIDEO_OFFLINE có nghĩa là gói này chỉ phù hợp với chế độ ngoại tuyến (ví dụ: chất lượng trải nghiệm phát trực tuyến thực sự kém). Nó độc lập với cửa sổ FlexTime.