Contents

Introduction

Problema

Causa raiz

Solução

Introduction

Este documento descreve uma falha de alocação de endereço IP que ocorre devido a um tipo de protocolo de dados de pacote (PDP - Packet Data Protocol) desconhecido ou a erros do tipo de PDP em GTP_CREATE_PDP_RESPONSE. Esse problema é relatado no Cisco Aggregation Services Router (ASR) 5x00 Series que funciona como um Gateway GPRS Support Node (GGSN).

Problema

O equipamento do usuário (UE) solicita um endereço IP estático <x.x.x.x>.

O usuário tem alocação de endereço IP estático do Home Location Register (HLR)/Home Subscriber Server (HSS) para um determinado Access Point Name (APN), portanto o usuário final não deve ser alocado dinamicamente com um endereço IP do GGSN.

Este erro foi observado do assinante do monitor, o que resultou em falha da sessão de estabelecimento:

#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

Quando o erro "Falha ao alocar endereço IPv4 estático <x.x.x.x> mask 0xffffffff poolname <pool_name > para a chamada (errcode=VPN_MSG_STATUS_DUPLICATE_INSTANCE)" ocorreu e a criação da sessão falhou, não foi alocada uma Estação Móvel (MS)/UE com o mesmo endereço IP. Isso foi verificado com o comando show subscribers ip-address <x.x.x.x>.

[local]ASR5x00#show subscribers ip-address

No subscribers match the specified criteria

Para cada PDP criado com êxito para o mesmo usuário, a saída do comando show subscriber ip-address <x.x.x.x> mostra que o IP x.x.x.x foi mapeado com a mesma Identidade Internacional de Assinante Móvel (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

A partir dos vestígios, observou-se que houve um tempo muito curto (~20ms) entre a exclusão e a criação do PDP. É por isso que o gateway rejeitou o PDP com o código de erro VPN_MSG_STATUS_DUPLICATE_INSTANCE.

Configuração inicial do 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

Um pensamento é reduzir o address-hold-timer, mas o conceito de "address-hold-timer" é aplicável apenas para alocação de endereço IP dinâmico e não para alocação estática.

Isso também foi verificado no laboratório:

[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

Observação: quando o "address-hold-timer" está habilitado e um assinante ativo está desconectado, o endereço IP é mantido ou considerado ainda em uso e não retorna ao estado livre até que o address-hold-timer expire. Isso permite que os assinantes que se reconectarem no período de tempo especificado (em segundos) obtenham o mesmo endereço IP do pool IP.

Causa raiz

Quando há um pequeno intervalo de tempo entre a solicitação Delete PDP (DPR) e a solicitação Create PDP (CPR) para o mesmo IMSI, o servidor Radius retorna o mesmo endereço estático.

Quando o DPR é recebido pelo ASR 5x00, ele processa o DPR e aceita uma nova CPR, mas, enquanto isso, ele ainda mantém o endereço IP estático e leva algum tempo (250 ms) para que o vpnmgr libere/libere o endereço. Como a nova CPR vem antes da conclusão dessa liberação, o ASR 5x00 rejeita a nova CPR.

Neste caso, o intervalo de tempo entre a supressão da PDP e a criação da PDP é muito pequeno.

No diagrama de captura de pacotes, você pode ver que o intervalo de tempo (mostrado no bloco vermelho) entre excluir PDP e criar PDP é muito pequeno.

Você deve esperar um atraso de 250 ms entre a exclusão e a criação para que a alocação de endereço IP para o mesmo endereço seja bem-sucedida.

Esse é o requisito do projeto para a arquitetura distribuída. Consulte a solução na seção Solução para evitar qualquer impacto na alocação de endereço estático.

Solução

Veja esta solução alternativa de configuração aplicada no gateway.

config

context <>

ggsn-service <>

newcall duplicate-subscriber-requested-address accept

exit

Esse comando habilita ou desabilita novas conexões de chamada, quando o UE não pode se desconectar normalmente da PDN (Packet Data Network) da empresa antes de tentar se reconectar por meio de outro método de acesso. Quando habilitado, este comando desfaz a sessão antiga para aceitar a nova conexão com a mesma atribuição de endereço IP.

Esse comando também permite que o GGSN aceite uma solicitação para um endereço de assinante estático, mesmo que o endereço já esteja sendo usado por outra sessão. Se esse recurso não estiver habilitado, uma nova solicitação com o mesmo endereço IP para outra sessão será rejeitada.