sexta-feira, 29 de janeiro de 2016

Estudos para o CCIE - 7


Bom pessoal, demorou um pouco esse novo post sobre os estudos para o CCIE pois tive que me dedicar a alguns assuntos pessoais novamente (casamento, festa, chá de bebe, festas de fim de ano, etc) e pode não parecer mas isso tudo consumiu grande parte do meu tempo.

Outra situação que acho importante comentar é de que acabei engordando 4kgs nesse fim de ano e isso está afetando muito a minha disposição para estudar (fico bem preguiçoso), na virada do ano já voltei pra academia e a correr e os estudos já estão voltando a fluir (corpo cansado mente sã).

- Baixei o lab pronto para o CCIE R&S do UNL (link) e instalei no trabalho, a grande diferença entre esse lab e o GNS3 é o consumo de processador e a facilidade de iniciar o lab inteiro (o GNS demora e ainda tenho que ficar acertando o Idle, já o UNL basta inciciar a VM), já o LAB com os CSRv1000 estão rodando muito bem (também demora pra iniciar um pouco, mas a qualidade é superior aos 2 citados).

- Com relação aos videos, faltam 3 aulas para terminar a parte de BGP (como estou dormindo pouco as video-aulas estão acabando comigo, me da muito sono) que é uma das maiores fatias a se estudar na prova, também estou lendo o guide official para a prova (v2) na parte de BGP, pois alguns conceitos estão me quebrando a cabeça.

Ao que foi estudado:

- Primeiro decidi criar o Lab manualmente para os labs de BGP do INE:

  
Os labs são geralmente compostos de 3 ou 4 ASNs, geralmente com o R1 sendo Route Reflector do restante da rede e com os routers R9 e R10 como eBGP no AS 54.

- A primeira coisa que precisei reestudar foram as diferenças entre iBGP e eBGP:

iBGP - BGP entre sistemas autonomos iguais (mesmo ASN) e que por padrão precisam estar todos conectados entre si (full-mesh) o que tornaria os gastos com link um problemão em redes grandes, ou então com as seguintes configurações:

- Route Reflector - você seleciona um dos roteadores do AS como um ponto central em que ele fica encarregado em enviar atualizações de prefixos e rotas para os RR clients, sistema bem parecido ao de DR e BDR do OSPF, sendo que aqui também podemos adicionar um RR backup (cluster).

Exemplo:

R1
router bgp 100
 neighbor 155.1.146.4 remote-as 100
 neighbor 155.1.146.6 remote-as 100
 neighbor 155.1.146.4 route-reflector-client
 neighbor 155.1.146.6 route-reflector-client
 neighbor 155.1.13.3 remote-as 200

- BGP Confederation - Divide o AS em pequenos ASNs privados ( 64512 to 65535) para evitar a necessidade do full-mesh (praticamente a mesma coisa que o RR). 

Exemplo:

R1:
router bgp 65146
 bgp confederation identifier 100
 bgp confederation peers 65379 65508 
 network 150.1.1.1 mask 255.255.255.255
 neighbor 155.1.0.5 remote-as 65508
 neighbor 155.1.13.3 remote-as 65379
 neighbor 155.1.146.4 remote-as 65146
 neighbor 155.1.146.6 remote-as 65146

- No eBGP não tive muitos problemas, apenas lembrando que para fechar o peer BGP, as conexões são TCP na porta 179 e os routers devem ter conectividade (não necessariamente precisam estar diretamente conectados):

- Uma observação bacana é que por default o protocolo limita o TTL para 1 (rede diretamente conectada) ou seja, para fechar o peer entre roteadores distantes, é necessário o comando:

#router bgp 100
# neighbor 155.1.108.10 ebgp-multihop 255

Acima utilizei o valor de 255 que é o máximo de saltos para fechar o peer, mas você pode colocar o número que escolher.

- Um outro ponto interessante é a importância do comando next-hop-self quando utilizamos diversas saídas (bgp multihomed), o processo de roteamento é baseado no prefixo mais especifico encontrado na tabela de roteamento do router (em routers diretamente conectados é tratado via layer2), ou seja, caso não haja uma rota especifica para a rede em questão, o roteador tem que fazer um processo chamado "recursive lookup" que nada mais é do que uma segunda consulta na tabela de roteamento para encontrar uma saída para essa rede, geralmente esse processo é transparente nos IGPs pois são quase sempre redes diretamente conectadas, já no BGP como ocorre peer entre roteadores distantes, muitas vezes esse processo falha e esse prefixo não pode ser instalado da tabela de roteamento e não pode ser anunciada para outros peers BGP:

Em um dos labs de BGP você consegue ver muito bem essa situação, segue o exemplo das configurações entre o R1 e R7 antes e depois do do comando:

