Linha 127: Linha 127:
<br>  
<br>  


Explique o escopo deste protótipo
Para a execução desse protótipo é necessário implementar os protocolos e funcionalidades utilizadas no ambiente de produção no BRAS e que atendem às necessidades da Algar Telecom.


<br>  
=== Requisitos Funcionais ===
 
* Implementar comunicação do modem xDSL com o OpenBRAS
'''Descrição:'''  Implementar os protocolos de comunicação necessários para atribuição de endereço IP  e estabelecimento de sessão com o OpenBRAS, permitindo o usuário navegar na internet.
'''Prioridade:''' Essencial.
 
* '''Implementar encapsulamentos'''
'''Descrição:''' Implementar encapsulamentos VLAN, 802.1q, QinQ (IEEE 802.1ad) para conexão dos DSLAMs ao OpenBRAS e identificação do usuário (VLAN Inner e Outer) <br>
'''Prioridade:''' Essencial
 
* '''Implementar protocolos de roteamento'''
'''Descrição:''' Implementar os protocolos de roteamento BGP, OSPF e RIP  permitindo o OpenBRAS trocar informações de rotas com os demais equipamentos do backbone IP.
'''Prioridade:''' Essencial.
 
* '''Implementar o Gerenciamento do OpenBRAS'''
'''Descrição:''' Deve-se implementar interfaces de administração do OpenBRAS, via SNMP, SNMP Traps , linha de comando (CLI) .<br>
'''Prioridade:''' Essencial.
 
* '''Implementar o Multicast'''
'''Descrição:''' Deve-se implementar os protocolos de Multicast no OpenBRAS, ou seja, garantir a entrega de informação para múltiplos destinatários simultaneamente usando a estratégia mais eficiente onde as mensagens passam por um link uma única vez e somente são duplicadas quando o link para os destinatários se divide em duas direções.
'''Prioridade:''' Desejável.
 
=== Requisitos Não-Funcionais ===
 
* '''Garantir a Segurança'''
'''Descrição:''' Deve-se garantir a proteção de acesso ao OpenBRAS com listas de acesso, filtros e proteções de acesso.
'''Prioridade:''' Importante.
 
* '''Garantir a Qualidade'''
'''Descrição:''' Deve-se garantir a aplicação de QoS no tráfego do cliente da Algar Telecom.
'''Prioridade:''' Importante.
 
<br>


== Metodologia  ==
== Metodologia  ==

Edição atual tal como às 12h23min de 27 de abril de 2017

Fase I - Estudo


Título da Idéia

OpenBRAS


Objetivos

Implementar um B-RAS (Broadband Remote Access Server) utililando ferramentas Open Source e que possar ser utilizado no ambiente de produção da Algar Telecom.


Conceito


A Algar Telecom utiliza na sua rede banda larga equipamentos que concentram as conexões dos usuários deste serviço, e que são chamados BRAS (Broadband Remote Access Server). Os BRAS são equipamentos responsáveis por agregar conexões vindas de um ou mais DSLAM´s instalados na planta do operador. Estes equipamentos são os responsáveis também por terminar a sessão PPP do assinante e também designar um endereço IP válido ao mesmo. À medida que o número de usuários do serviço ADSL/VDSL aumenta é necessária a aquisição de mais equipamentos e as licenças correspondentes.



Enquadramento

Pesquisa Básica, Pesquisa Aplicada ou Desenvolvimento



Desafio tecnológico

Qual a barreira ou desafio tecnológico superável?



Características 


Informe sobre as particularidades, aspectos e atributos desta idéia.



Estudo Dirigido


Coloque aqui o plano de estudos bem como as possíveis fontes de informaçãoes.


Fase II - Ensino



Conteúdo

Desenvolva um conteúdo que possa transmitir o conhecimento adquirido para outros
Crie um material (Wiki, PDF, PPT, ...) que possa ser armazenado e facilmente atualizável


Apresentação

Apresente ao grupo (reunião, EAD, Blog, ...)
Publique aqui


Fase III - Exemplo de Caso de Negócio


Benefício para a Algar Telecom

A Algar Telecom ganha com menor custo para expandir sua malha de rede, evitando a necessidade de adquirir mais licenças com equipamentos BRAS a medida que vai se expandindo.



Benefícios para o cliente

