모바일 데이터 요금제 공유 시작하기

용어

  • GTAF: Google 트래픽 애플리케이션 함수입니다. Data Plan Sharing API를 구현하고 Google 애플리케이션을 대신하여 DPA와 상호작용하는 Google 서비스입니다. Google 애플리케이션은 GTAF에 사용자의 데이터 요금제 정보를 쿼리할 수 있습니다. 또는 Google 애플리케이션이 GTAF에 등록된 경우 GTAF는 사용자의 데이터 요금제에 관한 업데이트를 보낼 수 있습니다.
  • MSISDN: 모바일 역 정기 결제 디렉터리 번호로, 모바일 네트워크의 정기 결제를 고유하게 식별하는 번호입니다. 일반적으로 전화번호라고 합니다.
  • CPID 엔드포인트: 사용자의 이동통신사 요금제 정보를 조회하는 데 사용할 수 있는 이동통신사 요금제 식별자 (CPID)를 생성하는 모바일 네트워크 운영자에서 구현하는 서비스입니다. CPID를 사용하면 애플리케이션이 사용자의 MSISDN에 액세스하지 않고도 사용자의 데이터 요금제 세부정보를 쿼리할 수 있습니다. CPID를 생성하는 절차는 아래와 같습니다.
  • 사용자 키: 사용자 키는 사용자의 데이터 요금제를 식별하는 데 사용할 수 있는 문자열입니다. MSISDN에 액세스할 수 있는 애플리케이션의 CPID 또는 MSISDN일 수 있습니다.
  • DPA: 사용자 요금제 정보를 GTAF와 공유하는 모바일 네트워크 운영자가 구현하는 서비스인 데이터 요금제 에이전트 DPA는 Google 모바일 데이터 요금제 공유 API를 통한 데이터 전송과 Data Plan Agent API 구현의 조합을 사용하여 GTAF와 정보를 공유할 수 있습니다. DPA는 CPID 엔드포인트 역할을 할 수도 있습니다.
  • UE: 사용자가 사용하는 기기, 사용자 장비

요구사항 표현

키워드 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', SHOULD', RECOMMENDED'TMI.

모바일 데이터 요금제 공유

모바일 데이터 요금제 공유는 크게 세 가지 부분으로 구성됩니다.

  1. 사용자 키로 사용할 수 있는 이동통신사 요금제 식별자 (CPID)를 설정하고 업데이트하는 메커니즘 MSISDN, MSISDN에 액세스할 수 있는 애플리케이션은 이를 사용자 키로 사용할 수 있습니다.
  2. DPA가 사용자의 데이터 요금제 정보를 Google에 전송할 수 있는 Google 모바일 데이터 요금제 공유 API 예를 들어 DPA에서 사용자에게 혜택에 관해 알리려는 경우 GTAF에 이를 사용자에게 알릴 수 있습니다.
  3. DPA에서 구현한 데이터 요금제 에이전트 API로 GTAF가 사용자의 데이터 요금제에 관한 정보를 DPA에 쿼리할 수 있습니다. 예를 들어 애플리케이션에서 현재 데이터 요금제 잔액을 사용자에게 표시하고자 하는 경우 GTAF를 쿼리하여 DPA를 쿼리할 수 있습니다.

이 페이지의 나머지 부분에서는 데이터 요금제 용어와 CPID를 설정하는 방법을 자세히 설명합니다. 다음 단계에서는 Google 모바일 데이터 요금제 공유 API 및 데이터 요금제 에이전트 API 사양이 적용됩니다.

데이터 요금제 용어

