Sem resumo de edição Etiqueta: visualeditor |
|||
| (8 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
= Fase I - Estudo = | = Fase I - Estudo = | ||
== Título da Idéia == | == Título da Idéia == | ||
Implementar um GGSN (''Gateway GPRS Support Node'') utilizando tecnologias Open Source, para expansão dos serviços de dados, utilizando a infraestrutura da rede móvel existente. | Implementar um GGSN (''Gateway GPRS Support Node'') utilizando tecnologias Open Source, para expansão dos serviços de dados, utilizando a infraestrutura da rede móvel existente. | ||
== Objetivos == | == Objetivos == | ||
| Linha 20: | Linha 14: | ||
'''<br>''' | '''<br>''' | ||
== Gateway GPRS | == Gateway GPRS Support Node (GGSN) == | ||
<br>O gateway GPRS support node (GGSN) é o principal componente de uma rede GPRS. O GGSN provê a interconexão com outras redes como a Internet ou redes privadas através da interface Gi, fornece uma interface segura para comunicação com outras redes, gerencia endereços IP, e permite criação e configuração de APNs. | |||
Do ponto de vista de uma rede externa, a GGSN é um roteador de "sub-redes", por causa que a GGSN 'esconde' a infra estrutura do GPRS ''(General Packet Radio Services)'' da redes externas. Quando a GGSN recebe dados endereçados de um usuário especifico, ele checa se o usuário esta ativo. Se sim, o GGNS encaminha os dados do usuário para a SGSN entregando para o usuário móvel (celular), mas se o usuário móvel esteja inativo, os dados serão descartadas. | |||
== | == Serving GPRS Support Node (SGSN) == | ||
O SGSN (Serving GPRS support node) é responsável por entregar os pacotes de dados, das estações móveis e para as estações móveis de acordo com sua área geógrafica. | |||
Suas tarefas são: | |||
* Roteamento de pacotes | |||
* Transferência de pacotes | |||
* Funções de conexão e desconexão | |||
* Controle de mobilidade | |||
* Autenticação | |||
* Funções de cobrança | |||
O SGSN se comunica com o GGSN através da interface Gn. | |||
O registrador de localização do SGSN armazena informações de localização (célula atual e VLR atual) e os profiles do usuário (IMSI, endereço utilizado na rede de pacotes de dados) de todos os usuários registrados neste SGSN. | |||
De outra forma, o endereçamento PDP de pacotes de dados que estão chegando (IP de destino) é convertido no endereço GSM do usuário de destino. Os pacotes reendereçados são enviados do SGSN responsável. Neste propósito, o GGSN armazena endereços e profiles de usuários registrados no atual SGSN, em seu registrador de localização. | De outra forma, o endereçamento PDP de pacotes de dados que estão chegando (IP de destino) é convertido no endereço GSM do usuário de destino. Os pacotes reendereçados são enviados do SGSN responsável. Neste propósito, o GGSN armazena endereços e profiles de usuários registrados no atual SGSN, em seu registrador de localização. | ||
Em geral, existem várias relações entre os SGSNs e os GGSNs : um GGSN é a interface de rede externa para vários SGSNs; um SGSN pode rotear seus pacotes para diferentes GGSNs. | |||
Em geral, existem várias relações entre os SGSNs e os GGSNs : um GGSN é a interface de rede externa para vários SGSNs; um SGSN pode rotear seus pacotes para diferentes GGSNs. | |||
== Arquitetura Referencia == | == Arquitetura Referencia == | ||
| Linha 52: | Linha 47: | ||
== Características == | == Características == | ||
Cenários típicos para GPRS são: acesso wireless à Internet, Internet e-mail, e-mail corporativo, WAP através do GPRS, serviços de propaganda, localização e telemetria de campo.< | Cenários típicos para GPRS são: acesso wireless à Internet, Internet e-mail, e-mail corporativo, WAP através do GPRS, serviços de propaganda, localização e telemetria de campo. | ||
== Estudo Dirigido == | |||
== Instalação do OpenGGSN e o SGSNEMU no Ubuntu 14.04 32bits == | |||
# Instalar pacotes necessários para poder compilar o OpenGGSN e o SGSNEMU:<syntaxhighlight> | |||
sudo apt-get install autoconf | |||
sudo apt-get install git | |||
sudo apt-get install libdbi0-dev libdbd-sqlite3 build-essential libtool autoconf automake git-core pkg-config libortp-dev | |||
</syntaxhighlight> | |||
# Necessário criar duas interfaces de rede (uma para o GGSN e outra para o SGSNEMU), para se comunicarem. Para listar todas as interfaces de rede. Os testes foram realizados usando a interface eth0, e wlan, ambos funcionaram. Mas o tutorial será na eth0. ''*Observação: Se o computador estiver conectado na internet pela eht0, quando mudar as interfaces a conexão cairá, esse passo pode ser o último se for o caso. Se estiver usando a wlan para o acesso à internet, então não há problema.''<syntaxhighlight lang="batch"> | |||
sudo ifconfig | |||
</syntaxhighlight>Depois de confirmado os nomes das interfaces, vamos criar duas interfaces.<syntaxhighlight lang="batch"> | |||
sudo ifconfig eth0 10.0.0.50 netmask 255.255.255.0 | |||
sudo ifconfig eth0:0 10.0.0.40 netmask 255.255.255.0 | |||
</syntaxhighlight>Ao executar o comando sudo ifconfig agora, terá que ter a interface eth0 e eth0:0 | |||
# Baixar e instalar a libosmocore<syntaxhighlight> | |||
sudo -s | |||
cd | |||
git clone git://git.osmocom.org/libosmocore.git | |||
cd libosmocore | |||
autoreconf -fi | |||
apt-get install libtalloc-dev | |||
apt-get install libpcsclite-dev | |||
autoreconf -fi | |||
./configure | |||
make | |||
make install | |||
ldconfig | |||
</syntaxhighlight> | |||
# Baixar e instalar o openggsn<syntaxhighlight> | |||
sudo -s | |||
cd | |||
git clone git://git.osmocom.org/openggsn.git | |||
sudo -s | |||
cd openggsn | |||
autoreconf -fi | |||
./configure | |||
make | |||
make install | |||
ldconfig | |||
</syntaxhighlight> | |||
# Instalar o osmo-pcu<syntaxhighlight lang="batch"> | |||
cd | |||
git clone git://git.osmocom.org/osmo-pcu | |||
sudo -s | |||
cd osmo-pcu | |||
autoreconf -fi | |||
./configure | |||
make | |||
make install | |||
ldconfig | |||
</syntaxhighlight> | |||
# Copiar o ggsn.conf para /etc/ggsn.conf<syntaxhighlight> | |||
sudo -s | |||
cd | |||
cd openggsn/examples | |||
cp ggsn.conf /etc/ggsn.conf | |||
</syntaxhighlight> | |||
# Instalar o wireshark para analisar dados transmitidos<syntaxhighlight lang="batch"> | |||
sudo apt-get install wireshark | |||
</syntaxhighlight>Para executar, e analisar todas as redes do computador, é necessário ter o acesso root, então para executar o wireshark:<syntaxhighlight> | |||
sudo wireshark | |||
</syntaxhighlight> | |||
# O último passo é fazer a conexão e verificar a comunicação entre o OpenGGSN e o SGSNEMU. Para isso abra dois terminais. No primeiro copie<syntaxhighlight lang="batch"> | |||
sudo ggsn -c openggsn/examples/ggsn.conf --fg -l 10.0.0.40 --net 192.168.0.0/24 --dynip 192.168.0.0/24 | |||
</syntaxhighlight>Logo em seguida, no segundo terminal, copie<syntaxhighlight lang="batch"> | |||
sudo sgsnemu --listen 10.0.0.50 --remote 10.0.0.40 --dns 10.20.38.51 --timelimit 10 --contexts 0 | |||
</syntaxhighlight>A mensagem esperada pelo ggsn é:<syntaxhighlight lang="batch"> | |||
<000c> gtp.c:701 GTP: gtp_newgsn() started | |||
<000c> gtp.c:661 State information file (/var/lib/ggsn/gsn_restart) not found. Creating new file. | |||
<000c> gtp.c:682 fopen(path=/var/lib/ggsn/gsn_restart, mode=w) failed: Error = No such file or directory | |||
</syntaxhighlight> A mensagem esperada pelo sgsnemu é:<syntaxhighlight> | |||
Using DNS server: 10.20.38.51 (10.20.38.51) | |||
Local IP address is: 10.0.0.50 (10.0.0.50) | |||
Remote IP address is: 10.0.0.40 (10.0.0.40) | |||
IMSI is: 240010123456789 (0xf987654321010042) | |||
Using NSAPI: 0 | |||
Using GTP version: 1 | |||
Using APN: internet | |||
Using selection mode: 1 | |||
Using MSISDN: 46702123456 | |||
< | Initialising GTP library | ||
<000c> gtp.c:701 GTP: gtp_newgsn() started | |||
Done initialising GTP library | |||
Sending off echo request | |||
Waiting for response from ggsn........ | |||
Received echo response | |||
</syntaxhighlight> | |||
=== Resultados da emulação pelo Wireshark === | |||
Código de filtragem pelo Wireshark.<syntaxhighlight> | |||
ip.dst == 10.0.0.40 or ip.dst == 10.0.0.50 | |||
</syntaxhighlight>No ''echo request'' o source será 10.0.0.50 e o destination será 10.0.0.40 | |||
No ''echo response'' o source será 10.0.0.40 e o destination será 10.0.0.50 | |||
'''Echo response:''' | |||
O tamanho do frame é de 56 bytes. | |||
Pelo protocolo GTP (release 99 version 1) é passado um frame de mensagem de ''echo response'' (0x02). | |||
Mensagem de um ''echo request (GTP):''<syntaxhighlight> | |||
32 02 00 06 00 00 00 00 44 00 00 00 0e 01 | |||
</syntaxhighlight>O primeiro campo (0x32) equivale a:<syntaxhighlight> | |||
00110010 | |||
001 = Version GTP: 99v1 | |||
1 = Protocol Type: GTP | |||
0 = Reserved : 0 | |||
0 = Is Next Extension Header Present? : No. | |||
1 = Is Sequence Number Present? : Yes. | |||
0 = Is N-PDU number present? No. | |||
</syntaxhighlight>O campo (0x02) equivale ao tipo da mensagem, no caso será Echo response. | |||
Os campos (0x00 e 0x06) equivale o tamanho da mensagem, no caso 6. | |||
Os campos (0x00 0x00 0x00 0x00) equivalem ao TEID, que no caso será 0. | |||
Os campos (0x44 0x00) é o número de sequência, no caso 0x4400 | |||
Os campos (0x0e 0x01) é o campo Recovery, no caso 1. | |||
'''Echo request:''' | |||
O tamanho do frame é de 54 bytes. | |||
Pelo protocolo GTP (release 99 version 1) é passado um frame de mensagem de ''echo request'' (0x01). | |||
< | Mensagem de um ''echo request (GTP):''<syntaxhighlight> | ||
32 01 00 04 00 00 00 00 44 00 00 00 | |||
</syntaxhighlight>O primeiro campo (0x32) equivale a:<syntaxhighlight> | |||
00110010 | |||
001 = Version GTP: 99v1 | |||
1 = Protocol Type: GTP | |||
0 = Reserved : 0 | |||
0 = Is Next Extension Header Present? : No. | |||
1 = Is Sequence Number Present? : Yes. | |||
0 = Is N-PDU number present? No. | |||
</syntaxhighlight>O campo (0x01) equivale ao tipo da mensagem, no caso será Echo request. | |||
Os campos (0x00 e 0x04) equivale o tamanho da mensagem, no caso 4. | |||
Os campos (0x00 0x00 0x00 0x00) equivalem ao TEID, que no caso será 0. | |||
Os campos (0x44 0x00) é o número de sequência, no caso 0x4400 | |||
= Fase II - Ensino<br> = | = Fase II - Ensino<br> = | ||
| Linha 70: | Linha 201: | ||
== Conteúdo == | == Conteúdo == | ||
GPRS Tunneling Protocol (GTP) é uma coleção de protocolos para o gereneciamento de mobilidade IP no core das redes de pacotes 3GPP (GPRS,UMTS,EPC) compreedendo o GTP-C, GTP-U e variantes GTP' . O esboço da pilha é mostrado abaixo : | GPRS Tunneling Protocol (GTP) é uma coleção de protocolos para o gereneciamento de mobilidade IP no core das redes de pacotes 3GPP (GPRS,UMTS,EPC), usado para transportar o GPRS, compreedendo o GTP-C, GTP-U e variantes GTP'. O esboço da pilha é mostrado abaixo :<br> | ||
<br> | |||
[[Image:Gtpv2-stack.gif]] | [[Image:Gtpv2-stack.gif]] | ||
<br> | <br> | ||
==== Tipos GTP: ==== | |||
O GTP é dividido em protocolos separados como o GTP-C, GTP-U e GTP. | |||
GTP-C é usado para a sinalização entre o GGSN (''Gateway Gprs Support Nodes'') e o SGSN (''Serving Gprs Support Nodes''). Ele permite que o SGSN ative uma sessão em favor do usuário (''PDP Context Activation''), desative a sessão ou configure os parâmetros de QoS, e também ajuste da sessão de um cliente vindo de outro SGSN. | GTP-C é usado para a sinalização entre o GGSN (''Gateway Gprs Support Nodes'') e o SGSN (''Serving Gprs Support Nodes''). Ele permite que o SGSN ative uma sessão em favor do usuário (''PDP Context Activation''), desative a sessão ou configure os parâmetros de QoS, e também ajuste da sessão de um cliente vindo de outro SGSN. | ||
GTU-U é usado para o transporte de dados do usuário, entre a RAN (''Radio Access Network'') e o core da rede. Os pacotes podem ser transportados em IPV4, IPV6 ou PPP. <br> <br>GTP' (GTP Prime) usa a mesma estrtutura de mensagens do GTP-C e GTP-U, porém, tem uma função independente. Ele pode ser usado para transportar dados de bilhetagem da função CDF (''Charging Data Function'') da rede GSM ou UMTS para elemento que faz a função de CGF (''Charging Gateway Function'') . | GTU-U é usado para o transporte de dados do usuário, entre a RAN (''Radio Access Network'') e o core da rede. Os pacotes podem ser transportados em IPV4, IPV6 ou PPP. <br> <br>GTP' (GTP Prime) usa a mesma estrtutura de mensagens do GTP-C e GTP-U, porém, tem uma função independente. Ele pode ser usado para transportar dados de bilhetagem da função CDF (''Charging Data Function'') da rede GSM ou UMTS para elemento que faz a função de CGF (''Charging Gateway Function'') . | ||
== Apresentação == | == Apresentação == | ||
=== GTP - GPRS Tunnelling Protocol === | |||
https://docs.google.com/presentation/d/1r46ImyDaRllYu0LC9sl3v8PobY2rWyo4GAQo8og1DWc/edit?usp=sharing | |||
=== GGSN - Gateway GPRS Support Node === | |||
https://docs.google.com/presentation/d/1C_qR4GL9R-7RnmJc5ZNJCDR-V4xf5B4evTFbUNv1cJM/edit?usp=sharing | |||
= Fase III - Exemplo de Caso de Negócio<br> = | = Fase III - Exemplo de Caso de Negócio<br> = | ||
| Linha 338: | Linha 470: | ||
= Histórico <br> = | = Histórico <br> = | ||
<br> | |||
* 08/07/16 - Apresentação GTP | |||
* 08/07/16 - Apresentação GGSN | |||
* 08/07/16 - Demonstração do protótipo OpenGGSN | |||
<br> | |||
*01/11/13 - Atualização da documentação Conceitual (Caio Cesar Ferreira) | *01/11/13 - Atualização da documentação Conceitual (Caio Cesar Ferreira) | ||
| Linha 345: | Linha 483: | ||
*04/06/14 - Alteração da configuração dos IPs dos três servidores, para teste de roaming. | *04/06/14 - Alteração da configuração dos IPs dos três servidores, para teste de roaming. | ||
<br> | <br> | ||
= Referências = | = Referências = | ||
Edição atual tal como às 12h27min de 11 de novembro de 2016
Fase I - Estudo
Título da Idéia
Implementar um GGSN (Gateway GPRS Support Node) utilizando tecnologias Open Source, para expansão dos serviços de dados, utilizando a infraestrutura da rede móvel existente.
Objetivos
- Expansão dos serviços de dados sobre a rede celular em volume e novas facilidades.
- Redução dos custos de licenciamento da plataforma GGSN.
Conceito
Gateway GPRS Support Node (GGSN)
O gateway GPRS support node (GGSN) é o principal componente de uma rede GPRS. O GGSN provê a interconexão com outras redes como a Internet ou redes privadas através da interface Gi, fornece uma interface segura para comunicação com outras redes, gerencia endereços IP, e permite criação e configuração de APNs.
Do ponto de vista de uma rede externa, a GGSN é um roteador de "sub-redes", por causa que a GGSN 'esconde' a infra estrutura do GPRS (General Packet Radio Services) da redes externas. Quando a GGSN recebe dados endereçados de um usuário especifico, ele checa se o usuário esta ativo. Se sim, o GGNS encaminha os dados do usuário para a SGSN entregando para o usuário móvel (celular), mas se o usuário móvel esteja inativo, os dados serão descartadas.
Serving GPRS Support Node (SGSN)
O SGSN (Serving GPRS support node) é responsável por entregar os pacotes de dados, das estações móveis e para as estações móveis de acordo com sua área geógrafica.
Suas tarefas são:
- Roteamento de pacotes
- Transferência de pacotes
- Funções de conexão e desconexão
- Controle de mobilidade
- Autenticação
- Funções de cobrança
O SGSN se comunica com o GGSN através da interface Gn.
O registrador de localização do SGSN armazena informações de localização (célula atual e VLR atual) e os profiles do usuário (IMSI, endereço utilizado na rede de pacotes de dados) de todos os usuários registrados neste SGSN.
De outra forma, o endereçamento PDP de pacotes de dados que estão chegando (IP de destino) é convertido no endereço GSM do usuário de destino. Os pacotes reendereçados são enviados do SGSN responsável. Neste propósito, o GGSN armazena endereços e profiles de usuários registrados no atual SGSN, em seu registrador de localização.
Em geral, existem várias relações entre os SGSNs e os GGSNs : um GGSN é a interface de rede externa para vários SGSNs; um SGSN pode rotear seus pacotes para diferentes GGSNs.
Arquitetura Referencia
Características
Cenários típicos para GPRS são: acesso wireless à Internet, Internet e-mail, e-mail corporativo, WAP através do GPRS, serviços de propaganda, localização e telemetria de campo.
Estudo Dirigido
Instalação do OpenGGSN e o SGSNEMU no Ubuntu 14.04 32bits
- Instalar pacotes necessários para poder compilar o OpenGGSN e o SGSNEMU:<syntaxhighlight>
sudo apt-get install autoconf sudo apt-get install git sudo apt-get install libdbi0-dev libdbd-sqlite3 build-essential libtool autoconf automake git-core pkg-config libortp-dev </syntaxhighlight>
- Necessário criar duas interfaces de rede (uma para o GGSN e outra para o SGSNEMU), para se comunicarem. Para listar todas as interfaces de rede. Os testes foram realizados usando a interface eth0, e wlan, ambos funcionaram. Mas o tutorial será na eth0. *Observação: Se o computador estiver conectado na internet pela eht0, quando mudar as interfaces a conexão cairá, esse passo pode ser o último se for o caso. Se estiver usando a wlan para o acesso à internet, então não há problema.<syntaxhighlight lang="batch">
sudo ifconfig </syntaxhighlight>Depois de confirmado os nomes das interfaces, vamos criar duas interfaces.<syntaxhighlight lang="batch"> sudo ifconfig eth0 10.0.0.50 netmask 255.255.255.0 sudo ifconfig eth0:0 10.0.0.40 netmask 255.255.255.0 </syntaxhighlight>Ao executar o comando sudo ifconfig agora, terá que ter a interface eth0 e eth0:0
- Baixar e instalar a libosmocore<syntaxhighlight>
sudo -s cd git clone git://git.osmocom.org/libosmocore.git cd libosmocore autoreconf -fi apt-get install libtalloc-dev apt-get install libpcsclite-dev autoreconf -fi ./configure make make install ldconfig </syntaxhighlight>
- Baixar e instalar o openggsn<syntaxhighlight>
sudo -s cd git clone git://git.osmocom.org/openggsn.git sudo -s cd openggsn autoreconf -fi ./configure make make install ldconfig </syntaxhighlight>
- Instalar o osmo-pcu<syntaxhighlight lang="batch">
cd git clone git://git.osmocom.org/osmo-pcu sudo -s cd osmo-pcu autoreconf -fi ./configure make make install ldconfig </syntaxhighlight>
- Copiar o ggsn.conf para /etc/ggsn.conf<syntaxhighlight>
sudo -s cd cd openggsn/examples cp ggsn.conf /etc/ggsn.conf </syntaxhighlight>
- Instalar o wireshark para analisar dados transmitidos<syntaxhighlight lang="batch">
sudo apt-get install wireshark </syntaxhighlight>Para executar, e analisar todas as redes do computador, é necessário ter o acesso root, então para executar o wireshark:<syntaxhighlight> sudo wireshark </syntaxhighlight>
- O último passo é fazer a conexão e verificar a comunicação entre o OpenGGSN e o SGSNEMU. Para isso abra dois terminais. No primeiro copie<syntaxhighlight lang="batch">
sudo ggsn -c openggsn/examples/ggsn.conf --fg -l 10.0.0.40 --net 192.168.0.0/24 --dynip 192.168.0.0/24 </syntaxhighlight>Logo em seguida, no segundo terminal, copie<syntaxhighlight lang="batch"> sudo sgsnemu --listen 10.0.0.50 --remote 10.0.0.40 --dns 10.20.38.51 --timelimit 10 --contexts 0 </syntaxhighlight>A mensagem esperada pelo ggsn é:<syntaxhighlight lang="batch"> <000c> gtp.c:701 GTP: gtp_newgsn() started <000c> gtp.c:661 State information file (/var/lib/ggsn/gsn_restart) not found. Creating new file. <000c> gtp.c:682 fopen(path=/var/lib/ggsn/gsn_restart, mode=w) failed: Error = No such file or directory </syntaxhighlight> A mensagem esperada pelo sgsnemu é:<syntaxhighlight> Using DNS server: 10.20.38.51 (10.20.38.51) Local IP address is: 10.0.0.50 (10.0.0.50) Remote IP address is: 10.0.0.40 (10.0.0.40) IMSI is: 240010123456789 (0xf987654321010042) Using NSAPI: 0 Using GTP version: 1 Using APN: internet Using selection mode: 1 Using MSISDN: 46702123456
Initialising GTP library <000c> gtp.c:701 GTP: gtp_newgsn() started Done initialising GTP library
Sending off echo request Waiting for response from ggsn........
Received echo response </syntaxhighlight>
Resultados da emulação pelo Wireshark
Código de filtragem pelo Wireshark.<syntaxhighlight> ip.dst == 10.0.0.40 or ip.dst == 10.0.0.50 </syntaxhighlight>No echo request o source será 10.0.0.50 e o destination será 10.0.0.40
No echo response o source será 10.0.0.40 e o destination será 10.0.0.50
Echo response:
O tamanho do frame é de 56 bytes.
Pelo protocolo GTP (release 99 version 1) é passado um frame de mensagem de echo response (0x02).
Mensagem de um echo request (GTP):<syntaxhighlight> 32 02 00 06 00 00 00 00 44 00 00 00 0e 01 </syntaxhighlight>O primeiro campo (0x32) equivale a:<syntaxhighlight> 00110010 001 = Version GTP: 99v1 1 = Protocol Type: GTP 0 = Reserved : 0 0 = Is Next Extension Header Present? : No. 1 = Is Sequence Number Present? : Yes. 0 = Is N-PDU number present? No. </syntaxhighlight>O campo (0x02) equivale ao tipo da mensagem, no caso será Echo response.
Os campos (0x00 e 0x06) equivale o tamanho da mensagem, no caso 6.
Os campos (0x00 0x00 0x00 0x00) equivalem ao TEID, que no caso será 0.
Os campos (0x44 0x00) é o número de sequência, no caso 0x4400
Os campos (0x0e 0x01) é o campo Recovery, no caso 1.
Echo request:
O tamanho do frame é de 54 bytes.
Pelo protocolo GTP (release 99 version 1) é passado um frame de mensagem de echo request (0x01).
Mensagem de um echo request (GTP):<syntaxhighlight> 32 01 00 04 00 00 00 00 44 00 00 00 </syntaxhighlight>O primeiro campo (0x32) equivale a:<syntaxhighlight> 00110010 001 = Version GTP: 99v1 1 = Protocol Type: GTP 0 = Reserved : 0 0 = Is Next Extension Header Present? : No. 1 = Is Sequence Number Present? : Yes. 0 = Is N-PDU number present? No. </syntaxhighlight>O campo (0x01) equivale ao tipo da mensagem, no caso será Echo request.
Os campos (0x00 e 0x04) equivale o tamanho da mensagem, no caso 4.
Os campos (0x00 0x00 0x00 0x00) equivalem ao TEID, que no caso será 0.
Os campos (0x44 0x00) é o número de sequência, no caso 0x4400
Fase II - Ensino
Conteúdo
GPRS Tunneling Protocol (GTP) é uma coleção de protocolos para o gereneciamento de mobilidade IP no core das redes de pacotes 3GPP (GPRS,UMTS,EPC), usado para transportar o GPRS, compreedendo o GTP-C, GTP-U e variantes GTP'. O esboço da pilha é mostrado abaixo :
Tipos GTP:
O GTP é dividido em protocolos separados como o GTP-C, GTP-U e GTP.
GTP-C é usado para a sinalização entre o GGSN (Gateway Gprs Support Nodes) e o SGSN (Serving Gprs Support Nodes). Ele permite que o SGSN ative uma sessão em favor do usuário (PDP Context Activation), desative a sessão ou configure os parâmetros de QoS, e também ajuste da sessão de um cliente vindo de outro SGSN.
GTU-U é usado para o transporte de dados do usuário, entre a RAN (Radio Access Network) e o core da rede. Os pacotes podem ser transportados em IPV4, IPV6 ou PPP.
GTP' (GTP Prime) usa a mesma estrtutura de mensagens do GTP-C e GTP-U, porém, tem uma função independente. Ele pode ser usado para transportar dados de bilhetagem da função CDF (Charging Data Function) da rede GSM ou UMTS para elemento que faz a função de CGF (Charging Gateway Function) .
Apresentação
GTP - GPRS Tunnelling Protocol
https://docs.google.com/presentation/d/1r46ImyDaRllYu0LC9sl3v8PobY2rWyo4GAQo8og1DWc/edit?usp=sharing
GGSN - Gateway GPRS Support Node
https://docs.google.com/presentation/d/1C_qR4GL9R-7RnmJc5ZNJCDR-V4xf5B4evTFbUNv1cJM/edit?usp=sharing
Fase III - Exemplo de Caso de Negócio
Benefício para a Algar Telecom
- Economia no pagamento de licenças de uso.
- Com o acesso ao código fonte é possível a implementação de novos serviços.
- Possibilidade de implementação de redundância geográfica para maior resiliência dos serviços.
Benefícios para o cliente
- Melhora na disponibilidade do acesso à Internet via redundância geográfica.
- Novos serviços de valor adicionado disponíveis.
Direcionadores chave para esta iniciativa
- Obter o domínio das tecnologias utilizadas no plano de controle das redes UMTS, IMS e LTE, reduzindo custos de licenciamento e implementando novos serviços de valor adicionado.
Possíveis modelos de negócios
- Com os dados fornecidos pelo cabeçalho do GTP pode-se criar ou melhorar alguns serviços, tais como:
- Localização e monitoramento de celulares através da LAC (Location Area Code);
- Criar o serviço que informe os "passos" de um celular: "por onde andei";
Business Case
Fase IV - Protótipo orientado ao Negócio
Escopo
A partir de um estação movel (Pré-Pago ou Pós-Pago), se atachar em uma APN (Access Point Name), sendo assim conectando ao GGSN propriamento da Algar Telecom.
Limitações
http://www.3gpp.org/DynaReport/29060.htm
Foi necessario adicionar as seguintes mensagens, pois estava dando erro de mensagem invalida, as mensagens abaixo são para comunicação entre o GGSN e o SGSN, conforme a especificação acima fala:
vim gtp/gtpie.h
<source lang="c">
- define GTPIE_RAT_TYPE 151 /* Radio Access Technology Type */
- define GTPIE_USER_LOC 152 /* User Location Information */
- define GTPIE_MS_TZ 153 /* MS Time Zone */
- define GTPIE_IMEI_SV 154 /* IMEI Software Version */
</source>
E adicionar no swtich as seguinte codigos "gtp/gtpie.c":
<source lang="c"> switch (*p) { case GTPIE_RAT_TYPE: case GTPIE_USER_LOC: case GTPIE_MS_TZ: case GTPIE_IMEI_SV } </source>
PoC
Detalhamento Técnico
Codigo Fontes
Código SVN: http://versionamento/repos/PeD/opeggsn/
Instalação do OpenGGSN no LabCA
Ambiente
Servidor : CentOS release 6.5
IP eth3 : 201.48.87.17/28 Gateway : 201.48.87.22/28
IP eth2 : 1.1.1.2/29 Gateway : 1.1.1.1/29
Faixa de Endereço Rede para os Telefones:
Rede dos usuários : 192.168.10.0/24
Encaminhamento necessario para o serviço possar encaminhar pacotes para outra rede e vice-versa.
<source lang="Bash">
echo 1 > /proc/sys/net/ipv4/ip_forward
</source>
NAT para navegação na Internet
<source lang="Bash">
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth3 -j MASQUERADE
</source>
Download do OpenGGSN via GIT ou via HTTP (http://sf.net/projects/ggsn):
<source lang="Bash"> mkdir /opt/openggsn cd /opt/openggsn git clone git://git.osmocom.org/openggsn </source>
Compilando o OpenGGSN:
<source lang="Bash"> cd /opt/openggsn autoreconf ; automake --add-missing ; autoreconf ; autoconf ; automake ; ./configure --prefix=/usr/local ; make -j 2 ; make install </source>
Inicializando o OpenGGSN
<source lang="Bash">
echo "Adicionando rota para a rede do SGSN da Huawei, via Border Gateway"
route add -net 201.48.226.0/24 gw 1.1.1.1
echo "Startand o OpenGGSN"
./ggsn -d --fg -c ../examples/ggsn.conf -l 1.1.1.2 --statedir ./
echo "Adicionando rota para a rede dos clientes via interface tun0"
route add -net 192.168.10.0/24 dev tun0
</source>
Arquivo .pcap com exemplo das mensagens Create_pdp_context e Delete_pdp_context :
Configuração GGSN:
È no arquivo ggsn.conf que fica toda as configurações e é bem documentado:
Principais:
<source lang="vim">
- TAG: pidfile
- File to store information about the process id of the program.
- The program must have write access to this file/directory.
pidfile /var/run/ggsn.pid
- TAG: statedir
- Directory to use for nonvolatile storage.
- The program must have write access to this directory.
statedir /var/lib/ggsn/
- TAG: listen
- Specifies the local IP address to listen to
listen 1.1.1.2
- TAG: dynip
- Dynamic IP address pool.
- Used for allocation of dynamic IP address when address is not given
- by HLR.
- If this option is not given then the net option is used as a substitute.
dynip 192.168.10.0/24
- TAG: pcodns1
- Protocol configuration option domain name system server 1.Estudos
pcodns1 200.225.197.37
- TAG: pcodns2
- Protocol configuration option domain name system server 2.
pcodns2 200.225.197.34
- TAG: apn
- Use of this tag is EXPERIMENTAL
- Access point name to connect to when run in client mode.
apn m2m.ctbc.br
</source>
Configurando Telefone
Quando um telefone celular GPRS configura um PDP context e um ponto de acesso está selecionado. Neste ponto, um Access Point Name (APN) é determinado.
Configurar Telefone:
APN : m2m.ctbc.br
Usuario: ctbc
Senha: ctbc
Arquivo:Pdp create and delete.zip
Teste de de Roaming
IP's válidos alocado para o teste de roaming :
201.48.226.64 rede/29
201.48.226.65 BG - Border Gateway
201.48.226.66 GGSN AID - Server 1 - apn m2m.ctbc.br
201.48.226.67 GGSN AID - Server 2 - apn m2m.ctbc.br
201.48.226.68 GGSN AID - Server 3 - apn m4m.ctbc.br
201.48.226.69 - vago
201.48.226.70 - vago
201.48.226.71 broadcast
Cronograma Macro
Histórico
- 08/07/16 - Apresentação GTP
- 08/07/16 - Apresentação GGSN
- 08/07/16 - Demonstração do protótipo OpenGGSN
- 01/11/13 - Atualização da documentação Conceitual (Caio Cesar Ferreira)
- 12/12/13 - Atualização da documentação Conceitual (Helvio)
- 23/12/13 - Atualização da documentação Conceitual (Caio Cesar Ferreira/Helvio)
- 26/12/12 - Atualização da documentação do modelo de Negócio (Ricardo)
- 04/06/14 - Alteração da configuração dos IPs dos três servidores, para teste de roaming.
Referências
Fontes :
- http://git.osmocom.org/openggsn/
- http://git.osmocom.org/libosmo-abis/
- http://git.osmocom.org/libosmocore/
Novos PD&Is
Pesquisadores
- Bruna Lorena Gondin
- Caio César Ferreira
- Guilherme Brito Garcia
- Hélvio Pereira de Freitas
- Lincoln Borges Ferreira
- Ricardo Domingues de Faria
- Servolo Dantas
- Tiago Barros De Souza