O cliente ganha com uma maior cobertura de serviço por parte da empresa, já que o custo para se expandir cai.


Direcionadores chave

    Descrever em tópicos o que esta iniciativa pode proporcionar



Elemento inovador

    Destaque o elemento tecnologicamente novo ou inovador do projeto



Possíveis modelos de negócios

    Descrever em tópicos os possíveis modelos de negócios

Business Case

    Descrever um exemplo de négócio que permita avaliar a solução comercialmente


Fase IV - Protótipo orientado ao Negócio


Escopo


Para a execução desse protótipo é necessário implementar os protocolos e funcionalidades utilizadas no ambiente de produção no BRAS e que atendem às necessidades da Algar Telecom.

Requisitos Funcionais

  • Implementar comunicação do modem xDSL com o OpenBRAS

Descrição: Implementar os protocolos de comunicação necessários para atribuição de endereço IP e estabelecimento de sessão com o OpenBRAS, permitindo o usuário navegar na internet. Prioridade: Essencial.

  • Implementar encapsulamentos

Descrição: Implementar encapsulamentos VLAN, 802.1q, QinQ (IEEE 802.1ad) para conexão dos DSLAMs ao OpenBRAS e identificação do usuário (VLAN Inner e Outer)
Prioridade: Essencial

  • Implementar protocolos de roteamento

Descrição: Implementar os protocolos de roteamento BGP, OSPF e RIP permitindo o OpenBRAS trocar informações de rotas com os demais equipamentos do backbone IP. Prioridade: Essencial.

  • Implementar o Gerenciamento do OpenBRAS

Descrição: Deve-se implementar interfaces de administração do OpenBRAS, via SNMP, SNMP Traps , linha de comando (CLI) .
Prioridade: Essencial.

  • Implementar o Multicast

Descrição: Deve-se implementar os protocolos de Multicast no OpenBRAS, ou seja, garantir a entrega de informação para múltiplos destinatários simultaneamente usando a estratégia mais eficiente onde as mensagens passam por um link uma única vez e somente são duplicadas quando o link para os destinatários se divide em duas direções. Prioridade: Desejável.

Requisitos Não-Funcionais

  • Garantir a Segurança

Descrição: Deve-se garantir a proteção de acesso ao OpenBRAS com listas de acesso, filtros e proteções de acesso. Prioridade: Importante.

  • Garantir a Qualidade

Descrição: Deve-se garantir a aplicação de QoS no tráfego do cliente da Algar Telecom. Prioridade: Importante.


Metodologia


Qual metodologia ou método utilizado?



Limitações


Informe sobre as limitações


PoC


Desenvolva um PoC (Proof of Concept)


Detalhamento Técnico


Arquitetura implementada:

Secões de configuração do accel pppoe

Sumário das seções do arquivo de configuração .conf do software accel pppoe:

Format
Configuration file consists of sections in form:

[section1]
name1=val1
name2=val2
name3

[section2]
name1=val1
name2=val2
name3
and so on

Sections

[modules]

This section contains list of modules to load.
Logging modules:

log_file
This module logs messages to files. It support per-session/per-user features.
log_tcp
This module logs messages to remote host over TCP/IP.
log_pgsql
This module logs messages to PostgreSQL.
log_syslog
This module logs messages to system logger.
Control modules:

pptp
PPTP control connection handling module.
l2tp
L2TP control connection handling module.
pppoe
PPPoE discovery stage handling module.
ipoe
IPoE module.
Authentication modules for PPP:

auth_pap
PAP authentication module.
auth_chap
CHAP (md5) authentication module.
auth_mschap_v1
Microsoft CHAP (version 1) authentication module.
auth_mschap_v2
Microsoft CHAP (version 2) authentication module.
IPv6 support modules:

ipv6pool
IPv6 address assigning from static pool.
ipv6_nd
Neighbor Discovery module.
ipv6_dhcp
DHCPv6 module.
Other modules:

radius
Radius interaction module.
chap-secrets
PPPD compatible chap-secrets file support module.
ippool
IPv4 address assigning from static pool.
pppd_compat
This module starts pppd compatible ip-up/ip-down scripts and ip-change to handle RADIUS CoA request.
shaper
Shaper management module.
net-snmp
SNMP support module.
logwtmp
Logs sessions to utmp/wtmp.
connlimit
Connection rate limiting module.
[core]