API에 정의된 planStatus의 스키마는 연산자가 사용자에게 제공하는 데이터 요금제를 나타낼 수 있어야 합니다(MUST). API는 특정 URL 모음에 대한 모든 트래픽에 다른 요율로 사용자에게 비용을 청구하는 데이터 요금제 정의를 지원합니다 (예: *.acmefake.com에 대한 모든 트래픽은 다른 요율로 청구). 또한 API는 앱에서 특정 유형의 작업에 다른 요율을 제공하는 데이터 요금제도 지원합니다. 이를 하위 앱 데이터 요금제라고 합니다. 하위 앱 데이터 요금제의 예로는 무료 (즉, 제로 레이트) 동영상 탐색을 제공하는 동시에 애플리케이션 내 동영상을 시청하는 경우 구독자의 데이터 잔액에서 데이터를 공제할 수 있습니다. 그러면 동영상 앱이 데이터 요금제 정보를 쿼리할 때 이 정보를 학습할 수 있어야 합니다(MUST).

여기서는 데이터 요금제와 관련된 몇 가지 용어를 소개합니다. 그림 1은 캡처하려는 개념을 잘 나타내는 데이터 요금제의 예를 제공합니다.

데이터 요금제: 정기 결제 사용자가 구매하는 최상위 모바일 서비스 패키지입니다. 간단하게 30일 동안 10GB의 모바일 데이터 사용할 수도 있고, 구성요소 모음(모듈이라고도 함)으로 정의할 수도 있습니다. 데이터 요금제에는 다음이 포함됩니다.

  • 데이터 요금제 이름(예: "ACME Red")
  • 데이터 요금제 식별자: 구매를 나타내는 등 요금제를 참조하는 데 사용됩니다.
  • 만료 시간: 데이터 요금제가 만료됩니다.
  • 요금제 카테고리: 요금제가 선불 요금제인지 아니면 후불 요금제인지 여부

