Você está na página 1de 49

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

INSTITUTO DE INFORMTICA
PROGRAMA DE PS-GRADUAO EM MICROELETRNICA

JORGE LUCIO TONFAT SECLEN

Projeto e Validao de um motor de


classificao e aprendizagem de endereos
MAC para um Comutador Gigabit Ethernet

Trabalho Individual I
TI 01

Prof. Dr. Ricardo Augusto da Luz Reis


Orientador

Porto Alegre, julho de 2010.

CIP CATALOGAO NA PUBLICAO

Seclen, Jorge Lucio Tonfat


Projeto e Validao de um motor de classificao e
aprendizagem de endereos MAC para um Comutador Gigabit
Ethernet / Jorge Lucio Tonfat Secln Porto Alegre: Programa de
Ps-Graduao em Microeletrnica, 2010.
49 f.:il.
Trabalho Individual (mestrado) Universidade Federal do Rio
Grande do Sul. Programa de Ps-Graduao em Microeletrnica.
Porto Alegre, BR RS, 2010. Orientador: Ricardo Augusto da Luz
Reis.
1.Gigabit Ethernet. 2.Motor de classificao MAC 3.Validao.
I. Reis, Ricardo Augusto da Luz. II. Ttulo.

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL


Reitor: Prof. Carlos Alexandre Netto
Vice-Reitor: Prof. Rui Vicente Oppermann
Pr-Reitor de Ps-Graduao: Prof. Aldo Bolten Lucion
Diretor do Instituto de Informtica: Prof. Flvio Rech Wagner
Coordenador do PGMICRO: Prof. Ricardo Augusto da Luz Reis
Bibliotecria-Chefe do Instituto de Informtica: Beatriz Regina Bastos Haro

SUMRIO

LISTA DE ABREVIATURAS E SIGLAS.............................................................. 5


LISTA DE FIGURAS ............................................................................................... 7
LISTA DE TABELAS .............................................................................................. 8
RESUMO ................................................................................................................... 9
ABSTRACT ............................................................................................................. 10
1

A TECNOLOGIA ETHERNET ..................................................................... 11

1.1

Historia da Ethernet ..................................................................................... 12

1.2

A arquitetura das redes................................................................................ 12

1.3

Conceito de encapsulamento ....................................................................... 14

1.4

Endereamento ............................................................................................. 14

1.5

Quadro Ethernet ........................................................................................... 16

1.6

Outras tecnologias LAN ............................................................................... 17

1.7

Padro IEEE 802.1D .................................................................................... 17

1.8

Padro IEEE 802.1Q .................................................................................... 18

COMUTADOR GIGABIT ETHERNET ....................................................... 19

2.1 Principais Funes de um Comutador ....................................................... 19


2.1.1
Encaminhamento .................................................................................... 19
2.1.1.1 Unicast .................................................................................................. 19
2.1.1.2 Multicast ............................................................................................... 20
2.1.1.3 Flooding ................................................................................................ 20
2.1.1.4 Broadcast .............................................................................................. 20
2.1.1.5 Filtering ................................................................................................. 20
2.1.2
Aprendizagem......................................................................................... 21
2.1.3
Envelhecimento ...................................................................................... 21

2.2 Principais Arquiteturas................................................................................ 21


2.2.1
Plataforma NetFPGA.............................................................................. 21
3
3.1

ARQUITETURA DO MOTOR DE CLASSIFICAO DE NVEL 2 ....... 24


Trabalhos relacionados ................................................................................ 26

3.2 Primeira Proposta......................................................................................... 26


3.2.1
Analisador de cabealho ......................................................................... 27
3.2.2
FIFO de entrada ...................................................................................... 28
3.2.3
FIFO de resultados ................................................................................. 28
3.2.4
Encaminhamento e aprendizagem .......................................................... 29
3.2.5
Envelhecimento ...................................................................................... 31
3.2.6
rbitro SRAM ........................................................................................ 32
3.2.7
Registros ................................................................................................. 35
3.2.8
Mquina de estados do motor de classificao....................................... 36
3.3 Segunda Proposta ......................................................................................... 37
3.3.1
rbitro SRAM ........................................................................................ 37
3.3.2
Encaminhamento e aprendizagem .......................................................... 39
4

VERIFICAO FUNCIONAL ...................................................................... 41

5 IMPLEMENTAO DO MOTOR DE CLASSIFICAO PARA UM


FPGA E UM ASIC ....................................................................................................... 42
6

ANLISE DOS RESULTADOS ..................................................................... 45

CONCLUSES E TRABALHOS FUTUROS ............................................... 47

REFERNCIAS ...................................................................................................... 48

LISTA DE ABREVIATURAS E SIGLAS

ASIC

Application specific Integrated Circuit

CAM

Content-adressable Memory

CRC

Cyclic Redundancy Check

CFI

Canonical Format Indicator

CPU

Central Process Unit

DEC

Digital Equipment Corporation

DUT

Design Under Test

FCS

Frame Check Sequence

FDDI

Fiber Distributed Data Interface

FIFO

First Input First Output

FPGA

Field Programmable Gate Array

FSM

Finite State Machine

Gbps

Gigabits per second

HDL

Hardware Description Language

IBM

International Business Machines

IEEE

Institute of Electrical and Electronics Engineers

LAN

Local Area Network

LLC

Logical Link Control

LUT

Lookup Table

MAC

Media Access Control

MAN

Metropolitan Area Network

Mbps

Megabits per second

MTU

Maximum Transmission Unit

OSI

Open System Interconnection

OUI

Organizationally Unique Identifier

PDU

Protocol Data Unit

PHY

Physical Interface

RTL

Register transfer level

SDU

Service Data Unit

SRAM

Static Random Access Memory

STA

Static Timing Analysis

STP

Spanning Tree Protocol

UFRGS

Universidade Federal do Rio Grande do Sul

VCD

Value Change Dump

VLAN

Virtual Local Area Network

WRR

Weighted Round Robin

ZBT

Zero Bus Turnaround

LISTA DE FIGURAS

Figura 1.1 Modelo de referncia OSI e sua relao com o padro IEEE 802.3. ............ 13
Figura 1.2. Encapsulamento dos dados atravs das camadas. ....................................... 14
Figura 1.3. Formato do endereo MAC Ethernet. .......................................................... 15
Figura 1.4. Formato do quadro Ethernet MAC. ............................................................. 16
Figura 1.5. Formato do quadro Ethernet MAC com etiqueta VLAN. ............................ 16
Figura 2.1. Diagrama da plataforma NetFPGA . ............................................................ 22
Figura 2.2. Diagrama da parte operativa do comutador Gigabit Ethernet. ..................... 23
Figura 2.3. Diagrama de tempos da comunicao entre os blocos da parte operativa. .. 23
Figura 3.1. Diagrama de blocos da arquitetura 1. ........................................................... 27
Figura 3.2. Diagrama de estados da FSM do bloco analisador de cabealho................. 28
Figura 3.3. Diagrama de estados da FSM do bloco de encaminhamento e aprendizagem.
........................................................................................................................................ 29
Figura 3.4. Organizao da memria SRAM. ................................................................ 30
Figura 3.5. Organizao do segmento da tabela VLAN na memria SRAM. ............... 31
Figura 3.6. Diagrama de estados da FSM do bloco de envelhecimento. ........................ 32
Figura 3.7. Diagrama de tempos de uma operao de escrita no rbitro SRAM. .......... 33
Figura 3.8. Diagrama de tempos de uma operao de leitura no rbitro SRAM............ 33
Figura 3.9. Diagrama de estados da primeira FSM do rbitro SRAM. .......................... 34
Figura 3.10. Diagrama de estados da segunda FSM do rbitro SRAM.......................... 35
Figura 3.11. Diagrama de estados da FSM do motor de classificao. .......................... 36
Figura 3.12. Diagrama de blocos da arquitetura 2. ......................................................... 37
Figura 3.13. Estrutura de pipeline do rbitro SRAM. .................................................... 38
Figura 3.14. Diagrama de tempos de uma operao de escrita na SRAM. .................... 39
Figura 3.15. Diagrama de tempos de uma operao de leitura na SRAM. .................... 39
Figura 4.1. Arquitetura do testbench descrito em System Verilog................................. 41
Figura 5.1. Placa de desenvolvimento do NetFPGA. ..................................................... 42
Figura 5.2. Diagrama do fluxo de sntese em FPGA. ..................................................... 43
Figura 5.3. Diagrama do fluxo de sntese em ASIC. ...................................................... 44

LISTA DE TABELAS

Tabela 2.1. Endereos multicast reservados. .................................................................. 20


Tabela 3.1. Interface do motor de classificao. ............................................................ 24
Tabela 3.2. Formato de cada entrada da tabela de endereos MAC. .............................. 31
Tabela 3.3. Registros do motor de classificao. ........................................................... 35
Tabela 3.4. Tabela de ciclos da FSM mostrando as operaes realizadas em cada ciclo.
........................................................................................................................................ 38
Tabela 3.5. Tabela de ciclos da FSM do bloco de encaminhamento e aprendizagem. .. 40
Tabela 6.1. Tabela de resultados da sntese em FPGA e ASIC. ..................................... 45
Tabela 6.2. Tabela de comparao de resultados com outros trabalhos na literatura..... 46

RESUMO

Este trabalho apresenta o projeto e validao do bloco principal de um comutador


