Switch de malha de rede Ethernet de 10GBit com brouting e “VLAN”

3

Eu quero criar uma rede mesh com links Ethernet de 10GBit entre servidores e uma pilha de switches capaz de entroncamento distribuído.

Neste cenário para um número n > 2 (mas normalmente 2 < n < 6 ) imagine:

  • 1 Pilha de switches com pelo menos n membros físicos, capazes de entroncamento distribuído em links de 10 GB.

  • n hosts, cada um com

    • n + 1 interfaces de 10 GB, das que usam
      • n-1 para se conectar diretamente a todos os outros hosts n-1 para criar a malha física completa entre os servidores. Exemplos de fotos abaixo
      • 2 conexões em um bond0 para a pilha de switches, para diferentes membros.
  • k número de VLANs

Renderização em PNG do GraphViz (1) da constelação do nó do servidor totalmente em malha com n = 5:

/*_5_Server_Nodes_Network_Mesh_°°°*/ graph n5 { node[shape=plaintext,height=0,width=0,margin=0] edge[len=0.6] a-- b-- c-- d-- e-- a-- c-- e-- b-- d-- a }

Nota:Paramanterosgráficospequenos,escolhin=3ek=2paraorestodestaquestão,porque3nósemumaformaçãotriangularsãototalmentemalha,eamesmasoluçãodeveseraplicada.

/*_3_Server_Nodes_Network_Mesh_°°°*/graphn3{node[shape=plaintext,height=0,width=0,margin=0]edge[len=0.4]a--b--c--a}

Vamosdizer,oscartõesusadosparaessasconexõessãoeth0&eth1({0..(n-2)})

Eutambémprecisoestabelecerkzones,VLANs(azul).DigaVLANsMeN:

/*_3_Server_Mesh_with_VLAN__°°°°°°*/graphn3{node[shape=plaintext,height=0,width=0,margin=0]edge[len=0.4]a--b--c--aedge[color=blue]a--{aMaN};b--{bMbN};c--{cMcN};}

Mais2PortasEthernetde10GBit(aquieth2&eth3)emcadahostsãoconectadas(marrom)paraconexãoupstreamaomundoexterno:

/*_3_Server_Mesh_w/_VLAN_and_bond0__*/graphn3{node[shape=plaintext,height=0,width=0,margin=0]edge[len=0.3];a--b--c--aedge[color=blue]a--{aMaN};b--{bMbN};c--{cMcN};edge[color=brown,len=0.4,penwidth=2]a--au;b--bu;c--cu;}

Ambasasportasdainterfacebond0paraosdiferentesmembrosdapilhadoswitchupstream,queusaumaneldeconexõesde10GBit(verde)paraempilhamento:/*_3_Servers_w/VLAN+Stack*/graphn3{node[shape=plaintext,margin=0,height=0,width=0]edge[len=0.3]a--b--c--aedge[color=blue,len=0.3]a--{aMaX};b--{bMbN};c--{cMcN};edge[color=brown,len=0.4]a--au;b--bu;c--cu;edge[color=brown,len=1.1]{cu[shape=point]au}--S1{au[shape=point]bu}--S2{bu[shape=point]cu}--S3edge[color=green,len=2.9]S1--S2--S3--S1}

Etodososusuáriosestariamconectadosa(redesligadas)a"parte externa" de S1..S $ n

Logicamente, a pilha do Switch S1..S $ n se comporta como uma grande unidade de comutação. Então, os servidores a, b, .., n vêem a seguinte estrutura, com todo o resto conectado a S

%código%

Agora,conectamosalgumasmáquinasvirtuais(vermelhas)aessasVLANs:

%código%

EsteéotipodefuncionalidadefrequentementevistaemcontextocomSDN,SPB,TRILL,VxLAN,todososquaisparecemrelevantesdepoisdeverificá-los.Desses Shortest Path Bridging (802.1aq) parece o melhor ajuste. Mas onde estão as implementações para o Linux, e como eu as uso no Debian para construir um brouter com malha total?

  • SPB - Shortest Path Bridging (802.1aq) soa como um vencedor: substituto oficial do Spanning Tree, desde 2012 < a href="https://github.com/openss7/pbbr"> Parece haver projeto em andamento no Github , não tenho certeza, se completo / funcional
  • TRILL - Interconexão transparente de muitos links : Maior concorrente do SPB. Projeto Github , também não parece disponível / funcional
  • OpenMesh batman-adv . Está disponível no Debian. Mas em todos os lugares que eu li sobre isso é sobre sem fio . Se funcionasse para links de 10GB, nem todo mundo usaria isso? (E haveria chat online sobre isso)
  • VDE Virtual Switch . Também disponível no Debian. Inteiramente no espaço do usuário, portanto, muito lento para 10GBit / s?
  • @ JuliePelletier em um comentário sugeriu o BGP como o meio para alcançar essa configuração de Camada2 brotada e tolerante a falhas, mas ainda não consigo ver exatamente como ela quis dizer isso.

Então, o que eu poderia instalar / configurar em cada nó para alcançar a constelação desejada?

(1) /*_3_Server_Mesh_w/_VLAN_and_Stack__*/ graph n3 { node[shape=plaintext,height=0,width=0,margin=0] edge[len=1]; a -- b -- c -- a edge[color=brown,len=0.3,penwidth=2] S -- {a b c} edge[color=blue,len=0.3] a--{aM aN}; b--{bM bN}; c--{cM cN}; } renderings foram criados com %código%

    
por Alex Stragies 27.08.2016 / 18:00

0 respostas