BR102019009234A2 - network device and method for dynamically processing network traffic with sdn structure and protocol independent - Google Patents
network device and method for dynamically processing network traffic with sdn structure and protocol independent Download PDFInfo
- Publication number
- BR102019009234A2 BR102019009234A2 BR102019009234-3A BR102019009234A BR102019009234A2 BR 102019009234 A2 BR102019009234 A2 BR 102019009234A2 BR 102019009234 A BR102019009234 A BR 102019009234A BR 102019009234 A2 BR102019009234 A2 BR 102019009234A2
- Authority
- BR
- Brazil
- Prior art keywords
- ebpf
- processor
- protocol
- dynamic
- sdn
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000012545 processing Methods 0.000 title claims description 16
- 230000008569 process Effects 0.000 claims abstract description 8
- 230000015654 memory Effects 0.000 claims description 50
- 230000009471 action Effects 0.000 claims description 22
- 230000006399 behavior Effects 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 6
- 238000003012 network analysis Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 17
- 230000006855 networking Effects 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 101150029664 PELO gene Proteins 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- PWWVAXIEGOYWEE-UHFFFAOYSA-N Isophenergan Chemical compound C1=CC=C2N(CC(C)N(C)C)C3=CC=CC=C3SC2=C1 PWWVAXIEGOYWEE-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
A tecnologia proposta apresenta um dispositivo de rede SDN (Software-Defined Networking, ou Rede Definida por Software) implementado em hardware e um método para processar o tráfego em um dispositivo de rede com estrutura SDN de modo dinâmico e independente de protocolo. Propõe-se uma arquitetura a ser aplicada em um dispositivo de rede, este utiliza instruções eBPF (extended Berkeley Packet Filter) geradas a partir de programas em linguagem C ou P4 criados pelo usuário. Os efeitos técnicos alcançados pela tecnologia proposta são: 1) Plano de dados totalmente programável via plano de controle (espaço do usuário) sem o usuário ter conhecimento em programação em hardware. 2) Possibilidade de utilização de novos campos e protocolos definidos dinamicamente, sem a necessidade de recompilar ou reiniciar o roteador quando o usuário altera, em tempo de execução, a forma como os fluxos devem ser processados, propiciando um tempo de inatividade zero do dispositivo. O dispositivo proposto também pode ser usado como switch ou interface de rede. The proposed technology presents an SDN (Software-Defined Networking) device implemented in hardware and a method to process traffic on a network device with SDN structure in a dynamic and protocol-independent way. An architecture is proposed to be applied to a network device, it uses eBPF (extended Berkeley Packet Filter) instructions generated from programs in C or P4 language created by the user. The technical effects achieved by the proposed technology are: 1) Data plan fully programmable via control plan (user space) without the user having knowledge in hardware programming. 2) Possibility of using new dynamically defined fields and protocols, without the need to recompile or restart the router when the user changes, at run time, the way the flows must be processed, providing zero downtime of the device. The proposed device can also be used as a switch or network interface.
Description
[01] A tecnologia proposta apresenta um dispositivo de rede SDN (Software-Defined Networking, ou Rede Definida por Software) implementado em hardware e um método para processar o tráfego em um dispositivo de rede com estrutura SDN de modo dinâmico e independente de protocolo. Propõe-se uma arquitetura a ser aplicada em um dispositivo de rede, este utiliza instruções eBPF (extended Berkeley Packet Filter) geradas a partir de programas em linguagem C ou P4 criados pelo usuário. Os efeitos técnicos alcançados pela tecnologia proposta são: 1) Plano de dados totalmente programável via plano de controle (espaço do usuário) sem o usuário ter conhecimento em programação em hardware; 2) Possibilidade de utilização de novos campos e protocolos definidos dinamicamente, sem a necessidade de recompilar ou reiniciar o roteador quando o usuário altera, em tempo de execução, a forma como os fluxos devem ser processados, propiciando um tempo de inatividade zero do dispositivo. O dispositivo proposto também pode ser usado como switch ou interface de rede.[01] The proposed technology features an SDN (Software-Defined Networking) device implemented in hardware and a method to process traffic on a network device with SDN structure in a dynamic and protocol-independent manner. An architecture is proposed to be applied to a network device, it uses eBPF (extended Berkeley Packet Filter) instructions generated from programs in C or P4 language created by the user. The technical effects achieved by the proposed technology are: 1) Data plan fully programmable via control plan (user space) without the user having knowledge in hardware programming; 2) Possibility of using new dynamically defined fields and protocols, without the need to recompile or restart the router when the user changes, at run time, the way the flows must be processed, providing zero downtime of the device. The proposed device can also be used as a switch or network interface.
[02] O padrão OpenFlow [McKeown et al. 2008] é um exemplo de SDN, que teve um crescimento significativo desde o lançamento de sua primeira versão em 2008 até o lançamento da versão atual (1.5) [Kreutz et al. 2015]. A primeira versão do OpenFlow surgiu com uma tabela de casamento contendo apenas dez campos e evoluiu para múltiplas tabelas com 44 campos diferentes [Kreutz et al. 2015]. No entanto, o número de campos suportados pelo OpenFlow está sendo atualizado constantemente para suportar novos campos e protocolos como, por exemplo, o protocolo IPv6. Infelizmente, o OpenFlow tem um plano de dados dependente de protocolo com análise, casamento e ações fixas, dificultando o suporte de novos campos e protocolos [Jouet and Pezaros 2017]. (McKeown, N., Anderson, T., Balakrishnan, H., Parulkar, G., Peterson, L., Rexford, J., Shenker, S., and Turner, J. (2008). Openflow: Enabling innovation in campus networks. SIGCOMM Comput. Commun. Rev., 38(2):69-74.).(Kreutz, D., Ramos, F. M. V., Veríssimo, P. E., Rothenberg, C. E., Azodolmolky, S., and Uhlig, S. (2015). Software-defined networking: A comprehensive survey. Proceedings of the IEEE, 103(1):14-76.).(Jouet, S. and Pezaros, D. P. (2017). Bpfabric: Data plane programmability for software defined networks. In Proceedings of the Symposium on Architectures for Networking and Communications Systems, ANCS ’17, pages 38-48, Piscataway, NJ, USA. IEEE Press.)[02] The OpenFlow standard [McKeown et al. 2008] is an example of SDN, which has grown significantly since the launch of its first version in 2008 until the release of the current version (1.5) [Kreutz et al. 2015]. The first version of OpenFlow came up with a matching table containing only ten fields and evolved into multiple tables with 44 different fields [Kreutz et al. 2015]. However, the number of fields supported by OpenFlow is constantly being updated to support new fields and protocols such as the IPv6 protocol. Unfortunately, OpenFlow has a protocol-dependent data plan with analysis, matching and fixed actions, making it difficult to support new fields and protocols [Jouet and Pezaros 2017]. (McKeown, N., Anderson, T., Balakrishnan, H., Parulkar, G., Peterson, L., Rexford, J., Shenker, S., and Turner, J. (2008). Openflow: Enabling innovation in campus networks. SIGCOMM Comput. Commun. Rev., 38 (2): 69-74.). (Kreutz, D., Ramos, FMV, Veríssimo, PE, Rothenberg, CE, Azodolmolky, S., and Uhlig, S. (2015). Software-defined networking: A comprehensive survey. Proceedings of the IEEE, 103 (1): 14-76.). (Jouet, S. and Pezaros, DP (2017). Bpfabric: Data plane programmability for software defined In Proceedings of the Symposium on Architectures for Networking and Communications Systems, ANCS '17, pages 38-48, Piscataway, NJ, USA. IEEE Press.)
[03] A tecnologia proposta por Jouet and Pezaros (2017) apresenta um protocolo, plataforma e ambiente SDN independente de protocolo (BPFabric) para programar e monitorar o plano de dados de forma centralizada. BPFabric aproveita eBPF (extended Berkeley Packet Filter), um conjunto de instruções independentes de protocolo e plataforma para definir a funcionalidade de processamento e encaminhamento de pacotes do plano de dados. Introduzimos uma API de plano de controle que permite que as funções do plano de dados sejam implantadas em tempo de funcionamento. Entretanto a tecnologia descrita por Jouet and Pezaros (2017) difere-se da tecnologia proposta nesse pedido de patente porque ela não descreve nenhum detalhe técnico específico sobre a implementação em hardware do sistema e método propostos.[03] The technology proposed by Jouet and Pezaros (2017) presents a protocol, platform and SDN environment independent of protocol (BPFabric) to centrally program and monitor the data plan. BPFabric takes advantage of eBPF (extended Berkeley Packet Filter), a set of protocol and platform independent instructions to define the data plan packet processing and routing functionality. We introduced a control plan API that allows data plan functions to be deployed in uptime. However, the technology described by Jouet and Pezaros (2017) differs from the technology proposed in this patent application because it does not describe any specific technical details about the hardware implementation of the proposed system and method.
[04] O documento US2018041450 (A1), intitulado "Protocol independent programmable switch (pips) for software defined data center networks", com data de prioridade de 30/12/2013, apresenta sistema e método de rede definida por software (SDN) com uma ou mais portas de entrada, um analisador programável, uma pluralidade de mecanismos de pesquisa e decisão programáveis (LDEs - lookup and decision engines), memórias de pesquisa programáveis, contadores programáveis, um bloco de reinscrição programável e um ou mais portas de saída. A capacidade de programação do analisador, LDEs, memórias de pesquisa, contadores e bloco de reescrita permitem que um usuário personalize as necessidades de análise de dados, funções de processamento de pacotes e outras funções conforme desejado. Além disso, o mesmo microchip pode ser reprogramado para outros propósitos e / ou otimizações dinamicamente. Entretanto a tecnologia US2018041450 (A1) difere-se da tecnologia proposta nesse pedido de patente porque ela não descreve nenhum detalhe técnico específico sobre a implementação em hardware do sistema e método propostos.[04] The document US2018041450 (A1), entitled "Protocol independent programmable switch (pips) for software defined data center networks", with priority date of 12/30/2013, presents system and software defined network method (SDN) with one or more input ports, a programmable analyzer, a plurality of programmable search and decision engines (LDEs), programmable search memories, programmable counters, a programmable re-enrollment block and one or more output ports . The analyzer's programming capabilities, LDEs, search memories, counters and rewrite block allow a user to customize data analysis needs, package processing functions and other functions as desired. In addition, the same microchip can be dynamically reprogrammed for other purposes and / or optimizations. However, US2018041450 (A1) technology differs from the technology proposed in this patent application because it does not describe any specific technical details about the hardware implementation of the proposed system and method.
[05] Dessa forma nenhuma das tecnologias pertencentes ao estado da técnica propiciam simultaneamente os efeitos técnicos alcançados pela tecnologia proposta, que são: 1) Plano de dados totalmente programável via plano de controle (espaço do usuário) sem o usuário ter conhecimento em programação em hardware. 2) Possibilidade de utilização de novos campos e protocolos definidos dinamicamente, sem a necessidade de recompilar ou reiniciar o roteador quando o usuário altera, em tempo de execução, a forma como os fluxos devem ser processados, propiciando um tempo de inatividade zero do dispositivo.[05] Thus, none of the technologies belonging to the state of the art simultaneously provide the technical effects achieved by the proposed technology, which are: 1) Data plan fully programmable via the control plan (user space) without the user having knowledge in programming. hardware. 2) Possibility of using new dynamically defined fields and protocols, without the need to recompile or restart the router when the user changes, at run time, the way the flows must be processed, providing zero downtime of the device.
[06] FIGURA 1 - A figura 1 apresenta uma configuração possível, mas não limitante da tecnologia. O diagrama da figura permite visualizar a arquitetura que possui um controlador (13) logicamente centralizado que comunica através de um soquete (16) com os elementos de rede (roteadores e comutadores). Entre o controlador e o roteador existe uma API que permite ao controlador enviar programas independentes de plataforma e protocolos dentro do espaço do usuário (14) (Ex.: linguagens C e P4).[06] FIGURE 1 - Figure 1 shows a possible, but not limiting, configuration of the technology. The diagram in the figure allows visualizing the architecture that has a logically centralized controller (13) that communicates through a socket (16) with the network elements (routers and switches). Between the controller and the router there is an API that allows the controller to send platform-independent programs and protocols within the user space (14) (Ex .: C and P4 languages).
[07] FIGURA 2 - A figura 2 apresenta uma configuração possível, mas não limitante da tecnologia, do dispositivo de rede formado pelos seguintes módulos: input arbiter (001), output port lookup (002) e output queues (003) juntamente com os elementos técnicos que são exclusivos da invenção proposta: 1) uma máquina (004) de estados finitos para retirar os pacotes de uma fila; 2) uma memória de instruções (007) para armazenar instruções eBPF que definem o comportamento do plano de dados do dispositivo; 3) um processador eBPF (005) para determinar as operações de análise, casamento e ações de pacotes da rede; 4) um módulo (006) de ação nos pacotes para realizar as operações de análise, casamento e ações de pacotes da rede.[07] FIGURE 2 - Figure 2 shows a possible, but not limiting, technology configuration of the network device formed by the following modules: input arbiter (001), output port lookup (002) and output queues (003) together with technical elements that are exclusive to the proposed invention: 1) a finite state machine (004) for removing packages from a row; 2) an instruction memory (007) to store eBPF instructions that define the behavior of the device's data plane; 3) an eBPF processor (005) to determine network analysis, matching and packet operations; 4) a module (006) of action on the packages to carry out the analysis, matching and package actions of the network.
[08] FIGURA 3 - A figura 3 apresenta uma configuração possível, mas não limitante da tecnologia, do processador eBPF (005) composto por: um contador de programa (008), um banco de registradores (012), uma unidade lógica aritmética (010), uma memória de instruções (007), uma memória de dados (011), um módulo de controle (009), uma entrada para o sinal de relógio ou reinicialização (015), um soquete (016) de comunicação entre processador (005) e um controlador (013) em software para definir o comportamento do plano de dados do dispositivo. Legenda da figura: CLK: Clock; RST Reset; Reg_dst: Registrador de destino; Reg_orig: Registrador de origem.[08] FIGURE 3 - Figure 3 shows a possible, but not limiting, configuration of the eBPF processor (005) composed of: a program counter (008), a register bank (012), an arithmetic logic unit ( 010), an instruction memory (007), a data memory (011), a control module (009), an input for the clock or reset signal (015), a socket (016) of communication between processor ( 005) and a software controller (013) to define the behavior of the device's data plane. Figure caption: CLK: Clock; RST Reset; Reg_dst: Destination register; Reg_orig: Source register.
[09] FIGURA 4 - A figura 4 (a) apresenta o sincronismo dos módulos da NetFPGA que funcionam de modo padronizado com os respectivos sinais no hardware. Os sinais write (wr) (escrita) e ready (rdy) (pronto) controlam a comunicação entre os módulos. O sinal wr informa quando o módulo anterior está pronto para transmitir (possui conteúdo para transmitir) e o sinal rdy informa que o módulo posterior está pronto para receber. A transferência dos dados entre módulos só ocorre se os dois sinais estiverem ativos. Cada módulo contém uma fila de entrada e uma máquina de estados. A fila interna é utilizada para armazenar temporariamente o sinal data e ctrl até que a máquina de estado do módulo possa retirar da fila a palavra e o controle para começar o processamento. A máquina de estado (004) de cada módulo tem um comportamento específico, por exemplo, o módulo output port lookup define a porta de saída de acordo com a porta de entrada.[09] FIGURE 4 - Figure 4 (a) shows the synchronism of the NetFPGA modules that work in a standardized way with the respective signals in the hardware. The write (wr) and ready (rdy) signals control the communication between the modules. The wr signal informs when the previous module is ready to transmit (has content to transmit) and the rdy signal informs that the posterior module is ready to receive. The transfer of data between modules only occurs if both signals are active. Each module contains an input queue and a state machine. The internal queue is used to temporarily store the data and ctrl signal until the module's state machine can remove the word and the control from the queue to begin processing. The state machine (004) of each module has a specific behavior, for example, the output port lookup module defines the output port according to the input port.
[010] A tecnologia proposta apresenta um dispositivo de rede SDN implementado em hardware e um método para processar o tráfego em um dispositivo de rede com estrutura SDN (Software-Defined Networking, ou Rede Definida por Software) de modo dinâmico e independente de protocolo. Propõe-se uma arquitetura a ser aplicada em um dispositivo de rede, este utiliza instruções eBPF geradas a partir de programas em linguagem C ou P4 criados pelo usuário.[010] The proposed technology features an SDN network device implemented in hardware and a method to process traffic on a network device with an SDN (Software-Defined Networking) structure in a dynamic and protocol-independent manner. An architecture is proposed to be applied to a network device, it uses eBPF instructions generated from programs in C or P4 language created by the user.
[011] A figura 1 apresenta uma configuração possível, mas não limitante da tecnologia. O diagrama da figura permite visualizar a arquitetura que possui um controlador (013) logicamente centralizado que comunica através de um soquete (016) com os elementos de rede (roteadores e comutadores). Entre o controlador e o roteador existe uma API que permite ao controlador enviar programas independentes de plataforma e protocolos dentro do espaço do usuário (014) (Ex.: linguagens C e P4). O dispositivo e o processo propostos são apresentados a seguir:[011] Figure 1 shows a possible configuration, but not limiting the technology. The diagram in the figure allows visualizing the architecture that has a controller (013) logically centralized that communicates through a socket (016) with the network elements (routers and switches). Between the controller and the router there is an API that allows the controller to send platform-independent programs and protocols within the user space (014) (Ex .: C and P4 languages). The proposed device and process are presented below:
[012] O dispositivo de rede com estrutura SDN que processa o tráfego da rede de modo dinâmico e independente de protocolo compreende os seguintes elementos: 1) uma máquina (004) de estados finitos para retirar os pacotes de uma fila; 2) uma memória de instruções (007) para armazenar instruções eBPF que definem o comportamento do plano de dados do dispositivo; 3) um processador eBPF (005) para determinar as operações de análise, casamento e ações de pacotes da rede, composto por: um contador de programa (008), um banco de registradores (012), uma unidade lógica aritmética (010), uma memória de instruções (007), uma memória de dados (011), um módulo de controle (009), uma entrada para o sinal de relógio ou reinicialização (015), um soquete (016) de comunicação entre processador (005) e um controlador (013) em software para definir o comportamento do plano de dados do dispositivo; 3) um módulo (006) de ação nos pacotes para realizar as operações de análise, casamento e ações de pacotes da rede.[012] The network device with SDN structure that processes the network traffic in a dynamic and protocol-independent way comprises the following elements: 1) a finite state machine (004) to remove packets from a queue; 2) an instruction memory (007) to store eBPF instructions that define the behavior of the device's data plane; 3) an eBPF processor (005) to determine network analysis, matching and package operations, consisting of: a program counter (008), a register bank (012), an arithmetic logic unit (010), an instruction memory (007), a data memory (011), a control module (009), an input for the clock or reset signal (015), a socket (016) for communication between processor (005) and a software controller (013) for defining the behavior of the device's data plane; 3) a module (006) of action on the packages to carry out the analysis, matching and package actions of the network.
[013] O método para processamento de pacotes em um dispositivo com estrutura SDN compreende as seguintes etapas:
- a) armazenar instruções eBPF para definir o comportamento do plano de dados que são geradas compilando e executando programas eBPF desenvolvidos usando linguagens de alto nível criados pelo usuário;
- b) utilizar uma máquina (004) de estados finitos para retirar o pacote da fila interna do módulo output port lookup (encaminhado pelo módulo input arbiter);
- c) armazenar o pacote retirado da fila obtido na etapa “b” e armazená-lo na memória de dados (011) do processador eBPF (005), inicializar o processador;
- d) realizar operações de análise, casamento e ações, geradas no processador eBPF (005) com base nas instruções eBPF instaladas na memória de instruções (007) obtidas na etapa “a” utilizando o módulo (006) de ação nos pacotes;
- e) encaminhar o pacote obtido na etapa “c” para filas de saída do dispositivo através do módulo output port ou descartá-lo conforme o valor lido no banco de registradores (012) obtido após o término da execução do programa eBPF pelo processador eBPF (005).
- a) store eBPF instructions to define the behavior of the data plan that are generated by compiling and running eBPF programs developed using high level languages created by the user;
- b) use a finite state machine (004) to remove the package from the internal queue of the output port lookup module (forwarded by the input arbiter module);
- c) store the package removed from the queue obtained in step “b” and store it in the data memory (011) of the eBPF processor (005), initialize the processor;
- d) perform analysis, matching and action operations, generated in the eBPF processor (005) based on the eBPF instructions installed in the instruction memory (007) obtained in step “a” using the action module (006) in the packages;
- e) forward the package obtained in step “c” to the device's output queues through the output port module or discard it according to the value read in the register bank (012) obtained after the eBPF program is finished running by the eBPF processor ( 005).
[014] Na etapa “a”, as linguagens de alto nível utilizadas para gerar as instruções eBPF são as linguagens C e P4. O dispositivo e o processo propostos aplicam-se para switch ou interface de rede.[014] In step “a”, the high-level languages used to generate the eBPF instructions are the languages C and P4. The proposed device and process apply to switch or network interface.
[015] O projeto do roteador SDN proposto pode variar da seguinte forma: 1) o dispositivo pode ter um processador eBPF para cada fila de entrada utilizando uma memória de instruções compartilhada; 2) Podem ser inseridas as memórias TCAM/SRAM como tabelas para casamento de fluxos no dispositivo; 3) O dispositivo também pode ser usado como switch ou interface de rede 4) o método pode implementar funções hashes para identificar e classificar fluxos; 5) Expandir no método o número de campos metadados para realizar tarefas de medição e monitoramento do desempenho da rede.[015] The proposed SDN router design can vary as follows: 1) the device can have an eBPF processor for each input queue using a shared instruction memory; 2) TCAM / SRAM memories can be inserted as tables for matching flows in the device; 3) The device can also be used as a switch or network interface 4) the method can implement hash functions to identify and classify flows; 5) Expand in the method the number of metadata fields to perform tasks of measurement and monitoring of the network performance.
[016] A tecnologia pode ser mais bem compreendida por meio do exemplo abaixo, não limitante:[016] The technology can be better understood through the example below, without limitation:
[017] Exemplo: Protótipo implementado na plataforma NetFPGA 1G 1. Implementação[017] Example: Prototype implemented on the
[018] A figura 2 apresenta uma visão geral da implementação do roteador SDN na plataforma NetFPGA. A implementação do roteador SDN é composta de dois componentes: plano de dados e ferramentas no espaço do usuário. O plano de dados contém módulos em hardware que pertencem à biblioteca padrão da NetFPGA (módulos na cor cinza) e módulos específicos do roteador SDN (módulos na cor laranja). As ferramentas no espaço de usuário são compostas por um controlador responsável por definir como o plano de dados encaminhará os pacotes, e softwares para configurar as funcionalidades do plano de dados, de acordo com os programas C e P4 criados pelo usuários.[018] Figure 2 presents an overview of the implementation of the SDN router on the NetFPGA platform. The implementation of the SDN router is composed of two components: data plan and user space tools. The data plan contains hardware modules that belong to the NetFPGA standard library (gray modules) and specific SDN router modules (orange modules). The tools in the user space are composed by a controller responsible for defining how the data plan will forward the packages, and software to configure the data plan functionalities, according to the C and P4 programs created by the users.
[019] A biblioteca padrão da NetFPGA fornece os seguintes módulos: input arbiter [001], output port lookup [002] e output queue [003].[019] The NetFPGA standard library provides the following modules: input arbiter [001], output port lookup [002] and output queue [003].
[020] Input arbiter: Recebe os pacotes da rede (via interface MAC) ou do barramento PCI (via CPU) no formato de palavras de 64 bits e as armazena em filas internas do módulo. Em seguida, as palavras são retiradas das filas utilizando o algoritmo round robin, e as encaminha para o módulo output port lookup.[020] Input arbiter: Receives packets from the network (via MAC interface) or from the PCI bus (via CPU) in 64-bit word format and stores them in internal queues of the module. Then, the words are removed from the queues using the round robin algorithm, and forward them to the output port lookup module.
[021] Output port lookup: Define qual porta o pacote será enviado baseado nas propriedades do pacote, por exemplo, porta de entrada ou endereço destino. A porta de saída de todos os pacotes recebidos é configurada no campo porta de saída do metadado.[021] Output port lookup: Defines which port the packet will be sent based on the properties of the packet, for example, gateway or destination address. The outgoing port of all incoming packets is configured in the outgoing metadata port field.
[022] Output queue: Decide qual a fila de saída o pacote será armazenado com base no campo porta de saída do metadado. O roteador SDN estende o caminho de dados da NetFPGA com três módulos em hardware (cor laranja): processador eBPF [005], ação no pacote [006] e memória de instruções [007].[022] Output queue: Decides which output queue the packet will be stored based on the metadata output port field. The SDN router extends the NetFPGA data path with three hardware modules (orange): eBPF processor [005], action in the [006] package and instruction memory [007].
[023] Processador eBPF: É responsável por realizar a análise, casamento e ações utilizando as instruções armazenadas na memória de instruções. Além disso, o processador se comunica com o plano de controle através de um soquete.[023] eBPF processor: It is responsible for performing the analysis, matching and actions using the instructions stored in the instruction memory. In addition, the processor communicates with the control plane through a socket.
[024] Ação no pacote: Encaminha ou descarta o pacote de acordo com o valor armazenado no registrador r0 após o processamento das instruções eBPF.[024] Action on the package: Forward or discard the package according to the value stored in register r0 after processing the eBPF instructions.
[025] Memória de instruções: Na memória de instruções são armazenados as instruções eBPF geradas a partir do código C e P4 criados pelo usuário. Estas instruções definem o comportamento do plano de dados.[025] Instruction memory: In the instruction memory, the eBPF instructions generated from the C and P4 codes created by the user are stored. These instructions define the behavior of the data plan.
[026] A máquina de estados (004) (finite state machine, FSM) no módulo output port lookup controla todo o funcionamento do processamento de pacotes. Ela retira o pacote da fila interna do módulo (encaminhado pelo módulo input arbiter), começa a execução das instruções eBPF e encaminha o pacote para o próximo módulo (ação no pacote) quando a última instrução (saída) do eBPF for executada. O funcionamento da FSM obedece às seguintes etapas:
- a) Aguarda o cabeçalho do pacote;
- b) Armazena o cabeçalho e metadado na memória do processador eBPF;
- c) Armazena o Payload do pacote na memória do processador eBPF;
- d) Inicializa o processador eBPF;
- e) Espera o processador eBPF terminar de processar o pacote;
- f) Retira o cabeçalho e o payload da memória do processador eBPF;
- g) Encaminha o cabeçalho e o payload;
- a) Awaits the package header;
- b) Stores the header and metadata in the eBPF processor memory;
- c) Stores the Payload of the package in the eBPF processor memory;
- d) Initializes the eBPF processor;
- e) Wait for the eBPF processor to finish processing the package;
- f) Remove the header and payload from the eBPF processor memory;
- g) Forward the header and payload;
[027] O processador eBPF é responsável por realizar a análise, casamento e ações de acordo com as instruções eBPF geradas a partir do código C ou P4 criados pelo usuário no espaço do usuário. Antes de iniciar o funcionamento do roteador SDN, o usuário deve carregar as instruções eBPF na memória de instruções para definir qual será o comportamento do plano de dados do roteador.[027] The eBPF processor is responsible for performing the analysis, matching and actions according to the eBPF instructions generated from the C or P4 code created by the user in the user space. Before starting the operation of the SDN router, the user must load the eBPF instructions in the instruction memory to define the behavior of the data plan of the router.
[028] A figura 3 apresenta o caminho de dados e de controle do processador eBPF em nível de transferência de registrador (register transfer level, RTL) contendo cinco unidades funcionais: contador de programa [008], memória de instruções [007], controle [009], unidade lógica aritmética (ALU) [010] e memória de dados [011].[028] Figure 3 shows the data and control path of the eBPF processor at register transfer level (RTL) containing five functional units: program counter [008], instruction memory [007], control [009], arithmetic logic unit (ALU) [010] and data memory [011].
[029] Contador de Programa: Define qual instrução será selecionada na memória de instruções.[029] Program Counter: Defines which instruction will be selected in the instruction memory.
[030] Controle: O controlador recebe o código da operação e encaminha os sinais de controle para as unidades funcionais, definindo qual o comportamento de cada unidade. Por exemplo, instruções da classe ALU (unidade lógica e aritmética) não utilizam a memória de dados, então os sinais de leitura/escrita não são ativos na memória de dados.[030] Control: The controller receives the operation code and forwards the control signals to the functional units, defining the behavior of each unit. For example, instructions from the ALU class (logical and arithmetic unit) do not use the data memory, so the read / write signals are not active in the data memory.
[031] Unidade lógica aritmética: A ALU do processador eBPF é capaz de realizar operações aritméticas e lógicas baseado no sinal enviado pelo controle. O resultado da ALU pode ser encaminhado como endereço da memória de dados ou como dado de escrita do registrador destino no banco de registradores.[031] Arithmetic logic unit: The ALP of the eBPF processor is capable of performing arithmetic and logic operations based on the signal sent by the control. The ALU result can be forwarded as a data memory address or as a writing data of the destination register in the register bank.
[032] Memória de dados: A memória de dados tem como funcionalidade o armazenamento do metadado e palavras do pacote para que o processador eBPF realize as ações no pacote de acordo com as instruções eBPF. O tamanho da memória de dados do processador eBPF tem capacidade de até 256 palavras de 64 bits. Com essa capacidade apenas um metadado e um pacote de até 1.500 bytes pode ser armazenado. Nós definimos a memória de dados com esta capacidade devido ao pouco recurso lógico (53.000 células lógicas) disponível na FPGA da NetFPGA 1G.[032] Data memory: The data memory has the function of storing the metadata and words of the package so that the eBPF processor performs the actions in the package according to the eBPF instructions. The size of the data memory of the eBPF processor has a capacity of up to 256 64-bit words. With this capability, only one metadata and a packet of up to 1,500 bytes can be stored. We defined the data memory with this capacity due to the little logical resource (53,000 logical cells) available in the FPGA of NetFPGA 1G.
[033] Banco de Registradores: São realizadas as operações de leitura e escrita de dados nos registradores. Na operação de leitura o banco de registradores recebe os endereços do registrador destino/origem e encaminha os dados referente aos endereços para ALU. A operação de escrita no banco de registradores é realizada após a leitura do dado na memória de dados ou operação da ALU. A tabela 1 descreve a funcionalidade de cada registradores eBPF.
Tabela 1: Descrição do conjunto de registradores do eBPF. [033] Bank of Registrars: Reading and writing operations are carried out on the registrars. In the read operation, the register bank receives the addresses of the destination / origin register and forwards the data referring to the addresses to ALU. The write operation in the register bank is performed after reading the data in the data memory or ALU operation. Table 1 describes the functionality of each eBPF recorders.
Table 1: Description of the eBPF register set.
[034] Após a saída da instrução da memória de instruções [007], a instrução é dividida em cinco partes: código da operação (opcode), endereço registrador destino e registrador origem, deslocamento e imediato. Cada parte da instrução é enviada para uma unidade específica.[034] After leaving the instruction from the instruction memory [007], the instruction is divided into five parts: operation code (opcode), destination register address and origin register, offset and immediate. Each part of the instruction is sent to a specific unit.
[035] O opcode do eBPF é divido em sete classes: load imediato, load, store imediato, store, operações lógicas e aritméticas, desvios, operações lógicas e aritméticas de 64 bits, e a outra classe é reservada para uso futuro. O processador eBPF possui instrução de 64 bits, sendo 32 bits para representação de um número imediato (imm), 16 bits para o offset, 4 bits para registrador de origem, 4 bits para registrador de destino e, por fim, o código da operação de 8 bits. O opcode pode ser redividido dependendo da classe da instrução. Para load e store, o opcode possui 3 bits mais significativos para modo de acesso à memória, 2 bits para tamanho da palavra e 3 bits para classe de instrução. Para as instruções de desvio, aritméticas e lógicas, os 4 bits mais significativos especificam qual é a operação, 1 bit para especificar se a instrução é realizada com o valor imediato ou com o operando de origem e por fim 3 bits menos significativos para a classe da instrução.[035] The eBPF opcode is divided into seven classes: immediate load, load, immediate store, store, logical and arithmetic operations, deviations, 64-bit logical and arithmetic operations, and the other class is reserved for future use. The eBPF processor has a 64-bit instruction, 32 bits for representing an immediate number (imm), 16 bits for the offset, 4 bits for the origin register, 4 bits for the destination register and, finally, the operation code 8-bit. The opcode can be divided depending on the class of the instruction. For load and store, the opcode has 3 most significant bits for memory access mode, 2 bits for word size and 3 bits for instruction class. For the arithmetic and logic bypass instructions, the 4 most significant bits specify what the operation is, 1 bit to specify whether the instruction is carried out with the immediate value or with the original operand and finally 3 less significant bits for the class instruction.
[036] O processador eBPF possui um conjunto de instruções responsáveis por ler e escrever na memória de dados com os seguintes tipos de tamanho: 8 bits (byte (B)), 16 bits (half-word (H)), 32 bits (word (w)), e 64 bits (double word (DW)). Para ter a possibilidade de ler e escrever dados de tamanhos variados na memória de dados, foi necessário criar sinais de controle responsáveis por controlar o módulo da memória de dados que especificasse o tamanho do bloco a ser lido.[036] The eBPF processor has a set of instructions responsible for reading and writing data memory with the following types of size: 8 bits (byte (B)), 16 bits (half-word (H)), 32 bits ( word (w)), and 64 bits (double word (DW)). In order to be able to read and write data of varying sizes in the data memory, it was necessary to create control signals responsible for controlling the data memory module that specified the block size to be read.
[037] O valor de retorno do motor eBPF, que fica armazenado no registrador r0, é utilizado para determinar qual ação deve ser realizada no pacote. A tabela 2 descreve os valores de retorno do eBPF e suas respectivas ações realizadas no pacote. Depois que o eBPF termina sua computação, o pacote pode: ser encaminhado para porta de saída; encaminhado para o controlador; ser descartado; fazer a inundação.
Tabela 2: Ações realizadas no pacote. [037] The return value of the eBPF engine, which is stored in register r0, is used to determine what action should be performed on the package. Table 2 describes the return values of the eBPF and their respective actions performed in the package. After eBPF finishes computing, the packet can: be forwarded to the exit port; forwarded to the controller; be discarded; do the flood.
Table 2: Actions performed on the package.
[038] O hardware NetFPGA é composto por quatro portas Ethernet. Cada porta contém duas filas MAC e CPU (figura 2) onde o pacote pode ser encaminhado. Os valores da codificação das respectivas ações são baseados na quantidade de portas da plataforma NetFPGA.[038] NetFPGA hardware consists of four Ethernet ports. Each port contains two MAC and CPU queues (figure 2) where the packet can be forwarded. The encoding values of the respective actions are based on the number of ports on the NetFPGA platform.
[039] As instruções eBPF definem o comportamento de como o processador eBPF processará os pacotes. As instruções são inseridas na memória de instruções através da interface de registradores da NetFPGA. Foram criados registradores de software para inserir as instruções eBPF na memória de instruções do processador. As instruções são recebidas no roteador via mensagem enviada pelo controlador. Em seguida, as instruções são escritas nos registradores de software e encaminhadas para memória de instruções via o barramento PCI do hardware.[039] eBPF instructions define the behavior of how the eBPF processor will process packets. Instructions are inserted into the instruction memory via the NetFPGA register interface. Software recorders have been created to insert the eBPF instructions into the processor's instruction memory. Instructions are received at the router via a message sent by the controller. The instructions are then written to the software registers and forwarded to instruction memory via the hardware PCI bus.
[040] Como decisão de projeto definimos colocar a memória de instruções fora do processador eBPF com o objetivo de, no futuro, conectar vários processadores utilizando uma memória de instrução de forma compartilhada. Aumentando o número de processadores eBPF no caminho de dados do roteador SDN, mais pacotes podem ser processados, contribuindo para o aumento da vazão do roteador.
1.1.6 Metadados
Tabela 3: Metadado: Informações retiradas do pacote e armazenadas na memória de dados do processador eBPF.
[040] As a design decision we decided to place the instruction memory outside the eBPF processor with the aim of, in the future, connecting several processors using an instruction memory in a shared way. By increasing the number of eBPF processors in the SDN router's data path, more packets can be processed, contributing to increased router throughput.
1.1.6 Metadata
Table 3: Metadata: Information taken from the package and stored in the data memory of the eBPF processor.
[041] O plano de dados recebe o pacote pela interface de entrada e armazena o pacote na fila de entrada com algumas informações adicionais chamadas de metadados. A tabela 3 apresenta a estrutura armazenada. Primeiramente os metadados são recebidos, em seguida, o quadro Ethernet ou pacote IP. Os metadados pré-fixados também podem ser usados pelo programa eBPF assim como qualquer outro campo de protocolo. Os metadados atualmente definidos são a porta de destino, o tamanho do pacote em múltiplos de 64 bits, a porta de origem, o tamanho do pacote em bytes, o timestamp em segundos e nanosegundos. Os campos sobre o tamanho do pacote em 64 bits e em bytes foram incluídos porque o módulo da fila de entrada já provia essa informação.[041] The data plane receives the packet through the input interface and stores the packet in the input queue with some additional information called metadata. Table 3 shows the stored structure. First the metadata is received, then the Ethernet frame or IP packet. Pre-fixed metadata can also be used by the eBPF program just like any other protocol field. The currently defined metadata is the destination port, the packet size in multiples of 64 bits, the source port, the packet size in bytes, the timestamp in seconds and nanoseconds. The 64-bit and byte packet size fields were included because the input queue module already provided this information.
[042] O roteador SDN proposto foi implementado sobre o hardware NetFPGA 1G. O hardware NetFPGA1G possui quatro portas Ethernet de 1 Gbps. A NetFPGA possui uma FPGA Vertex-II Pro 50 com 53.136 células lógicas, uma SRAM de 4 KiB com 219 linhas e ciclo de relógio de 8 ns (125 MHz).[042] The proposed SDN router was implemented on the NetFPGA 1G hardware. The NetFPGA1G hardware has four 1 Gbps Ethernet ports. NetFPGA has a Vertex-II Pro 50 FPGA with 53,136 logic cells, a 4 KiB SRAM with 219 lines and an 8 ns (125 MHz) clock cycle.
[043] Os pacotes na NetFPGA são processados em forma de palavras de 64 bits e 8 bits de controle para identificar o tipo de palavra (dados ou metadado). Palavras são transmitidas pelo sinal data e o controle pelo sinal ctrl. Se o sinal de controle é igual a zero significa que as palavras do pacote estão sendo transmitidas, caso contrário as palavras são dos metadados.[043] Packets on the NetFPGA are processed in the form of 64-bit words and 8-bit control to identify the type of word (data or metadata). Words are transmitted by the data signal and the control by the ctrl signal. If the control signal is equal to zero it means that the words in the packet are being transmitted, otherwise the words are from the metadata.
[044] O sincronismo dos módulos da NetFPGA funcionam de modo padronizado. A figura 4 apresenta o sincronismo dos módulos com os respectivos sinais no hardware. Os sinais write (wr) (escrita) e ready (rdy) (pronto) controlam a comunicação entre os módulos. O sinal wr informa quando o módulo anterior está pronto para transmitir (possui conteúdo para transmitir) e o sinal rdy informa que o módulo posterior está pronto para receber. A transferência dos dados entre módulos só ocorre se os dois sinais estiverem ativos.[044] The synchronization of NetFPGA modules works in a standardized way. Figure 4 shows the synchronism of the modules with the respective signals in the hardware. The write (wr) and ready (rdy) signals control the communication between the modules. The wr signal informs when the previous module is ready to transmit (has content to transmit) and the rdy signal informs that the posterior module is ready to receive. The transfer of data between modules only occurs if both signals are active.
[045] Cada módulo contém uma fila de entrada e uma máquina de estados. A fila interna é utilizada para armazenar temporariamente o sinal data e ctrl até que a máquina de estado do módulo possa retirar da fila a palavra e o controle para começar o processamento. A máquina de estado de cada módulo tem um comportamento específico, por exemplo, o módulo output port lookup define a porta de saída de acordo com a porta de entrada.[045] Each module contains an input queue and a state machine. The internal queue is used to temporarily store the data and ctrl signal until the module's state machine can remove the word and the control from the queue to begin processing. The state machine of each module has a specific behavior, for example, the output port lookup module defines the output port according to the input port.
Claims (8)
- a) armazenar instruções eBPF para definir o comportamento do plano de dados que são geradas compilando e executando programas eBPF desenvolvidos usando linguagens de alto nível criados pelo usuário;
- b) utilizar uma máquina (004) de estados finitos para retirar o pacote da fila interna do módulo output port lookup (encaminhado pelo módulo input arbiter);
- c) armazenar o pacote retirado da fila obtido na etapa “b” e armazená-lo na memória de dados (011) do processador eBPF (005), inicializar o processador;
- d) realizar operações de análise, casamento e ações, geradas no processador eBPF (005) com base nas instruções eBPF instaladas na memória de instruções (007) obtidas na etapa “a” utilizando o módulo (006) de ação nos pacotes;
- e) encaminhar o pacote obtido na etapa “c” para filas de saída do dispositivo através do módulo output port ou descartá-lo conforme o valor lido no banco de registradores (012) obtido após o término da execução do programa eBPF pelo processador eBPF (005).
- a) store eBPF instructions to define the behavior of the data plan that are generated by compiling and running eBPF programs developed using high level languages created by the user;
- b) use a finite state machine (004) to remove the package from the internal queue of the output port lookup module (forwarded by the input arbiter module);
- c) store the package removed from the queue obtained in step “b” and store it in the data memory (011) of the eBPF processor (005), initialize the processor;
- d) perform analysis, matching and action operations, generated in the eBPF processor (005) based on the eBPF instructions installed in the instruction memory (007) obtained in step “a” using the action module (006) in the packages;
- e) forward the package obtained in step “c” to the device's output queues through the output port module or discard it according to the value read in the register bank (012) obtained after the eBPF program is finished running by the eBPF processor ( 005).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
BR102019009234-3A BR102019009234A2 (en) | 2019-05-06 | 2019-05-06 | network device and method for dynamically processing network traffic with sdn structure and protocol independent |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
BR102019009234-3A BR102019009234A2 (en) | 2019-05-06 | 2019-05-06 | network device and method for dynamically processing network traffic with sdn structure and protocol independent |
Publications (1)
Publication Number | Publication Date |
---|---|
BR102019009234A2 true BR102019009234A2 (en) | 2020-11-17 |
Family
ID=73419204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR102019009234-3A BR102019009234A2 (en) | 2019-05-06 | 2019-05-06 | network device and method for dynamically processing network traffic with sdn structure and protocol independent |
Country Status (1)
Country | Link |
---|---|
BR (1) | BR102019009234A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11729119B2 (en) | 2021-11-18 | 2023-08-15 | Cisco Technology, Inc. | Dynamic queue management of network traffic |
-
2019
- 2019-05-06 BR BR102019009234-3A patent/BR102019009234A2/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11729119B2 (en) | 2021-11-18 | 2023-08-15 | Cisco Technology, Inc. | Dynamic queue management of network traffic |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997106B1 (en) | Inter-smartNIC virtual-link for control and datapath connectivity | |
US11729300B2 (en) | Generating programmatically defined fields of metadata for network packets | |
EP1729462B1 (en) | Policy based routing using a fast filter processor | |
US10944696B2 (en) | Variable-length packet header vectors | |
US11588734B2 (en) | Systems for providing an LPM implementation for a programmable data plane through a distributed algorithm | |
US12278762B2 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
US11863467B2 (en) | Methods and systems for line rate packet classifiers for presorting network packets onto ingress queues | |
US11258707B1 (en) | Systems for building data structures with highly scalable algorithms for a distributed LPM implementation | |
Scholz | A look at Intel’s dataplane development kit | |
US11995004B2 (en) | Methods and systems for using a packet processing pipeline to accelerate InfiniBand administrative operations | |
US10616116B1 (en) | Network traffic load balancing using rotating hash | |
US10887234B1 (en) | Programmatic selection of load balancing output amongst forwarding paths | |
US7554984B2 (en) | Fast filter processor metering and chaining | |
US11693664B2 (en) | Methods and systems for distributing instructions amongst multiple processing units in a multistage processing pipeline | |
BR102019009234A2 (en) | network device and method for dynamically processing network traffic with sdn structure and protocol independent | |
US11900024B1 (en) | Simulating network packets in a packet processing pipeline | |
Brink et al. | Network Processing Performance Metrics for IA-and IXP-Based Systems. | |
US20250030636A1 (en) | Rule lookup for processing packets | |
US11811637B1 (en) | Packet timestamp format manipulation | |
US20250141794A1 (en) | Programming a packet processing device | |
US12244482B1 (en) | Systems and methods for a networking device to send heartbeat packets on multiple paths to a second networking device | |
US10680977B1 (en) | Splitting data into an information vector and a control vector and processing, at a stage of a control pipeline, the control vector and a data block of the information vector extracted from a corresponding stage of a data pipeline | |
Cerović | Resilient and highly performant network architecture for virtualized data centers | |
WO2016108711A1 (en) | Data reception and transmission device capable of interacting with an openflow controller | |
Wang | Towards a Programmable Dataplane |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B150 | Others concerning applications: publication cancelled [chapter 15.30 patent gazette] |
Free format text: ANULADA A PUBLICACAO CODIGO 15.21 NA RPI NO 2525 DE 28/05/2019 POR TER SIDO INDEVIDA. |
|
B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] |