SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Os protocolos TCP e DCCP                            Implementa¸˜o dos CCIDs
                                                              ca                      Atividades




                Programa¸˜o para o Kernel Linux (Parte 2)
                        ca

                                Ivo Augusto Andrade Rocha Calado

                     Instituto Federal de Educa¸˜o, Ciˆncia e Tecnologia de Alagoas
                                               ca     e


                                            8 de Dezembro de 2011




1 / 37                                             Ivo Calado                              IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades




Agenda I
         1   Os protocolos TCP e DCCP
               TCP
               DCCP
               Implementa¸˜es no Kernel
                          co
         2   Implementa¸˜o dos CCIDs
                       ca
               CCID-2
               CCID-3 e CCID-4
               CCID-249
         3   Atividades
               Adicionando um Novo CCID
               Adicionando uma nova Sysctl
               Logando os pacotes enviados
2 / 37                                      Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                  Atividades




Observa¸˜o sobre este material
       ca




              Este material ´ derivado de diversos trabalhos livremente
                            e
              dispon´
                    ıveis na Internet




3 / 37                                      Ivo Calado                         IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



TCP


TCP: O que ´?
           e



              Protocolo de transporte mais difundido no mundo
              Provˆ comunica¸˜o unicast
                  e         ca
              Efetua controle de congestionamento e de fluxo
              Protocolo confi´vel: os dados perdidos na rede s˜o
                             a                               a
              retransmitidos




4 / 37                                      Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                    Atividades



TCP


TCP: Controles de congestionamento
              Possui diversas varia¸˜es do mecanismo de controle de
                                   co
              congestionamento
              Utiliza duas fases: partida lenta e preven¸˜o de
                                                        ca
              congestionamento
              A vers˜o mais conhecida ´ o Reno que implementa o AIMD
                      a                 e
              Por´m, existem diversas outras variantes como: Tcp Cubic,
                  e
              Bic, NewReno, Vegas, Compound, WestWood, Africa, etc
              No linux o algoritmo padr˜o ´ o Cubic enquanto que no
                                         a e
              Windows Vista ´ o Compound
                              e
              A sele¸˜o algoritmo default de CC ´ realizada ou na
                     ca                            e
              configura¸˜o do kernel ou via sysctl, por´m o valor ´ v´lido
                         ca                             e         e a
              em n´ de protocolo (todos os sockets s˜o afetados)
                    ıvel                                 a
5 / 37                                      Ivo Calado                           IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



DCCP


DCCP: O que ´?
            e




              Protocolo de transporte
              Provˆ comunica¸˜o unicast
                  e         ca
              Controle de congestionamento e entrega n˜o confi´vel
                                                      a      a
              Possui como principal foco aplica¸˜es multim´
                                               co         ıdia




6 / 37                                      Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                    Atividades



DCCP


DCCP: Controles de congestionamento


              Oferece uma estrutura componentiz´vel para gerˆncia de
                                                a           e
              mecanismos de controle de congestionamento
              Possibilita que novos algoritmos sejam “plugados” no formato
              de CCIDs
              A sele¸˜o do algoritmo de CC se d´ ou via sysctl (todos os
                    ca                          a
              sockets s˜o afetados) ou por socket (apenas a transmiss˜o ´
                       a                                             a e
              afetada)
              Uma transmiss˜o ´ composta por duas “half-connections”
                           a e



7 / 37                                      Ivo Calado                           IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



DCCP


CCIDs: 2, 3, 4, 249
         Atualmente encontram-se padronizados 3 mecanismos de controle
         de congestionamento no DCCP e um experimental
              CCID-2 (RFC4341): baseado em janela, esquema AIMD
              (Additive Increase Multiplicative Decrease) e confirma¸˜o
                                                                    ca
              seletiva (Ack Vectors). Uso: jogos online
              CCID-3 (RFC4342): baseado na equa¸˜o TFRC, evita
                                                    ca
              mudan¸as abruptas na taxa de transmiss˜o (diminui¸˜o
                      c                                a         ca
              suave). Uso: fluxo de v´ ıdeo
              CCID-4 (RFC5622): variante do TFRC voltado para
              aplica¸˜es que podem adaptar o fluxo a partir da altera¸˜o do
                     co                                              ca
              tamanho do pacote enviado. Uso: VoIP
              CCID-249 (Dccp Cubic): algoritmo baseado no TCP Cubic,
              voltado para redes de alta velocidade
8 / 37                                      Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



Implementa¸˜es no Kernel
          co


As implementa¸˜es no Kernel
             co

         Apresentam arquiteturas bastante diferentes
              TCP considera que todos os algoritmos de CC s˜o compostos
                                                           a
              dos estados partida lenta e preven¸˜o de
                                                ca
              congestionamento
              DCCP apresenta uma interface mais gen´rica e, portanto,
                                                   e
              mais flex´ para o mecanismo de controle de
                       ıvel
              congestionamento
              Para o registro do protocolo no sistema operacional ambos os
              protocolos devem criar um instˆncia das structs proto,
                                             a
              net protocol, inet protosw e pernet operations e
              registr´-las no SO
                     a

9 / 37                                      Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                 Atividades



Implementa¸˜es no Kernel
          co