계획 모듈: 데이터 요금제의 구성요소입니다. 특히 계획 모듈에는 다음이 포함됩니다.

  • Module Name(예: 'Free Video Nights')입니다.
  • 최대 속도: 이 모듈에서 사용자에게 제공하는 대역폭입니다.
  • 가변 시간 기간: 사용자에게 할인을 제공할 수 있는 기간입니다.
  • 계획 모듈 트래픽 카테고리 (PMTC): 모듈이 적용되는 데이터 트래픽에 대한 설명입니다. PMTC는 *모든 인터넷 트래픽 *또는 하나 이상의 애플리케이션, 웹사이트 또는 단일 애플리케이션 내 사용자 여정에 의해 생성/소비된 트래픽만큼 일반적일 수 있습니다. 후자의 예로는 '무제한 음악', '100MB 동영상 데이터 팩(VDP)', '무제한 게임 데이터', '무제한 동영상 탐색'이 있습니다. PMTC의 정의를 지원하기 위해 PMTC(GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE1, MUSIC, GAMING, SOCIAL, MESSAGINGPMTC_UNSPECIFIED.)를 정의했습니다.

  • 데이터 볼륨 또는 시간 제한: 활성화되면 데이터 볼륨 또는 시간 한도(시간 기반 계획의 경우(예: 향후 7일 동안 600분의 인터넷 액세스 초과)입니다. 아래 그림 1에서 구독자는 'ACME Blue'의 일부로 요금제 모듈을 구매할 수 있습니다. 이 모듈은 만료되기 전 1GB 이내에 사용해야 하는 일반 사용자 트래픽을 1GB 제공합니다.

Data Plan API 샘플 계획

그림 1. 샘플 데이터 요금제.

CPID 설정

GTAF는 DPA와 통신할 때 사용자 키를 사용하여 구독자를 식별합니다. 사용자의 MSISDN에 액세스할 수 있는 애플리케이션은 이 키를 user_key로 사용할 수 있습니다. 반면에 MSISDN에 액세스할 수 없는 애플리케이션은 사용자의 MSISDN을 탐색하지 않고 이동통신사 요금제 식별자(CPID)를 설정해야 합니다. 다음 섹션에서는 CPID를 설정하는 메커니즘을 설명합니다.

CPID 통화 흐름

그림 2: CPID를 설정하기 위한 호출 흐름

  1. UE의 Google 애플리케이션은 Google 내부 API를 사용하여 GTAF에서 CPID 엔드포인트의 URL을 검색합니다. 클라이언트의 공개 IP 주소와 활성 SIM 카드의 MCC+MNC를 사용하여 연산자가 식별됩니다. MVNO의 경우 Google은 SPNGID1을 사용하여 MVNO를 결정합니다.
  2. 클라이언트는 CPID 엔드포인트에 HTTP GET 요청을 보냅니다. 연산자는 HTTPS를 통한 요청 전송을 지원할 수 있습니다(MAY).
  3. 운영자는 Deep Packet Inspection 함수를 사용하여 요청을 식별하고 사용자의 전화번호를 요청에 HTTP 헤더로 삽입할 수 있습니다(MAY).
  4. CPID 엔드포인트가 요청을 수신하고 CPID를 구성한 다음 UE를 통해 이 CPID를 사용할 수 있는 기간을 나타내는 TTL (수명)을 UE에 반환합니다.

원한다면 CPID 엔드포인트 URL에 도메인 이름 대신 IP 주소를 사용할 수도 있습니다(MAY). IP 주소는 비공개 주소 공간에 있을 수 있지만 운영자 네트워크 내부의 Google 클라이언트가 연결할 수 있어야 합니다.

연산자는 온보딩 프로세스의 일부로 Google에 다음 정보를 제공해야 합니다(MUST). 1. 애플리케이션이 CPID를 획득하기 위해 연결할 CPID_URL입니다. CPID_URL 하나가 필수이지만 연산자는 가용성을 높이기 위해 여러 URL을 제공할 수 있습니다. 1. 이동통신사가 소유한 IP 프리픽스 목록과 제공된 CPID_URL에 연산자가 매핑하려는 모바일 국가 코드(MCC) 및 모바일 네트워크 코드(MNC) SPN 또는 GID1을 사용하여 네트워크에서 MVNO를 구분하는 경우 연산자도 이 정보를 제공해야 합니다. Google은 그림 2의 1단계와 같이 이 정보를 사용하여 클라이언트를 해당하는 CPID 엔드포인트에 대응시킵니다.

요청의 형식은 다음과 같습니다. GET CPID_URL 기존의 이유로 CPID 엔드포인트는 다음과 같은 요청을 지원할 수 있어야 합니다.

GET CPID_URL?app={app_id}

CPID 엔드포인트는 CPID를 생성할 때 {app_id} URL 매개변수를 무시할 수 있습니다. 하지만 매개변수가 포함된 요청을 처리할 수 있어야 합니다(MUST).

CPID 엔드포인트에 대한 요청에 Accept-Language 헤더를 포함할 수 있습니다(MAY). DPA에서 모바일 데이터 요금제 공유 API를 사용하여 전송하는 업데이트에 헤더가 포함되면 사람이 읽을 수 있는 문자열이 CPID 요청에 제공된 설정을 사용해야 합니다(MUST).

클라이언트가 GET CPID_URL 요청을 실행할 때마다 새 CPID를 수신해야 합니다(MUST). CPID 생성에 성공하면 CPID 엔드포인트에서 200 OK 응답을 반환해야 합니다(MUST). 응답 본문에는 CPIDResponse의 인스턴스가 포함되어야 합니다(MUST).

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

반환된 CPID는 ttlSeconds 초 동안 유효해야 합니다(MUST). GTAF는 이후의 DPA 호출에서 RFC2396에 따라 CPID를 인코딩합니다.

오류가 발생하면 CPID 엔드포인트는 ErrorResponse의 인스턴스를 포함해야 하는 응답 본문과 함께 HTTP 오류를 반환해야 합니다(MUST). 가능한 원인 값과 HTTP 오류 코드의 목록은 여기에서 확인할 수 있습니다.

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

특히 운영자 네트워크에 속하지 않은 사용자(예: 다른 연산자에 속해 있지만 이 CPID 엔드포인트에서 제공하는 네트워크를 로밍 중인 사용자) 또는 Google과 데이터 요금제 정보를 공유하도록 선택하지 않은 사용자에 대해 CPID 요청이 수신된 경우 CPID 엔드포인트는 HTTP 상태 코드 403을 반환해야 합니다(MUST).

CPID 생성

CPID 엔드포인트가 CPID를 생성할 때 권장하는 방법은 다음과 같습니다.

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

CPID 엔드포인트는 MSISDN, Accept-Language 헤더의 클라이언트가 전송한 언어, 고해상도 타임스탬프를 연결하고 secret 키를 사용하여 AES를 통해 암호화합니다. 타임스탬프는 CPID가 만료되는 시간과 일치해야 합니다(SHOULD). 암호화된 출력은 Base64로 인코딩됩니다. 또한 URL에 CPID가 사용되는 경우 Base64에 사용되는 특수문자(/+=)를 처리하기 위해 URL로 인코딩되어야 합니다(MUST). 특히 GTAF가 DPA를 호출하거나 DPA가 모바일 데이터 요금제 공유 API를 호출하는 경우 CPID는 URL로 인코딩되어야 합니다(MUST). 이 접근 방식을 사용하여 CPID를 생성할 때의 이점은 DPA 및 CPID 엔드포인트에 유효한 CPID 및 MSISDN의 데이터베이스가 없어도 된다는 점입니다.

특정 운영자의 상황에 따라 CPID 엔드포인트를 구현하는 것이 그리 간단하지 않을 수도 있습니다. 자주 발생하는 문제 중 하나는 CPID 엔드포인트에서 MSISDN에 액세스하는 것입니다. Google은 온보딩 교육 운영자에게 배운 내용을 공유합니다. 문제가 발생하면 문의해 주세요.

보안 요구사항

운영자는 구독자의 개인 정보를 보호하기 위해 필요한 모든 예방 조치를 취해야 합니다. 특히 구독자 전화번호의 노출을 최소화하려면 CPID 엔드포인트가 보안 경계 내에 있어야 합니다(SHOULD). 또한 연산자가 DPI를 사용하는 경우 연산자는 MSISDN을 HTTP 요청에 삽입하기 전에 암호화해야 합니다(SHOULD). CPID 엔드포인트가 보안 경계가 아닌 경우(예: CPID 엔드포인트가 퍼블릭 클라우드에 배포되는 경우) 운영자는 공개 인터넷을 통해 MSISDN을 명확하게 전송하면 안 됩니다(SHOULD NOT). 운영자는 DPI와 CPID 엔드포인트 간에 VPN을 설정하거나 (그림 1 참고) MSISDN을 헤더에 삽입하기 전에 암호화할 수 있습니다. 후자의 경우 CPID 엔드포인트가 삽입된 헤더를 복호화하여 CPID를 생성하기 전에 MSISDN을 복구할 수 있다고 가정합니다. 또한 연산자는 CPID를 생성하는 데 사용된 보안 비밀 키를 보호하고 이동통신사 보안 정책에 따라 이 키를 순환합니다.

가용성 및 용량 요구사항

클라이언트가 CPID를 검색할 수 없으면 Mobile Data Plan API에서 어떠한 정보에도 액세스할 수 없습니다. 따라서 연산자는 CPID 엔드포인트의 가용성을 보장하는 데 필요한 조치를 취해야 합니다. 이러한 조치에는 CPID 엔드포인트와 DPI 함수의 인스턴스 여러 개를 포함하고 두 함수의 물리적, 사이트, 네트워크 중복성을 갖추고 시스템 리소스와 용량이 적절한지 확인하는 것이 포함됩니다. 또한 CPID 엔드포인트와 헤더를 삽입하는 DPI 함수는 CPID를 요청하는 모든 Google 클라이언트의 로드를 처리할 수 있어야 합니다. CPID 엔드포인트는 ttlSeconds 필드의 더 큰 값을 사용하여 CPID를 생성하는 빈도를 줄일 수 있습니다. TTL 값은 30일로 설정하는 것이 좋습니다.

메모


  1. VIDEO_OFFLINE PMTC는 이 요금제가 오프라인 전용 (예: 스트리밍 QoE가 매우 나쁨)임을 의미합니다. FlexTime 기간과는 별개입니다.