Data Communication Group networksf.ufrgs.br/dcg
-
Upload
lane-lowery -
Category
Documents
-
view
26 -
download
3
description
Transcript of Data Communication Group networksf.ufrgs.br/dcg
Unstructured Supplementary
Service Data (USSD)
Aula 6: Bibliotecas e Simuladores
Porto Alegre, outubro de 2013
Data Communication Grouphttp://networks.inf.ufrgs.br/dcg/
Agenda
① Gateways USSD disponíveis
② Simuladores GSM, SMPP e USSD
③ Simulação com Gateway LeibICT
④ Desenvolvendo uma aplicação
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
2
USSD Gateways disponíveis no mercado
3Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Comparação
4Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Gateway Plataforma Distribuiç
ão
Protocolos
Suportados
Criptografia API
MCTEL Software Livre SMPP, MAP, HTTP, XML NA Sim
Mobicents Software Livre SMPP, MAP,
HTTP, XML RSA/AES NA
Mahindra Hardware Pago SMPP, MAP, HTTP NA Sim
Telestax Hardware/Software Pago NA NA NA
Planet Software Pago SMPP, MAP, HTTP, XML RSA/AES Sim
LeibICT Hardware/Software Pago/Livre SMPP, MAP HTTP, XML RSA/AES Sim
Syniverse Software Pago NA NA Sim
Gateway LeibICT
Exemplo de Infraestrutura Real
Unstructured Supplementary Service Data (USSD)Porto Alegre, setembro de 2013
5
Gateway LeibICT
Funcionalidades: Suporte a UMTS/GSM Alto desempenho
(+500 transações/segundo)
Suporta Interface Sigtran (100Mbit/1Gbit)
Até 64 aplicações USSD (short codes)
O&M Web Interface SNMP v1 and v2 Traps
Até 4 níveis de redundância
Suporta Linux e Solaris
Criptografia com AES-256bit/RSA-4096bit
APIs para comunicação sobre HTTP, XML/TCP/IP
Linguagens Java and C++
6Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Agenda
① Gateways USSD disponíveis
② Simuladores GSM, SMPP e USSD
③ Simulação com Gateway LeibICT
④ Desenvolvendo uma aplicação
7Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Implementação de Aplicações
Na operadora Utilizando a infraestrutura da operadora Depende de acordos firmados entre a
prestadora de serviço e a operadora Desenvolvimento da aplicação depende dos
recursos disponibilizados pela operadora
Problemas: Dificuldades impostas pelas operadoras
Gasta recursos Pode comprometer o funcionamento da rede
8Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Implementação de Aplicações
Na operadora
Na prestadora de serviço
Usando simuladores
9Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Implementação de Aplicações
Na prestadora de serviços Prestadora adquire equipamentos para o
desenvolvimento Não depende da operadora Desenvolvimento é totalmente controlado
pela prestadora
Problemas: Infraestrutura para testes é cara
Prestadora de serviço pode não ter recursos Infraestrutura pode não ser reaproveitada
10Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Simuladores
Prós: Menores custos Desenvolvimento independente de
infraestrutura Aplicação não fica “refém” da operadora
Contras: Desenvolvimento pode ficar
demasiadamente simplificado, ignorando aspectos importantes
Ambiente simulado não apresenta particularidades de redes reais (atrasos, perdas, etc.)
11Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Tipos de Simulação
GSM Simula determinados componentes da rede e/ou
a comunicação entre eles
Protocolos da rede Simula a comunicação utilizando determinado
protocolo da rede GSM
Tráfego de informações Simula tráfego de transmissão e recepção de
dados em um canal GSM Utilizado para análise de tráfego (sobrecarga,
perdas, estatística, etc.
12Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Tipos de Simulação
USSD Simula a operação do Gateway USSD Protocolos de comunicação com a rede
GSM e servidor de aplicações simplificados Utilização de Sockets
13Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
MAPS™ GSM Abis Interface Emulator
www.gl.com/maps-gsmabis.html
Software pago
Simula a interface de comunicação via rádio A-bis Entre BTS e BSC
Possibilita realização de testes entre estes elementos Rastreamento de erros Testes de regressão Testes de conformidade Testes de sobrecarga
Geração de chamadas Geração de grandes volumes de tráfego GSM
14Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
15
MAPS™ GSM Abis Interface Emulator
15
MS
BSC
EIR
SMSCAuC
BSS NSS
BTS
HLR
MSC
VLR
GMSC
MAPS Abis Simulator
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
MAPS™ GSM Abis Interface Emulator
16
BTSM 3GPP TS 08.58 V8.6.0
MM 3GPP TS 04.08 V7.17.0
CC 3GPP TS 04.08 V7.17.0
RR 3GPP TS 04.18 V8.13.0
SMS 3GPP TS 03.40 V7.5.0 & 3GPP TS 04.11 V7.1.0 GSM 03.38 version 7.2.0
Release 1998
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
MM – Mobility ManagementCC – Customer Care – Atendimento ao clienteRR – Radio Resource managementSMS – Short Message Service
MAPS™ GSM Abis Interface Emulator
17Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
MAPS™ GSM A Interface Emulator
www.gl.com/maps-gsma.html
Software pago
Simula a interface de comunicação A Entre BSC e MSC/VLR
Implementa os protocolos BSSMAP e DTAP
Possibilita realização de testes entre MSC e BSC Rastreamento de erros Testes de regressão Testes de conformidade Testes de sobrecarga
Geração de chamadas Geração de grandes volumes de tráfego GSM
18Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
19
MAPS™ GSM A Interface Emulator
19
MS
BSC
EIR
SMSCAuC
BSS NSS
BTS
HLR
MSC
VLR
GMSC
MAPS A Simulator
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
MAPS™ GSM A Interface Emulator
20
Protocolos suportado Padrão/Especificação Utilizada
SCCP Q.713, CCITT (ITU-T) Blue Book
MTP3 ITU-T Q.704
BSSMAP / DTAP 3GPP TS 08.08 V8.9.0
MM 3GPP TS 04.08 V7.17.0
CC 3GPP TS 04.08 V7.17.0
RR 3GPP TS 04.18 V8.13.0
SMS3GPP TS 03.40 V7.5.0 &
3GPP TS 04.11 V7.1.0 GSM 03.38 version 7.2.0 Release 1998
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
SCCP - Signalling Connection Control PartMTP – Message Transfer PartBSSMAP – Base Station Subsistem Mobile Application PartDTAP - Direct Transfer Application PartMM – Mobility ManagementCC – Customer Care – Atendimento ao ClienteRR – Radio Resource managementSMS – Short Message Service
MAPS™ GSM A Interface Emulator
21Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
GSM Traffic Channel Simulator
Conjunto de funções para Matlab e Simulink
Gratuito Simula o tráfego em
um canal sem fio GSM Aplica fading sobre o
canal e calcula o Bit Error Rate (BER) na recepção
Útil para analisar a comunicação entre rádios na rede GSM
22Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Selenium Software SMPPsim
www.seleniumsoftware.com
Gratuito
“Emula” a comunicação entre SMSC através do protocolo SMPP
Validação de aplicações fica mais rápida
Aferição de estatísticas de tráfego
Versões para sistemas Windows e UnixUnstructured Supplementary Service Data (USSD)
Porto Alegre, outubro de 2013 23
Selenium Software SMPPsim
24
Interface de Usuário(estatísticas)
Interface de Geração de tráfego(testes)
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Agenda
① Gateways USSD disponíveis
② Simuladores GSM, SMPP e USSD
③ Simulação com Gateway LeibICT
④ Desenvolvendo uma aplicação
25Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Simulador de Gateway USSD
LeibICT USSD S-GW Simulator
Gratuito
Além de simular o Gateway, abstrai os demais elementos da rede Rede GSM Servidor de Aplicações
Aplicações desenvolvidas através do USSD Developer Kit Totalmente compatíveis com o S-Gateway USSD
da empresa
26Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
LeibICT USSD S-GW Simulator
Integração total com a API de desenvolvimento para o S-Gateway USSD C++ Java
Facilita o desenvolvimento de aplicações USSD
Aplicação pode ser testada no próprio computador
27Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
USSD Developer Kit - Ambientes
28
Desenvolvimento de AplicaçãoSimulador USSD S-Gateway
XML/TCP/IP
Telefone
Célula
BTC/BSC
MSC
HLR
MAP – 09.02LSLHSL
SigtranDesenvolvimento de Aplicação
XML/TCP/IP
LeibICT USSD S-Gateway
Desenvolvimento de Aplicação
XML/TCP/IP
Rede Real
Rede Simulada entre duas máquinas
Rede simulada localmente
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Gateway LeibICT
USSD Developer Kit (Inclui)
Documentação USSD Java JNI API User Guide USSD C++ API User Guide USSD XML/TCP/IP Protocol User Guide
Exemplos USSD C++ Application Sample code USSD Java Application Sample code
Simuladores USSD Gateway Simulator, capable of multiple
sessions in parallel Phone Skined USSD GW Simulator, useful for
presentations
Bibliotecas Windows (WIN32) libraries Linux 32bit libraries Linux 64bit libraries
29Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Interface avançada
30
Configuração do Gateway
Clientes USSD(telefones)
Testes de escalabilidade
Unstructured Supplementary Service Data (USSD)Porto Alegre, outubro de 2013
Interface Simplificada
Phone Skined USSD GW Simulator Útil para
apresentações
Configuração via Windows Registry
Não apresenta as opções da interface avançada
Unstructured Supplementary Service Data (USSD) Porto Alegre, setembro de 2013
31
LeibICT: USSDJNI JavaAPI
API para desenvolvimento de aplicações JAVA Controla a conexão TCP/IP, incluindo
reconexão Implementa criptografia RSA Cria e realiza parsing de XML Controla detalhes do protocolo USSD/MAP
Formada por um grupo de bibliotecas desenvolvidas em C++ carregadas na Máquina Virtual JavaUnstructured Supplementary Service Data (USSD)
Porto Alegre, outubro de 2013 32
LeibICT: USSDJNI JavaAPI
Permite que programadores acessem serviços providos pelo USSD S-Gateway utilizando uma interface baseada em funções e callbacks Java
Mecanismo de comunicação utilizado entre a API e o S-Gateway é transparente para o desenvolvedor Gerenciamento de sockets é realizado pela
biblioteca USSDJNI
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
33
LeibICT: USSDJNI JavaAPI
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
34
Callbacks: Funções chamadas pelo Gateway Devem ser implementadas e tratadas na
aplicação Instanciadas antes de realizar a conexão
entre uma aplicação e o S-Gateway
LeibICT: USSDJNI JavaAPI
Função Descrição Parâmetros
initialize Inicializa a biblioteca JNI -
ussd_requestShortCode
Informa ao Gateway quais são os ShortCodes aceitos pela aplicação Short code
connectRealiza a conexão entre aplicação e Gateway utilizando o endereço e a porta desejados
Endereço IPPortaCriptografia utilizada
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
35
Conectando uma aplicação ao S-Gateway É necessário executar algumas funções antes de
estabelecer a conexão
Após a conexão ocorre a chamada de uma callback cb_connected( )
Conexão Gateway-Aplicação
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
36
USSDJNI Aplicação USSDUSSD S-Gateway
Initialize()
connect()
ussd_requestShortCode()
rsa_sec()
rsa_sec_conf()
bind()
bind_conf()
cb_connected()
LeibICT: USSDJNI JavaAPI
Callback Descrição Parâmetros
cb_ussd_service
Inicializada a comunicação de um usuário com a aplicação
dialogIDshortCodephoneNumber
cb_ussd_response
Resposta de um usuário recebida pela aplicaçãodialogIDString (resposta)
cb_ussd_end Usuário encerrou seu diálogo com a aplicação DialogID
cb_ussd_pingGateway testa se aplicação ainda está ativa – Aplicação deve responder com um pong() -
cb_connectedConexão entre Gateway e aplicação foi estabelecida
-
cb_disconnected
Conexão entre Gateway e aplicação foi encerrada -Unstructured Supplementary Service Data (USSD)
Porto Alegre, outubro de 2013 37
Mensagens recebidas pela aplicação (Callbacks): Reações da aplicação às chamadas Callbacks
podem ser implementadas utilizando as funções da API
LeibICT: USSDJNI JavaAPI
Função Descrição Parâmetrosussd_request
Envia mensagem para um usuário através do Gateway
dialogIDprompt (mensagem)
ussd_endEnvia mensagem para um usuário finalizando o diálogo
dialogIDinfo (mensagem)
pongResponde a chamada ping do Gateway. Caso não responda, a aplicação pode ser desconectado do Gateway
-
ussd_beginEnvia uma mensagem para usuário iniciando um diálogo
dialogIDhlrGT (HLR Global Title)phoneNumberText
ussd_notifyEnvia uma mensagem para um usuário sem iniciar um diálogo (apenas informativo)
dialogIDhlrGT (HLR Global Title)phoneNumbertext
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
38
Funções executadas pela aplicação:
USSD Iniciado pelo Usuário
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
39
USSD S-Gateway Aplicação USSDUsuário Mobile
ussd_request
ussd_request
process_ussd_request
ussd_end
cb_ussd_service
process_ussd_request
ussd_responsecb_ussd_response
USSD Iniciado pela Aplicação
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
40
USSD S-Gateway Aplicação USSDMobile User
ussd_begin
ussd_request
ussd_response
ussd_end
cb_ussd_response
process_ussd_request
Bugs Conhecidos
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
41
O simulador não suporta operações Push A API C++ não inclui chamadas begin ou
notify (somente em Java) As chamadas request shortcode não são
interpretadas pelo simulador O simulador não suporta várias aplicações
conectadas simultaneamente A API Java não aceita os parâmetros para
ativar criptografia A API C++ aceita criptografia de 512, 1024 e
2048 bits apenas
Agenda
① Gateways USSD disponíveis
② Simuladores GSM, SMPP e USSD
③ Simulação com Gateway LeibICT
④ Desenvolvendo uma aplicação
Unstructured Supplementary Service Data (USSD)Porto Alegre, setembro de 2013
42
Desenvolvendo uma Aplicação C++
Criando um Projeto C++ no Visual Studio 2010 File → New Project → Visual C++ → Win32
Console Application
43
Detalhes do projeto no Visual Studio Project → Properties Configuration Properties → General Character Set: Use Multi-Byte Character Set
Desenvolvendo uma Aplicação C++
Copiar os seguintes arquivos para dentro da pasta do projeto (mesma pasta onde estão os códigos-fonte): ussd.cpp (implementação do objeto base
CUSSD) ussd.h (headers com as definições do objeto
base) ussd.dll (biblioteca que implementa o
protocolo XML de comunicação com o gateway)
Arquivos disponíveis dentro da pasta do simulador LeibICT-UDK-v1.1f\samples\c++\ussdtest
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
44
Desenvolvendo uma Aplicação C++
No item “Source Files” do projeto no Visual Studio clicar com o botão direito: Add → Existing Item Adicionar o arquivo ussd.cpp ao projeto
No item “Header Files” do projeto no Visual Studio clicar com o botão direito: Add → Existing Item Adicionar o arquivo ussd.h ao projeto
Adicionar o header ao arquivo principal do projeto #include "ussd.h"
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
45
Estrutura mínima de um programa USSD
Callbacks – Todas as callbacks precisam ser configuradas mesmo que algumas não sejam necessárias para a aplicação
//CB when application is connected to gateway
void connected(){}
//CB when application gets disconnected from gateway
void disconnected(){}
//CB to handle pings from gateway
void ping(){}
//CB to sinalize when the user starts a call
void ussdService(int dialogId, char* shortCode, char* phoneNumber){}
//CB to handle user responses
void ussdResponse(int dialogId, char* str){}
//CB to sinalize when the user ends the call
void ussdEnd(int dialogId){}
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
46
Estrutura mínima de um programa USSD
Callbacks – Depois as callbacks devem ser associadas a uma estrutura do tipo USSDCallbacks (no início do programa principal)
//CB struct
USSDCallbacks callbacks;
callbacks.connected = connected;
callbacks.disconnected = disconnected;
callbacks.ping = ping;
callbacks.ussdService = ussdService;
callbacks.ussdResponse = ussdResponse;
callbacks.ussdEnd = ussdEnd;
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
47
Estrutura mínima de um programa USSD
Inicializando a API – Uma instância de CUSSD deve ser criada globalmente para ser usada por todas as funções e callbacks
//Create global reference to API
CUSSD* ussd;
//CUSSD Instance
ussd = new CUSSD();
//Initializes API
ussd->initialize(&callbacks);
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
48
Estrutura mínima de um programa USSD
Conectando ao Gateway – A API conecta ao gateway, com ou sem uso de criptografia, através de TPC/IP
//Connects to gateway with no cryptography
ussd->connectgw("localhost", 5454, 0, 0);
//Or connects to gateway with 512 bit key
ussd->connectgw("localhost", 5454, 1, 1);
//Or connects with 1024 reception and 2048 transmission keys
ussd->connectgw("localhost", 5454, 2, 3);
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
49
Desenvolvendo uma Aplicação Java
Criando projeto Java no Netbeans File → New Project → Java → Java Application
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
50
Desenvolvendo uma Aplicação Java
Copiar os seguintes arquivos para dentro da pasta do projeto (mesma pasta onde estão os códigos-fonte): src\com\leibict\ussd\USSD.java (implementação do
objeto base CUSSD)
Arquivo disponível dentro da pasta do simulador LeibICT-UDK-v1.1f\samples\java\USSDTestMT
Copiar a DLL da pasta lib do simulador dentro da pasta do Windows: Descompactar de ussdjni.b1012.win32.zip ou
ussdjni.b1012.win64.zip Copiar ussdjni.dll para c:\windows\system32
A estrutura mínima de uma aplicação Java é bastante similar a do C++
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
51
Exercício 1: Aplicação Bancária
Desenvolver uma aplicação para que o cliente de um banco consiga realizar algumas operações básicas em sua conta
As principais funcionalidades são: Autenticação: Número da conta e senha Menu de Opções:
Consulta Saldo Pagar Conta (Informando valor) Realizar Transferência (Informando conta e
valor) Sair
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
52
Exercício 1: Aplicação Bancária
Unstructured Supplementary Service Data (USSD) Porto Alegre, setembro de 2013
IDLEAUTH
IDAUTH PWD
BALANCE PAYMENT
TRANSF ID
TRANSF
MAIN
Service: *123#Request: What is your UID?
What is your UID?
Response: 222Request: Now your passwd
Not foundResponse: 999 (invalid)End: Not found
Now your passwordResponse: 000 (invalid)
End: Wrong Password
Wrong Password
Reponse: 444Request: Main Menu
Menu:1. Balance2. Payment3. Transfer4. ExitResponse: 1
Request: Balance Menu
Balance: $10Menu:1.Go back2.Exit
Reponse: 2End: bye!
Bye!
Reponse: 1Request: Main Menu
Inform Amount:
Reponse: 2Request: Inform amount
Paid/No balanceMenu:1. Balance2. Payment3. Transfer4. Exit
Reponse: 10Request: Paid/No balance & Main Menu
Destination account:
Reponse: 3Request: Destination account
Amount:
Reponse: 333Request: Amount
Reponse: 999Request: Not Found & Main Menu
Not found:Menu:1. Balance2. Payment3. Transfer4. Exit
Reponse: 10Request: Transfered/No balance & Main Menu
Transfered/No BalanceMenu:1. Balance2. Payment3. Transfer4. Exit
Reponse: 4End: bye!
Bye!
Exercício 2: Teste de Desempenho
Desenvolver um serviço USSD para calcular o enésimo número primo Por exemplo, o usuário digita o código *100*12# O serviço retorna ussd_end com mensagem 37 Caso o usuário digite apenas *100# o serviço
pergunta qual número primo ele deseja descobrir
Objetivo do exercício Fazer um exercício com parsing do string do
serviço USSD Usar a parte de teste de desempenho do
simulador para verificar a carga da aplicação
Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
54
Obrigado!Perguntas?
Cristiano Bonato [email protected]
Unstructured SupplementaryService Data (USSD)
Porto Alegre, outubro de 2013
http://networks.inf.ufrgs.br/dcg