Implementa¸˜o do TCP
          ca



              Definido em linux/net/ipv4
              Apresenta tanto os componentes gen´ricos quanto as
                                                e
              implementa¸˜es dos algoritmos de CC
                         co
              Cada algoritmo de CC, ` exce¸˜o do Reno, ´ implementado
                                    a     ca           e
              como um m´dulo
                          o
              Estrutura de um algoritmo ´ definida em include/net/tcp.h
                                        e




10 / 37                                     Ivo Calado                        IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                          Implementa¸˜o dos CCIDs
                                                            ca                                    Atividades



Implementa¸˜es no Kernel
          co


Implementa¸˜o do TCP
          ca
              struct list head l i s t ;
          unsigned long f l a g s ;
          v o i d (∗ i n i t ) ( s t r u c t sock ∗ sk ) ;
          v o i d (∗ r e l e a s e ) ( s t r u c t sock ∗ sk ) ;
          u32 ( ∗ s s t h r e s h ) ( s t r u c t s o c k ∗ s k ) ;
          u32 ( ∗ min cwnd ) ( c o n s t s t r u c t s o c k ∗ s k ) ;
          v o i d ( ∗ c o n g a v o i d ) ( s t r u c t s o c k ∗ sk , u32 ack , u32
                 in flight );
          v o i d ( ∗ s e t s t a t e ) ( s t r u c t s o c k ∗ sk , u8 n e w s t a t e ) ;
          v o i d ( ∗ c w n d e v e n t ) ( s t r u c t s o c k ∗ sk , enum t c p c a e v e n t
                 ev ) ;
          u32 ( ∗ undo cwnd ) ( s t r u c t s o c k ∗ s k ) ;
          v o i d ( ∗ p k t s a c k e d ) ( s t r u c t s o c k ∗ sk , u32 num acked , s 3 2
                 rtt us ) ;
          v o i d ( ∗ g e t i n f o ) ( s t r u c t s o c k ∗ sk , u32 e x t , s t r u c t
                 s k b u f f ∗ skb ) ;
11 / 37                                           Ivo Calado                                           IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Implementa¸˜es no Kernel
          co


Implementa¸˜o do TCP
          ca



          Como pode-se ver, a implementa¸˜o do algoritmo de CC no TCP ´
                                        ca                            e
          fortemente ligada a
              Mudan¸a de estados da conex˜o
                   c                     a
              Recebimento de pacote de confirma¸˜o
                                              ca
              Limiar de partida lenta




12 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca               Atividades



Implementa¸˜es no Kernel
          co


Implementa¸˜o do DCCP
          ca



              Definido em linux/net/dccp
              Apresenta uma estrutura bem definida sobre o que ´ o n´cleo
                                                              e    u
              do protocolo e o que ´ algoritmo de controle de
                                   e
              congestionamento
              Apesar de n˜o ser implementado como m´dulo, a estrutura do
                          a                         o
              controle de congestionamento ´ componentiz´vel
                                           e            a




13 / 37                                     Ivo Calado                      IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                           Implementa¸˜o dos CCIDs
                                                             ca                                   Atividades



Implementa¸˜es no Kernel
          co


Opera¸oes de um CCID
     c˜

          struct ccid operations {
               v o i d ( ∗ c c i d h c r x p a c k e t r e c v ) ( s t r u c t s o c k ∗ sk ,
                       s t r u c t s k b u f f ∗ skb ) ;
               v o i d ( ∗ c c i d h c t x p a c k e t r e c v ) ( s t r u c t s o c k ∗ sk ,
                       s t r u c t s k b u f f ∗ skb ) ;
               i n t ( ∗ c c i d h c t x s e n d p a c k e t ) ( s t r u c t s o c k ∗ sk ,
                       s t r u c t s k b u f f ∗ skb ) ;
                 v o i d ( ∗ c c i d h c t x p a c k e t s e n t ) ( s t r u c t s o c k ∗ sk ,
                       unsigned i n t len ) ;

          // O u t r a s f u n c o e s e
                               ¸˜
          };



14 / 37                                            Ivo Calado                                          IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



Implementa¸˜es no Kernel
          co


Um pouco mais sobre a implementa¸˜o dos CCIDs
                                ca



              Os CCIDs s˜o livres para implementar as funcionalidades que
                        a
              desejarem
              Antes de fazer a chamada a alguma das a¸˜es do CCID, o
                                                       co
              n´cleo DCCP verifica se tal fun¸˜o ´, de fato, implementada e
               u                            ca e
              caso n˜o seja descarta a chamada
                    a




15 / 37                                     Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                 Atividades



CCID-2


Funcionamento


              Cria uma estrutura em lista que armazena os ultimos Acks
                                                          ´
              recebidos (n˜o faz uso de Ack acumulativo!)
                          a

          Porque uma abordagem utilizando Ack acumulativo n˜o ´ poss´
                                                           a e      ıvel
          no DCCP?




16 / 37                                     Ivo Calado                        IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                 Atividades



CCID-2


Funcionamento


              Cria uma estrutura em lista que armazena os ultimos Acks
                                                          ´
              recebidos (n˜o faz uso de Ack acumulativo!)
                          a

          Porque uma abordagem utilizando Ack acumulativo n˜o ´ poss´
                                                           a e      ıvel
          no DCCP?
          Por que o protocolo DCCP ´ n˜o confi´vel!!
                                   e a       a

              Os hosts trocam os vetores de confirma¸˜o (enviado
                                                   ca
              juntamente com o pacote de dados)



16 / 37                                     Ivo Calado                        IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                  Atividades



CCID-3 e CCID-4


CCID-3

              Utiliza uma equa¸˜o para fazer o c´lculo da taxa de envio
                              ca                a
              Mais complexo que o CCID-2 pois necessita sincronizar o
              tempo de envio ao inv´s de ser Ack-Clocked
                                   e
              Utiliza o conceito de intervalo de perda (1 RTT) onde em um
              intervalo todas as perdas s˜o consideradas como apenas uma
                                          a
              Apresenta tanto um crescimento quanto uma queda na taxa
              de envio mais suave
              Define um tamanho fixo de pacotes (1500 bytes) e em caso de
              diminui¸˜o da taxa de envio altera o n´mero de pacotes
                     ca                             u
              enviados

17 / 37                                     Ivo Calado                         IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



CCID-3 e CCID-4


CCID-3 e CCID-4




              Varia¸˜o do CCID-3 onde, ao inv´s de variar o n´mero de
                   ca                        e               u
              pacotes enviados varia o tamanho dos pacotes
              Possui taxa de transmiss˜o limitada a 1,5 Mbps
                                      a
              CCID-4 ainda n˜o dispon´ na ´rvore principal do Kernel
                            a        ıvel a




18 / 37                                     Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



CCID-249


Funcionamento

              Implementa uma mistura entre TCP Cubic e CCID-2
              “Rouba” o mecanismo de confirma¸˜o seletiva via Ack
                                            ca
              Vectors do CCID-2
              Utiliza a fun¸˜o de c´lculo de janela do Tcp Cubic
                           ca      a
              Consegue obter maior vaz˜o que os outros CCIDs
                                      a
          Disponibiliza¸˜o
                       ca
              N˜o dispon´ na ´rvore principal do Kernel, sendo
                a         ıvel   a
              disponibilizado apenas na ´rvore git mantida por Gerrit
                                        a
              Renker (principal mantenedor do Dccp)


19 / 37                                     Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                Atividades



Adicionando um Novo CCID


Adicionando um Novo CCID



              Agora vamos criar um novo CCID
              Este CCID ir´ simular o protocolo UDP, ou seja, sem controle
                          a
              algum de taxa de envio
              Para isso, vamos escolher o n´mero 248 para ser o CCID (na
                                           u
              ´rvore oficial o Dccp Cubic ainda n˜o existe!)
              a                                 a




20 / 37                                     Ivo Calado                       IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Adicionando um Novo CCID


1a etapa: Definir a constante para o CCID



              Abrir o arquivo include/linux/dccp.h
              Buscar o enum onde est´ definido DCCPC CCID3
                                    a
              Adicionar uma nova constante

            DCCPC CCID248 = 2 4 8 ,




21 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Adicionando um Novo CCID


2a etapa: Implementar o algoritmo


               Criar um novo arquivo chamado ccid248.c em
               linux/net/dccp/ccids item Adicionar a seguinte
               implementa¸˜o
                          ca

          #i n c l u d e " ../ ccid .h"

          struct ccid operations ccid248 ops = {
          . c c i d i d = DCCPC CCID248 ,
          . c c i d n a m e = " UDP - like "
          };




22 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                    Atividades



Adicionando um Novo CCID


3a etapa: Adicionar o CCID ` lista de CCIDs dispon´
                           a                      ıveis



              Abrir o arquivo linux/net/dccp/ccid.c
              No vetor ccid operations adicionar a seguinte linha no final

          #i f d e f CONFIG IP DCCP CCID248
                &c c i d 2 4 8 o p s ,
          #e n d i f