Gigabit Ethernet. As funes deste bloco encontram-se definidas no padro IEEE
802.1D. A funo principal do motor de classificao e aprendizagem de endereos
MAC encaminhar os quadros a suas respectivas portas de sada. Para cumprir esta
tarefa, ele armazena o endereo MAC de origem dos quadros em uma memria SRAM
e associado a uma das portas de entrada. Este motor de classificao utiliza um
mecanismo de hashing que foi provado que eficaz em termos de desempenho e custo
de implementao. Este bloco pode pesquisar efetivamente 62.5 milhes de quadros por
segundo, que suficiente para trabalhar a uma taxa wire-speed em um comutador
Gigabit de 42 portas. O maior desafio foi conseguir a taxa de wire-speed durante o
processo de aprendizagem usando uma memria SRAM externa. O bloco foi
projetado utilizando Verilog HDL e visando a sua implementao na placa de
prototipagem NetFPGA e em ASIC baseado em uma tecnologia de 180 nanmetros da
pure-play foundry TSMC com a metodologia Semi-Custom baseada em standard cells
utilizando as ferramentas da empresa Cadence. Para a verificao se utilizou a
linguagem System Verilog. Uma abordagem de estmulos aleatrios restritos utilizada
em um ambiente de testbench com capacidade de verificao automtica utilizando a
ferramenta Modelsim da empresa Mentor Graphics.

Palavras-Chave: Gigabit Ethernet, motor de classificao MAC, Microeletrnica,


Verificao.

Design and Verification of a MAC address classification engine and


learning for a Gigabit Ethernet Switch

ABSTRACT

This work presents the design and verification of the main block of a Gigabit
Ethernet switch for an ASIC implementation. The functions of this block are defined in
the IEEE 802.1D standard. The main function of the MAC address classification engine
is to forward Ethernet frames to their corresponding output ports. To accomplish this
task it stores the source MAC address from frames in a SRAM memory and associates it
to one of the input ports. This classification engine uses a hashing scheme that has been
proven to be effective in terms of performance and implementation cost. It can search
effectively 62.5 million frames per second, which is enough to work at wire-speed rate
in a 42-port Gigabit switch. The main challenge was to achieve wire-speed rate during
the learning process using external SRAM memory. This block was designed using
Verilog HDL, targeting the NetFPGA prototype board and an ASIC based on a 180 nm
process from the pure-play foundry TSMC with the Semi-custom methodology based
on standard cells using the CAD tools from Cadence. For the verification stage is used
the System Verilog language. A constrained-random stimulus approach is used in a
layered-testbench environment with self-checking capability using Modelsim simulation
software from Mentor Graphics.

Keywords: Gigabit Ethernet, MAC classification engine, Microelectronics,


Verification.

11

1 A TECNOLOGIA ETHERNET

A informtica tem revolucionado o modo de viver na sociedade atual. Este impacto


no poderia ter sido to grande sem as redes de comunicao de dados. Estas redes
fazem com que todo dispositivo, com capacidade de processar informao, conectado a
uma rede possa interagir com outros dispositivos ligados rede. Esta capacidade de
interconexo, seja com ou sem fios (wireless), permite a execuo de diversas
aplicaes como a Internet (World Wide Web), VoIP (voz sobre IP), vdeo
broadcasting, etc.
A Ethernet (METCALFE, 1976) o protocolo da segunda camada (camada de
enlace, segundo o modelo OSI) mais empregado nas redes de comunicao de dados
locais (LANs) e atualmente tambm nas redes metropolitanas (MANs). O rpido
aumento do seu uso deve-se s caractersticas de baixo custo e alto desempenho assim
como ao acelerado processo de padronizao da taxa de transmisso: 10 Mbits/s em
1983, 100 Mbits/s em 1995, 1 Gbit/s em 1998, e 10 Gbits/s em 2002 (FRAZIER, 1999).
Foi padronizado pela IEEE com a norma 802.3. (IEEE, 2005b)
No comeo, as LANs foram projetadas usando um canal de comunicao
compartilhado. No final dos anos 80 e comeo dos anos 90, dois fatores mudaram o
jeito de projetar as LANs (SEIFERT, 2008):
- A topologia mudou de um canal de comunicao compartilhado para um sistema
de cabeamento estruturado centralizado em hubs.
- Os dispositivos de computao e as requisies das aplicaes avanaram at
ultrapassar a capacidade das LANs compartilhadas, limitando o desempenho global do
sistema.
Esses fatores junto com o desenvolvimento da microeletrnica permitiram
desenvolver os chamados comutadores LAN que permitem utilizar a estrutura de
cabeamento j existente para criar uma rede microsegmentada. Essa mudana tem as
seguintes vantagens:
- A possibilidade de eliminar as colises, se o modo de operao full-duplex for
utilizado.
- Cada dispositivo tem largura de banda dedicada.
- A taxa de transmisso pode ser independente para cada dispositivo.
Estas caractersticas junto com os baixos custos de implementao ajudaram na
ampla utilizao destes dispositivos em redes corporativas e ultimamente tambm em
redes privadas.

12

1.1 Historia da Ethernet


A Ethernet foi criada nos laboratrios da Xerox Corporation em Palo Alto,
Califrnia no ano de 1973. O Dr. Robert Metcalfe, chamado tambm o pai da Ethernet,
crio o primeiro prottipo que trabalhava a 2.94 milhes de bits por segundo. Depois de
alguns anos as empresas Intel e DEC (Digital Equipment Corporation) juntaram-se com
Xerox para criar o padro Ethernet com uma taxa de 10 Mb/s.
Em paralelo ao trabalho feito por DIX (DEC-Intel-Xerox) a IEEE formou o
conhecido projeto 802 para criar uma maior infra-estrutura para a padronizao das
tecnologias LAN. Devido a que no se conseguiu um acordo sobre a tecnologia LAN a
ser utilizada se criaram grupos de trabalho especficos para cada uma das tecnologias da
poca. Em 1983, o grupo de trabalho 802.3 apresentou o primeiro padro da IEEE para
redes locais baseadas em Ethernet. Salvo algumas diferenas o padro da IEEE e o
padro gerado por DIX foi o mesmo. Depois foram feitas algumas modificaes no
padro adicionando outros meios fsicos para realizar a implementao como a
utilizao de cabo coaxial e cabo de fibra tica para conexes entre edificaes.
Entre os anos 1991 e 1992 foi apresentada uma verso de Ethernet que trabalhava a
uma taxa de 100 Mb/s e com quase as mesmas caractersticas do padro apresentado em
1983. O resultado foi novamente a padronizao por parte da IEEE desta verso de
Ethernet conhecida como Fast Ethernet em 1995. J no ano 1998 apareceu o padro
IEEE para redes Ethernet que trabalham a uma taxa de 1000Mb/s conhecida como
Gigabit Ethernet. Em 2002 foi apresentado o padro para 10 Gigabit Ethernet. O
trabalho ainda continua por conseguir redes Ethernet que trabalhem a taxas mais altas.
Por isso, neste ano 2010 foi apresentado o padro para redes que trabalham com taxas
de 40 Gb/s e 100 Gb/s.

1.2 A arquitetura das redes


Os distintos usurios das redes tm diferentes conceitos sobre uma rede. Por
exemplo, os usurios que trabalham projetando as interfaces fsicas das redes no tm
que se preocupar pelo formato dos dados que atravessam a rede. Por outro lado um
programador de aplicaes baseadas na rede conhece as interfaces e facilidades que
oferece o sistema operativo, mas no se preocupa pelo mecanismo que se utiliza para
intercambiar os dados na rede. Outro fato que as aplicaes e as tecnologias utilizadas
nas redes esto em uma mudana constante; e estas mudanas no devem de afetar o
funcionamento global da rede. A chave para conseguir isto separar as diversas funes
da rede em camadas. Esta organizao permitir a modificao de algumas funes sem
comprometer o funcionamento das outras camadas.
No final dos anos 1970 a OSI definiu um modelo de camadas como se amostra na
Figura 1.1 (OSI, 1994)

13

APLICAO

APRESENTAO

SESSO

TRANSPORTE

REDE

ENLACE DE
DADOS

FSICA

LCC
MAC
802.3 ETHERNET

CANAL

Figura 1.1 Modelo de referncia OSI e sua relao com o padro IEEE 802.3.
Os comutadores so dispositivos da rede que permitem a interligao dos elementos
da rede e estes trabalham basicamente nas duas primeiras camadas apresentadas na
figura anterior.
A primeira a camada fsica. Esta se encarrega das funes de codificao e
decodificao dos sinais, sincronizao dos sinais de relgio entre outras. A
implementao desta camada dependero do canal de comunicao e do mdio fsico
utilizado. Exemplos de interfaces da camada fsica so: Token Ring, Ethernet e FDDI.
Para um dispositivo da rede, esta camada no mudar as funes de alto nvel. Por
exemplo, um comutador trabalhar do mesmo jeito tanto em uma rede Fast Ethernet
(100 Mbps) que utiliza um cabo de par tranado como em uma rede Gigabit Ethernet
(1000 Mbps) que est implementada sobre cabo de fibra tica.
A camada de enlace de dados (camada dois) oferece servios que permitem a
comunicao de dois dispositivos a traves de um canal fsico. A comunicao pode ser
ponto a ponto ou ponto a multiponto. Esta camada deve cumprir trs funes principais:

Delimitar os dados transmitidos em unidades discretas (framing).

Identificar cada quadro com um endereo de origem e de destino.

Oferecer um mecanismo de deteco de erros para evitar transmitir dados


corruptos aos nveis superiores.

Em geral a tecnologia LAN trabalha nas duas primeiras camadas do modelo OSI e
os comutadores realizam funes principalmente na camada de enlace. As camadas
superiores oferecem os servios necessrios para estabelecer uma boa comunicao
entre os dispositivos da rede. Alguns exemplos so: o encaminhamento dos pacotes a
traves de varias redes (camada de rede), o ordenamento dos pacotes (camada de

14

transporte), mecanismos de autenticao (camada de sesso), a compresso dos dados


(camada de apresentao) e finalmente as funes que v o usurio final. (camada de
aplicao).

1.3 Conceito de encapsulamento


Na medida em que os dados passam a traves das camadas que conformam os
diferentes protocolos, estes so incrementados com alguma informao de controle para
que a entidade correspondente no receptor possa os interpretar e tomar uma ao assim
receba os dados.
As entidades de cada camada recebem os dados de um cliente em uma camada
superior (tambm chamado SDU ou Service Data unit) e adicionam informao de
controle em forma de cabealhos ou fim de carga til conformando o chamado PDU
(Protocol Data Unit). No dispositivo receptor acontece o contrrio, a entidade de uma
camada recebe os dados de uma camada de nvel inferior e processa a informao de
controle para logo depois tirar esta informao e encaminhar os dados a uma camada
superior. Este processo chamado de desencapsulamento.

PDU da camada N+1

Camada N+1

SDU da camada N

Cabealho
Camada N

Carga til da camada N

Fim de carga
til (opcional)

Camada N

PDU da camada N

SDU da camada N-1

Cabealho
Camada N -1

Carga til da camada N-1

Camada N-1
Fim de carga
til (opcional)

PDU da camada N-1

Figura 1.2. Encapsulamento dos dados atravs das camadas. (SEIFERT, 2008)

1.4 Endereamento
Uma rede por definio envolve a mais de um dispositivo. O objetivo da rede
habilitar a comunicao entre estes dispositivos. Um endereo o meio para identificar
um dispositivo na rede. Cada protocolo que suporte o intercmbio de informao entre
mltiplas estaes deve ter algum mecanismo de identificao para as estaes.

15

A nica caracterstica importante dos endereos a singularidade (SEIFERT, 2008),


que permite a identificar de modo inequvoco os dispositivos da rede. Embora esta
singularidade s abrange o meio aonde o protocolo est operando.
Por exemplo, um endereo da camada de enlace de dados s precisa ser nico dentro
da rede local onde trabalha. Quando um dispositivo tenha que se comunicar com um
dispositivo em outra rede ter que utilizar um endereo de um protocolo da camada de
rede.
Na tecnologia Ethernet os endereos esto compostos por seis octetos de bits,
formando um endereo de 48-bit que pode ser dividido em duas metades:
- Endereos que identificam s um dispositivo ou interface de rede. Estes tambm
so chamados endereos unicast.
- Endereos que identificam um grupo de dispositivos. Estes tambm so chamados
endereos multicast.
Como o endereo utilizado pela sub-camada de controle de acesso ao meio (MAC)
da camada de enlace de dados, ento o endereo tambm chamado de endereo MAC.
Para diferenciar os endereos unicast dos multicast, utilizado o primeiro bit do
primeiro byte do endereo como se amostra na Figura 1.3

Identificao do fabricante (OUI)

1 byte

2 byte

3 byte

Espao reservado para o fabricante

4 byte

5 byte

6 byte

Primeiro bit transmitido:


0: Endereo Unicast
1: Endereo Multicast
Segundo bit transmitido:
0: Administrado globalmente
1: Administrado localmente

Figura 1.3. Formato do endereo MAC Ethernet.


O segundo bit do primeiro byte tambm utilizado para diferenciar se o endereo
administrado localmente o globalmente. Os endereos administrados globalmente so
atribudos pelos fabricantes na hora de produzir o dispositivo. Ao contrrio, os
endereos administrados localmente so atribudos pelos administradores de rede na
hora de configurar os dispositivos. A IEEE a encarregada de administrar a atribuio
dos endereos MAC. Eles administram os trs primeiros bytes do endereo que
chamado de identificao do fabricante ou OUI, deixando os outros trs bytes para ser
administrados pelo fabricante com um OUI atribudo. A IEEE s utiliza os endereos

16

que so globalmente administrados, deixando os outros para uso livre pelos


administradores de rede.

1.5 Quadro Ethernet


Um quadro (em ingls, frame) Ethernet definido pela norma IEEE 802.3 (IEEE,
2005b) no caso do quadro Ethernet padro e pela norma IEEE 802.1Q (IEEE, 2005a)
para os quadros com etiquetas VLAN. Nas Figuras 1.4 e 1.5 se apresenta os dois
formatos utilizados no presente trabalho.
Prembulo
7 bytes

SFD
1 byte

DA
6 bytes

SA
6 bytes

LENGTH/TYPE
2 bytes

DADOS
46 ~ 1500 bytes

FCS
4 bytes

Figura 1.4. Formato do quadro Ethernet MAC.

Prembulo
7 bytes

SFD
1 byte

DA
6 bytes

SA
6 bytes

VLAN ID Tag Ctrl Info LENGTH/TYPE


2 bytes
2 bytes
2 bytes

VLAN Protocol ID
= 0x8100

Priority CFI
3 bits 1 bit

DADOS
46 ~ 1500 bytes

FCS
4 bytes

VLAN Identifier
12 bits

Figura 1.5. Formato do quadro Ethernet MAC com etiqueta VLAN.


A seguir apresentada uma breve descrio dos campos do quadro Ethernet padro
e com etiquetas VLAN das figuras anteriores:

Prembulo: um padro alternado de '1's e '0's que permite aos receptores se


sincronizar com o quadro recebido;

Start Frame Delimiter (SFD): Byte responsvel pela sinalizao de incio de


quadro;

Endereo Destino (DA): Especifica o endereo do dispositivo que ser o


destino do quadro, ou o endereo que representa um grupo de dispositivos de
destino (multicast ou broadcast);

Endereo Origem (SA): Especifica o endereo fsico MAC do dispositivo


que enviou o quadro. Este endereo sempre tem que ser unicast;

Tamanho do Quadro (LEN/TYP): Indica o valor do tamanho do quadro


Ethernet. Se o valor representado neste campo for maior ou igual que 0x600
(hexadecimal), ento o campo indica o tipo de quadro;

17

Etiqueta VLAN (Opcional): A etiqueta VLAN de 12-bits permite a


construo de um mximo de 4096 VLANs. Um identificador de protocolo
(0x8100) utilizado para detectar a etiqueta no quadro. O campo de Priority
serve para definir um nvel de prioridade no quadro Ethernet. O campo CFI
(Canonical Format Indicator) indica a ordem dos bits nos bytes (Little or
Big Endian);

Dados: Este campo possui um tamanho mnimo de 46 bytes e mximo de


1500 bytes. Se a quantidade de dados a enviar menor que 46 bytes, ento
um conjunto de bits de enchimento (denominados em ingls padding)
acrescentado ao final dos dados para completar o tamanho mnimo do
quadro;

Seqncia de Verificao de Quadro: O Frame Check Sequence (FCS) o


valor resultante do clculo CRC-32 (32bit-Cyclic Redundancy Check),
executado sobre o contedo dos campos de endereo destino (DA), endereo
origem (SA), tamanho/tipo do quadro (LEN/TYP), e os dados (levando em
conta o padding, se for gerado). O FCS utilizado para verificao de erros
no quadro recebido.

1.6 Outras tecnologias LAN


Alm da Ethernet, existem outras tecnologias LAN difundidas. Estas tambm so
utilizadas ao nvel comercial e que tambm possuem seus prprios padres.
Uma muito conhecida a desenvolvida pela IBM chamada Token Ring. A diferena
da Ethernet, o Token Ring conecta os dispositivos em lao. Cada dispositivo s pode
transmitir diretamente para o dispositivo vizinho e s pode receber de um dispositivo
vizinho. Para que o protocolo trabalhe corretamente, s um dispositivo pode transmitir
dados num determinado momento. Essa autorizao que recebe um dispositivo
chamada de token. O token vai circulando pelos dispositivos na rede, ento quando um
dispositivo quer transmitir, primeiro tem que esperar o token chegar.
Outro protocolo que surgiu junto com a Ethernet foi o FDDI ou Fiber Distributed
Data Interface que foi o primeiro que conseguiu operar a 100 Mb/s. O seu uso no foi
muito difundido nas redes locais devido utilizao exclusiva de fibra tica como meio
fsico (alto custo de implementao). O funcionamento similar ao Token Ring, com a
diferena que utiliza um duplo anel para interligar os dispositivos.

1.7 Padro IEEE 802.1D


O padro IEEE 802.1D descreve a operao dos comutadores. Alm contm uma
descrio da tabela de endereos do comutador, os mecanismos de filtrado e
encaminhamento de quadros, o suporte de entradas dinmicas e estticas, assim como
regras de encaminhamento e definies de filtros customizados. O padro tambm

18

estabelece um grupo de parmetros que permitem a operao de comutadores


