内容

概要

問題

根本原因

解決方法

概要

このドキュメントでは、GTP_CREATE_PDP_RESPONSEの未知のパケットデータプロトコル(PDP)タイプまたはPDPタイプのエラーが原因で発生するIPアドレス割り当ての失敗について説明します。この問題は、ゲートウェイGPRSサポートノード(GGSN)として機能するCiscoアグリゲーションサービスルータ(ASR)5x00シリーズで報告されています。

問題

ユーザ機器(UE)がスタティックIPアドレス<x.x.x.x>を要求します。

ユーザには、特定のアクセスポイント名(APN)に対するHome Location Register(HLR)/Home Subscriber Server(HSS)からの静的なIPアドレス割り当てがあるため、エンドユーザにはGGSNからの動的なIPアドレスの割り当ては行われません。

このエラーは、セッションの確立に失敗したモニタサブスクライバから観察されました。

#Monitor subscriber Imsi  <> (enable options x, a, y, verbosity 4)

----------------------------------------------------------------------

Incoming Call:

----------------------------------------------------------------------

MSID/IMSI : <>                    Callid : <>

IMEI : <>                         MSISDN : <>

Username : <>                     SessionType : ggsn-pdp-type-ipv4

Status : Active                   Service Name: GGSN_SVC

Src Context : <>

----------------------------------------------------------------------

INBOUND>>>>> 21:50:38:497 Eventid:47000(3)

GTPC Rx PDU, from <IP>:34273 to <IP>:2123 (213)

TEID: 0x00000000, Message type: GTP_CREATE_PDP_CONTEXT_REQ_MSG

(0x10) >>>1st Create PDP Request

Sequence Number:: 0x7B16 (31510)

<<<<OUTBOUND 21:50:38:501 Eventid:47001(3)

GTPC Tx PDU, from <IP>:2123 to <IP>:34273 (103)

TEID:0x179E3645, Message type: GTP_CREATE_PDP_CONTEXT_RES_MSG

(0x11) >>>1st Create PDP Response

Sequence Number:: 0x7B16 (31510)

----------------------------------------------------------------------

(Switching Trace) - New Incoming Call:

----------------------------------------------------------------------

MSID/IMSI : <>                    Callid : <>

IMEI : <>                         MSISDN : <>

Username : <>                     SessionType : ggsn-pdp-type-ipv4

Status : Active                   Service Name: GGSN_SVC

Src Context : <>

----------------------------------------------------------------------

INBOUND>>>>> 21:50:41:346 Eventid:47000(3)

GTPC Rx PDU, from <IP>:34273 to <IP>:2123 (213)

TEID: 0x00000000, Message type: GTP_CREATE_PDP_CONTEXT_REQ_MSG

(0x10) >>>2nd PDP Request

Sequence Number:: 0x7B20 (31520)

***CONTROL*** 21:50:41:360 Eventid:10083

Sessmgr-80 Failed to allocate static IPv4 address <IP> mask 0xffffffff poolname

<Pool_name> for call (errcode=VPN_MSG_STATUS_DUPLICATE_INSTANCE)

<<<<OUTBOUND 21:50:41:363 Eventid:47001(3)

GTPC Tx PDU, from <IP>:2123 to <IP>:34273 (103)

TEID: 0x179E36C5, Message type: GTP_CREATE_PDP_CONTEXT_RES_MSG

(0x11) >>>2nd PDP Response

Sequence Number:: 0x7B20 (31520)

INBOUND>>>>> 21:58:04:155 Eventid:47000(3)

GTPC Rx PDU, from <IP>:34273 to <IP>:2123 (16)

TEID: 0x9D052050, Message type: GTP_DELETE_PDP_CONTEXT_REQ_MSG (0x14)

Sequence Number:: 0x801F (32799)

<<<<OUTBOUND 21:58:04:156 Eventid:47001(3)

GTPC Tx PDU, from <IP>:2123 to <IP>:34273 (14)

TEID: 0x179E36C5, Message type: GTP_DELETE_PDP_CONTEXT_RES_MSG (0x15)

Sequence Number:: 0x801F (32799)

***CONTROL*** 21:58:04:170 Eventid:10285

CALL STATS: msisdn <>, apn <apn_name>, imsi <>, Call-Duration(sec): 443

input pkts: 7                                 output pkts: 19

input bytes: 301                              output bytes: 928

input bytes dropped: 0                        output bytes dropped: 0

input pkts dropped: 0                         output pkts dropped: 0

pk rate from user(bps): 0                     pk rate to user(bps): 53

ave rate from user(bps): 0                    ave rate to user(bps): 26

sust rate from user(bps): 0                   sust rate to user(bps): 27

pk rate from user(pps): 0                     pk rate to user(pps): 0

ave rate from user(pps): 0                    ave rate to user(pps): 0

sust rate from user(pps): 0                   sust rate to user(pps): 0

link online/active percent: 100