23 / 37                                     Ivo Calado                           IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                      Atividades



Adicionando um Novo CCID


4a etapa: Adicionar a constante de CCID a lista de CCIDs
que podem ser negociados


              Abrir o arquivo linux/net/dccp/feat.c
              Localizar a fun¸˜o dccp feat is valid sp val
                             ca
              Alterar o op¸˜o DCCPF CCID para que fique da seguinte
                          ca
              forma

          c a s e DCCPF CCID :
                  r e t u r n v a l == DCCPC CCID2 | | v a l == DCCPC CCID3 | |
                            v a l == DCCPC CCID248 ;




24 / 37                                     Ivo Calado                             IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                         Implementa¸˜o dos CCIDs
                                                           ca                             Atividades



Adicionando um Novo CCID


5a etapa: Adicionar as dependˆncias de negocia¸˜o
                             e                ca

              Ainda no arquivo linux/net/dccp/feat.c
              Localize a fun¸˜o dccp feat ccid deps
                            ca
              Adicione antes do switch final o seguinte bloco

          s t a t i c const struct ccid dependency
                 ccid248 dependencies [ 2 ] [ 2 ] = {
                       {{ 0 , 0 , 0 , 0 } } , {{ 0 , 0 , 0 , 0 }}
          };


              Adicionar ao switch final a seguinte linha

            c a s e DCCPC CCID248 : r e t u r n c c i d 2 4 8 d e p e n d e n c i e s [
                   is local ];

25 / 37                                         Ivo Calado                                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Adicionando um Novo CCID


6a etapa: Declarar opera¸oes do novo CCID em ccid.h
                        c˜

              Abra o arquivo linux/net/dccp/ccid.h
              Localize o seguinte trecho

          #i f d e f CONFIG IP DCCP CCID3
               extern struct ccid operations ccid3 ops ;
          #e n d i f


              Ap´s ele, adicione o seguinte trecho
                o

          #i f d e f CONFIG IP DCCP CCID248
               extern struct ccid operations ccid248 ops ;
          #e n d i f


26 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Adicionando um Novo CCID


7a etapa: Adicionar ao menu de configura¸˜es o novo
                                       co
CCID


              Abrir arquivo linux/net/dccp/ccids/Kconfig
              Adicione ao final da se¸˜o menu o seguinte trecho
                                    ca

          c o n f i g IP DCCP CCID248
               b o o l " CCID -248 (UDP - like ) novo CCID "
               def bool n
              −−−h e l p −−−
               Aqui v a i a d e s c r i ¸ ˜ o do novo CCID .
                                        ca




27 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                            Implementa¸˜o dos CCIDs
                                                              ca              Atividades



Adicionando um Novo CCID