Configuration of core module.

log-error=path
Path to file for core module error logging.
thread-count=n
Number of working threads, optimal - number of processors/cores.
[ppp]

PPP handshake module configuration.

verbose=n
If n is not zero ppp module will produce verbose logging.
min-mtu=n
Minimum acceptable MTU. If client will try to negotiate less than specified then it will be NAKed or disconnected if rejects greater MTU.
mtu=n
MTU which will be negotiated if client's MRU will be not acceptable.
mru=n
Preferred MRU.
ccp=n
Disable CCP negotiation if n is zero.
sid-case=upper|lower
Specifies which case to generate session identifier (default lower).
check-ip=0|1
Specifies whether to check if IP already assigned to other ppp interface (default 0).
single-session=replace|deny
Specifies whether to control sessions count.
If this option is absent session count control is turned off.
If this option is replace then accel-ppp will terminate first session when second is authorized.
If this option is deny then accel-ppp will deny second session authorization.
mppe=require|prefer|deny
Specifies mppe negotiation preference:
require – ask client for mppe, if it rejects drop connection
prefer – ask client for mppe, if it rejects don't fail
deny – deny mppe.
Default behavior – don't ask client for mppe, but allow it if client requests.
Please note that RADIUS may override this option by MS-MPPE-Encryption-Policy attribute.
ipv4=deny|allow|prefer|require
Specifies IPv4 (IPCP) negotioation algorithm:
deny – don't negotiate IPv4
allow – negotiate IPv4 only if client requests
prefer – ask client for IPv4 negotiation, don't fail if he rejects
require – require IPv4 negotiation
ipv6=deny|allow|prefer|require
Parameters are same as above.
ipv6-intf-id=x:x:x:x|random
Specifies fixed or random interface identifier for IPv6.
ipv6-peer-intf-id=x:x:x:x|random|ipv4|calling-sid
Specifies peer interface identifier for IPv6:
x:x:x:x – fixed interface identifier
random – random interface identifier
ipv4 – calculate interface identifier from IPv4 address, for example `192:168:0:1`
calling-sid – calculate interface identifier from Calling-Station-Id
ipv6-accept-peer-intf-id=0|1
Specifies whether to accept peer's value of interface identifier.
lcp-echo-interval=n
If this option is given and greater then 0 then ppp module will send LCP Echo-Request packets every n seconds.
lcp-echo-failure=n
Specifies maximum number of Echo-Requests may be sent without valid reply, if exceeds connection will be terminated.
[dns]

dns1=x.x.x.x
Specifies primary IPv4 DNS to be sent to peer.
dns2==x.x.x.x
Specifies secondary IPv4 DNS to be sent to peer.
[dnsv6]

dns=IPv6_address
Specifies IPv6 DNS to be sent to peer. You may specify up to 3 dns options.
dnssl=name
Specifies DNS Search List. You may specify multiple dnssl options.
[client-ip-range]

You have to explicitly specify range of ip address from which clients can connect to server in form: x.x.x.x/mask (for example 10.0.0.0/8)
x.x.x.x-y (for example 10.0.0.1-254)
or disable to disable client ip address check.

[pptp]

Configuration of PPTP module.

bind=x.x.x.x
If this option is given then pptp server will bind to specified IP address.
verbose=0|1
Specifies whether pptp module should produce verbose logging.
echo-interval=n
If this option is given and greater then zero then pptp module will send PPTP Echo-Request packets every n seconds.
echo-failure=n
Specifies maximum number of Echo-Requests may be sent without valid reply, if exceeds connection will be terminated.
timeout=n
Timeout waiting reply from client in seconds (default 5).
[pppoe]

Configuration of PPPoE module.

interface=ethX[,padi-limit=n]
Specifies interface name to listen/send discovery packets. You may specify multiple interface options.
Optional padi-limit parameter specifies limit of PADI packets to reply on this interface in 1 second period.
ac-name=name
Specifies AC-Name tag value. If absent tag will not be sent.
service-name=service-name
Specifies Service-Name to respond. If absent any Service-Name is acceptable and client's Service-Name will be sent back.
pado-delay=delay[,delay1:count1[,delay2:count2[,…]]]
Specifies delays (also in condition of connection count) to send PADO (ms).
Last delay in list may be -1 which means don't accept new connections.
List have to be sorted by count key.
mac-filter=filename,type
Specifies mac-filter filename and type, type may be allow or deny.
ifname-in-sid=called-sid|calling-sid|both
Specifies that interface name should be present in Called-Station-ID or in Calling-Station-ID or in both attributes.
verbose=0|1
Specifies whether to produce verbose logging.
tr101=0|1
Specifies whether to handle TR101 tags.
padi-limit=n
Specifies overall limit of PADI packets to reply in 1 second period (default 0 - unlimited).
Rate of per-mac PADI packets is limited to no more than 1 packet per second.
[l2tp]

