<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>IOS on Cisco Redes</title>
        <link>https://ciscoredes.com.br/categories/ios/</link>
        <description>Recent content in IOS on Cisco Redes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>pt-br</language>
        <lastBuildDate>Thu, 08 Mar 2018 00:00:00 +0000</lastBuildDate><atom:link href="https://ciscoredes.com.br/categories/ios/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Ansible – Configuração via CSV File – Parte 1</title>
            <link>https://ciscoredes.com.br/2018/03/08/ansible-configuracao-via-csv-file-loops/</link>
            <pubDate>Thu, 08 Mar 2018 00:00:00 +0000</pubDate>
            <guid>https://ciscoredes.com.br/2018/03/08/ansible-configuracao-via-csv-file-loops/</guid>
            <description>&lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2018/03/ansible_tree_project_csv_file.jpg&#34; alt=&#34;Featured image of post Ansible – Configuração via CSV File – Parte 1&#34; /&gt;&lt;p&gt;Olá Pessoal,&lt;/p&gt;&#xA;&lt;p&gt;   Dando sequência as nossas publicações sobre Ansible, e como já comentei com vocês que estou pegando alguns exemplos que de fato são situações que nós Engenheiros de Rede acaba vivenciado para executar esse tipo de trabalho em nosso dia a dia, ou seja, venho com a pergunta. Vocês já receberam aquele Excel &lt;strong&gt;( .csv ),&lt;/strong&gt; para de fato fazer algumas alterações em seus equipamentos?&lt;/p&gt;&#xA;&lt;p&gt;   Se sim, acredito que você está no caminho correto, pois hoje, venho com mais um exemplo que vamos fazer as preparações para tratar nossos dados e posteriormente criar nossos arquivos de configuração que serão aplicados em nossos equipamentos &lt;strong&gt;Cisco ( IOS )&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;   Vale lembrar, para que seja efetivo nossa Automação precisamos ter um inventário consolidado, onde as informações relacionadas ao nossos equipamentos devem ser coerentes para futuro crescimento de nossa infra-estrutura. Se você ainda não acompanhou os posts anteriores, recomenda-se ler esses &lt;a class=&#34;link&#34; href=&#34;https://www.ciscoredes.com.br/category/ansible&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;tópicos sobre Ansible.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;   Como vocês podem observar vamos tratar nossos dados via um arquivo &lt;strong&gt;( .csv )&lt;/strong&gt;, que de alguma forma são valores/informações populadas através de outras fontes ( ferramentas, pessoas, etc ). Em nosso exemplo, estou colocando diversas informações que a principio vocês possam não entender, mas no decorrer de nossos posts isso fará sentido para o entendimento correto e as opções que podemos criar em nossa automação.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;inventory_hostname,DHCP,dhcp_exclude1_start,dhcp_exclude1_end,dhcp_network,dhcp_netmask,dhcp_gateway,new_hostname,id_loopback,ip_loopback,mask_loopback&#xA;R1,true,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R1_floor1,10,10.10.10.1,255.255.255.255&#xA;R2,false,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R2_floor1,10,10.10.10.1,255.255.255.255&#xA;R3,false,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R3_floor1,10,10.10.10.1,255.255.255.255&#xA;R4,false,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R4_floor1,10,10.10.10.1,255.255.255.255&#xA;R31,true,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R31_floor1,10,10.10.10.1,255.255.255.255&#xA;R32,true,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R32_floor1,10,10.10.10.1,255.255.255.255&#xA;R5,false,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R5_floor1,10,10.10.10.1,255.255.255.255&#xA;R6,true,1.1.1.9,1.1.1.10,1.1.1.8,255.255.255.248,1.1.1.1,R6_floor1,10,10.10.10.1,255.255.255.255&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;   Como vocês podem observar isso são exemplos e vocês podem adaptar conforme sua necessidade e as solicitações que são exigidas pelas diferentes áreas de sua empresa. Todo o desenvolvimento de nossa automação também é muito co-relacionada com a estrutura de pastas e arquivos que vamos utilizar dentro do Ansible, portanto segue a estrutura que estou utilizando para esse exemplo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2018/03/ansible_tree_project_csv_file.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;   Uma outra informação diferente dos exemplos citados em nossos posts sobre Ansible, é que estou criando como fictício todos esses roteadores em nosso arquivo de inventário ( &lt;strong&gt;./hosts&lt;/strong&gt; ), para que nosso exemplo seja mais robusto e obviamente no final de nosso exemplo irei demonstrar como aplicar as configurações. Segue meu inventário criado para esse exemplo:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[routers-client]&#xA;R1 ansible_host=192.168.0.22&#xA;R2 ansible_host=192.168.0.23&#xA;R31 ansible_host=192.168.0.24&#xA;R5 ansible_host=192.168.0.25&#xA;R6 ansible_host=192.168.0.26&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;   Tendo como base essas informações vamos trabalhar com um módulo que Ansible oferece que é de executar um “&lt;a class=&#34;link&#34; href=&#34;http://docs.ansible.com/ansible/latest/playbooks_lookups.html#the-csv-file-lookup&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt; &lt;em&gt;lookup&lt;/em&gt;&lt;/a&gt; ” dentro de um arquivo &lt;strong&gt;( .csv )&lt;/strong&gt;. Para que nosso código seja mais estruturado minha playbook principal irá chamar minha “&lt;a class=&#34;link&#34; href=&#34;https://docs.ansible.com/ansible/latest/playbooks_reuse_roles.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt; &lt;em&gt;role&lt;/em&gt; &lt;/a&gt;” definida como ( &lt;strong&gt;./lookup_csv_info.yaml&lt;/strong&gt; ).&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;---&#xA;- name: JINJA AND CSVFILE&#xA;  hosts: all&#xA;  gather_facts: no&#xA;  connection: local&#xA;&#xA;  tasks:&#xA;  - name: OBTAIN LOGIN CREDENTIALS&#xA;    include_vars: secret.yaml&#xA;&#xA;  - name: LOOKUP IN CSV FILE&#xA;    include_role:&#xA;      name: lookup_csv_info&#xA;    when: ./excel/test.csv is defined&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;   Talvez vocês devem estar se perguntando o porque utilizar “ &lt;strong&gt;roles&lt;/strong&gt; ” dentro desse código? De fato a funcionalidade role é muito utilizada no sentido de trazer mais dinamismo, funcionalidade e flexibilidade  para seu código, pois eles podem se tornar difíceis de gerenciar e difíceis de manter com um único arquivo. As roles permitem que você crie playbooks mínimas que, em seguida, busque uma estrutura de diretório para determinar as etapas de configurações reais que precisam executar, bem como proceder para as próximas roles se anterior foi executada/validada da forma correta.&lt;/p&gt;&#xA;&lt;p&gt;   Seguindo essa linha de raciocínio, demostro agora a playbook específica que irá pesquisar todas as informações dentro de nosso arquivo ( &lt;strong&gt;.csv&lt;/strong&gt; ). Ressalto, que em nosso arquivo temos mais informações do que de fato existem ( &lt;em&gt;&lt;strong&gt;hostnames&lt;/strong&gt;&lt;/em&gt; ) nosso arquivo de ( &lt;strong&gt;./hosts&lt;/strong&gt; ), ou seja, estamos pesquisando em nossa planilha se existem elementos que coincidem com nosso inventário.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;---&#xA;- name: GET VARIABLES FROM CSVFILE&#xA;  set_fact:&#xA;    vars_dict:&#xA;        DHCP: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=1 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        dhcp_exclude1_start: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=2 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        dhcp_exclude1_end: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=3 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        dhcp_network: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=4 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        dhcp_netmask: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=5 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        dhcp_gateway: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=6 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        new_hostname: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=7 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        id_loopback: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=8 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        ip_loopback: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=9 delimiter=,&amp;#39;) }}&amp;#34;&#xA;        mask_loopback: &amp;#34;{{ lookup(&amp;#39;csvfile&amp;#39;, &amp;#39;{{ inventory_hostname }} file=./excel/test.csv col=10 delimiter=,&amp;#39;) }}&amp;#34;&#xA;  with_items: &amp;#34;{{ inventory_hostname }}&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;   Para que possamos ver que as informações estão sendo capturadas vamos colocar uma task contendo debug de uma variável para observar o comportamento. Essa variável em nosso caso é ” &lt;strong&gt;var_dict&lt;/strong&gt; ” onde se tem todo o ” &lt;strong&gt;dicionário&lt;/strong&gt; ” com os valores populados de cada elemento. Para adicionar essa validação foi inserido o comando:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  - debug: var={{&amp;#39;vars_dict&amp;#39;}}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;   Desta forma temos esse output e a confirmação que os dados estão sendo populados corretamente.&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2018/03/ansible_var_dictionary_csv_file.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;   Acredito que vocês observaram que temos todos os elementos que foram lidos/capturados baseado em cada coluna de nosso arquivo &lt;strong&gt;( .csv )&lt;/strong&gt; comparado ao nosso inventário em uma única “ &lt;em&gt;&lt;strong&gt;task&lt;/strong&gt;&lt;/em&gt; “. Porquê?&lt;/p&gt;&#xA;&lt;p&gt;   Isso está relacionado justamente com ” &lt;a class=&#34;link&#34; href=&#34;http://docs.ansible.com/ansible/latest/playbooks_loops.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;loops&lt;/a&gt; ” que podemos criar dentro de nossas “ &lt;em&gt;&lt;strong&gt;tasks&lt;/strong&gt;&lt;/em&gt; “, fazendo com que ele faça a mesma tarefa diversas vezes baseado no requisito que estamos utilizando. Para nosso exemplo estou usando a variável “ &lt;strong&gt;{{ inventory_hostname }}&lt;/strong&gt; “, justamente para que ela pesquise no arquivo todos os roteadores expostos no arquivo ( &lt;strong&gt;./hosts&lt;/strong&gt; ). Essa função pode ser observada através do ” &lt;strong&gt;with_items:&lt;/strong&gt; “.&lt;/p&gt;&#xA;&lt;p&gt;   Espero que vocês tenham gostado e no próximo post vou detalhar como trabalhar com esse dados. &lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-includes/images/smilies/mrgreen.png&#34; alt=&#34;:mrgreen:&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;Abs,&lt;br&gt;&#xA;Rodrigo&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Comandos Básicos Cisco – Resumo Vídeo Aulas</title>
            <link>https://ciscoredes.com.br/2016/11/19/comandos-basicos-cisco-resumo-video-aulas/</link>
            <pubDate>Sat, 19 Nov 2016 00:00:00 +0000</pubDate>
            <guid>https://ciscoredes.com.br/2016/11/19/comandos-basicos-cisco-resumo-video-aulas/</guid>
            <description>&lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2016/08/Image_cli.jpg&#34; alt=&#34;Featured image of post Comandos Básicos Cisco – Resumo Vídeo Aulas&#34; /&gt;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2016/08/Image_cli.jpg&#34; alt=&#34;Image_cli&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Olá Pessoal,&lt;/p&gt;&#xA;&lt;p&gt;   Gostaria de compartilhar com voces nossa playlist no youtube, onde inicio as explicações sobre os comandos básicos para Cisco.&lt;/p&gt;&#xA;&lt;p&gt;   Vale a pena conferir e entender um pouco mais sobre a CLI. Compartilhe nosso canal!!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/rarodrigoinfo?sub_confirmation=1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Subscribe to my channel&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;«&lt;/p&gt;&#xA;&lt;p&gt;Prev&lt;/p&gt;&#xA;&lt;p&gt;1&lt;/p&gt;&#xA;&lt;p&gt;/&lt;/p&gt;&#xA;&lt;p&gt;1&lt;/p&gt;&#xA;&lt;p&gt;Next&lt;/p&gt;&#xA;&lt;p&gt;»&lt;/p&gt;&#xA;&lt;p&gt;Aula 1 - Comandos Básico - Cisco&lt;/p&gt;&#xA;&lt;p&gt;Aula 2 - Comandos Básico - Cisco&lt;/p&gt;&#xA;&lt;p&gt;Aula 3 - Comandos Básico - CLI Cisco&lt;/p&gt;&#xA;&lt;p&gt;Aula 4 - Comandos Básicos - Estrutura IOS&lt;/p&gt;&#xA;&lt;p&gt;«&lt;/p&gt;&#xA;&lt;p&gt;Prev&lt;/p&gt;&#xA;&lt;p&gt;1&lt;/p&gt;&#xA;&lt;p&gt;/&lt;/p&gt;&#xA;&lt;p&gt;1&lt;/p&gt;&#xA;&lt;p&gt;Next&lt;/p&gt;&#xA;&lt;p&gt;»&lt;/p&gt;&#xA;&lt;p&gt;Abs,&lt;br&gt;&#xA;Rodrigo&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Protocolo OSPF – parte 7</title>
            <link>https://ciscoredes.com.br/2012/07/19/protocolo-ospf-parte-7/</link>
            <pubDate>Thu, 19 Jul 2012 00:00:00 +0000</pubDate>
            <guid>https://ciscoredes.com.br/2012/07/19/protocolo-ospf-parte-7/</guid>
            <description>&lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2012/06/Summary_Inter.png&#34; alt=&#34;Featured image of post Protocolo OSPF – parte 7&#34; /&gt;&lt;p&gt;Olá Caros,&lt;/p&gt;&#xA;&lt;p&gt;  Conforme nossa menção no post&lt;a class=&#34;link&#34; href=&#34;https://ciscoredes.com.br/protocolo-ospf-parte-6/&#34;  title=&#34;OSPF Parte 6&#34;&#xA;    &gt; anterior&lt;/a&gt;, vamos hoje falar sobre a sumarização de rotas no OSPF.&lt;/p&gt;&#xA;&lt;p&gt; Sumarização de rotas consiste na consolidação de múltiplas rotas em um único anúncio. Em uma rede OSPF, esta tarefa normalmente é realizada por um router de borda ( &lt;strong&gt;ABR&lt;/strong&gt; ). Ainda que a sumarização possa ser configurada entre quaisquer duas áreas, a boa prática rege que a sumarização deve ocorrer preferencialmente no sentido do backbone ( &lt;strong&gt;Area 0&lt;/strong&gt; ). Desta forma, o backbone recebe todas as rotas agregadas e, por sua vez, pode anuncia-las sumarizadas para outras áreas.&lt;/p&gt;&#xA;&lt;p&gt;  Em uma rede OSPF, existem basicamente 2 tipos de sumarização:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inter-area route summarization&lt;/strong&gt; = Executado no ABR, cria os LSAs Tipo 3 e 4 e adverte os router IDs do ASBR, ou seja, a sumarização é aplicada as rotas internas do AS, na qual as rotas externas aprendidas via redistribuição não serão consideradas. Segue um exemplo onde teremos essa comunicação:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2012/06/Summary_Inter.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;  Para efetuar a configuração no roteador devemos sempre validar se as redes são contíguas e que o range escolhido para efetuar essa sumarização esteja dentro do escopo de suas redes, pois você pode efetuar loop na rede ou efetuar alguma assimetria dependendo de seu design. Segue o comando para efetuar a sumarização:&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;R2(config)#router ospf 100&lt;/p&gt;&#xA;&lt;p&gt;R2(config-router)#area 1 range 192.168.10.0 255.255.254.0&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;  Depois dessa configuração o roteador irá criar uma rota apontando para a Null0. &lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;External route summarization&lt;/strong&gt;= É totalmente específico para as rotas externas, inseridas na rede OSPF via redistribuição, ou seja, essas redes são redistribuídas através do ASBR, para qual irá fazer a troca de um protocolo não OSPF. Gostaria de reforçar que a sumarização deve ser contígua para que não tenhamos problemas de redes sobrepostas. Segue abaixo um exemplo:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2012/07/Summary_External.png&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;  Neste caso iremos ter o roteador R3 redistribuindo as redes RIP para a área OSPF, portanto neste roteador podemos fazer uma sumarização de todas as redes que será inserida dentro do OSPF, facilitando dessa forma a tabela de roteamento que iremos ter na tabela de roteamento. Para isso podemos executar dessa forma a sumarização:&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;R3(config)#router ospf 100&lt;/p&gt;&#xA;&lt;p&gt;R3(config-router)#summary-address 60.60.60.0 255.255.255.0&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;  Depois dessa configuração o roteador irá criar uma rota apontando para a Null0. &lt;/p&gt;&#xA;&lt;p&gt; Dessa forma concluímos o processo de sumarização que pode ser executado no protocolo OSPF. Espero que tenham gostado e iremos ter nosso último post de OSPF mencionando sobre métricas ( cálculos ).&lt;/p&gt;&#xA;&lt;p&gt;  Aguardo comentários!!!&lt;/p&gt;&#xA;&lt;p&gt;Abs,&lt;/p&gt;&#xA;&lt;p&gt;Rodrigo&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>QoS – Enfileiramento – Parte 3</title>
            <link>https://ciscoredes.com.br/2011/12/05/qos-enfileiramento-parte-3/</link>
            <pubDate>Mon, 05 Dec 2011 00:00:00 +0000</pubDate>
            <guid>https://ciscoredes.com.br/2011/12/05/qos-enfileiramento-parte-3/</guid>
            <description>&lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2011/10/Software_hardware_Part3.jpg&#34; alt=&#34;Featured image of post QoS – Enfileiramento – Parte 3&#34; /&gt;&lt;p&gt;Olá pessoal,&lt;/p&gt;&#xA;&lt;p&gt;  Conforme nosso último &lt;a class=&#34;link&#34; href=&#34;https://ciscoredes.com.br/qos-marcacao-de-pacotes-parte-2/&#34;  title=&#34;QOS - Parte 2&#34;&#xA;    &gt;post&lt;/a&gt;, no qual foi mencionado sobre a marcação de pacotes dentro do cabeçalho IP ( &lt;strong&gt;ToS&lt;/strong&gt; ), portanto hoje iremos trazer mais informações sobre QoS, mencionando sobre o método de filas que o equipamento utiliza para encaminhar seus pacotes.&lt;/p&gt;&#xA;&lt;p&gt;  Quando foi explicado sobre a marcação de pacotes e propriamente mencionado sobre as categorias de filas, ou seja, todo esse trabalho exerce uma funcionalidade para que no momento de recebimento desse pacote os equipamentos ( roteadores/swiches ) possam interpretar essa marcação ( preferência ) do pacote, sobre determinadas características em um plano de hardware queueing e software queueing.&lt;/p&gt;&#xA;&lt;p&gt;  Para um melhor entendimento segue um fluxograma de como funciona o tratamento de pacotes:&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2011/10/Software_hardware_Part3.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;  Para o propósito de hardware queueing:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Esse é o tipo de enfileiramento conhecido como TxQ (fila de transmissão), no qual ele usa o hardware e &lt;strong&gt;SEMPRE&lt;/strong&gt; usa o mecanismo &lt;strong&gt;FIFO&lt;/strong&gt; (First In First Out) e apenas quando essa fila fica cheia o software queueing será acionado. Nesta categoria estamos referenciando-se ao Tx Ring/ TX queue, fazendo dessa forma o enfileiramento quando a fila está cheia, e por sua vez o IOS habilita “queue” nesta interface.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;  Aqui podemos fazer uma analogia de como os pacotes chegam para uma determinada interface física de um equipamento. 😉&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2011/12/Traffic-QoS.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Quando tratamos do assunto de software queueing, teremos 6 categorias para classificar essas informações:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;PQ – Priority Queue =&lt;/strong&gt; Possui 4 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada. Vantagens: Fornece prioridade restrita para um tráfego na classe. Desvantagem: pode sofrer de um fênomeno chamado: starvation (morte por insuficiência de alimentação).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;CQ – Custom Queue =&lt;/strong&gt; Possui 16 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada.Vantagens: garante banda para aplicações menos críticas. Desvantagem: precisa criar uma política dentro da interface.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;WFQ – Weighted Fair Queueing =&lt;/strong&gt; Enfileiramento justo baseado em peso, ele atua de forma justa eliminando o fenômeno stavartion, ou seja, o primeiro da coluna de cada fila é expedido para o DEQUEUE e todos os pacotes da segunda coluna são expedidos e assim sucessivamente. Desvantagem: ideal para links até 2MBps, caso contrário muitos ciclos de CPU serão executados e não possui uma fila única de prioridade.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;CBWFQ – Class-Based Weighted Fair Queue =&lt;/strong&gt; Possui 64 filas FIFO, que são unidirecionais, e um pacote da fila em espera só entra em ação quando sua superior é esvaziada. Vantagem: recordista do número de classes, suporta até 64 para realizar controle de banda. Desvantagem: sem fila exclusiva de prioridade.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;**LLQ – Low Latency Queue =**Conhecido por PQCBWFQ, devido a possuir uma fila PQ e um grupo em CBWFQ. Infelizmente isso é uma “sopa de letrinhas” 😀 Vantagens: ótimo para arquitetura AVVID da Cisco, excelente para aplicações real-time, garante banda e propicia a menor latência, não apenas para portas UDP/RTP mas qualquer outro tipo de porta. O seu único problema diz respeito a sua classificação não ser feita de modo automatizado, havendo a necessidade de configuração. Esse é o nosso método mais utilizado, porém se as classes não estiverem bem ajustadas conforme a realidade, podemos ter alguns problemas, que daí para frente teremos que realizar alguns troubleshootings!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;IP RTP Priority =&lt;/strong&gt; Conhecido por PQWFQ, por ser composto por uma fila PQ e o grupo de WFQ.Vantagens: ótimo para arquitetura AVVID da Cisco, garante banda e propicia a menor latência, não apenas para portas.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Abaixo segue uma tabela comparativa com as filas mais usuais que encontramos no nosso dia-a-dia:&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2011/10/Table_QoS_Part3.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;  Por padrão o FIFO é habilitado nas interfaces com a bandwidth acima de 2mbps e também por padrão o WFQ é habilitado nas interfaces com a bandwidth abaixo de 2Mbps&lt;/p&gt;&#xA;&lt;p&gt;  Baseado nessas informações temos mais um conceito que é obtido em nossas vídeo aulas, para qual tratamos de métodos para evitar o congestionamento. Na Cisco nós trabalhamos com três métodos, no qual chamamos de Tail DROP, WRED ( Weighted Randon Early Drop ) e CBWRED. Não vamos entrar muito em detalhes para não ficar extenso nosso post, mas podemos explicar rapidamente cada método:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tail DROP =&lt;/strong&gt; Descarte de pacotes baseado em hardware e software quando a fila está cheia, ou seja, novos pacotes que chegam na interface são dropados.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;WRED =&lt;/strong&gt; Característica do IOS utilizada para previnir que uma fila seja preenchida pela capacidade descartar o tráfego mais agressivamente quando a fila começa a se preencher. O descarte é feito baseado na prioridade de marcação, onde os pacotes de menor prioriodade terão maior chances de serem descartados. Dentro dessa características podemos chamar de ( minimum threshold, maximum threshold e mark probability denominator).&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;    &lt;img src=&#34;https://ciscoredes.com.br/wp-content/uploads/2011/10/WRED_Part3.jpg&#34; alt=&#34;&#34; loading=&#34;lazy&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;\&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;**CBWRED =**Mesma funcionalidade do WRED, porém podemos utilizar baseado por classe.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;  Como demos uma prévia sobre o conceito segue os comandos que podemos utilizar para fazer esse tipo de configuração.&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Router(config-if)# &lt;strong&gt;class-map c1&lt;/strong&gt;&lt;br&gt;&#xA;Router(config-cmap)# &lt;strong&gt;match access-group 101&lt;/strong&gt;&lt;br&gt;&#xA;Router(config-if)# &lt;strong&gt;policy-map p1&lt;/strong&gt;&lt;br&gt;&#xA;Router(config-pmap)# &lt;strong&gt;class c1&lt;/strong&gt; &lt;br&gt;&#xA;Router(config-pmap-c)# &lt;strong&gt;bandwidth 48&lt;/strong&gt; &lt;br&gt;&#xA;Router(config-pmap-c)# &lt;strong&gt;random-detect dscp-based&lt;/strong&gt; &lt;br&gt;&#xA;Router(config-pmap-c)# &lt;strong&gt;random-detect dscp 8 24 40&lt;/strong&gt; &lt;br&gt;&#xA;Router(config-if)# &lt;strong&gt;service-policy output p1&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;  Espero que vocês tenham gostado e aguardo comentários. 😛&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Fonte:&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcfwred_ps1835_TSD_Products_Configuration_Guide_Chapter.html#wp1002475&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Cisco Page – WRED&lt;/a&gt;&lt;br&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcfconav_ps1835_TSD_Products_Configuration_Guide_Chapter.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Cisco Page – Avoidance&lt;/a&gt;&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