R1#sh run | s bgp
router bgp 100
 bgp log-neighbor-changes
 network 150.1.1.1 mask 255.255.255.255
 neighbor 150.1.0.3 remote-as 100
 neighbor 150.1.0.3 route-reflector-client
 neighbor 150.1.0.5 remote-as 100
 neighbor 150.1.0.5 route-reflector-client
 neighbor 155.1.13.3 remote-as 100
 neighbor 155.1.58.8 remote-as 100
 neighbor 155.1.67.7 remote-as 100
 neighbor 155.1.67.7 route-reflector-client
 neighbor 155.1.146.4 remote-as 100
 neighbor 155.1.146.4 route-reflector-client
 neighbor 155.1.146.6 remote-as 100
 neighbor 155.1.146.6 route-reflector-client
R1#
R1#sh ip bgp 112.0.0.0 
BGP routing table entry for 112.0.0.0/8, version 0
Paths: (1 available, no best path)
  Not advertised to any peer
  54 50 60, (Received from a RR-client)
    155.1.79.9 (inaccessible) from 155.1.67.7 (150.1.7.7)
      Origin IGP, metric 0, localpref 100, valid, internal
R1#sh ip route 155.1.79.9
% Subnet not in table

R7#sh run | s bgp
router bgp 100
 bgp log-neighbor-changes
 network 150.1.7.7 mask 255.255.255.255
 neighbor 155.1.79.9 remote-as 54
 neighbor 155.1.146.1 remote-as 100
R7#sh ip bgp 112.0.0.0 
BGP routing table entry for 112.0.0.0/8, version 4
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     16        
  54 50 60
    155.1.79.9 from 155.1.79.9 (212.18.3.1)
      Origin IGP, metric 0, localpref 100, valid, external, best
R7#sh ip route 155.1.79.9
Routing entry for 155.1.79.0/24
  Known via "connected", distance 0, metric 0 (connected, via interface)
  Routing Descriptor Blocks:
  * directly connected, via FastEthernet0/0.79
      Route metric is 0, traffic share count is 1
 
 
Para resolver esse tipo de problema, podemos utilizar o comando next-hop-self:

R7
# router bgp 100
# neighbor 155.1.146.1 remote-as 100
# neighbor 155.1.146.1 next-hop-self

Após o comando:

R1#sh ip bgp 112.0.0.0
BGP routing table entry for 112.0.0.0/8, version 70
Paths: (1 available, best #1, table default)
  Advertised to update-groups:
     9          11        
  54 50 60, (Received from a RR-client)
    155.1.67.7 (metric 30720) from 155.1.67.7 (150.1.7.7)
      Origin IGP, metric 0, localpref 100, valid, internal, best
R1#sh ip route 155.1.67.7
Routing entry for 155.1.67.0/24
  Known via "eigrp 100", distance 90, metric 30720, type internal
  Redistributing via eigrp 100
  Last update from 155.1.146.6 on FastEthernet0/0.146, 00:17:57 ago
  Routing Descriptor Blocks:
  * 155.1.146.6, from 155.1.146.6, 00:17:57 ago, via FastEthernet0/0.146
      Route metric is 30720, traffic share count is 1
      Total delay is 200 microseconds, minimum bandwidth is 100000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1
R1#ping 112.0.0.1 sour
R1#ping 112.0.0.1 source lo0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds:
Packet sent with a source address of 150.1.1.1 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/142/244 ms


- Uma outra situação que está me complicando um pouco é pra lembrar  a sequência dos atributos para a escolha do melhor path do BGP:

1º Maior Weight (somente equipamentos Cisco);
2º Maior Local_Pref (default é 100);
3º Prefixos originados localmente (sem redistribuição ou de um IGP);
4º Menor AS_PATH;
5º Menor origin type (ex. IGP tem uma origin tipe menor que um EGP);
6º menor MED;
7º eBGP sobre iBGP;
8º Menor metrica (IGP) do next-hop do BGP;
9º Determina se o best-path precisa ser instalada na tabela de roteamento ou não;
10º Quando os prefixos são externos, prefere o que foi recebido a mais tempo (o mais velho);
11º Rota com o menor Router ID;
12° Se for o mesmo Router ID (dificil chegar até aqui) é preferido o prefixo com o menor cluster list (comando sh ip bgp mostra o cluster list);
13º Preferencia para o caminho com o menor endereço do neighborn;

Sinceramente ainda não consegui chegar até o 13º kkkk no máximo até o 6º mas vou continuar tentando.

Bom galera, como disse acima esta tudo bem corrido ultimamente e como a minha filha Manuela chega agora em fevereiro talvez complique um pouco mais pra estudar (vou curtir a primeira filha né :) mas é isso ai, espero que tenham gostado.

Abraços

Nenhum comentário:

Postar um comentário