Configuration of L2TP module.

bind=x.x.x.x
Specifies IP address to bind to.
host-name=name
This name will be sent to clients in Host-Name attribute.
hello-interval=n
Specifies interval (in seconds) to send Hello control message. Its used for keep alive connection. If peer will not respond to Hello connection will be terminated.
timeout=n
Specifies timeout (in seconds) to wait peer completes tunnel and session negotiation.
rtimeout=n
Specifies timeout (in seconds) to wait message acknowledge, if elapsed message retransmition will be performed.
retransmit=n
Specifies maximum number of message retransmission, if exceeds connection will be terminated.
verbose=0|1
Specifies whether to produce verbose logging.
[radius]

Configuration of RADIUS module.

nas-identifier=identifier
Specifies value to send to RADIUS server in NAS-Identifier attribute and to be matched in DM/CoA requests.
nas-ip-address=x.x.x.x
Specifies value to send to RADIUS server in NAS-IP-Address attribute and to be matched in DM/CoA requests.
Also DM/CoA server will bind to that address.
gw-ip-address=x.x.x.x
Specifies IPv4 address to use as local address of ppp interface if Radius is used for IPv4 address assignment.
server=`address,secret[,auth-port=1812][,acct-port=1813][,req-limit=0][,fail-time=0]`
Specifies IP address, secret, ports of RADIUS server.
req-limit – maximum number of simultaneous requests to server (0 - unlimited)
fail-time – if server doesn't responds mark it as unavailable for this time (sec)
If you want to specify only authentication or accounting server then set auth-port/acct-port to zero.
You may specify multiple server options.
dae-server=x.x.x.x:port,secret
Specifies IP address, port to bind and secret for Dynamic Authorization Extension server (DM/CoA).
acct-interim-interval=n
Specifies interval in seconds to send accounting information (may be overridden by Acct-Interim-Interval attribute).
verbose=0|1
Specifies whether to produce verbose logging.
interim-verbose=0|1
Specifies whether to produce logging of Interim-Update packets.
timeout=n
Timeout to wait response from server (sec).
max-try=n
Specifies maximum number of tries to send Access-Request/Accounting-Request queries.
acct-timeout=n
Specifies timeout to wait reply for Interim-Update packets.
If n is greater than zero then session will be terminated after timeout exceeds. If n is zero then don't retransmit Interim-Update packets and don't terminate session.
acct-delay-time=0|1
Specifies whether to include Acct-Delay-Time attribute to accounting requests (default 0).
[log]

Configuration of log modules.

log-file=file
Path to file to write general log.
log-emerg=file
Path to file to write emergency messages.
log-fail-file=file
Path to file to write authentication failed session logs.
log-tcp=x.x.x.x:port
Specifies IPv4 address and port to send logs to (for log_tcp module).
You may specify multiple log-tcp options.
syslog=ident[,facility]
Send logs to system logger.
facility may be: daemon, local0-local7 or numeric value.
copy=0|1
Specifies whether to duplicate session log to general log.
(Useful when per-session/per-user logs are not used)
per-session-dir=path
Directory for session logs. If specified each session will be logged separately to file which name is unique session identifier.
per-user-dir=dir
Directory for user logs. If specified all sessions of same user will be logged to file which name is user name.
per-session=0|1
Specifies whether each session of same user will be logger separately to directory specified by per-user-dir and subdirectory which name is user name and to file which name os unique session identifier.
level=n
Specifies log level which values are:
0 – turn off any logging
1 – log only error messages
2 – log error and warning messages
3 – log error, warning and minimum information messages (use this level in conjuction with verbose option of other modules if you need verbose logging)
4 – log error, warning and full information messages
5 – log all messages including debug messages
[log-pgsql]

