Em um artigo anterior falamos sobre as funções dos LEDs de um switch Cisco. É de extrema importância conhecermos bem suas funções,principalmente para quem precisa dar manutenção onsite em um CPD.
Hoje vamos falar de algo ainda mais interessante e tão importante quanto : SPEED e DUPLEX. Funções inclusive mostradas pelos LEDs,como aprendemos antes: STAT,UTIL,DUPLX e PEED.
Mas enfim, em que situação essas funções são de fato relevantes?
A resposta é: em muias. Para quem trabalha com suporte de rede, provavelmente já ouviu reclamações do tipo Internet lenta, transmissão de arquivos na rede local lenta, problemas ao mapear pastas na rede e muitas outras. Muitas dessas reclamações pode estar relacionado a algum link entre switches, ou entre switches e servidores e até mesmo entre switches e PCs, enfrentando problemas com SPEED e DUPLEX.
Antes de iniciarmos explicações sobre o problema em si, vamos falar o que afinal essas duas palavras significam. SPEED, basta apenas fazer a traduçao,ou seja, significa a velocidade de um dado segmento de rede. As velocidades conhecidas hoje vão de 10 Mbps até 10 GBps. Outras velocidades existem,porem, vamos trabalhar dentro desse universo porque é o que encontraremos com mais probabilidade.
DUPLEX já possui uma designação um pouco mais complexa. Ele se refere a forma de transmissão dentro de uma dada velocidade. DUPLEX pode ser HALF ou FULL DUPLEX. Vamos explicar cada um.
A Ethernet é de origem uma rede Half Duplex. Ou seja, em um segmento de rede, apenas um dispositivo pode transmitir a cada vez.A transmissão realizada por dois dispositivos ao mesmo tempo acasiona a Colisão,ou seja, todos os dados se perdem.
Para evitar a Colisão,foi desenvolvido o algoritmo CSMA/CD. A partir daí, os dispositivos deviam "Ouvir" o meio antes de colocar seu quadro Ethernet. Caso o meio estivesse livre, o dispositivo poderia transmitir seu quadro ethernet tranquilamente. Caso o meio estivesse ocupado, o dispositivo deveria esperar um tempo e após esse tempo, novamente ouviria o meio para certificar-se de que estaria livre.
Caso dois dispositivos ouvissem o meio ao mesmo tempo e ambos percebessem que o meio estava livre,ambos transmitiriam seus quadros e uma colisão fatalmente ocorreria. Nesse caso, o dispositivo que percebesse a Colisao,enviaria um sinal chamado de JAM signal e todos os dispositivos do segmento parariam de transmitir. Ambos os dispositivos disparariam um temporizador chamado de Back off aleatório e a medida que esse temporizador terminasse, todo o processo se repetia,ou seja, o dispositivo ouviria o meio para ver se o mesmo estava livre e daí por diante.
Essa forma de comunicação supria muito bem as redes mais antigas onde eram utilizado HUBs como equipamento concentrador,ou seja, a rede era realmente compartilhada. Com o advento do switch, cada dispositivo passou a ter um domínio de colisão, não precisando mais compartilhar o meio.
Isso possibilitou um avanço nas redes Ethernet que hoje já atinge velocidades de 100 Giga. Entretanto, mesmo cada porta do switch sendo um único domínio de colisão, ainda é possível que ocorra colisão entre os dois dispositivos que eventualmente venha a se comunicar. Dessa forma, continua havendo a necessidade de haver mecenismos de controle para o envio e recebimento de quadros no segmento de rede.
Porém, com o as velocidades atuais, o mecanismo HALF DUPLEX não atenderia, devido o desperdício de tempo que essa forma de transmissão impõe.
Diante dessa demanda, o IEEE definiu o padrão 802.3x.
Esse padrão introduz a forma de comunicaçao Full Duplex. Agora, dispositos de rede podem enviar e receber ao mesmo tempo em um segmento. O algoritmo CSMA/CD não é mais necessário e existe uma comunicação ponto-a-ponto entre ambos os dispositivos.
A bem da verdade, Ethernet passou a utilizar um mecanismo de controle de fluxo. Uma subcamada MAC controll foi introduzida na camada de enlace do modelo OSI e uma endereço MAC especial 01-80-C2-00-00-01 foi definido. Um dispositivo pode transmitir até que receba esse endereço MAC, a partir daí ele deve esperar.
Essas evoluções estão transformando redes Ethernet em redes WAN. A colisão sempre foi um fator limitante no que se refere a distância de transmissão. A medida que mecanismos para evitar colisões vão sendo desenvolvidos, distâncias maiores vão sendo alcançadas.
Bem, posto isso, vamos ver um pouco de todos esses conceitos na prática.
Vou usar novamente o GNS3 para mostrar como todo esse conceito se apresenta em um switch real. infelizmente não é possível simular situações de erros de SPEED e DUPLEX, mas é possível pelo menos visualizar como eles aparecem e como podem serem alterados.
Nossa topologia é bem simples, apenas dois switches e dois PCs. Três domínios de colisão, um domínio de broadcast.
Primeiro vamos mostrar como estão as interfaces do switch 1:
switch1#sh int status
Port Name Status Vlan Duplex Speed Type
Fa0/0 2-PC connected 1 a-full a-100 unknown
Fa0/1 notconnect 1 auto auto unknown
Fa0/2 disabled 1 auto auto unknown
Fa0/3 disabled 1 auto auto unknown
Fa0/4 disabled 1 auto auto unknown
Fa0/5 disabled 1 auto auto unknown
Fa0/6 disabled 1 auto auto unknown
Fa0/7 disabled 1 auto auto unknown
Fa0/8 disabled 1 auto auto unknown
Fa0/9 disabled 1 auto auto unknown
Fa0/10 disabled 1 auto auto unknown
Fa0/11 disabled 1 auto auto unknown
Fa0/12 disabled 1 auto auto unknown
Fa0/13 disabled 1 auto auto unknown
Fa0/14 disabled 1 auto auto unknown
Fa0/15 2-switch connected 1 a-full a-100 unknown
Agora do switch 2:
switch2#sh int status
Port Name Status Vlan Duplex Speed Type
Fa0/0 2-PC connected 1 a-full a-100 unknown
Fa0/1 notconnect 1 auto auto unknown
Fa0/2 disabled 1 auto auto unknown
Fa0/3 disabled 1 auto auto unknown
Fa0/4 disabled 1 auto auto unknown
Fa0/5 disabled 1 auto auto unknown
Fa0/6 disabled 1 auto auto unknown
Fa0/7 disabled 1 auto auto unknown
Fa0/8 disabled 1 auto auto unknown
Fa0/9 disabled 1 auto auto unknown
Fa0/10 disabled 1 auto auto unknown
Fa0/11 disabled 1 auto auto unknown
Fa0/12 disabled 1 auto auto unknown
Fa0/13 disabled 1 auto auto unknown
Fa0/14 disabled 1 auto auto unknown
Fa0/15 2-switch connected 1 a-full a-100
Vamos considerar a seguinte linha:
Port Name Status Vlan Duplex Speed Type
Temos primeiro a identificação de cada porta, depois temos o parâmetro Name, que pode ser configurado com o comando Description em mode de configuração de interface:
switch1(config-if)#description 2-PC
Em seguida vem o parâmetro Status. Intensionalemente, temos três tipo de Status em nosssas interfaces:
connected
notconnect
disabled
Connected :
Significa que o switch reconhece um dispositivo conectado nessa interfaces, muito provavelmente o LED dessa interface estará verde e se comportando segundo algumas características do switch como piscando ou aceso contínuo.
notconnect :
Não há ou o switch não reconhece um dispositivo conectado nessa porta. A porta está, entretando, habilitada. Essa porta pode estar vaga, pode haver um problema no cabo que se conecta ao dispositivo ou o dispositivo pode estar desligado.
disabled:
Nesse caso a porta está desabilitada. ou seja, foi dado o comando "shutdown" na interface.
Seguido do parametro status,temos o parâmetro Vlan.
nesse caso, todas as portas estão na Vlan 1, que é a VLAN nativa do switch.
Uma outra abordagem que temos em relação as interfaces, é mostrá-las em termos de UP/DOWN, usando o comando abaixo:
Router#sh ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset up up
FastEthernet0/1 unassigned YES unset up down
FastEthernet0/2 unassigned YES unset administratively down down
FastEthernet0/3 unassigned YES unset administratively down down
FastEthernet0/4 unassigned YES unset administratively down down
FastEthernet0/5 unassigned YES unset administratively down down
FastEthernet0/6 unassigned YES unset administratively down down
FastEthernet0/7 unassigned YES unset administratively down down
FastEthernet0/8 unassigned YES unset administratively down down
FastEthernet0/9 unassigned YES unset administratively down down
FastEthernet0/10 unassigned YES unset administratively down down
FastEthernet0/11 unassigned YES unset administratively down down
FastEthernet0/12 unassigned YES unset administratively down down
FastEthernet0/13 unassigned YES unset administratively down down
FastEthernet0/14 unassigned YES unset administratively down down
FastEthernet0/15 unassigned YES unset up up
Vlan1 unassigned YES unset administratively down down
podemos observar que interfaces cujo status seja "connected", apresetam o status UP/UP. Interfaces cujo status seja "Not Connected", apresenta o status UP/DOWN e, pot último, temos as interfaces cujo status é "Disabled",cujo status é "administratively down".
Agora vamos focar nos parâmetros que mais nos interessa:
Duplex e Speed
Temos o Duplex em dois status: a-full e auto.
Quanto ao Speed, temos todas em 100. Mas podemos passar para 10 M.
switch1(config)#int Fa0/0
switch1(config-if)#speed 10
switch1#sh int Fa0/0 status
Port Name Status Vlan Duplex Speed Type
Fa0/0 2-PC connected 1 auto 10 unknown
Obviamente, isso não é recomendado, mas existem casos em que é preciso. Recentemente eu tive que setar a interface para 10 porque o dispositivo do cliente era 10 e não conseguia subir com a interface a 100.
Duplex a-full
Essa configuração é alcançada quando ambas as interfaces estão em autonegotiation. A possibilidade de autonegotiation vem do padrão IEEE 802.3x, mencionado acima.
Switches atuais possuem a capacidade de analisar o meio através do Fast Link Pulse (FLP) e deterinar a velocidade do meio.
Com base na velocidade do meio, o IEEE estabelece a seguinte regra:
-Se a velocidade é desconhecida, utilizar 10 Mbps e Half Duplex
-Se a velocidade é algo em torno de 10 ou 100 Mbps, usar Half Duplex
-Se a velocidade é algo em torno de 1000 Mbps, usar Full duplex
Aqui posso dizer que temos o ponto alto do nosso artigo. Tudo que discutimos agora, ambasa o que eu gostaria de passar relacionado ao conceito de duplex e speed. Porém, essas últimas informações, trazem consequências realmente práticas para um profissonal de redes.
Imagine o cenário onde temos nosso switch conectado a um servidor e ambos configurados a 100 Mbps Full. Tudo está perfeito até que um dia alguem restarta o servidor e ele perde a configuração de speed e duplex de sua interface.
Consequentemente, ele irá para alguma velocidade default, que nos dias atuais, em geral é 100 Mbps.
Ora, temos nosso switch com 100 Mbps cravado, isso significa dizer que o FLP está desativado e um servidor que acabou de ativar o seu FLP. De acordo com a determinação do IEEE acima, o servidor irá descobrir a velocidade do meio que será 100 Mbps. Ainda de acordo com o IEEE, 100 Mbps resulta Half Duplex.
Consequentemente haverá problemas no link.
O mais crítico nesse tipo de situação é que ao analizar o switch, o link estará UP, e será preciso analizar parâmetros como Collision, Late Collisions e outros para tentar determiar o problema.
switch2#sh int fa 0/15
FastEthernet0/15 is up, line protocol is up
Hardware is Fast Ethernet, address is cc01.0174.f00f (bia cc01.0174.f00f)
Description: 2-switch
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:00, output never, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
0 packets input, 0 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 input packets with dribble condition detected
0 packets output, 0 bytes, 0 underruns
0 output errors, 0 collisions, 3 interface resets
0 babbles, 0 late collision, 0 deferred
Caso seja observado que esses parâmetros aprensentam valores, é recomendado entrar com o comando :
switch2#clear counters
Clear "show interface" counters on all interfaces [confirm]
switch2#
E posteriormente continuar a observar. Caso os valores continuam incrementando, temos certamente um problema relacionado a Speed e duplex. Infelizmente o GNS3 não dá a possibilidade de forçar uma situação problema, pelo menos eu não sei, o que seria bem interessante. Mas acredito que as explicações e demonstrações do artigo, são suficiente para compreender e tratar esse tipo de problema.
Num próximo artigo, eu vou falar um pouco mais sobre MAC ADDRESS. existem muitas situações que podem ser exploradas sobre o endereçamento físico das redes Ethernet.
Sunday, February 26, 2012
Saturday, February 11, 2012
Capture no Cisco ASA
E o post de hoje já faz parte do conhecimento que adquiri em meu trabalho atual. Basicamente, os firewalls em que atuamos são Cisco ASA e a função que vou apresentar aqui,apesar de simples, é de extrema importância em Troubleshooting de rede.
Capture está para Cisco assim como TCPDUMP está para Linux, ambas as ferramentas são de extrema importância.
A poucos dias atrás eu me deparei com uma situação em que uma máquina atrás de um ASA não conseguia acessar a Web, com a ajuda do Capture, consegui evidenciar que o problema estava na máquina e não no firewall.
O Lab que eu montei usando GNS3 é extremamente simples,porém, suficiente para nosso propósito:
A Ideia aqui é observar, através da funçao Capture, o trafego passando do host para o host .
Vamos iniciar configurando o Capture:
asa-apliance(config)# access-list teste1 extended permit ip any host 172.16.1.2
asa-apliance(config)# access-list teste1 extended permit ip host 172.16.1.2 any
Basicamente temos que criar duas ACLs, uma vai analisar o tráfego IN e a outra o tráfego OUT.
Criado nossa ACL, entramos com comando Capture:
asa-apliance(config)# capture <Nome para o Capture> access-list < Em nosso caso teste1> interface <Nome da sua interface>
Como pode ser visto, meu ASA possui dois Capture cap1 e cap2:
asa-apliance# sh capture ?
WORD Capture name
| Output modifiers
<cr>
asa-apliance# sh capture
capture cap1 type raw-data access-list capture-bastion trace interface wan interface lan [Capturing - 295556 bytes]
capture cap2 type raw-data access-list capture-bastion2 trace interface wan [Capturing - 5746 bytes]
Basicamente são essas as configurações necessárias. Agora vamos começar a analisar o tráfego.
asa-apliance(config)# show capture cap1
12 packets captured
1: 00:08:06.538225 192.168.1.2 > 172.16.1.2: icmp: echo request
2: 00:08:06.538225 172.16.1.2 > 192.168.1.2: icmp: echo reply
3: 00:08:07.107843 192.168.1.2 > 172.16.1.2: icmp: echo request
4: 00:08:07.107843 172.16.1.2 > 192.168.1.2: icmp: echo reply
5: 00:08:07.685191 192.168.1.2 > 172.16.1.2: icmp: echo request
6: 00:08:07.685191 172.16.1.2 > 192.168.1.2: icmp: echo reply
7: 00:08:08.238619 192.168.1.2 > 172.16.1.2: icmp: echo request
8: 00:08:08.238619 172.16.1.2 > 192.168.1.2: icmp: echo reply
9: 00:08:08.797367 192.168.1.2 > 172.16.1.2: icmp: echo request
10: 00:08:08.797367 172.16.1.2 > 192.168.1.2: icmp: echo reply
11: 00:08:09.357769 192.168.1.2 > 172.16.1.2: icmp: echo request
12: 00:08:09.357769 172.16.1.2 > 192.168.1.2: icmp: echo reply
Aqui temos o Cap1 capturando pacotes ICMP vindos do PC 192.168.1.2 e indo para o PC 172.16.1.2. Como podemos ver, tudo está funcionado perfeitamente.
No exemplo abaixo, temos o Cap2, no sentido contrário do tráfego. Ou seja, Origem 172.16.1.2 e destino 192.168.1.2.
asa-apliance(config)# show capture cap2
6 packets captured
1: 00:10:50.220188 172.16.1.2 > 192.168.1.2: icmp: echo request
2: 00:10:50.220188 192.168.1.2 > 172.16.1.2: icmp: echo reply
3: 00:10:50.778875 172.16.1.2 > 192.168.1.2: icmp: echo request
4: 00:10:50.778875 192.168.1.2 > 172.16.1.2: icmp: echo reply
5: 00:10:51.346661 172.16.1.2 > 192.168.1.2: icmp: echo request
6: 00:10:51.346661 192.168.1.2 > 172.16.1.2: icmp: echo reply
Vamos testar uma conexão onde ocorrerá falha para vermos como se comporta:
Do lado Wan de nossa rede, vamos tentar acessar o servidor que está dentro da rede:
root@server_wan:~# telnet 172.16.1.2
telnet: can't connect to remote host (172.16.1.2): No route to host
root@server_wan:~#
Vejamos o que o Capture pegou:
asa-apliance(config)# show capture cap1
3 packets captured
1: 00:15:31.773260 192.168.1.2.33522 > 172.16.1.2.23: S 723235514:723235514(0) win 5840 <mss 1460,sackOK,timestamp 420198 0,nop,wscale 4>
2: 00:15:33.452887 192.168.1.2.33522 > 172.16.1.2.23: S 723235514:723235514(0) win 5840 <mss 1460,sackOK,timestamp 421104 0,nop,wscale 4>
3: 00:15:33.472723 192.168.1.2.33522 > 172.16.1.2.23: S 723235514:723235514(0) win 5840 <mss 1460,sackOK,timestamp 421109 0,nop,wscale 4>
3 packets shown
Como podemos ver, ocorreu apenas o envio de pacotes. Uma analise mais detalhada poderá ajudar na busca de uma solução.
Basicamente essa é a função do Capture. Ferramenta muito importante tendo em vista que a função do firewall é realmente de bloqueio de tráfego. Dessa forma, qualquer desconfiança sobre um provável bloqueio indesejado, é preciso analisar o tráfego para ver se está ocorrendo de fato um bloqueio no firewall.
Espero que seja útil a outros como tem sido pra min.
Subscribe to:
Posts (Atom)