interligados.

1.8 Padro IEEE 802.1Q


O padro IEEE 802.1Q o padro para redes virtuais sobre Ethernet. A tecnologia
das redes virtuais permite separar a conectividade lgica da conectividade fsica. Isso
significa que a conectividade das estaes em uma rede no est mais restrita
topologia fsica. Este padro uma extenso do padro IEEE 802.1D, mas com as
especificaes para que os comutadores trabalhem em um ambiente com redes virtuais.

19

2 COMUTADOR GIGABIT ETHERNET

Depois de ter explicado a tecnologia Ethernet, neste captulo se explicar as


caractersticas de um comutador Gigabit Ethernet, que o foco deste trabalho. Este
captulo est dividido em duas partes. A primeira descreve as principais funes de um
comutador e a segunda parte expe as principais arquiteturas existentes com nfase na
plataforma NetFPGA que a base deste trabalho.

2.1 Principais Funes de um Comutador


As seguintes funes descrevem principalmente o funcionamento do comutador
quando recebe quadros. O tipo de operao do comutador chamado de promscuo.
Chama-se assim porque recebe todos os quadros de cada porta sem levar em conta o
endereo de destino do quadro. A operao tpica de um dispositivo receber s os
quadros que tenham o mesmo endereo de destino do dispositivo.

2.1.1

Encaminhamento

Quando um novo quadro aparece, o comutador analisa o endereo de destino e


procura na tabela de endereos interna para escolher a porta por onde o quadro deve ser
encaminhado. A seguir se mostram as diferentes possveis respostas do comutador.

2.1.1.1 Unicast
Encaminhamento unicast um quadro que encaminhado por uma nica porta. Isto
acontece quando o endereo de destino do quadro do tipo unicast e o endereo foi
armazenado na tabela de endereos.

20

2.1.1.2 Multicast
Encaminhamento multicast um quadro que encaminhado por um grupo de portas.
Isto acontece quando o endereo de destino do tipo multicast. Os endereos multicast
so utilizados por alguns protocolos especficos para poder enviar dados a mais de um
dispositivo numa s transmisso. A tabela 2.1 mostra alguns endereos multicast
utilizados.

Tabela 2.1. Endereos multicast reservados.


Endereo

Uso

01 - 80 - C2 - 00 - 00 - 00

Spanning Tree Protocol (STP)

01 - 80 - C2 - 00 - 00 - 01

IEEE 802.3 Full Duplex PAUSE

01 - 80 - C2 - 00 - 00 - 02

Link Aggregation Control e


Marker Protocols

01 - 80 - C2 - 00 - 00 - 03

Reservado para uso no futuro

01 - 80 - C2 - 00 - 00 - 0F

Reservado para uso no futuro

2.1.1.3 Flooding
O Flooding quando um quadro encaminhado por todas as portas exceto a porta
de entrada do quadro. Isto acontece quando o comutador no encontra o endereo de
destino armazenado na tabela de endereos.

2.1.1.4 Broadcast
O broadcast um tipo de endereo multicast. Quando o quadro possui o endereo
de destino FF - FF - FF- FF - FF FF, o quadro encaminhado por todas as portas do
comutador exceto a porta de entrada do quadro.

2.1.1.5 Filtering
Filtragem de quadros ou filtering restringir o encaminhamento de quadros que
passam pelo comutador. O mais bsico aquele que impede que um quadro saia pela
porta por onde entrou. Atualmente os comutadores permitem filtros customizados
baseados nos endereos de origem/destino, o protocolo e outros critrios.

21

2.1.2

Aprendizagem

A chave para o correto funcionamento do comutador a tabela de endereos MAC.


Esta tabela relaciona endereos MAC com as portas fsicas do comutador. No comeo,
as tabelas eram criadas manualmente pelos tcnicos de rede. Atualmente a tabela
criada automaticamente pelo comutador num processo chamado de aprendizagem.

2.1.3

Envelhecimento

Se o comutador s aprendesse endereos e nunca os apagasse ento a maioria dos


algoritmos de pesquisa na tabela demorariam mais em procurar um endereo, a tabela
chegaria a seu mximo e o comutador no poderia aprender mais endereos. Uma
soluo simples apagar os endereos que no esto ativos. Este processo chamado de
envelhecimento. Um endereo fica ativo quando existem quadros com origem naquele
endereo.

2.2 Principais Arquiteturas


Na implementao de comutadores encontram-se diferentes abordagens na
literatura. O comutador pode-se dividir em trs blocos principais: um que se encarrega
de receber os quadros, process-los e encontrar a porta de sada,a matriz de
chaveamento ou em ingls, switch matrix, que se encarrega do mecanismo de
encaminhamento dos quadros para as portas de sada e por ltimo o bloco que se
encarrega de ordenar os quadros que vo ser encaminhados em cada uma das portas de
sada. As principais variantes encontram-se no projeto da matriz de chaveamento. As
principais arquiteturas so: memria compartilhada, barramento compartilhado e
comutador de malha ou cross-point matrix. O presente trabalho basea-se na plataforma
NetFPGA que apresentada a continuao.

2.2.1

Plataforma NetFPGA

A plataforma NetFPGA foi desenvolvida por um grupo de pesquisa na universidade


de Stanford nos Estados Unidos. Esta plataforma visa a rpida prototipao de hardware
aplicado a redes. A Figura 2.1 amostra o diagrama da arquitetura. Possui tanto blocos de
hardware descritos em Verilog, como o software necessrio para interagir com o
computador.

22

Figura 2.1. Diagrama da plataforma NetFPGA (NETFPGA, 2010).


A plataforma fornece os recursos necessrios para a implementao de dispositivos
de redes como um comutador. Basicamente est conformado por um FPGA, os PHYs
Ethernet e memrias externas.
Os blocos de hardware podem-se dividir em dois grupos: o caminho por onde vo
circular os quadros ou parte operativa e os blocos que permitem a configurao desta
parte operativa e a interao com um CPU externo.
Na Figura 2.2 se observa o diagrama de blocos da parte operativa. Estes blocos esto
vinculados numa estrutura do tipo pipeline. Esta abordagem permite adicionar novos
mdulos sem muita complicao. O tempo de execuo de cada bloco pode ser
diferente, porque a comunicao entre os mdulos do tipo handshake com a ajuda de
buffers intermedirios. O diagrama de tempos de uma comunicao tpica de dois
mdulos se apresenta na Figura 2.3.
O presente trabalho visa projetar o motor de classificao que parte do bloco
Output Port Lookup na parte operativa do comutador.

23

MAC
RxQ

MAC
TxQ

CPU
RxQ

CPU
TxQ

MAC
RxQ

MAC
TxQ

CPU
RxQ

INPUT
ARBITER

OUTPUT
PORT
LOOKUP

FRAME
MARKER

OUTPUT
QUEUES

CPU
TxQ

MAC
RxQ

MAC
TxQ

CPU
RxQ

CPU
TxQ

MAC
RxQ

MAC
TxQ

CPU
RxQ

CPU
TxQ

Figura 2.2. Diagrama da parte operativa do comutador Gigabit Ethernet.

CLK

RDY

WR

DATA

CTRL

Figura 2.3. Diagrama de tempos da comunicao entre os blocos da parte operativa.

24

3 ARQUITETURA DO MOTOR DE CLASSIFICAO DE


NVEL 2

Como foi mencionado anteriormente, a estrutura proposta na plataforma NetFPGA


permite adicionar blocos utilizando uma interface padro. A tabela 3.1 amostra esta
interface alm da comunicao com o rbitro da memria SRAM. Os sinais do relgio e
reset esto excludos.

Tabela 3.1. Interface do motor de classificao.


Sinal

Tipo

Descrio

Interface com a Parte operativa


out_data [63:0]

Sada

Barramento de dados da parte operativa.

out_ctrl [7:0]

Sada

Barramento de controle da parte operativa.

out_wr

Sada

out_rdy

Entrada

Indica se o bloco seguinte pode receber dado.

in_data [63:0]

Entrada

Barramento de dados da parte operativa.

in_ctrl [7:0]

Entrada

Barramento de controle da parte operativa.

in_wr

Entrada

in_rdy

Sada

Indica que os dados nas sadas out_data e out_ctrl so


vlidos.

Indica que os dados nas entradas in_data e in_ctrl so


vlidos.
Indica ao bloco anterior que pode receber dado.

Interface com o barramento de registros


reg_req_in

Entrada

Requisio de acesso a um registro.

reg_ack_in

Entrada

Resposta requisio de acesso.

reg_rd_wr_L_in

Entrada

reg_addr_in [22:0]

Entrada

Barramento de endereos dos registros.

reg_data_in [31:0]

Entrada

Barramento de dados dos registros.

reg_src_in [1:0]

Entrada

Indica se a operao de leitura (alta) ou escritura


(baixa).

Sinal utilizado pelos iniciadores das requisies para


identificar suas respectivas respostas.

25

reg_req_out

Sada

Requisio de acesso a um registro.

reg_ack_out

Sada

Resposta requisio de acesso.

reg_rd_wr_L_out

Sada

reg_addr_out [22:0]

Sada

Barramento de endereos dos registros.

reg_data_out [31:0]

Sada

Barramento de dados dos registros.

reg_src_out [1:0]

Sada

Indica se a operao de leitura (alta) ou escritura


