|
|
| Linha 11: |
Linha 11: |
| == Objetivos == | | == 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.
| | 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. |
|
| |
|
| <br> | | <br> |
| Linha 19: |
Linha 19: |
| <br> | | <br> |
|
| |
|
| Explique em que contexto macro esta pesquisa será inserida | | 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. |
| Relacione com outros projetos e pesquisas na área, na empresa ou mesmo no mundo | | |
| Identifique algumas possibilidades de evolução desta idéia | | <br> |
| Tente enquadrar esta idéia em um grupo, propósito ou categoria específica | | |
| | <br> |
| | |
| | == Enquadramento == |
| | |
| | A. Pesquisa Básica, Pesquisa Aplicada ou Desenvolvimento |
| | |
| | <br> |
| | |
| | <br> |
| | |
| | == Desafio tecnológico == |
| | |
| | Qual a barreira ou desafio tecnológico superável? |
| | |
| | <br> |
|
| |
|
| <br> | | <br> |
| Linha 45: |
Linha 60: |
|
| |
|
| = Fase II - Ensino = | | = Fase II - Ensino = |
| | |
| | <br> |
|
| |
|
| <br> | | <br> |
| Linha 81: |
Linha 98: |
| <br> | | <br> |
|
| |
|
| == Direcionadores chave para esta iniciativa == | | == Direcionadores chave == |
|
| |
|
| Descrever em tópicos o que esta iniciativa pode proporcionar | | Descrever em tópicos o que esta iniciativa pode proporcionar |
| | |
| | <br><br> |
| | |
| | == Elemento inovador == |
| | |
| | Destaque o elemento tecnologicamente novo ou inovador do projeto |
|
| |
|
| <br><br> | | <br><br> |
| Linha 106: |
Linha 129: |
|
| |
|
| Explique o escopo deste protótipo | | Explique o escopo deste protótipo |
| | |
| | <br> |
| | |
| | == Metodologia == |
| | |
| | <br> |
| | |
| | Qual metodologia ou método utilizado? |
| | |
| | <br> |
|
| |
|
| <br> | | <br> |
| Linha 127: |
Linha 160: |
| == Detalhamento Técnico == | | == Detalhamento Técnico == |
|
| |
|
| === Arquitetura implementada:[[Image:Solucao_OpenBRAS_-_v4.png]] ===
| | <br> |
| | |
| === Secões de configuração do accel pppoe<br> ===
| |
| | |
| Sumário das seções do arquivo de configuração .conf do software accel pppoe:
| |
| <pre>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
| | Descreva especificamente os aspectos técnicos desta pesquisa |
| 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.
| |
| | |
| </pre>
| |
| <br> Este protótipo segue os padrões estabelecidos para [http://intranet/wiki/index.php/Plataforma_Planeta_V5 Plataforma Planeta V5]
| |
| | |
| === PPPoE Server - [http://accel-ppp.org/wiki/doku.php?id=start http://accel-ppp.org/]<br> ===
| |
| | |
| ACCEL-PPP compõe-se de uma implementação construida do zero com compatibilidade com os protocolos: PPTP/PPPoE/L2TP.<br>
| |
| | |
| Características:<br>
| |
| | |
| 1. Arquitetura modular <br>2. I/O núcleo de alto desempenho multi-threaded <br>3. Suporte PPTP <br>4. Suporte PPPoE (incluindo extensão de TR-101) <br>5. Suporte L2TPv2 (sem IPsec) <br>5. Autenticação com Radius<br>6. Extensão ao Radius DM / CoA<br>7. Tipos de autenticação suportados: PAP, CHAP (MD5), Microsoft CHAP Extentions (incluindo a versão 2), não é suportado - EAP <br>8. Suport MPPE <br>9. A compressão não é suportada <br>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 <br>11. Extensível usuário / senha de dados, implementado Radius, pppd compatíveis chap-secrets e pools<br>12. Extensível a pool IP, implementado Radius, chap-secrets e piscinas estáticos <br>13. Pppd suportado roteiros compatível ip-up / ip-down <br>14. Contém shaper Builtin tbf / htb <br>15. Interface de linha de comando via telnet <br>16. Suporte SNMP (master ou subagent via AgentX)<br>
| |
|
| |
|
| <br> | | <br> |
|
| |
|
| ==== Preparando as dependências: ====
| |
| <pre># 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</pre>
| |
| ==== Baixar o sourde code : ====
| |
| <pre># 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/</pre>
| |
| <br> | | <br> |
|
| |
|
| ==== Configuração básica do accel-pppoe.conf: ====
| |
| <pre>[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
| |
| </pre>
| |
| <br> | | <br> |
|
| |
|
| ==== Configuração do /etc/ppp/chap-secrets ====
| |
| <pre>user1 * password1 *
| |
| user2 * password2 *
| |
| </pre>
| |
| === <br> Instalação do Openvswitch<br> ===
| |
| <pre>
| |
| # 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
| |
|
| |
|
| |
| </pre>
| |
| <br> | | <br> |
|
| |
|
| === Quagga - http://www.nongnu.org/quagga/<br> === | | = Planejamento = |
| | |
| 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)<br> '''isisd''', implementação de Sistema de Intermediário Intermediate System (IS-IS)<br> '''ripd''', implementa Routing Information Protocol (RIP) versão 1 e 2;<br> '''ospf6d''', implementa Open Shortest Path First (OSPFv3) para IPv6<br> '''ripngd''', implementa Routing Information Protocol (RIP) para IPv6<br> '''bgpd''', implementa Border Gateway Protocol (BGPv4 +), incluindo apoio à família de endereços para multicast IP e IPv6<br> '''pimd''', implementa protocolo Independent Multicast (PIM-SSM) para multicast específico da origem<br>
| |
|
| |
|
| === Instalação:<br> ===
| |
| <pre># yum install quagga.x86_64 quagga-devel.x86_64 quagga-contrib.x86_64</pre>
| |
| <br> | | <br> |
|
| |
|
| == Configuração do QinQ == | | == Cronograma Macro == |
| | |
| [http://www.microhowto.info/howto/configure_an_ethernet_interface_as_a_qinq_vlan_trunk.html Configure an Ethernet interface as a QinQ VLAN trunk<br>]<br>
| |
| <pre># 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
| |
|
| |
| </pre>
| |
| Script '''qinq.sh''' para criação e remoção das sub-interfaces Vlan (QinQ):<br>
| |
| <pre># 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
| |
| | |
| </pre>
| |
| <br> <br><br>
| |
| | |
| = Cronograma Macro = | |
|
| |
|
| <br> | | <br> |
|
| |
|
| = Histórico = | | == Histórico == |
| | |
| = Referências =
| |
| | |
| *[https://n40lab.wordpress.com/2015/06/28/centos-7-installing-openvswitch-2-3-2-lts/ https://n40lab.wordpress.com/2015/06/28/centos-7-installing-openvswitch-2-3-2-lts/]
| |
| *[http://accel-ppp.org/wiki/doku.php?id=start http://accel-ppp.org/wiki/doku.php?id=start]<br>
| |
| *[http://www.nongnu.org/quagga/ http://www.nongnu.org/quagga/]
| |
|
| |
|
| <br> | | <br> |
|
| |
| *[http://techbackground.blogspot.com.br/2013/07/the-open-vswitch-plugin-with-vlans.html http://techbackground.blogspot.com.br/2013/07/the-open-vswitch-plugin-with-vlans.html]
| |
|
| |
|
| = Pesquisadores = | | = Pesquisadores = |
|
| |
|
| *Bruno César Duarte Nunes | | *<br> |
| *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
| |