Skip to main content
用語集

HTTP拡張ヘッダーとは?

HTTP拡張ヘッダーとは、ダウンストリーム側のサーバーで使用されるHTTPヘッダーにデータフィールドを追加するプロセスです。これは、IMEIIMSIMSISDN UIDなどのユーザーやデバイスの識別子を追加したり、加入者やモバイルデバイスの詳細を識別したりするためのデータを追加するために、モバイルネットワークで一般的に使用されています。

HTTP拡張ヘッダーは通常、ゲートウェイGPRSサポートノード、またはこの機能を持つゲートウェイやエッジ製品によって他のネットワーク境界で行われます。

追加情報は通常、HTTPヘッダーに追加され、トラフィックステアリング、追加アドオンサービスのトラフィック処理、課金、分析、加入者アプリケーションシステムで処理するために他のシステムによって処理されます。

HTTP拡張ヘッダーの仕組み

HTTPプロトコルでは、HTTPヘッダーにカスタムデータレコードを追加することができます。 その形式は通常、次のとおりです。
X-your-data: xxxxxxxxxxxxxxxxxxxxxxxx

MSISDNをHTTP Headerに注入すると、次のようになります。
X-MSISDN: xxxxxxxxxxxxxxxxxx

HTTPのヘッダーは文字情報なので、後で簡単に加工することができます。

ユースケース例

これをA10 aFleX言語で実装するコードを次節で紹介します。
HTTPヘッダーにMSISDN加入者情報を追加します。

  1. インストリームHTTPヘッダーからユーザー名を解析します。これは、HTTPヘッダーに既に存在するネットワーク加入者のユーザー名です。
  2. プロバイダのRadiusサーバーにユーザー名を問い合わせ、この特定の加入者の関連するMSISDNを取得します。
  3. HTTPヘッダーにX-msisdnと関連するデータを挿入します。

コードサンプル


# aFleX script to provide Header Enrichment for
# the purpose of policy based Traffic Steering.
#
# This comes in 2 parts.
# 1) Script that is bound to a RADIUS VPORT.
# 2) Script that is bound to a HTTP VPORT.
# Virtual Server Port: RADIUS
#
when RULE_INIT {
    set ::DEBUG 0
}
when CLIENT_DATA {
    binary scan [RADIUS::avp 40] H* avp40
    if { ($::DEBUG == 1) } { log "RADIUS == User-Name=[RADIUS::avp 1], User-Password=[RADIUS::avp 2], Framed-IP-Address=[RADIUS::avp 8], Filter-Id=[RADIUS::avp 11], Calling-Station-Id=[RADIUS::avp 31], Acct-Status-Type=$avp40" }
    if { $avp40 == 1 } {
        table set msisdn [RADIUS::avp 8] [RADIUS::avp 31] indef
        table set policy [RADIUS::avp 8] [RADIUS::avp 11] indef
        if { ($::DEBUG == 1) } { log "RADIUS == TABLE SET MSISDN: [table lookup msisdn [RADIUS::avp 8]] - POLICY: [table lookup policy [RADIUS::avp 8]]" }
    } elseif { $avp40 == 2 } {
        table delete msisdn [RADIUS::avp 8]
        table delete policy [RADIUS::avp 8]
        if { ($::DEBUG == 1) } { log "RADIUS == TABLE DELETE MSISDN: [table lookup msisdn [RADIUS::avp 8]] - POLICY: [table lookup policy [RADIUS::avp 8]]" }
    }
}
#
# Virtual Server Port: HTTP
#
when RULE_INIT {
    set ::DEBUG 0
}
when HTTP_REQUEST {
    HTTP::header insert MSISDN [table lookup msisdn [IP::client_addr]]
    HTTP::header insert User-Type [table lookup policy [IP::client_addr]]
    if { ($::DEBUG == 1) }
        { log "HTTP == MSISDN: [table lookup msisdn [IP::client_addr]] - POLICY: [table lookup policy [IP::client_addr]]" }
}

A10のソリューション

A10 Thunderは、ネットワークとセキュリティに関する幅広い機能を提供する製品群です。

< 用語集インデックスページに戻る

資料でわかる!A10のサーバー負荷分散

Web事業者様のサービスインフラにセキュリティ、高速性、可用性をもたらすA10のソリューションをご提案します。

資料ダウンロード Web事業者様のサービスインフラにセキュリティ、高速性、可用性をもたらすA10のソリューションをご提案します。