(baixa).

Sinal utilizado pelos iniciadores das requisies para


identificar suas respectivas respostas.

Interface com o rbitro SRAM para o bloco de encaminhamento e aprendizagem


wr_0_req

Sada

Requisio de escrita na memria SRAM.

wr_0_addr [18:0]

Sada

Barramento de endereos para a escrita na memria


SRAM.

wr_0_data [71:0]

Sada

Barramento de dados para a escrita na memria SRAM.

wr_0_ack

Entrada

Indica que se atendeu a requisio de escrita.

rd_0_req

Sada

rd_0_addr

Sada

rd_0_data

Entrada

Barramento de dados para a leitura na memria SRAM.

rd_0_ack

Entrada

Indica que se atendeu a requisio de leitura.

rd_0_vld

Entrada

Indica que os dados em rd_0_data so vlidos.

Requisio de leitura na memria SRAM.


Barramento de endereos para a leitura na memria
SRAM.

Interface com o rbitro SRAM para o bloco de envelhecimento


wr_1_req

Sada

Requisio de escrita na memria SRAM.

wr_1_addr [18:0]

Sada

Barramento de endereos para a escrita na memria


SRAM.

wr_1_data [71:0]

Sada

Barramento de dados para a escrita na memria SRAM.

wr_1_ack

Entrada

Indica que se atendeu a requisio de escrita.

rd_1_req

Sada

rd_1_addr

Sada

rd_1_data

Entrada

Barramento de dados para a leitura na memria SRAM.

rd_1_ack

Entrada

Indica que se atendeu a requisio de leitura.

rd_1_vld

Entrada

Indica que os dados em rd_1_data so vlidos.

Requisio de leitura na memria SRAM.


Barramento de endereos para a leitura na memria
SRAM.

26

3.1 Trabalhos relacionados


Na literatura podemos encontrar diferentes abordagens ao problema de
classificao de quadros. Algumas solues utilizam memrias de contedo enderevel
ou CAMs binrias ou ternrias, mas o custo por bit e o consumo de potncia
apresentado em (MCAULEY, 1993) faz invivel seu uso em comutadores com tabelas
de endereos MAC com tamanhos que esto em torno das centenas de milhares de
entradas. Outras propostas tentaram implementar o motor de classificao em software,
mas os testes feitos em (LUO, 2007) confirmam que esta tarefa tem que ser
implementada em hardware. Uma soluo muito utilizada utilizar uma funo hash
para armazenar os endereos MAC numa memria SRAM. Utiliza um hardware mais
simples em comparao com as outras solues, mas tem algumas desvantagens como a
reduo da capacidade da memria devido s colises de endereos. Para lidar com o
problema das colises, a tabela de endereos est organizada em baldes que contm
mais de uma entrada. Uma funo hash escolhida com uma distribuio relativamente
uniforme de valores de sada reduzira as colises e melhorar a capacidade da tabela
tambm.
A continuao se apresenta as duas solues propostas para o projeto do motor de
classificao. Ambas propostas possuem a mesma interface que se amostra na Tabela
3.1 A principal diferena encontra-se no projeto dos blocos que se encarregam do
encaminhamento e aprendizagem dos quadros e no rbitro SRAM. Esta diferena faz do
que o desempenho mude significativamente. Os resultados de cada uma das propostas
so expostos no seguinte captulo.

3.2 Primeira Proposta


A primeira arquitetura foi feita baseada nos blocos inclusos na plataforma
NetFPGA. O diagrama de blocos se amostra na Figura 3.1.
Este bloco cumpre as seguintes caractersticas definidas no padro IEEE 802.1D
(IEEE, 2004):
Encaminhamento de quadros unicast, multicast e broadcast.
Tabela de endereos MAC para o encaminhamento de quadros.
Escritura esttica de endereos MAC.
Aprendizagem dinmico de endereos MAC.
Envelhecimento dos endereos dinamicamente aprendidos com tempo
configurvel.

27

ARBITRO SRAM

SRAM ZBT

ACESSO
EXTERNO
PROTOCOLO DE
HANDSHAKE

BARRAMENTO
DE DADOS

ANALISADOR
DE
CABEALHO
ENCAMINHAMENTO
& APRENDIZAGEM

ENVELHECIMENTO
BARRAMENTO DE
REGISTROS

BARRAMENTO DE
REGISTROS

REGISTROS
FIFO DE
RESULTADOS
BARRAMENTO DE
DADOS
FIFO DE
ENTRADA

MAQUINA DE
ESTADOS

L2 MOTOR DE CLASSIFICAO

Figura 3.1. Diagrama de blocos da arquitetura 1.


A continuao se descreve cada um dos blocos que fazem parte do motor de
classificao.

3.2.1

Analisador de cabealho

Este bloco se encarrega de extrair quatro dados do quadro. Estes so: o endereo
MAC de destino, o endereo MAC de origem, a porta de entrada e o VLAN ID quando
contiver. Para realizar esta funo, este bloco possui uma mquina de estados que se
amostra na Figura 3.2.

28

Figura 3.2. Diagrama de estados da FSM do bloco analisador de cabealho.

3.2.2

FIFO de entrada

Este bloco se encarrega de armazenar as primeiras palavras de cada quadro e


permitir que o bloco que analisa o cabealho consiga extrair os campos importantes. As
caractersticas desta FIFO so as seguintes:
data width: 72 bits.
data depth: 16 posies.
FIFO sncrona.
Desempenho de leitura: padro.
O desempenho de leitura padro se refere ao modo de ler os valores da FIFO.

3.2.3

FIFO de resultados

Este bloco se encarrega de armazenar o resultado do bloco de encaminhamento e


aprendizagem. Este resultado so as portas de destino e quando o quadro contiver
informao de VLAN, tambm ser incluso a informao sobre quais sero as portas
tagged de aquela VLAN. As caractersticas desta FIFO so as seguintes:
data width: 16 bits.
data depth: 4 posies.
FIFO sncrona.

29

Desempenho de leitura: padro.

3.2.4

Encaminhamento e aprendizagem

Este bloco o principal do motor de classificao, portanto o mais complexo. A


funo principal encontrar as portas de sada de cada quadro. Dependendo das
caractersticas do quadro, este poderia ter mais de um destino (ex. quadros multicast e
broadcast). Para cumprir esta funo o bloco possui uma mquina de estados que se
amostra na Figura 3.3.

Figura 3.3. Diagrama de estados da FSM do bloco de encaminhamento e aprendizagem.


No primeiro estado (IDLE) o bloco espera a chegada de dados de um quadro. No
segundo estado (ANALIZE_DATA) o bloco vai analisar se o endereo de destino
unicast, multicast ou broadcast. Se o quadro for multicast ou broadcast, as portas de
sada j se encontram definidas ento j no e necessrio procurar o endereo de destino
na tabela. Neste estado tambm se analisa se o quadro tem um endereo de origem
invalido (multicast ou broadcast). Quando isto acontecer, estes quadros sero
descartados.
No estado (HASH) se calcula os endereos na tabela SRAM dos endereos MAC do
quadro utilizando a funo Hash apresentada anteriormente e tambm se o quadro tiver
o VLAN ID procurado na tabela SRAM quais so as portas membros Tag e Untag de
aquele ID. Os membros Tag so aqueles que devem passar o VLAN Tag ao seguinte

30

elemento na rede, os membros Untag so aqueles que pertencem a um determinado


grupo VLAN, mas no passam o quadro com o VLAN Tag.
No estado (LOOKUP_LEARN), se tem duas opes: se o quadro tiver um endereo
MAC de destino do tipo multicast ou broadcast, ento neste estado s se far a
operao de aprendizagem. No caso contrrio, primeiro se far a operao de pesquisa e
depois a operao de aprendizagem. A operao de pesquisa compreende a procura do
endereo MAC de destino na tabela SRAM. De outro lado a operao de aprendizagem
abarca a procura do endereo MAC de origem na tabela e depois a escrita da mesma no
caso o endereo no fosse encontrado. As operaes de pesquisa e aprendizagem so
feitas juntas para aproveitar a reduo do tempo de acesso na SRAM. Mais informao
apresentada na descrio do rbitro SRAM.
No estado (UPDATE_ENTRY), se aguarda pela confirmao da escrita do endereo
MAC de origem e tambm pela resposta da operao de leitura na tabela do endereo
MAC de destino (operao de pesquisa).
Por ltimo, no estado (WAIT_FOR_WR_ACK) s se aguarda pela confirmao da
escrita do endereo MAC de origem.
Para armazenar os endereos MAC na SRAM, utiliza uma funo Hash definida
pelo seguinte polinmio:
x16+x12+x5+1
Este polinmio tambm conhecido como CRC-CCITT e tambm utilizado para
protocolos como X.25 ou Bluetooth. Foi escolhido devido aos resultados apresentados
em (JAIN, 1992) que demonstram a efetividade deste polinmio na tarefa de pesquisa
de endereos MAC. A tabela SRAM est segmentada como se amostra na Figura 3.4.

72 bits
3FF h
(1024 d)

SEGMENTO DA TABELA VLAN

4k, 8k,
32k, 64k
ou 128k
entradas

SEGMENTO DA TABELA DE
ENDEREOS MAC

000 h

Figura 3.4. Organizao da memria SRAM.