Configuration of log_pgsql module.

conninfo=conninfo
Conninfo to connect to PostgreSQL server.
log-table=table
Table to send log messages. Table must contain following field:
timestamp - timestamp
username - text
sessionid - text
msg - text
[pppd_compat]

Configuration of pppd_compat module.

ip-pre-up=file
Path to ip-pre-up script which is executed before ppp interface comes up, useful to setup firewall rules before any traffic can pass through the interface.
ip-up=file
Path to ip-up script which is executed when ppp interfaces is completely configured and started.
ip-down=file
Path to ip-down script which is executed when session is about to terminate.
ip-change=file
Path to ip-change script which is executed for RADIUS CoA handling.
radattr=prefix
Prefix of radattr files (for example /var/run/radattr, resulting files will be /var/run/radattr.pppX).
verbose=0|1
Specifies whether to produce verbose logging.
[chap-secrets]

Configuration of chap-secrets module.

gw-ip-address=x.x.x.x
Specifies address to use as local address of ppp interfaces if chap-secrets is used for IPv4 address assignment.
chap-secrets=file
Specifies alternate chap-secrets file location (default is /etc/ppp/chap-secrets).
[ip-pool]

Configuration of ippool module.

gw-ip-address=x.x.x.x
Specifies single IP address to be used as local address of ppp interfaces.
gw=range
Specifies range of local address of ppp interfaces if form:
x.x.x.x/mask[,pool_name] (for example 10.0.0.0/8)
x.x.x.x-y[,pool_name] (for example 10.0.0.1-254)
tunnel=range
Specifies range of remote address of ppp interfaces, format is same as above.
x.x.x.x/mask[,pool_name] :
x.x.x.x-y[,pool_name]
Also specifies range of remote address of ppp interfaces.
[ipv6-pool]

Configuration of ipv6pool module.
Format of each row is ipv6prefix/mask,prefix_len
for example:
`fc00:0:1::/48,64` - specifies pool of address by dividing prefix fc00:0:1::/48 to subnetworks with 64 prefix len, e.g:
`fc00:0:1:0::/64`
`fc00:0:1:1::/64`
…
`fc00:0:1:ffff::/64`

delegate=ipv6prefix/mask,prefix_len
Specifies range of prefixes to delegate to clients through DHCPv6 prefix delegation (rfc3633).
Format is same as described above.
[connlimit]

This module limits connection rate from single source.

limit=count/time
Specifies acceptable rate of connections, for example limit=1/s or limit=10/3m.
burst=count
timeout=n
Specifies timeout in seconds after which module doesn't check rate until burst number of connections will be arrived.


Este protótipo segue os padrões estabelecidos para Plataforma Planeta V5

PPPoE Server  - http://accel-ppp.org/

ACCEL-PPP compõe-se de uma implementação construida do zero com compatibilidade com os protocolos: PPTP/PPPoE/L2TP.

Características:

1. Arquitetura modular
2. I/O núcleo de alto desempenho multi-threaded
3. Suporte PPTP
4. Suporte PPPoE (incluindo extensão de TR-101)
5. Suporte L2TPv2 (sem IPsec)
5. Autenticação com Radius
6. Extensão ao Radius DM / CoA
7. Tipos de autenticação suportados: PAP, CHAP (MD5), Microsoft CHAP Extentions (incluindo a versão 2), não é suportado - EAP
8. Suport MPPE
9. A compressão não é suportada
10. Mecanismo de registro Extensible com o apoio de registro por sessão, implementado log em arquivo, faça o login com o anfitrião remoto e log para PostgreSQL tem como alvo
11. Extensível usuário / senha de dados, implementado Radius, pppd compatíveis chap-secrets e pools
12. Extensível a pool IP, implementado Radius, chap-secrets e piscinas estáticos
13. Pppd suportado roteiros compatível ip-up / ip-down
14. Contém shaper Builtin tbf / htb
15. Interface de linha de comando via telnet
16. Suporte SNMP (master ou subagent via AgentX)


Preparando as dependências:

#  yum install openssl-dev

#  yum install libnl-dev

#  yum install libpcre3-dev

#  yum install libssl-dev

#  yum install pcre-devel

#  yum install net-snmp-libs

#  yum  install lua-static

Baixar o sourde code :

