[go: up one dir, main page]

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 PDF

Info

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
Application number
BR102019009234-3A
Other languages
Portuguese (pt)
Inventor
Marcos Augusto Menezes Vieira
Racyus Delano Garcia Pacífico
Original Assignee
Universidade Federal De Minas Gerais
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidade Federal De Minas Gerais filed Critical Universidade Federal De Minas Gerais
Priority to BR102019009234-3A priority Critical patent/BR102019009234A2/en
Publication of BR102019009234A2 publication Critical patent/BR102019009234A2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-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.

Figure 102019009234-3-abs
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.
Figure 102019009234-3-abs

Description

DISPOSITIVO DE REDE E MÉTODO PARA PROCESSAR O TRÁFEGO DE REDE COM ESTRUTURA SDN DE MODO DINÂMICO E INDEPENDENTE DE PROTOCOLONETWORK DEVICE AND METHOD FOR PROCESSING NETWORK TRAFFIC WITH SDN STRUCTURE IN A DYNAMIC AND PROTOCOL-INDEPENDENT MODE

[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.

BREVE DESCRIÇÃO DAS FIGURASBRIEF DESCRIPTION OF THE FIGURES

[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.

DESCRIÇÃO DETALHADA DA TECNOLOGIADETAILED TECHNOLOGY DESCRIPTION

[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).
[013] The method for processing packages on a device with an SDN structure comprises the following steps:
  • 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 NetFPGA 1G platform 1. Implementation

[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.

1.1 Plano de dados1.1 Data plan

[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.

1.1.1 Máquina de estados1.1.1 State machine

[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;
[026] The state machine (004) (finite state machine, FSM) in the output port lookup module controls the entire operation of packet processing. It removes the package from the module's internal queue (forwarded by the input arbiter module), starts the execution of the eBPF instructions and forwards the package to the next module (action in the package) when the last eBPF instruction (output) is executed. The functioning of the WSF follows the following steps:
  • 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;

1.1.2 Processador eBPF1.1.2 eBPF processor

[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.

Figure img0001
[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.
Figure img0001

1.1.3 Arquitetura do conjunto de instruções1.1.3 Instruction set architecture

[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.

1.1.4 Ação no pacote1.1.4 Action in the package

[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.

Figure img0002
[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.
Figure img0002

[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.

1.1.5 Memória de instruções1.1.5 Instruction memory

[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.

Figure img0003
[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.
Figure img0003

[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.

1.2 Instância do hardware1.2 Hardware instance

[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)

Dispositivo de rede para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo caracterizado por compreender 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.Network device for processing network traffic with SDN structure in a dynamic and protocol-independent manner characterized by comprising the following elements: 1) a finite state machine (004) for removing 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. Dispositivo de rede para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 1, caracterizado por ser aplicado para switch ou interface de rede.Network device to process network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 1, characterized by being applied to a network switch or interface. Dispositivo de rede para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 1, caracterizado por ter um processador eBPF para cada fila de entrada utilizando uma memória de instruções compartilhada.Network device for processing network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 1, characterized by having an eBPF processor for each input queue using a shared instruction memory. Dispositivo de rede para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 1, caracterizado por inserir as memórias TCAM/SRAM como tabelas para casamento de fluxos.Network device for processing network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 1, characterized by inserting TCAM / SRAM memories as tables for matching flows. Método para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo caracterizado por compreender 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).
Method for processing network traffic with SDN structure in a dynamic and protocol-independent manner characterized by understanding the following steps:
  • 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).
Método para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 5, etapa “a”, caracterizado pelas linguagens de alto nível utilizadas para gerar as instruções eBPF serem as linguagens C e P4.Method for processing network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 5, step “a”, characterized by the high-level languages used to generate the eBPF instructions being the C and P4 languages. Método para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 5, caracterizado por Implementar funções hashes para identificar e classificar fluxos.Method for processing network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 5, characterized by Implementing hash functions to identify and classify flows. Método para processar o tráfego de rede com estrutura SDN de modo dinâmico e independente de protocolo, de acordo com a reivindicação 5, caracterizado por expandir o número de campos metadados para realizar tarefas de medição e monitoramento do desempenho da rede.Method for processing network traffic with SDN structure in a dynamic and protocol-independent manner, according to claim 5, characterized by expanding the number of metadata fields to perform tasks for measuring and monitoring network performance.
BR102019009234-3A 2019-05-06 2019-05-06 network device and method for dynamically processing network traffic with sdn structure and protocol independent BR102019009234A2 (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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]