Os primeiros endereos da memria so reservados para armazenar a tabela de
endereos MAC. O formato utilizado para cada um dos endereos armazenados se
apresenta na Tabela 3.2.

31

Tabela 3.2. Formato de cada entrada da tabela de endereos MAC.


Bits

Campo

Descrio

71:60

VLAN ID

12-bit VLAN ID associado ao endereo MAC.

59:12

MAC ADDR

48-bit endereo MAC.

11:4

Port ID

8-bit Porta associada


codificao one-hot.

ao

endereo

MAC

utilizando

Reservado

Valid bit

1: entrada vlida, 0: entrada vazia.

Static bit

1: entrada esttica, 0: entrada dinamicamente aprendida.

Age bit

No utilizado.

1: entrada atualizada desde o ltimo processo de


envelhecimento, 0: entrada no atualizada desde o ltimo
processo de envelhecimento.

O formato utilizado para armazenar a informao de cada VLAN se amostra na


Figura 3.5. Cada VLAN possui 16 bits que esto divididos em dois campos: um com a
informao das portas membros e o outro campo tem a informao das portas membros
tagged. Um membro tagged alm de encaminhar os quadros dos outros membros tem
que inserir o VLAN tag em cada quadro. Esta operao tem que ser feita no bloco MAC
de cada porta.
Membros
tagged
VLAN

PARA UM SWITCH DE 8 PORTAS:

8 bits 8 bits

72 bits
Reservado

16 bits
16 bits
16 bits
16 bits
VLAN 4095 VLAN 4094 VLAN 4093 VLAN 4092
1024
endereos

...

Reservado

Membros
VLAN

16 bits
VLAN 3

16 bits
VLAN 2

16 bits
VLAN 1

16 bits
VLAN 0

Figura 3.5. Organizao do segmento da tabela VLAN na memria SRAM.

3.2.5

Envelhecimento

Este bloco se encarrega de realizar a operao de envelhecimento da tabela de


endereos MAC. Envelhecimento da tabela refere-se a apagar os endereos MAC

32

armazenados na tabela que no so utilizados por um determinado intervalo de tempo.


Este intervalo de tempo para executar o processo de envelhecimento programvel a
traves de um registro de configurao. Se o intervalo de tempo no alterado, ento o
valor padro 300 ms. Tambm possvel configurar a quantidade de entradas lidas
numa sola operao de leitura (Read Burst). A leitura em rajada diminui o tempo de
execuo da operao de envelhecimento devido a que a operao de leitura na tabela
tem uma latncia de no menos de seis ciclos de relgio, mas tambm poderia atrapalhar
a operao de pesquisa na tabela.
O bloco vai pesquisar cada uma das entradas da tabela de endereos MAC e
procurar nas entradas validas (utilizando o valid bit da entrada) se a entrada foi
utilizada desde a ltima operao de envelhecimento (utilizando o age bit da entrada).
Quando a entrada no for visitada, esta marcada como invlida apagando o valid bit.
O bloco possui uma mquina de estados que se amostra na Figura 3.6.

Figura 3.6. Diagrama de estados da FSM do bloco de envelhecimento.

3.2.6

rbitro SRAM

O bloco rbitro SRAM se encarrega de encaminhar as solicitaes de acesso (leitura


e escritura) na memria SRAM aonde se encontra armazenada as tabelas de endereos
MAC e VLAN. Neste caso a memria SRAM possui trs fontes de acesso: O bloco de
encaminhamento e aprendizagem, o bloco de envelhecimento e o acesso externo a
traves de registros. Este bloco estava incluso na plataforma NetFPGA, mas foi
modificado para aceitar trs fontes de acesso independente.
Nas Figuras 3.7 e 3.8 se apresentam os diagramas de tempos das operaes de
escrita e leitura na SRAM feita pelo rbitro. Estes diagramas mostram que para uma
operao de escrita precisa-se de no mnimo trs ciclos e para uma operao de leitura

33

seis ciclos. Com estas caractersticas, as operaes de leitura e escrita em rajada


favorecem a reduzir o tempo de acesso.

CLK

WR_REQ

WR_ADDR

A1

A2

A3

A4

WR_DATA

D1

D2

D3

D4

WR_ACK

Figura 3.7. Diagrama de tempos de uma operao de escrita no rbitro SRAM.

CLK

RD_REQ

RD_ADDR

A1

A3

A2

RD_ACK

RD_DATA

D1

D2

D3

RD_VLD

Figura 3.8. Diagrama de tempos de uma operao de leitura no rbitro SRAM.


O rbitro utiliza o algoritmo WRR (Weighted Round Robin) para servir s fontes de
acesso. O bloco de encaminhamento e aprendizagem tem a prioridade com respeito aos
outros dois porque este cumpre a principal funo do comutador. Para implementar o
algoritmo o rbitro possui duas maquinas de estado finito. A primeira que se mostra na
Figura 3.9 se encarrega de receber as requisies de acesso e reservar a utilizao da
SRAM por uma quantidade de ciclos, deste modo se define a prioridade s fontes.

34

Figura 3.9. Diagrama de estados da primeira FSM do rbitro SRAM.


A segunda mquina de estados que se mostra na Figura 3.10 se encarrega de
encaminhar os sinais de cada fonte de acesso memria SRAM. Tambm se encarrega
de selecionar a seguinte fonte a ser atendida dependo do estado da requisio seguinte.
A nomenclatura dos nomes dos estados a seguinte: RD para uma operao de leitura e
WR para uma operao de escrita. Os nmeros que aparecem ao lado identificam
fonte de acesso. A fonte numero 0 o bloco de encaminhamento e aprendizagem. A
fonte numero 1 o bloco de envelhecimento e o bloco numero 2 o acesso externo a
traves de registros. No diagrama se observa que de cada um dos estados pode-se mudar
para qualquer outro devido a que no existe nenhuma restrio com respeito ordem
das requisies.

35

Figura 3.10. Diagrama de estados da segunda FSM do rbitro SRAM.

3.2.7

Registros

Este bloco implementa o protocolo de comunicao com o barramento de registros


do comutador e se encarrega de armazenar os registros de configurao do motor de
classificao assim como tambm os registros de estado do bloco. A descrio dos
registros se amostra na seguinte tabela.

Tabela 3.3. Registros do motor de classificao.


Nome do registro
lut_hit

Descrio
Registro de estado que indica a quantidade de acertos que
teve o motor de classificao na pesquisa de endereos MAC
na tabela.

36

lut_miss

Registro de estado que indica a quantidade de erros que teve


o motor de classificao na pesquisa de endereos MAC na
tabela.

collision_counter

Registro de estado que indica a quantidade de colises que


teve o motor de classificao na aprendizagem de endereos
MAC na tabela.

time_to_age

Registro de configurao do tempo de envelhecimento da


tabela de endereos MAC. Este valor est em milissegundos
(ms).

age_change

Registro de configurao que indica se o tempo de


envelhecimento vai ser diferente do tempo padro. (300 ms).

3.2.8

Mquina de estados do motor de classificao

O motor de classificao possui uma mquina de estados finitos geral para controlar
o fluxo dos quadros no bloco. O diagrama de estados se apresenta na Figura 3.11. No
estado inicial (WAIT_TILL_DONE_DECODE) se espera pela concluso do processo
de pesquisa. O indicador deste evento a bandeira de vazio da FIFO de resultados. No
seguinte estado (WRITE_HDR) se escrevem os resultados da pesquisa (a porta de sada
e as portas tagged no caso de quadros VLAN) no cabealho do quadro. O seguinte
estado (SKIP_HDRS) vai encaminhar os outros cabealhos no quadro para a sada. No
ltimo estado (WAIT_EOP) se espera pelo indicador de fim de quadro no byte de
controle para se assegurar de ter encaminhado tudo o quadro ao seguinte bloco na parte
operativa.

Figura 3.11. Diagrama de estados da FSM do motor de classificao.

37

3.3 Segunda Proposta


A segunda proposta possui a mesma arquitetura que a proposta anterior, porm as
mudanas esto na arquitetura interna dos blocos de encaminhamento e aprendizagem e
no rbitro SRAM. A Figura 3.12 apresenta o digrama de blocos e a principal diferena
est na comunicao entre o bloco de encaminhamento e aprendizagem com o rbitro
SRAM. Esta comunicao no mais do tipo handshake e vai passar a ser uma
comunicao sincronizada com o rbitro SRAM. Para conseguir isto o dois blocos
devem ter suas maquinas de estado sincronizadas.

ARBITRO SRAM

SRAM ZBT

ACESSO
EXTERNO
PROTOCOLO DE
HANDSHAKE

BARRAMENTO
DE DADOS

ANALISADOR
DE
CABEALHO
ENCAMINHAMENTO
& APRENDIZAGEM

ENVELHECIMENTO
BARRAMENTO DE
REGISTROS

BARRAMENTO DE
REGISTROS

REGISTROS
FIFO DE
RESULTADOS
BARRAMENTO DE
DADOS

FIFO DE
ENTRADA

MAQUINA DE
ESTADOS

L2 MOTOR DE CLASSIFICAO

Figura 3.12. Diagrama de blocos da arquitetura 2.


A continuao se apresenta s os blocos que mudaram com respeito primeira
arquitetura.

3.3.1

rbitro SRAM

Este bloco cumpre as mesmas funes do bloco na proposta 1. A mudana mais


