Unstructured Supplementary Service Data USSD Aula 6 Bibliotecas
Unstructured Supplementary Service Data (USSD) Aula 6: Bibliotecas e Simuladores Porto Alegre, outubro de 2013 Data Communication Group http: //networks. inf. ufrgs. br/dcg/
Agenda ① Gateways USSD disponíveis ② Simuladores GSM, SMPP e USSD ③ Simulação com Gateway Leib. ICT ④ Desenvolvendo uma aplicação Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 2
USSD Gateways disponíveis no mercado Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 3
Comparação Distribuiçã Protocolos Criptografia o Suportados API Livre SMPP, MAP, HTTP, XML NA Sim Software Livre SMPP, MAP, HTTP, XML RSA/AES NA Hardware Pago SMPP, MAP, HTTP NA Sim Pago NA NA NA Pago SMPP, MAP, HTTP, XML RSA/AES Sim SMPP, MAP HTTP, XML RSA/AES Sim NA NA Sim Gateway Plataforma MCTEL Software Mobicents Mahindra Telestax Hardware/Software Planet Leib. ICT Syniverse Software Hardware/Software Pago/Livre Software Pago Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 4
Gateway Leib. ICT § Exemplo de Infraestrutura Real Unstructured Supplementary Service Data (USSD) Porto Alegre, setembro de 2013 5
Gateway Leib. ICT § Funcionalidades: § Até 4 níveis de § Suporte a UMTS/GSM § Alto desempenho (+500 § § § transações/segundo) § Suporta Interface Sigtran (100 Mbit/1 Gbit) § Até 64 aplicações USSD (short codes) § O&M Web Interface SNMP v 1 and v 2 Traps redundância Suporta Linux e Solaris Criptografia com AES 256 bit/RSA-4096 bit APIs para comunicação sobre HTTP, XML/TCP/IP Linguagens Java and C++ Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 6
Agenda ① Gateways USSD disponíveis ② Simuladores GSM, SMPP e USSD ③ Simulação com Gateway Leib. ICT ④ Desenvolvendo uma aplicação Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 7
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 8
Implementação de Aplicações § Na operadora § Na prestadora de serviço § Usando simuladores Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 9
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 10
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. ) Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 11
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. Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 12
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 13
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 14
MAPS™ GSM Abis Interface Emulator MS BSS NSS MAPS Abis Simulator Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 15
MAPS™ GSM Abis Interface Emulator BTSM 3 GPP TS 08. 58 V 8. 6. 0 MM 3 GPP TS 04. 08 V 7. 17. 0 CC 3 GPP TS 04. 08 V 7. 17. 0 RR 3 GPP TS 04. 18 V 8. 13. 0 SMS 3 GPP TS 03. 40 V 7. 5. 0 & 3 GPP TS 04. 11 V 7. 1. 0 GSM 03. 38 version 7. 2. 0 Release 1998 MM – Mobility Management CC – Customer Care – Atendimento ao cliente RR – Radio Resource management SMS – Short Message Service Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 16
MAPS™ GSM Abis Interface Emulator Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 17
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 18
MAPS™ GSM A Interface Emulator MS NSS BSS MAPS A Simulator Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 19
MAPS™ GSM A Interface Emulator Protocolos suportado Padrão/Especificação Utilizada SCCP Q. 713, CCITT (ITU-T) Blue Book MTP 3 ITU-T Q. 704 BSSMAP / DTAP 3 GPP TS 08. 08 V 8. 9. 0 MM 3 GPP TS 04. 08 V 7. 17. 0 CC 3 GPP TS 04. 08 V 7. 17. 0 3 GPP TS 04. 18 V 8. 13. 0 RR SMS 3 GPP TS 03. 40 V 7. 5. 0 & 3 GPP TS 04. 11 V 7. 1. 0 GSM 03. 38 version 7. 2. 0 Release 1998 SCCP - Signalling Connection Control Part MTP – Message Transfer Part BSSMAP – Base Station Subsistem Mobile Application Part DTAP - Direct Transfer Application Part MM – Mobility Management CC – Customer Care – Atendimento ao Cliente RR – Radio Resource management SMS – Short Message Service Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 20
MAPS™ GSM A Interface Emulator Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 21
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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 22
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 Unix Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 23
Selenium Software SMPPsim Interface de Usuário (estatísticas) Interface de Geração de tráfego (testes) Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 24
Agenda ① Gateways USSD disponíveis ② Simuladores GSM, SMPP e USSD ③ Simulação com Gateway Leib. ICT ④ Desenvolvendo uma aplicação Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 25
Simulador de Gateway USSD § Leib. ICT 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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 26
Leib. ICT 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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 27
USSD Developer Kit - Ambientes Telefone HLR BTC/BSC Célula MSC MAP – 09. 02 LSL HSL Leib. ICT USSD S-Gateway Sigtran XML/TCP/IP Desenvolvimento de Aplicação Rede Real XML/TCP/IP Simulador USSD S-Gateway Desenvolvimento de Aplicação XML/TCP/IP Rede Simulada entre duas máquinas Desenvolvimento de Aplicação Rede simulada localmente Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 28
Gateway Leib. ICT § USSD Developer Kit (Inclui) § Documentação § § Exemplos § § § USSD C++ Application Sample code USSD Java Application Sample code Simuladores § § § USSD Java JNI API User Guide USSD C++ API User Guide USSD XML/TCP/IP Protocol User Guide USSD Gateway Simulator, capable of multiple sessions in parallel Phone Skined USSD GW Simulator, useful for presentations Bibliotecas § § § Windows (WIN 32) libraries Linux 32 bit libraries Linux 64 bit libraries Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 29
Interface avançada Configuração do Gateway Testes de escalabilidade Clientes USSD (telefones) Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 30
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
Leib. ICT: USSDJNI Java. API § 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 Java Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 32
Leib. ICT: USSDJNI Java. API § 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
Leib. ICT: USSDJNI Java. API § 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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 34
Leib. ICT: USSDJNI Java. API § Conectando uma aplicação ao S-Gateway § É necessário executar algumas funções antes de estabelecer a conexão Função Descrição Parâmetros initialize Inicializa a biblioteca JNI - ussd_request. Short. Co de Informa ao Gateway quais são os Short. Codes aceitos pela aplicação Short code connect Realiza a conexão entre aplicação e Gateway utilizando o endereço e a porta desejados Endereço IP Porta Criptografia utilizada § Após a conexão ocorre a chamada de uma callback § cb_connected( ) Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 35
Conexão Gateway-Aplicação USSD S-Gateway Aplicação USSDJNI Initialize() ussd_request. Short. Code() connect() rsa_sec_conf() bind_conf() cb_connected() Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 36
Leib. ICT: USSDJNI Java. API § Mensagens recebidas pela aplicação (Callbacks): § Reações da aplicação às chamadas Callbacks podem ser implementadas utilizando as funções da API Callback Descrição Parâmetros cb_ussd_service Inicializada a comunicação de um usuário com a aplicação dialog. ID short. Code phone. Number cb_ussd_respons e Resposta de um usuário recebida pela aplicação dialog. ID String (resposta) cb_ussd_end Usuário encerrou seu diálogo com a aplicação Dialog. ID cb_ussd_ping Gateway testa se aplicação ainda está ativa – Aplicação deve responder com um pong() - cb_connected Conexã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
Leib. ICT: USSDJNI Java. API § Funções executadas pela aplicação: Função Descrição Parâmetros ussd_request Envia mensagem para um usuário através do Gateway dialog. ID prompt (mensagem) ussd_end Envia mensagem para um usuário finalizando o diálogo dialog. ID info (mensagem) pong Responde a chamada ping do Gateway. Caso não responda, a aplicação pode ser desconectado do Gateway - Envia uma mensagem para usuário iniciando um diálogo dialog. ID hlr. GT (HLR Global Title) phone. Number Text Envia uma mensagem para um usuário sem iniciar um diálogo (apenas informativo) dialog. ID hlr. GT (HLR Global Title) phone. Number text ussd_begin ussd_notify Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 38
USSD Iniciado pelo Usuário Mobile Aplicação USSD S-Gateway process_ussd_request cb_ussd_service ussd_request ussd_response cb_ussd_response ussd_end process_ussd_request Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 39
USSD Iniciado pela Aplicação Mobile User Aplicação USSD S-Gateway ussd_begin ussd_request ussd_response cb_ussd_response ussd_end process_ussd_request Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 40
Bugs Conhecidos § 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 Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013 41
Agenda ① Gateways USSD disponíveis ② Simuladores GSM, SMPP e USSD ③ Simulação com Gateway Leib. ICT ④ 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++ → Win 32 Console Application Detalhes do projeto no Visual Studio Project → Properties Configuration Properties → General Character Set: Use Multi-Byte Character Set 43
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 § Leib. ICT-UDK-v 1. 1 fsamplesc++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 void //CB void when application is connected to gateway connected(){} when application gets disconnected from gateway disconnected(){} to handle pings from gateway ping(){} to sinalize when the user starts a call ussd. Service(int dialog. Id, char* short. Code, char* phone. Number){} to handle user responses ussd. Response(int dialog. Id, char* str){} to sinalize when the user ends the call ussd. End(int dialog. Id){} 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. ussd. Service = ussd. Service; callbacks. ussd. Response = ussd. Response; callbacks. ussd. End = ussd. End; 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 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): § srccomleibictussdUSSD. java (implementação do objeto base CUSSD) § Arquivo disponível dentro da pasta do simulador § Leib. ICT-UDK-v 1. 1 fsamplesjavaUSSDTest. MT § Copiar a DLL da pasta lib do simulador dentro da pasta do Windows: § Descompactar de ussdjni. b 1012. win 32. zip ou ussdjni. b 1012. win 64. zip § Copiar ussdjni. dll para c: windowssystem 32 § 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 Service: *123# Response: 222 Request: What is your UID? Request: Now your passwd IDLE AUTH ID AUTH PWD Response: 999 (invalid) End: Not found. Response: 000 (invalid) End: Wrong Password Reponse: 444 Reponse: 2 End: bye! Request: Main Menu End: bye! Response: 1 Reponse: 2 Request: Inform amount Request: Balance Menu BALANCE MAIN What Now Wrong Menu: Bye! Inform Paid/No Destination Amount: Not Transfered/No Balance: found your found: is. Amount: your balance $10 UID? password Password 1. account: Menu: Balance 2. Go 1. Menu: Balance Payment back 3. Exit 2. 1. Payment Balance Transfer 4. Payment 3. 2. Transfer Exit 4. Transfer 3. Exit 4. Exit PAYMENT Reponse: 10 Reponse: 1 Request: Paid/No balance & Main Menu Reponse: 10 Request: Main Menu Reponse: 3 Reponse: 999 Request: Transfered/No balance & Main Menu Request: Destination account Request: Not Found & Main Menu Reponse: 333 Request: Amount TRANSF ID TRANSF Unstructured Supplementary Service Data (USSD) Porto Alegre, setembro de 2013
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 Both cbboth@inf. ufrgs. br http: //networks. inf. ufrgs. br/dcg Unstructured Supplementary Service Data (USSD) Porto Alegre, outubro de 2013
- Slides: 55