# wget ""http://downloads.sourceforge.net/project/accel-ppp/accel-ppp-1.10.0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Faccel-ppp%2Ffiles%2F%3Fsource%3Dnavbar&ts=1454957539&use_mirror=tenet"

# bzip2 -d accel-ppp-1.10.0.tar.bz2

# tar -xvf accel-ppp-1.10.0.tar

# cd accel-ppp-1.10.0

# mkdir build

# cd build

# cmake ../accel-ppp-1.10.0/


Configuração básica do accel-pppoe.conf:

[modules]
log_syslog

pptp
l2tp
pppoe

auth_mschap_v2
auth_mschap_v1
auth_chap_md5
auth_pap

ippool

chap-secrets

[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4

[ppp]
verbose=1
min-mtu=1280
mtu=1400
mru=1400
ipv4=require
ipv6=deny

[lcp]
echo-interval=30
echo-failure=3

[pptp]
verbose=1

[pppoe]
interface=eth0
verbose=1

[l2tp]
verbose=1

[dns]
dns1=172.16.0.1
dns2=172.16.1.1

[client-ip-range]
192.168.0.0/24

[ip-pool]
gw-ip-address=192.168.2.1
192.168.2.2-255

[log]
log-emerg=/var/log/accel-ppp/emerg.log
#syslog=accel-pppd,daemon
copy=1
level=3

[chap-secrets]
gw-ip-address=192.168.0.1
#chap-secrets=/etc/ppp/chap-secrets

[cli]
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
#password=123


Configuração do /etc/ppp/chap-secrets

user1 * password1 *
user2 * password2 *


Instalação do Openvswitch

 
# yum -y install wget openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool

# adduser ovs

# su - ovs
 
# mkdir -p ~/rpmbuild/SOURCES

# export http_proxy=http://10.32.8.117:8080

# wget http://openvswitch.org/releases/openvswitch-2.3.2.tar.gz

# cp openvswitch-2.3.2.tar.gz ~/rpmbuild/SOURCES/

# cd ~/rpmbuild/SOURCES/

# tar -zxvf openvswitch-2.3.2.tar.gz

# sed 's/openvswitch-kmod, //g' openvswitch-2.3.2/rhel/openvswitch.spec > openvswitch-2.3.2/rhel/openvswitch_no_kmod.spec

# rpmbuild -bb --nocheck openvswitch-2.3.2/rhel/openvswitch_no_kmod.spec



A arquitetura Quagga consiste em um daemon central (zebra), que é uma camada de abstração para o kernel do Unix e apresenta a API ZServ através de um soquete do domínio Unix ou socket TCP para os clientes Quagga. Os clientes ZServ tipicamente implementam um protocolo de roteamento e comunicam atualizações de roteamento para o daemon zebra. Existentes clientes ZServ são:

ospfd, implementa Open Shortest Path First (OSPFv2)
isisd, implementação de Sistema de Intermediário Intermediate System (IS-IS)
ripd, implementa Routing Information Protocol (RIP) versão 1 e 2;
ospf6d, implementa Open Shortest Path First (OSPFv3) para IPv6
ripngd, implementa Routing Information Protocol (RIP) para IPv6
bgpd, implementa Border Gateway Protocol (BGPv4 +), incluindo apoio à família de endereços para multicast IP e IPv6
pimd, implementa protocolo Independent Multicast (PIM-SSM) para multicast específico da origem

Instalação:

#  yum install quagga.x86_64 quagga-devel.x86_64 quagga-contrib.x86_64


Configuração do QinQ

Configure an Ethernet interface as a QinQ VLAN trunk

# ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 10.32.255.246 netmask 255.255.255.0 broadcast 10.32.255.255
        inet6 fe80::a00:27ff:fe0c:15dd prefixlen 64 scopeid 0x20<link>
        ether 08:00:27:0c:15:dd txqueuelen 1000 (Ethernet)
        RX packets 85311 bytes 6413400 (6.1 MiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 79416 bytes 122030323 (116.3 MiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        ether 08:00:27:f0:7d:f8 txqueuelen 1000 (Ethernet)
        RX packets 2644 bytes 194496 (189.9 KiB)
        RX errors 0 dropped 279 overruns 0 frame 0
        TX packets 785 bytes 133145 (130.0 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


# ip link add link enp0s8 enp0s8.2000 type vlan proto 802.1Q id 2000

# ip link add link enp0s8.2000 enp0s8.2000.5 type vlan proto 802.1Q id 5

# ip link set enp0s8.2000 up

# ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.32.255.246  netmask 255.255.255.0  broadcast 10.32.255.255
        inet6 fe80::a00:27ff:fe0c:15dd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:0c:15:dd  txqueuelen 1000  (Ethernet)
        RX packets 86456  bytes 6524295 (6.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 79424  bytes 122035177 (116.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 08:00:27:f0:7d:f8  txqueuelen 1000  (Ethernet)
        RX packets 2777  bytes 204068 (199.2 KiB)
        RX errors 0  dropped 283  overruns 0  frame 0
        TX packets 785  bytes 133145 (130.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8.2000: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fef0:7df8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:f0:7d:f8  txqueuelen 0  (Ethernet)
        RX packets 1491  bytes 74550 (72.8 KiB)
        RX errors 0  dropped 354  overruns 0  frame 0
        TX packets 31  bytes 4374 (4.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8.2000.5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 08:00:27:f0:7d:f8  txqueuelen 0  (Ethernet)
        RX packets 1137  bytes 52302 (51.0 KiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 1  bytes 90 (90.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# tcpdump -n -nn -i enp0s8.2000.5

# tcpdump -n -nn -i enp0s8.2000
 

Script qinq.sh para criação e remoção das sub-interfaces Vlan (QinQ):

# vi qinq.sh

ip link del enp0s8.2000.5
ip link del enp0s8.2020.6
ip link del enp0s8.2020.11
ip link del enp0s8.2000
ip link del enp0s8.2020

ip link add link enp0s8 enp0s8.2000 type vlan proto 802.1Q id 2000
ip link add link enp0s8.2000 enp0s8.2000.5 type vlan proto 802.1Q id 5

ip link add link enp0s8 enp0s8.2020 type vlan proto 802.1Q id 2020
ip link add link enp0s8.2020 enp0s8.2020.6 type vlan proto 802.1Q id 6
ip link add link enp0s8.2020 enp0s8.2020.11 type vlan proto 802.1Q id 11

ip link set enp0s8.2000    up
ip link set enp0s8.2020    up
ip link set enp0s8.2000.5  up
ip link set enp0s8.2020.6  up
ip link set enp0s8.2020.11 up





Planejamento


Cronograma Macro

Nome da tarefa: Avaliar viabilidade de virtualização/distribuição dos componentes do BRAS Duração: Semanas 1, 2, 3, 4 Início da Linha de Base: 15/02/16 Término da Linha de Base: 05/02/16 Responsável: Dhenner

Nome da tarefa: RF2. Implementar Métodos de Encapsulamento Duração: Semanas 2, 3, 4 Início da Linha de Base: 22/02/16 Término da Linha de Base: 05/02/16 Responsável: João Paulo

Nome da tarefa: RF1. Implementar a comunicação do modem xDSL com o OpenBRAS Duração: Semanas 5, 6, 7 Início da Linha de Base: 12/02/16 Término da Linha de Base: 26/02/16 Responsável: Dhenner

Nome da tarefa: RF3. Implementar protocolos de roteamento Duração: Semanas 8, 9, 10 Início da Linha de Base: 04/03/16 Término da Linha de Base: 18/03/16 Responsável: João Paulo

Nome da tarefa: RF4. Implementar o Gerenciamento do OpenBRAS Duração: Semanas 11, 12, 13 Início da Linha de Base: 25/03/16 Término da Linha de Base: 08/04/16 Responsável: Dhenner

Nome da tarefa: Testes e Correções Duração: Semanas 14, 15, 16 Início da Linha de Base: 15/04/16 Término da Linha de Base: 29/04/16 Responsável: João Paulo


Histórico


Pesquisadores

  • Bruno César Duarte Nunes
  • Bruno Cesar de Oliveira
  • Dhenner Santos Peres
  • Fernando Terra Silva
  • Frank Rodrigues de OIiveira
  • Hélvio Pereira de Freitas
  • Henrique Barbosa Leite
  • João Henrique de Souza Pereira
  • João Paulo Mendonça Oliveira
  • Luiz Cláudio Theodoro
  • Matheus Silva Santos
  • Murilo Borges Gomes Machado
  • Rafaella Silva Brito