significativa est no protocolo de comunicao com o bloco de encaminhamento e
aprendizagem. Na proposta anterior todas as fontes de acesso utilizavam o protocolo de
handshake, agora s os blocos de envelhecimento e o acesso externo possuem este
protocolo. Para eliminar o protocolo de handshake, as maquinas de estado do rbitro
SRAM e do bloco de encaminhamento e aprendizagem esto sincronizadas. Assim

38

quando o bloco de encaminhamento e aprendizagem faz uma requisio de leitura, o


rbitro SRAM est pronto para receber a requisio. O mesmo acontece nas operaes
de escrita. Na tabela 3.4 se apresenta as operaes feitas em cada um dos ciclos da
FSM. A mquina de estados possui 16 estados, 1 ciclo por estado. Os ciclos com cor
azul esto reservados para processar leituras ou escritas das fontes de acesso externo e
do envelhecimento, os outros 14 ciclos restantes so utilizados por o bloco de
encaminhamento e aprendizagem.

Tabela 3.4. Tabela de ciclos da FSM mostrando as operaes realizadas em cada ciclo.

F1
F1
WR WR
REQ REQ

F0
F0
WR WR
REQ REQ
F1
RD
REQ

F1
RD
REQ

F1
RD
REQ

F1
RD
REQ

F1
RD
REQ

ACESSO
ENVELHEC.

F0
F0
F0
F0
F0
RD
RD
RD
RD
RD
REQ REQ REQ REQ REQ

ACESSO
REGS

Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Outro cambio significativo se encontra na capacidade de processar as requisies de


acesso. Na proposta anterior se atendia a uma fonte por vez e s se processava outra
requisio quando a operao for terminada. Nesta proposta, o rbitro tem a capacidade
de receber uma requisio por cada ciclo de relgio. As requisies e os sinais
respectivos para fazer as operaes de leitura e escrita esto sendo processados em uma
estrutura de pipeline para poder cumprir com a caracterstica anterior. Na figura 3.13 se
apresenta a estrutura de pipeline para cada uma das operaes do rbitro. Nas operaes
de leitura se utilizam 5 etapas enquanto nas operaes de escrita s se utilizam 4.

Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 5

Ciclo 1

Ciclo 2

Ciclo 3

Ciclo 4

Ciclo 5

Ciclo 6

WR1 REQ

WR2 REQ

WR3 REQ

RD1 REQ

RD2 REQ

RD3 REQ

WR1
EARLY2

WR2
EARLY2

WR3
EARLY2

RD1
EARLY3

RD2
EARLY3

RD3
EARLY3

WR1
EARLY1

WR2
EARLY1

WR3
EARLY1

RD1
EARLY2

RD2
EARLY2

RD3
EARLY2

WR1
WROTE

WR2
WROTE

WR3
WROTE

RD1
EARLY1

RD2
EARLY1

RD3
EARLY1

WR1
NOP

WR2
NOP

WR3
NOP

RD1 VLD

RD2 VLD

Ciclo 7

Ciclo 8

Ciclo 9

Ciclo 10

RD3 VLD

Figura 3.13. Estrutura de pipeline do rbitro SRAM.


Esta estrutura de pipeline foi projetada baseada nas caractersticas das operaes de
leitura e escrita na memria SRAM externa. Nas figuras 3.14 e 3.15 se apresentam os
diagramas de tempo do acesso na memria SRAM externa. O barramento de dados
bidirecional e o sinal de habilitao de escrita (WE) se ativa em baixa.

39

CLK

WE

A0

ADDR

A1

DATA

D0

D1

Figura 3.14. Diagrama de tempos de uma operao de escrita na SRAM.

CLK

WE

ADDR

A0

A1

DATA

A2

D0

D1

D2

Figura 3.15. Diagrama de tempos de uma operao de leitura na SRAM.

3.3.2

Encaminhamento e aprendizagem

Este bloco tambm foi modificado para melhorar o desempenho geral do motor de
classificao. A mquina de estados deste bloco tambm foi modificada para que possa
ser sincronizada com a mquina de estados do rbitro SRAM. Agora a mquina de
estados deste bloco possui 16 estados com 1 ciclo de relgio por estado. Nos 16 estados
se processa 2 quadros Ethernet. Para processar um quadro Ethernet se precisa de 11
ciclos de relgio, portanto para poder processar 2 quadros em 16 ciclos se teve que
colocar cada uma das etapas do processamento do quadro de um modo no qual ambos
processos no se atrapalhem no acesso na memria SRAM. Na tabela 3.5 se apresenta

40

as operaes feitas em cada um dos ciclos da FSM. As duas filas representam os dois
quadros que so possveis de processar.

Tabela 3.5. Tabela de ciclos da FSM do bloco de encaminhamento e aprendizagem.


Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo Ciclo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
F0
F0
F0
F0
F0
F0
F0
F0
F0
RD
RD
RD
RD
RD
F0
WR WR
F0
F0
REQ REQ REQ REQ REQ
REQ REQ
F1
F1
F1
F1
F1
F1
F1
WR WR
F1
F1
F1
F1
RD
RD
RD
RD
RD
F1
REQ REQ
REQ REQ REQ REQ REQ

41

4 VERIFICAO FUNCIONAL

Aps fazer a descrio do motor de classificao, a etapa de verificao tem que ser
feita. A ferramenta utilizada para executar a verificao funcional foi o Modelsim 6.5
SE. O ambiente utilizado para verificar este bloco foi descrito utilizado a linguagem
System Verilog. A metodologia utilizada a apresentada em (SPEAR, 2008). A
metodologia consiste primeiro em criar estmulos aleatrios, neste caso quadros
Ethernet, que sejam inseridos no DUT (Design Under Test), neste caso o motor de
classificao. Logo depois feita uma comparao dos resultados obtidos do DUT com
os resultados obtidos do bloco scoreboard. O scoreboard mtodo para prever o
resultado correto do DUT. Na Figura 4.1 se apresenta a arquitetura completa do
testbench.

AMBIENTE DE
TEST

CONFIG NETFPGA
General
constraints

GERADOR DE
QUADROS

AGENT/
TRANSACTOR

SYSTEM LOG

Detailed
constraints

CHECKER

SCOREBOARD

DRIVER

MONITOR

DATA IN
INTERFACE

DUT
REGISTER
INTERFACE

CLK GEN

Report

DATA OUT
INTERFACE
COBERTURA
FUNCIONAL
- coverage groups

Figura 4.1. Arquitetura do testbench descrito em System Verilog.


A qualidade da verificao funcional avaliada usando duas mtricas: a cobertura de
cdigo e a cobertura funcional. A cobertura de cdigo a porcentagem de linhas de
cdigo exercitadas pelo testbench. A cobertura funcional a porcentagem de funes do
bloco que foram exercitadas pelo menos uma vez na simulao. Ambas coberturas so
necessrias para ter uma maior certeza da correta verificao do circuito.

42

5 IMPLEMENTAO DO MOTOR DE CLASSIFICAO


PARA UM FPGA E UM ASIC

Depois de ter verificado o projeto feita a sntese do bloco. O motor de classificao


est projetado para ser inserido na parte operativa da plataforma NetFPGA. Esta
plataforma est orientada a uma implementao em FPGA, mas neste caso a codificao
HDL tambm foi orientada para sua implementao em ASIC. Isto significa que o
circuito foi descrito utilizando a sintaxe padro da linguagem Verilog e no se utilizou
recursos prprios dos FPGAs.
Para a implementao em FPGA, o presente trabalho foi sintetizado para um FPGA
Virtex-IIPRO XC2VP50. A ferramenta de sntese utilizada foi o XST (Xilinx Synthesis
Tool) do ISE Foundation 10.1.03 da XILINX.

Figura 5.1. Placa de desenvolvimento do NetFPGA.


A Figura 5.1 apresenta a placa de desenvolvimento que ser utilizada no futuro para
implementar o comutador Gigabit Ethernet. Esta placa possui alm do FPGA, memria
SRAM onde ser implementada a tabela de endereos MAC e a tabela de informao
VLAN.
As etapas do fluxo para implementar no FPGA se amostram na Figura 5.2

43

Especificao

Mapeamento

Projetista

Descrio no nvel de
recursos do FPGA

Microarquitetura

Posicionamento
e Roteamento

Projetista

Descrio no nvel de recursos do


FPGA, levando em conta a
localizao fsica

Cdigo HDL
congelado
Sntese lgica
genrica
Descrio no
nvel de portas
lgicas e registros

Gerao do
Bitstream

Arquivo de configurao do
FPGA

Figura 5.2. Diagrama do fluxo de sntese em FPGA.

Na implementao do circuito em ASIC, foi utilizada a biblioteca de clulas da


TSMC 180nm. Esta tecnologia possui oito camadas de metal e trabalha com uma tenso
de alimentao de 1.8V. As etapas para obter um ASIC tm alguma semelhana com o
fluxo para FPGA, tendo como principal diferena a criao do layout completo do chip
no caso do ASIC, j no FPGA so utilizados blocos genricos prontos disponveis no
chip. Esta diferena na flexibilidade do chip traz uma mudana significativa no
consumo de potncia e no desempenho (freqncia de operao). Os resultados so
analisados no seguinte captulo. A Figura 5.3 mostra as etapas da implementao de um
circuito em ASIC utilizando a metodologia standard-cells.

44

Microarquitetura

Posicionamento