ipv4 bad hdr: 0                               ipv4 ttl exceeded: 0

ipv4 fragments sent: 0                        ipv4 could not fragment: 0

ipv4 input acl drop: 0                        ipv4 output acl drop: 0

ipv4 bad length trim: 0

ipv4 input non-mip drop: 0                    ipv4 output non-mip drop: 0

ipv4 input css drop: 0                        ipv4 output css drop: 0

output gre xoff pkts drop: 0                  output gre xoff bytes drop: 0

ipv4 output no-flow drop: 0

ipv4 source violations: 0                     ipv4 early pdu drop: 0

ipv4 proxy-dns redirect: 0                    ipv4 proxy-dns pass-thru: 0

ipv4 proxy-dns drop: 0                        ipv4 proxy-dns redirect tcp connection: 0

ipv6 bad hdr: 0                               ipv6 bad length trim: 0

ip source violation no acct: 0                ip source violation ignored: 0

dlnk pkts exceeded bw: 0                      dlnk pkts violated bw: 0

uplnk pkts exceeded bw: 0                     uplnk pkts violated bw: 0

Disconnect Reason: Remote-disconnect

Last Progress State: PDP-Type-IPv4-Connected

「Failed to allocate static IPv4 address <x.x.x.x> mask 0xffffffff poolname <pool_name> for call (errcode=VPN_MSG_STATUS_DUPLICATE_INSTANCE)」エラーが発生し、セッションの作成が失敗した場合、同じIPアドレスで割り当てられたモバイルステーション(MS)/UEはありませんでした。これは、show subscribers ip-address <x.x.x.x>コマンドで確認されました。

[local]ASR5x00#show subscribers ip-address

No subscribers match the specified criteria

同じユーザに対するPDPの作成が成功するたびに、show subscriber ip-address <x.x.x.x>コマンドの出力には、IP x.x.x.xが同じInternational Mobile Subscriber Identity(IMSI)にマッピングされたことが示されます。

[local]ASR5x00# show subscribers ip-address

Sunday October 12 21:51:36 PDT 2014

+-----Access  (S) - pdsn-simple-ip     (M) - pdsn-mobile-ip  (H) - ha-mobile-ip

|     Type:   (P) - ggsn-pdp-type-ppp  (h) - ha-ipsec        (N) - lns-l2tp

|             (I) - ggsn-pdp-type-ipv4 (A) - asngw-simple-ip (G) - IPSG

|             (V) - ggsn-pdp-type-ipv6 (B) - asngw-mobile-ip (C) - cscf-sip

|             (z) - ggsn-pdp-type-ipv4v6

|             (R) - sgw-gtp-ipv4       (O) - sgw-gtp-ipv6    (Q) - sgw-gtp-ipv4-ipv6

|             (W) - pgw-gtp-ipv4       (Y) - pgw-gtp-ipv6    (Z) - pgw-gtp-ipv4-ipv6