8a etapa: Adicionar o novo CCID ` compila¸˜o
                                a        ca




                Abrir o arquivo linux/net/dccp/ccids/Makefile
                Ap´s a defini¸˜o do CCID-3, adicionar o seguinte trecho
                  o         ca

          dccp−y += c c i d s / c c i d 2 4 8 . o




28 / 37                                             Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Adicionando um Novo CCID


Testando


              Habilitar o novo CCID no menuconfig durante a configura¸˜o
                                                                   ca
              do kernel
              Compilar o Kernel e instalar
              Reiniciar a m´quina virtual
                           a
              Instalar o iperf com suporte a DCCP (http:
              //139.133.210.30/~gerrit/dccp/apps/iperf/zip/
              iperf-2.0.2_DCCP-patched-CBR-continuous.tar.bz2)




29 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                           Implementa¸˜o dos CCIDs
                                                             ca              Atividades



Adicionando um Novo CCID


Testando

               Executar a sysctl para alterar o CCID padr˜o
                                                         a

           s y s c t l −w n e t . dccp . d e f a u l t . t x c c i d =248
           s y s c t l −w n e t . dccp . d e f a u l t . r x c c i d =248


               Iniciar o lado servidor do iperf

          i p e r f −d −s − i 1


               Iniciar o lado cliente do iperf

          i p e r f −d −c 1 2 7 . 0 . 0 . 1 − i 1


30 / 37                                            Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                      Atividades



Adicionando uma nova Sysctl


Adicionando uma nova Sysctl


              sysctl ´ uma abordagem utilizada pelo SO para uma
                     e
              comunica¸˜o entre o espa¸o de usu´rio e o espa¸o de n´cleo
                        ca            c         a           c      u
              Realizado a partir de entradas em /proc
              O protocolo pode disponibilizar tanto a leitura quanto a
              altera¸˜o de algumas vari´veis
                    ca                 a
              A altera¸˜o do valor ´ realizado tanto via arquivo virtual em
                      ca           e
              /proc quanto via chamada de sistema syscall




31 / 37                                     Ivo Calado                             IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                     Implementa¸˜o dos CCIDs
                                                       ca               Atividades



Adicionando uma nova Sysctl


1a etapa: Definir a vari´vel a ser exportada
                       a

          Vamos considerar o compartilhamente de uma vari´vel inteira
                                                         a
          chamada “value1”
              Abrir o arquivo linux/net/dccp/proto.c
              Declarar uma vari´vel inteira chamada “value”
                               a
          int sysctl dccp value             read mostly = 5;


              Exportar a vari´vel em linux/net/dccp/dccp.h
                             a

          extern int           sysctl dccp value ;




32 / 37                                      Ivo Calado                      IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                          Implementa¸˜o dos CCIDs
                                                            ca              Atividades



Adicionando uma nova Sysctl


2a etapa: Adicionar uma entrada em ctl table

                Abrir arquivo linux/net/dccp/sysctl.c
                Localizar array dccp default table
                Adicionar o seguinte trecho ao final do array

          {
               . procname = " value " ,
               . d a t a = &s y s c t l d c c p v a l u e ,
               . maxlen = s i z e o f ( s y s c t l d c c p v a l u e ) ,
               . mode = 0 6 4 4 ,
               . proc handler = proc dointvec minmax ,
               . e x t r a 1 = &z e r o ,
          },


33 / 37                                           Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                                Implementa¸˜o dos CCIDs
                                                                  ca              Atividades



Adicionando uma nova Sysctl


Testando


                Ap´s salvar tudo e recompilar o Kernel, realizar a seguinte
                  o
                opera¸˜o
                     ca

           c a t / p r o c / s y s / n e t / dccp / d e f a u l t / v a l u e

          Ao realizar essa opera¸˜o deve ser impresso na tela o valor 5
                                ca
                Um segundo teste a ser realizado ´ a tentativa de alterar o
                                                 e
                valor da vari´vel
                             a
           s y s c t l −w n e t . dccp . d e f a u l t . v a l u e =10




34 / 37                                                 Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca                  Atividades



Logando os pacotes enviados


Logando os pacotes enviados


              Nesta atividade o aluno ir´ modificar o CCID rec´m criado
                                        a                    e
              para que toda vez que um pacote seja recebido ser´ realizado
                                                               a
              um log do pacote
              Deste modo, o aluno deve implementar a fun¸˜o correta que
                                                           ca
              registre o recebimento de pacotes no lado receptor

          Dica...
          Analisar fun¸˜o ccid hc tx packet sent
                      ca
          Tempo da atividade: 10 - 15 minutos


35 / 37                                     Ivo Calado                         IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Logando os pacotes enviados


Bibliografia I

             Jeremy Andrews.
             Linux: Documenting how patches reach the kernel.
             http://kerneltrap.org/node/3180, Maio 2004.
             The Git Community Book.
             The git community book.
             http://book.git-scm.com/index.html, Outubro 2011.
             Ariejan de Vroom.
             How to create and apply a patch with git.
             http://ariejan.net/2009/10/26/
             how-to-create-and-apply-a-patch-with-git/, Outubro
             2009.

36 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca
Os protocolos TCP e DCCP                    Implementa¸˜o dos CCIDs
                                                      ca              Atividades



Logando os pacotes enviados


Bibliografia II




             Wikipedia Foudation.
             Sco-linux controversies.
             http:
             //en.wikipedia.org/wiki/SCO-Linux_controversies,
             Outubro 2011.




37 / 37                                     Ivo Calado                     IFAL
Programa¸˜o para o Kernel Linux (Parte 2)
        ca

Mais conteúdo relacionado

Mais procurados

31283575 protocolos-de-transporte-tcp-e-udp
31283575 protocolos-de-transporte-tcp-e-udp31283575 protocolos-de-transporte-tcp-e-udp
31283575 protocolos-de-transporte-tcp-e-udpKievnny Mendonca
 
Lista 1 protocolos ate camada transporte
Lista 1 protocolos ate camada transporteLista 1 protocolos ate camada transporte
Lista 1 protocolos ate camada transporteredesinforma
 
TradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaTradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaJose Ricardo Maia Moraes
 
Aula 9 conceitos gerais de Rede
Aula 9   conceitos gerais de RedeAula 9   conceitos gerais de Rede
Aula 9 conceitos gerais de Redewab030
 
Aula 10 camada de rede
Aula 10   camada de redeAula 10   camada de rede
Aula 10 camada de redewab030
 
Aula 8 camada de transporte ii
Aula 8   camada de transporte iiAula 8   camada de transporte ii
Aula 8 camada de transporte iiwab030
 
Relatorio Final.PDF
Relatorio Final.PDFRelatorio Final.PDF
Relatorio Final.PDFJorge Matias
 
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...Edinaldo La-Roque
 
Lista exerc conceitos-mod-ref
Lista exerc conceitos-mod-refLista exerc conceitos-mod-ref
Lista exerc conceitos-mod-refredesinforma
 
Aula 9 camada de rede
Aula 9   camada de redeAula 9   camada de rede
Aula 9 camada de redewab030
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exerciciosredesinforma
 
Protocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioProtocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioJaguaraci Silva
 
Protocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioProtocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioJaguaraci Silva
 
Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processosFaculdade Mater Christi
 
RC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisRC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisUFPB
 

Mais procurados (20)

31283575 protocolos-de-transporte-tcp-e-udp
31283575 protocolos-de-transporte-tcp-e-udp31283575 protocolos-de-transporte-tcp-e-udp
31283575 protocolos-de-transporte-tcp-e-udp
 
Lista 1 protocolos ate camada transporte
Lista 1 protocolos ate camada transporteLista 1 protocolos ate camada transporte
Lista 1 protocolos ate camada transporte
 
TradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da LatenciaTradeTech Brazil 2011 - O Desafio Da Latencia
TradeTech Brazil 2011 - O Desafio Da Latencia
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Aula 9 conceitos gerais de Rede
Aula 9   conceitos gerais de RedeAula 9   conceitos gerais de Rede
Aula 9 conceitos gerais de Rede
 
Aula 10 camada de rede
Aula 10   camada de redeAula 10   camada de rede
Aula 10 camada de rede
 
Tcp e ip
Tcp e ipTcp e ip
Tcp e ip
 
Aula 8 camada de transporte ii
Aula 8   camada de transporte iiAula 8   camada de transporte ii
Aula 8 camada de transporte ii
 
Relatorio Final.PDF
Relatorio Final.PDFRelatorio Final.PDF
Relatorio Final.PDF
 
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
UFPA PPGCC LPRAD - Edinaldo La-Roque - Apresentacao Defesa Dissertacao Mestra...
 
Lista exerc conceitos-mod-ref
Lista exerc conceitos-mod-refLista exerc conceitos-mod-ref
Lista exerc conceitos-mod-ref
 
Aula 9 camada de rede
Aula 9   camada de redeAula 9   camada de rede
Aula 9 camada de rede
 
Redes lista exercicios
Redes lista exerciciosRedes lista exercicios
Redes lista exercicios
 
Protocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioProtocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem Fio
 
Protocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem FioProtocolos De Transporte Para Redes Sem Fio
Protocolos De Transporte Para Redes Sem Fio
 
Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
 
Exercícios
ExercíciosExercícios
Exercícios
 
Paper 6 point
Paper 6   pointPaper 6   point
Paper 6 point
 
Redes tcp udp
Redes tcp udpRedes tcp udp
Redes tcp udp
 
RC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes LocaisRC - SL05 - Camada de Enlace e Redes Locais
RC - SL05 - Camada de Enlace e Redes Locais
 

Semelhante a Programação para Kernel Linux - Parte 2

TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)Mariana Hiyori
 
Apresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogApresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogIsaque Profeta
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Eduardo Nicola F. Zagari
 
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)Mariana Hiyori
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteWellington Oliveira
 
Apresentação Eletro 5ºano
Apresentação Eletro 5ºanoApresentação Eletro 5ºano
Apresentação Eletro 5ºanoBruno Pereira
 
Apresentação (final) (2003) projecto 5ano electro
Apresentação  (final)  (2003) projecto 5ano electroApresentação  (final)  (2003) projecto 5ano electro
Apresentação (final) (2003) projecto 5ano electroBruno Pereira
 
Acesso a área de trabalho remota
Acesso a área de trabalho remotaAcesso a área de trabalho remota
Acesso a área de trabalho remotaRafael Requião
 

Semelhante a Programação para Kernel Linux - Parte 2 (20)

Hdlc ppp wan
Hdlc ppp wanHdlc ppp wan
Hdlc ppp wan
 
Arquitetura tcp ip - 1
Arquitetura tcp ip - 1Arquitetura tcp ip - 1
Arquitetura tcp ip - 1
 
Prova final 1
Prova final 1Prova final 1
Prova final 1
 
Protocolo Can
Protocolo CanProtocolo Can
Protocolo Can
 
Esclarecimentos da nova prova CCNA
Esclarecimentos da nova prova CCNAEsclarecimentos da nova prova CCNA
Esclarecimentos da nova prova CCNA
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)
 
INOVADEF - Apresentação Sender Rocha
INOVADEF - Apresentação Sender RochaINOVADEF - Apresentação Sender Rocha
INOVADEF - Apresentação Sender Rocha
 
10. camada de rede
10. camada de rede10. camada de rede
10. camada de rede
 
NTCIP no Brasil
NTCIP no BrasilNTCIP no Brasil
NTCIP no Brasil
 
Apresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogApresentação de Introdução ao Syslog
Apresentação de Introdução ao Syslog
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
 
Intro_redes.pdf
Intro_redes.pdfIntro_redes.pdf
Intro_redes.pdf
 
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 
Internet: evolução e serviços
Internet: evolução e serviçosInternet: evolução e serviços
Internet: evolução e serviços
 
Criação de uma rede
Criação de uma redeCriação de uma rede
Criação de uma rede
 
Apresentação Eletro 5ºano
Apresentação Eletro 5ºanoApresentação Eletro 5ºano
Apresentação Eletro 5ºano
 
Apresentação (final) (2003) projecto 5ano electro
Apresentação  (final)  (2003) projecto 5ano electroApresentação  (final)  (2003) projecto 5ano electro
Apresentação (final) (2003) projecto 5ano electro
 
Acesso a área de trabalho remota
Acesso a área de trabalho remotaAcesso a área de trabalho remota
Acesso a área de trabalho remota
 

Mais de Ivo Calado

Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre JqueryIvo Calado
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre BootstrapIvo Calado
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Ivo Calado
 
Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Ivo Calado
 
XHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageXHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageIvo Calado
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server PagesIvo Calado
 

Mais de Ivo Calado (11)

Tutorial sobre Jquery
Tutorial sobre JqueryTutorial sobre Jquery
Tutorial sobre Jquery
 
Tutorial sobre Bootstrap
Tutorial sobre BootstrapTutorial sobre Bootstrap
Tutorial sobre Bootstrap
 
Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1Programação para Kernel Linux - Parte 1
Programação para Kernel Linux - Parte 1
 
Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)Introdução a eXtensible Markup Language (XML)
Introdução a eXtensible Markup Language (XML)
 
XHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup LanguageXHTML: eXtensible Hypertext Markup Language
XHTML: eXtensible Hypertext Markup Language
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Javascript
JavascriptJavascript
Javascript
 
Java4web
Java4webJava4web
Java4web
 
HTML
HTMLHTML
HTML
 
CSS
CSSCSS
CSS
 

Último

Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfangelicass1
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESpatriciasofiacunha18
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 anoAdelmaTorres2
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAlexandreFrana33
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 

Último (20)

Mapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdfMapas Mentais - Português - Principais Tópicos.pdf
Mapas Mentais - Português - Principais Tópicos.pdf
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
637743470-Mapa-Mental-Portugue-s-1.pdf 4 ano
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptx
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 

Programação para Kernel Linux - Parte 2

  • 1. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Programa¸˜o para o Kernel Linux (Parte 2) ca Ivo Augusto Andrade Rocha Calado Instituto Federal de Educa¸˜o, Ciˆncia e Tecnologia de Alagoas ca e 8 de Dezembro de 2011 1 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 2. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Agenda I 1 Os protocolos TCP e DCCP TCP DCCP Implementa¸˜es no Kernel co 2 Implementa¸˜o dos CCIDs ca CCID-2 CCID-3 e CCID-4 CCID-249 3 Atividades Adicionando um Novo CCID Adicionando uma nova Sysctl Logando os pacotes enviados 2 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 3. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Observa¸˜o sobre este material ca Este material ´ derivado de diversos trabalhos livremente e dispon´ ıveis na Internet 3 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 4. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades TCP TCP: O que ´? e Protocolo de transporte mais difundido no mundo Provˆ comunica¸˜o unicast e ca Efetua controle de congestionamento e de fluxo Protocolo confi´vel: os dados perdidos na rede s˜o a a retransmitidos 4 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 5. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades TCP TCP: Controles de congestionamento Possui diversas varia¸˜es do mecanismo de controle de co congestionamento Utiliza duas fases: partida lenta e preven¸˜o de ca congestionamento A vers˜o mais conhecida ´ o Reno que implementa o AIMD a e Por´m, existem diversas outras variantes como: Tcp Cubic, e Bic, NewReno, Vegas, Compound, WestWood, Africa, etc No linux o algoritmo padr˜o ´ o Cubic enquanto que no a e Windows Vista ´ o Compound e A sele¸˜o algoritmo default de CC ´ realizada ou na ca e configura¸˜o do kernel ou via sysctl, por´m o valor ´ v´lido ca e e a em n´ de protocolo (todos os sockets s˜o afetados) ıvel a 5 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 6. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades DCCP DCCP: O que ´? e Protocolo de transporte Provˆ comunica¸˜o unicast e ca Controle de congestionamento e entrega n˜o confi´vel a a Possui como principal foco aplica¸˜es multim´ co ıdia 6 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 7. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades DCCP DCCP: Controles de congestionamento Oferece uma estrutura componentiz´vel para gerˆncia de a e mecanismos de controle de congestionamento Possibilita que novos algoritmos sejam “plugados” no formato de CCIDs A sele¸˜o do algoritmo de CC se d´ ou via sysctl (todos os ca a sockets s˜o afetados) ou por socket (apenas a transmiss˜o ´ a a e afetada) Uma transmiss˜o ´ composta por duas “half-connections” a e 7 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 8. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades DCCP CCIDs: 2, 3, 4, 249 Atualmente encontram-se padronizados 3 mecanismos de controle de congestionamento no DCCP e um experimental CCID-2 (RFC4341): baseado em janela, esquema AIMD (Additive Increase Multiplicative Decrease) e confirma¸˜o ca seletiva (Ack Vectors). Uso: jogos online CCID-3 (RFC4342): baseado na equa¸˜o TFRC, evita ca mudan¸as abruptas na taxa de transmiss˜o (diminui¸˜o c a ca suave). Uso: fluxo de v´ ıdeo CCID-4 (RFC5622): variante do TFRC voltado para aplica¸˜es que podem adaptar o fluxo a partir da altera¸˜o do co ca tamanho do pacote enviado. Uso: VoIP CCID-249 (Dccp Cubic): algoritmo baseado no TCP Cubic, voltado para redes de alta velocidade 8 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 9. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co As implementa¸˜es no Kernel co Apresentam arquiteturas bastante diferentes TCP considera que todos os algoritmos de CC s˜o compostos a dos estados partida lenta e preven¸˜o de ca congestionamento DCCP apresenta uma interface mais gen´rica e, portanto, e mais flex´ para o mecanismo de controle de ıvel congestionamento Para o registro do protocolo no sistema operacional ambos os protocolos devem criar um instˆncia das structs proto, a net protocol, inet protosw e pernet operations e registr´-las no SO a 9 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 10. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Implementa¸˜o do TCP ca Definido em linux/net/ipv4 Apresenta tanto os componentes gen´ricos quanto as e implementa¸˜es dos algoritmos de CC co Cada algoritmo de CC, ` exce¸˜o do Reno, ´ implementado a ca e como um m´dulo o Estrutura de um algoritmo ´ definida em include/net/tcp.h e 10 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 11. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Implementa¸˜o do TCP ca struct list head l i s t ; unsigned long f l a g s ; v o i d (∗ i n i t ) ( s t r u c t sock ∗ sk ) ; v o i d (∗ r e l e a s e ) ( s t r u c t sock ∗ sk ) ; u32 ( ∗ s s t h r e s h ) ( s t r u c t s o c k ∗ s k ) ; u32 ( ∗ min cwnd ) ( c o n s t s t r u c t s o c k ∗ s k ) ; v o i d ( ∗ c o n g a v o i d ) ( s t r u c t s o c k ∗ sk , u32 ack , u32 in flight ); v o i d ( ∗ s e t s t a t e ) ( s t r u c t s o c k ∗ sk , u8 n e w s t a t e ) ; v o i d ( ∗ c w n d e v e n t ) ( s t r u c t s o c k ∗ sk , enum t c p c a e v e n t ev ) ; u32 ( ∗ undo cwnd ) ( s t r u c t s o c k ∗ s k ) ; v o i d ( ∗ p k t s a c k e d ) ( s t r u c t s o c k ∗ sk , u32 num acked , s 3 2 rtt us ) ; v o i d ( ∗ g e t i n f o ) ( s t r u c t s o c k ∗ sk , u32 e x t , s t r u c t s k b u f f ∗ skb ) ; 11 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 12. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Implementa¸˜o do TCP ca Como pode-se ver, a implementa¸˜o do algoritmo de CC no TCP ´ ca e fortemente ligada a Mudan¸a de estados da conex˜o c a Recebimento de pacote de confirma¸˜o ca Limiar de partida lenta 12 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 13. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Implementa¸˜o do DCCP ca Definido em linux/net/dccp Apresenta uma estrutura bem definida sobre o que ´ o n´cleo e u do protocolo e o que ´ algoritmo de controle de e congestionamento Apesar de n˜o ser implementado como m´dulo, a estrutura do a o controle de congestionamento ´ componentiz´vel e a 13 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 14. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Opera¸oes de um CCID c˜ struct ccid operations { v o i d ( ∗ c c i d h c r x p a c k e t r e c v ) ( s t r u c t s o c k ∗ sk , s t r u c t s k b u f f ∗ skb ) ; v o i d ( ∗ c c i d h c t x p a c k e t r e c v ) ( s t r u c t s o c k ∗ sk , s t r u c t s k b u f f ∗ skb ) ; i n t ( ∗ c c i d h c t x s e n d p a c k e t ) ( s t r u c t s o c k ∗ sk , s t r u c t s k b u f f ∗ skb ) ; v o i d ( ∗ c c i d h c t x p a c k e t s e n t ) ( s t r u c t s o c k ∗ sk , unsigned i n t len ) ; // O u t r a s f u n c o e s e ¸˜ }; 14 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 15. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Implementa¸˜es no Kernel co Um pouco mais sobre a implementa¸˜o dos CCIDs ca Os CCIDs s˜o livres para implementar as funcionalidades que a desejarem Antes de fazer a chamada a alguma das a¸˜es do CCID, o co n´cleo DCCP verifica se tal fun¸˜o ´, de fato, implementada e u ca e caso n˜o seja descarta a chamada a 15 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 16. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades CCID-2 Funcionamento Cria uma estrutura em lista que armazena os ultimos Acks ´ recebidos (n˜o faz uso de Ack acumulativo!) a Porque uma abordagem utilizando Ack acumulativo n˜o ´ poss´ a e ıvel no DCCP? 16 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 17. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades CCID-2 Funcionamento Cria uma estrutura em lista que armazena os ultimos Acks ´ recebidos (n˜o faz uso de Ack acumulativo!) a Porque uma abordagem utilizando Ack acumulativo n˜o ´ poss´ a e ıvel no DCCP? Por que o protocolo DCCP ´ n˜o confi´vel!! e a a Os hosts trocam os vetores de confirma¸˜o (enviado ca juntamente com o pacote de dados) 16 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 18. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades CCID-3 e CCID-4 CCID-3 Utiliza uma equa¸˜o para fazer o c´lculo da taxa de envio ca a Mais complexo que o CCID-2 pois necessita sincronizar o tempo de envio ao inv´s de ser Ack-Clocked e Utiliza o conceito de intervalo de perda (1 RTT) onde em um intervalo todas as perdas s˜o consideradas como apenas uma a Apresenta tanto um crescimento quanto uma queda na taxa de envio mais suave Define um tamanho fixo de pacotes (1500 bytes) e em caso de diminui¸˜o da taxa de envio altera o n´mero de pacotes ca u enviados 17 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 19. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades CCID-3 e CCID-4 CCID-3 e CCID-4 Varia¸˜o do CCID-3 onde, ao inv´s de variar o n´mero de ca e u pacotes enviados varia o tamanho dos pacotes Possui taxa de transmiss˜o limitada a 1,5 Mbps a CCID-4 ainda n˜o dispon´ na ´rvore principal do Kernel a ıvel a 18 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 20. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades CCID-249 Funcionamento Implementa uma mistura entre TCP Cubic e CCID-2 “Rouba” o mecanismo de confirma¸˜o seletiva via Ack ca Vectors do CCID-2 Utiliza a fun¸˜o de c´lculo de janela do Tcp Cubic ca a Consegue obter maior vaz˜o que os outros CCIDs a Disponibiliza¸˜o ca N˜o dispon´ na ´rvore principal do Kernel, sendo a ıvel a disponibilizado apenas na ´rvore git mantida por Gerrit a Renker (principal mantenedor do Dccp) 19 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 21. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID Adicionando um Novo CCID Agora vamos criar um novo CCID Este CCID ir´ simular o protocolo UDP, ou seja, sem controle a algum de taxa de envio Para isso, vamos escolher o n´mero 248 para ser o CCID (na u ´rvore oficial o Dccp Cubic ainda n˜o existe!) a a 20 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 22. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 1a etapa: Definir a constante para o CCID Abrir o arquivo include/linux/dccp.h Buscar o enum onde est´ definido DCCPC CCID3 a Adicionar uma nova constante DCCPC CCID248 = 2 4 8 , 21 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 23. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 2a etapa: Implementar o algoritmo Criar um novo arquivo chamado ccid248.c em linux/net/dccp/ccids item Adicionar a seguinte implementa¸˜o ca #i n c l u d e " ../ ccid .h" struct ccid operations ccid248 ops = { . c c i d i d = DCCPC CCID248 , . c c i d n a m e = " UDP - like " }; 22 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 24. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 3a etapa: Adicionar o CCID ` lista de CCIDs dispon´ a ıveis Abrir o arquivo linux/net/dccp/ccid.c No vetor ccid operations adicionar a seguinte linha no final #i f d e f CONFIG IP DCCP CCID248 &c c i d 2 4 8 o p s , #e n d i f 23 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 25. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 4a etapa: Adicionar a constante de CCID a lista de CCIDs que podem ser negociados Abrir o arquivo linux/net/dccp/feat.c Localizar a fun¸˜o dccp feat is valid sp val ca Alterar o op¸˜o DCCPF CCID para que fique da seguinte ca forma c a s e DCCPF CCID : r e t u r n v a l == DCCPC CCID2 | | v a l == DCCPC CCID3 | | v a l == DCCPC CCID248 ; 24 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 26. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 5a etapa: Adicionar as dependˆncias de negocia¸˜o e ca Ainda no arquivo linux/net/dccp/feat.c Localize a fun¸˜o dccp feat ccid deps ca Adicione antes do switch final o seguinte bloco s t a t i c const struct ccid dependency ccid248 dependencies [ 2 ] [ 2 ] = { {{ 0 , 0 , 0 , 0 } } , {{ 0 , 0 , 0 , 0 }} }; Adicionar ao switch final a seguinte linha c a s e DCCPC CCID248 : r e t u r n c c i d 2 4 8 d e p e n d e n c i e s [ is local ]; 25 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 27. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 6a etapa: Declarar opera¸oes do novo CCID em ccid.h c˜ Abra o arquivo linux/net/dccp/ccid.h Localize o seguinte trecho #i f d e f CONFIG IP DCCP CCID3 extern struct ccid operations ccid3 ops ; #e n d i f Ap´s ele, adicione o seguinte trecho o #i f d e f CONFIG IP DCCP CCID248 extern struct ccid operations ccid248 ops ; #e n d i f 26 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 28. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 7a etapa: Adicionar ao menu de configura¸˜es o novo co CCID Abrir arquivo linux/net/dccp/ccids/Kconfig Adicione ao final da se¸˜o menu o seguinte trecho ca c o n f i g IP DCCP CCID248 b o o l " CCID -248 (UDP - like ) novo CCID " def bool n −−−h e l p −−− Aqui v a i a d e s c r i ¸ ˜ o do novo CCID . ca 27 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 29. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID 8a etapa: Adicionar o novo CCID ` compila¸˜o a ca Abrir o arquivo linux/net/dccp/ccids/Makefile Ap´s a defini¸˜o do CCID-3, adicionar o seguinte trecho o ca dccp−y += c c i d s / c c i d 2 4 8 . o 28 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 30. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID Testando Habilitar o novo CCID no menuconfig durante a configura¸˜o ca do kernel Compilar o Kernel e instalar Reiniciar a m´quina virtual a Instalar o iperf com suporte a DCCP (http: //139.133.210.30/~gerrit/dccp/apps/iperf/zip/ iperf-2.0.2_DCCP-patched-CBR-continuous.tar.bz2) 29 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 31. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando um Novo CCID Testando Executar a sysctl para alterar o CCID padr˜o a s y s c t l −w n e t . dccp . d e f a u l t . t x c c i d =248 s y s c t l −w n e t . dccp . d e f a u l t . r x c c i d =248 Iniciar o lado servidor do iperf i p e r f −d −s − i 1 Iniciar o lado cliente do iperf i p e r f −d −c 1 2 7 . 0 . 0 . 1 − i 1 30 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 32. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando uma nova Sysctl Adicionando uma nova Sysctl sysctl ´ uma abordagem utilizada pelo SO para uma e comunica¸˜o entre o espa¸o de usu´rio e o espa¸o de n´cleo ca c a c u Realizado a partir de entradas em /proc O protocolo pode disponibilizar tanto a leitura quanto a altera¸˜o de algumas vari´veis ca a A altera¸˜o do valor ´ realizado tanto via arquivo virtual em ca e /proc quanto via chamada de sistema syscall 31 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 33. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando uma nova Sysctl 1a etapa: Definir a vari´vel a ser exportada a Vamos considerar o compartilhamente de uma vari´vel inteira a chamada “value1” Abrir o arquivo linux/net/dccp/proto.c Declarar uma vari´vel inteira chamada “value” a int sysctl dccp value read mostly = 5; Exportar a vari´vel em linux/net/dccp/dccp.h a extern int sysctl dccp value ; 32 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 34. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando uma nova Sysctl 2a etapa: Adicionar uma entrada em ctl table Abrir arquivo linux/net/dccp/sysctl.c Localizar array dccp default table Adicionar o seguinte trecho ao final do array { . procname = " value " , . d a t a = &s y s c t l d c c p v a l u e , . maxlen = s i z e o f ( s y s c t l d c c p v a l u e ) , . mode = 0 6 4 4 , . proc handler = proc dointvec minmax , . e x t r a 1 = &z e r o , }, 33 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 35. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Adicionando uma nova Sysctl Testando Ap´s salvar tudo e recompilar o Kernel, realizar a seguinte o opera¸˜o ca c a t / p r o c / s y s / n e t / dccp / d e f a u l t / v a l u e Ao realizar essa opera¸˜o deve ser impresso na tela o valor 5 ca Um segundo teste a ser realizado ´ a tentativa de alterar o e valor da vari´vel a s y s c t l −w n e t . dccp . d e f a u l t . v a l u e =10 34 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 36. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Logando os pacotes enviados Logando os pacotes enviados Nesta atividade o aluno ir´ modificar o CCID rec´m criado a e para que toda vez que um pacote seja recebido ser´ realizado a um log do pacote Deste modo, o aluno deve implementar a fun¸˜o correta que ca registre o recebimento de pacotes no lado receptor Dica... Analisar fun¸˜o ccid hc tx packet sent ca Tempo da atividade: 10 - 15 minutos 35 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 37. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Logando os pacotes enviados Bibliografia I Jeremy Andrews. Linux: Documenting how patches reach the kernel. http://kerneltrap.org/node/3180, Maio 2004. The Git Community Book. The git community book. http://book.git-scm.com/index.html, Outubro 2011. Ariejan de Vroom. How to create and apply a patch with git. http://ariejan.net/2009/10/26/ how-to-create-and-apply-a-patch-with-git/, Outubro 2009. 36 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca
  • 38. Os protocolos TCP e DCCP Implementa¸˜o dos CCIDs ca Atividades Logando os pacotes enviados Bibliografia II Wikipedia Foudation. Sco-linux controversies. http: //en.wikipedia.org/wiki/SCO-Linux_controversies, Outubro 2011. 37 / 37 Ivo Calado IFAL Programa¸˜o para o Kernel Linux (Parte 2) ca