Reordenamento da
Cadeia de Scan

Projetista

Cdigo HDL
Congelado
Tecnologia

Sntese da rvore de
Relgio

Sntese Lgica
Roteamento
Restries

Netlist

Portas
Sintetizadas
GDSII

Leiaute

Sign-Off

Front-End Design

Back-End Design

Figura 5.3. Diagrama do fluxo de sntese em ASIC.

Anlise de Integridade de Sinal

Projetista

Anlise Esttico de Tempo (STA)

Planejamento da
Planta Baixa

Extrao das Capacitncias e Resistncias Parasitas

Tecnologia

Especificao

45

6 ANLISE DOS RESULTADOS

Depois da sntese das duas propostas, os resultados se amostram na tabela 6.1. So


apresentados os resultados de potncia e rea tanto para FPGA como para ASIC.
No caso dos resultados de potncia em FPGA, estes foram calculados a ferramenta
XPower da Xilinx usando s estimativas de chaveamento de cada sinal do circuito. Para
obter um valor com mais preciso preciso usar o arquivo VCD (Value Change Dump)
gerado pela ferramenta de simulao que contm o fator de chaveamento de cada sinal
no circuito.
No caso do clculo de potncia no ASIC, os resultados foram obtidos da ferramenta
de sntese lgica RTL Compiler da Cadence. Estes resultados tambm so estimados
porque o leiaute ainda no foi gerado.
Os resultados de consumo potncia em ambos casos (FPGA e ASIC) mostram um
maior consumo no motor de classificao. Tambm visvel a reduo de potncia na
implementao em ASIC. Isto devido a que o FPGA possui mais componentes (por
exemplo, nas interconexes) que lhe do a flexibilidade.

Tabela 6.1. Tabela de resultados da sntese em FPGA e ASIC.


Consumo de Potncia

rea

FPGA @ 125 ASIC @ 166 FPGA (LUT


Mhz. (mW)
Mhz. (mW)
de 4 entradas)

ASIC (portas
lgicas equiv.*)

Primeira Proposta
Motor de
classificao

859

25,98

3628

40127

rbitro SRAM

567

1,65

370

3070

Motor de
classificao

1065

27,37

3999

34733

rbitro SRAM

647

0,52

465

3155

Segunda Proposta

*: o clculo do nmero de portas lgicas equivalentes foi calculado dividindo a rea


total das celdas (cell area) entre a rea de uma porta NAND de duas entradas de
tamanho X1 (NAND2X1).

46

Os resultados de rea mostram uma maior ocupao de rea no motor de classificao,


porm no possvel fazer uma comparao justa entre o FPGA e o ASIC devido a que
so feito com tecnologias de fabricao diferentes. Mesmo que fossem feitos com a
mesma tecnologia, o fabricante de FPGAs s fornece informao de rea em funo dos
blocos lgicos que possui, neste caso LUTs de quatro entradas.
Na Tabela 6.2 se apresenta uma comparao em termos de desempenho com respeito a
outros trabalhos encontrados na literatura. A coluna de largura de banda se refere
quantidade de quadros que poderia processar o motor de pesquisa. Este valor
calculado tendo como dado quantidade de ciclos que se precisa para processar um
quadro e a freqncia mxima que atinge o circuito. Os resultados mostram que
(PAPAEFSTATHIOU, 2006) possui a maior largura de banda, mas importante
observar que nesse trabalho a largura de banda esta condicionada ao tamanho da tabela
de endereos MAC. Se a tabela de endereos MAC fosse maior aos 128K entradas, a
segunda proposta teria um desempenho melhor. No caso da segunda proposta a largura
de banda no depende do tamanho da tabela de endereos MAC.

Tabela 6.2. Tabela de comparao de resultados com outros trabalhos na literatura.


Freqncia de
operao Max.
(Mhz)

Largura de
Banda
(Gbps)

Tecnologia

Segunda Proposta

500

42

TSMC 180nm

(LAU, 2003)

125

22

180nm

10

180nm

103.5

UMC 130nm

Soluo

(MISHRA, 2003)
(PAPAEFSTATHIOU, 2006)

400

47

7 CONCLUSES E TRABALHOS FUTUROS

Este trabalho apresentou o projeto, verificao e implementao em FPGA e ASIC


de duas arquiteturas para um motor de classificao de nvel 2 para um comutador
Gigabit Ethernet.
As duas propostas cumprem com as funes definidas no padro IEEE 802.1D
(IEEE, 2004). A diferena principal est no melhor mtodo de acesso a uma memria
externa SRAM por meio de um protocolo de comunicao otimizado entre o motor de
classificao e o rbitro SRAM, assim como tambm o reestruturao do rbitro SRAM
que lhe permite diminuir o tempo de espera numa operao de leitura ou escrita na
memria.
A verificao funcional deste bloco muito importante e complexa. Sua
complexidade devido falta de um modelo de referncia algortmico do motor de
classificao. Portanto a criao de um conjunto de quadros aleatrios que conseguisse
estimular todas as funes do bloco foi uma tarefa desafiante. Ainda falta melhorar a
cobertura funcional do bloco e para isto sero inseridos alguns quadros manualmente.
Duas metodologias de implementao so apresentadas. Os resultados da
implementao em FPGA confirmam que possvel integrar estes mdulos na
plataforma NetFPGA para implementar um comutador Gigabit Ethernet de 8 portas. O
resultados da implementao em ASIC usando a metodologia standard-cell amostra que
a segunda proposta poderia processar at 42 Gbps. Isto se manteria constante mesmo
que o tamanho da tabela de endereos mudasse.

48

REFERNCIAS

FRAZIER, H.; JOHNSON, H. Gigabit Ethernet: from 100 to 1,000 Mbps. IEEE Internet
Computing, Piscataway, NJ, USA, v.3, n.1, p.2431, 1999.
HUNTLEY, C.; ANTONOVA, G.; GUINAND, P. Effect of hash collisions on the
performance of LAN switching devices and networks. In: Local Computer Networks,
Proceedings 2006 31st IEEE Conference on. [S.l.: s.n.], 2006. p. 280 284. ISSN 07421303.
IEEE Std 802.1D-2004. IEEE standard for local and metropolitan area networks media
access control (MAC) bridges.p.269,2004.
IEEE Std 802.1Q-2005. IEEE standard for local and metropolitan area networks virtual
bridged local area networks. p. 285, 2005.
IEEE Std 802.3-2005. IEEE standard for information technologytelecommunications
and information exchange between systemslocal and metropolitan area networks
carrier sense multiple access with collision detection (CSMA/CD) access method and
physical layer specifications. Section5, p. 1 417, 2005.
ISO/IEC Standard 7498-1. Information Technology -Open System Interconnection Basic Reference Model: The Basic Model. 1994.
JAIN, R. A comparison of hashing schemes for address lookup in computer networks.
Communications, IEEE Transactions on, v. 40, n. 10, p. 1570 1573, oct 1992. ISSN
0090-6778.
LAU, M. et al. Gigabit ethernet switches using a shared buffer architecture.
Communications Magazine, IEEE, v. 41, n. 12, p. 76 84, dec. 2003. ISSN 0163-6804.
LUO, J. et al. Prototyping fast, simple, secure switches for ethane. In: HighPerformance Interconnects, 2007. HOTI 2007. 15th Annual IEEE Symposium on.[S.l.:
s.n.], 2007. p. 73 82. ISSN 1550-4794.

49

MCAULEY, A.; FRANCIS, P. Fast routing table lookup using cams. In: INFOCOM
93. Proceedings Twelfth Annual Joint Conference of the IEEE Computer and
Communications Societies. Networking: Foundation for the Future. IEEE.[S.l.: s.n.],
1993. p. 1382 1391 vol.3.
METCALFE, R. M.; BOGGS, D. R. Ethernet: distributed packet switching for local
computer networks. Commun. ACM, New York, NY, USA, v.19, n.7, p.395404, 1976.
MISHRA, S. et al. Wire-speed traffic management in ethernet switches. In: Circuits and
Systems, 2003. ISCAS 03. Proceedings of the 2003 International Symposium on.[S.l.:
s.n.], 2003. v. 2, p. II105 II108 vol.2.
NAOUS, J. et al. NetFPGA: reusable router architecture for experimental research. In:
PRESTO 08: Proceedings of the ACM workshop on Programmable routers for
extensible services of tomorrow. NewYork, NY, USA:ACM,2008.p.17.ISBN978-160558-181-1.
NETFPGA. NetFPGA User Guide. Disponvel em: <http://netfpga.org/foswiki/bin/view
/NetFPGA/OneGig/Guide>. Acceso em: Junho 2010.
PAPAEFSTATHIOU, V.; PAPAEFSTATHIOU, I. A hardware-engine for layer-2
classication in low-storage, ultra high bandwidth environments. In: Design,
Automation and Test in Europe, 2006. DATE 06. Proceedings.[S.l.: s.n.], 2006. v. 2, p.
1 6.
SEIFERT, R.; EDWARDS, J. The All-New Switch Book: The Complete Guide to LAN
Switching Technology. Hoboken, NJ: Wiley, 2008.
SPEAR, C. SystemVerilog for Verification, Second Edition: A Guide to Learning the
Testbench Language Features.[S.l.]: Springer Publishing Company, Incorporated, 2008.
ISBN 0387765298, 9780387765297

Você também pode gostar