|             (@) - saegw-gtp-ipv4     (#) - saegw-gtp-ipv6  ($) - saegw-gtp-ipv4-ipv6

|             (p) - sgsn-pdp-type-ppp  (s) - sgsn            (4) - sgsn-pdp-type-ip

|             (6) - sgsn-pdp-type-ipv6 (2) - sgsn-pdp-type-ipv4-ipv6

|             (L) - pdif-simple-ip     (K) - pdif-mobile-ip  (o) - femto-ip

|             (F) - standalone-fa      (J) - asngw-non-anchor

|             (e) - ggsn-mbms-ue       (i) - asnpc           (U) - pdg-ipsec-ipv4

|             (E) - ha-mobile-ipv6     (T) - pdg-ssl         (v) - pdg-ipsec-ipv6

|             (f) - hnbgw-hnb          (g) - hnbgw-iu        (x) - s1-mme

|             (a) - phsgw-simple-ip    (b) - phsgw-mobile-ip (y) - asngw-auth-only

|             (j) - phsgw-non-anchor   (c) - phspc           (k) - PCC

|             (X) - HSGW               (n) - ePDG            (t) - henbgw-ue

|             (m) - henbgw-sg

|             (D) - bng-simple-ip      (l) - pgw-pmip        (u) - Unknown

|

|+----Access  (X) - CDMA 1xRTT         (E) - GPRS GERAN      (I) - IP

||    Tech:   (D) - CDMA EV-DO         (U) - WCDMA UTRAN     (W) - Wireless LAN

||            (A) - CDMA EV-DO REVA    (G) - GPRS Other      (M) - WiMax

||            (C) - CDMA Other         (N) - GAN             (O) - Femto IPSec

||            (P) - PDIF               (S) - HSPA            (L) - eHRPD

||            (T) - eUTRAN             (B) - PPPoE           (F) - FEMTO UTRAN

||            (H) - PHS                (.) - Other/Unknown

||

||+---Call    (C) - Connected          (c) - Connecting

|||   State:  (d) - Disconnecting      (u) - Unknown

|||           (r) - CSCF-Registering   (R) - CSCF-Registered

|||           (U) - CSCF-Unregistered

|||

|||+--Access  (A) - Attached           (N) - Not Attached

||||  CSCF    (.) - Not Applicable

||||  Status:

||||

||||+-Link    (A) - Online/Active      (D) - Dormant/Idle

||||| Status:

|||||

|||||+Network (I) - IP                 (M) - Mobile-IP         (L) - L2TP

||||||Type:   (P) - Proxy-Mobile-IP    (i) - IP-in-IP          (G) - GRE

||||||        (V) - IPv6-in-IPv4       (S) - IPSEC             (C) - GTP

||||||        (A) - R4 (IP-GRE)        (T) - IPv6              (u) - Unknown

||||||        (W) - PMIPv6(IPv4)       (Y) - PMIPv6(IPv4+IPv6) (R) - IPv4+IPv6

||||||        (v) - PMIPv6(IPv6)

||||||

||||||

vvvvvv CALLID    MSID            USERNAME               IP                   TIME-IDLE

------ -------- --------------- ---------------------- --------------------  ---------

IECNAI   <>       <>             name@apn_name          x.x.x.x              00h00m57s

トレースから、PDPの削除と作成の間に非常に短い時間(～ 20 ms)が存在することが確認されました。ゲートウェイがPDPをエラーコードVPN_MSG_STATUS_DUPLICATE_INSTANCEで拒否したのはこのためです。

APNの初期設定

apn apn_name

bearer-control-mode mixed

selection-mode subscribed sent-by-ms chosen-by-sgsn

accounting-mode none

gtpp group CGF1 accounting-context <context_name>

gtpp group CGF2 accounting-context <context_name>

gtpp group CGF3 accounting-context <context_name>

gtpp group CGF4 accounting-context <context_name>

idle-timeout-activity ignore-downlink

apn-ambr rate-limit direction downlink burst-size auto-readjust

duration  1 violate-action drop

apn-ambr rate-limit direction uplink burst-size auto-readjust

duration  1 violate-action drop

ims-auth-service <service name>

timeout idle 14400

ip access-group onegas.com in

ip access-group onegas.com out

ip source-violation check drop-limit 0

ip context-name <context name>

ip address pool name <pool name>

active-charging rulebase <Rulebase>

exit

1つはaddress-hold-timerを減らすことですが、「address-hold-timer」の概念はダイナミックIPアドレスの割り当てにのみ適用され、スタティック割り当てには適用されません。

これはラボでも確認されています。

[Gi](config-ctx)#

ip pool SIMPLE-POOL a.b.c.d 255.255.0.0 static address-hold-timer 100

Failure: Hold timer can not be configured for this pool

注:「address-hold-timer」が有効になっていて、アクティブなサブスクライバが切断されると、IPアドレスは保持されるか、まだ使用されていると見なされ、address-hold-timerの期限が切れるまで空き状態には戻りません。これにより、指定された時間（秒単位）内に再接続した加入者は、IPプールから同じIPアドレスを取得できます。

根本原因

同じIMSIに対するDelete PDP Request(DPR)とCreate PDP Request(CPR)の間に多少のタイムギャップがある場合、Radiusサーバは同じスタティックアドレスを返します。

ASR 5x00でDPRを受信すると、DPRを処理して新しいCPRを受け入れますが、その間もスタティックIPアドレスは保持され、vpnmgrがアドレスを解放/フラッシュするのに時間（250ミリ秒）がかかります。このフラッシュが完了する前に新しいCPRが到着するため、ASR 5x00は新しいCPRを拒否します。

この場合、PDPの削除からPDPの作成までの時間ギャップは非常に小さい。

パケットキャプチャ図では、delete PDPとcreate PDPの間の時間ギャップ（赤いブロックで示されています）が非常に小さいことがわかります。

同じアドレスに対するIPアドレス割り当てが成功するためには、削除と作成の間に250ミリ秒の遅延が必要です。

これは、分散アーキテクチャの設計要件です。スタティックアドレス割り当ての影響を避けるために、「ソリューション」セクションの回避策を参照してください。

解決方法

ゲートウェイに適用される次の設定回避策を参照してください。

config

context <>

ggsn-service <>

newcall duplicate-subscriber-requested-address accept

exit

このコマンドは、UEが別のアクセス方式で再接続を試みる前にエンタープライズパケットデータネットワーク(PDN)から正常に切断できない場合に、新しいコール接続を有効または無効にします。このコマンドを有効にすると、同じIPアドレスが割り当てられた新しい接続を受け入れるために、古いセッションが切断されます。

このコマンドを使用すると、アドレスが別のセッションですでに使用されている場合でも、GGSNはスタティックサブスクライバアドレスの要求を受け入れることができます。この機能が有効になっていない場合、別のセッションに対して同じIPアドレスを持つ新しい要求は拒否されます。