Programabilidade de Redes Cisco Cisco Networking Academy Day 2014, Rio de Janeiro - Brasil Davi Garcia (davigar@cisco.com) Software Solution Developer Cisco Center of Innovation (COI), Rio de Janeiro Brasil Setembro, 2014
Agenda Conceitos Open Network Environment (ONE) Framework APIs Programáticas - onepk Controladores e Agentes Virtual Network Overlays Certificações para Programabilidade DEMO1: onepk + Python + CSR 1000v DEMO2: Routing for Dollar no Cisco Live! Cisco Confidential 2
Conceitos: Como é a rede de hoje? Plano de Dados/Encaminhamento: Responsável por mover o tráfego da rede (aplicações, usuários, equipamentos) entre a interface de origem e destino. Plano de Controle: Responsável por determinar como o encaminhamento da informação será realizado. Uso de protocolos dinâmicos para troca de informação com vizinhos (STP, OSPF, EIGRP). Plano de Gerência: Responsável por garantir as funções administrativas do dispositivo (SSH, Telnet, Syslog). Dados Controle Gerência Cisco Confidential 3
Conceitos: O que é SDN? Software-Defined Networking (SDN) é uma abordagem para redes de computadores que permite aos administradores de rede gerenciar serviços de rede através da abstração de funcionalidade de nível mais baixo. Isto é feito através do desacoplamento do sistema que toma decisões sobre onde o tráfego é enviado (o plano de controle) dos sistemas subjacentes que encaminham o tráfego para o destino selecionado (o plano de dados). Cisco Confidential 4
Conceitos: Modelos de SDN Aplicação SDN Classica NAPI Resultado de trabalhos academicos em Stanford. Remove o plano de controle do elemento de rede. Plano de controle é todo externo e centralizado. Interação entre plano de controle externo e o plano de dados é através de Southbound API (OpenFlow). Controle Dados Gerência SAPI Cisco Confidential 5
Conceitos: Modelos de SDN Aplicação NAPI SDN Híbrida Evolução do modelo clássico. Viabiliza um plano de controle externo sem remover o plano de controle do elemento de rede. Proporciona maior flexibilidade e segurança nas interação entre aplicação, plano de controle externo e plano de dados do elemento de rede. Controle Dados Controle Gerência SAPI Cisco Confidential 6
Open Network Environment (ONE) Framework Cisco Confidential 7
Open Network Environment (ONE) Framework Cisco Confidential 8
onepk: Terminologia Aplicação ( Application ): Software externo desenvolvido com o uso das APIs do onepk; Elemento de Rede ( Network Element, NE): Plataforma que oferece seus serviços disponíveis através do onepk; Cisco IOS Routers, Cisco IOS-XE, Cisco IOS-XR, Cisco NX-OS; Sessão ( Session ): Comunicação estabelecida entre a aplicação externa e o elemento de rede; Conjuntos de Serviços ( Service Sets ): As funcionalidades providas pelo onepk são separadas por grupos; Cisco Confidential 9
onepk: Arquitetura Aplicação C Java Python OnePK Canal de Comunicação IOS IOS-XE IOS-XR NX-OS Cisco Confidential 10
onepk: Modelos de Implantação Process Hosting Separação lógica (LXC, KVM/QEMU). Recursos compartilhados de HW. Próxima aos planos de controle e dados. IOS App Elemento de Rede Cisco Confidential 11
onepk: Modelos de Implantação Blade Hosting Separação física (UCS-E). Recursos dedicados de HW. Próxima aos planos de controle e dados. App IOS Elemento de Rede Cisco Confidential 12
onepk: Modelos de Implantação End-Node Hosting Separação física (servidor externo). Recursos dedicados de HW (UCS-E). Distante dos planos de controle e dados. App Elemento Externo IOS Elemento de Rede Cisco Confidential 13
onepk: API Service Sets Data Path Policy Routing Element Utility Discovery Developer Lógica interna para encaminhamento dos pacotes. Mecanismos internos de controle de encaminhamento. Roteamento/encaminhamento e eventos do elemento de rede. Propriedades gerais do elemento de rede e seus componentes. Logs e funções auxiliares, como AAA do elemento de rede. Mecanismo para determinar elementos vizinhos, topologia e etc. Serviços adicionais de para facilitar desenvolvimento. Cisco Confidential 14
onepk: Compatibilidade dos API Service Sets Service Sets C Java Python Data Path Policy Routing Element Discovery Utility Developer Cisco Confidential 15
onepk: Plataformas Suportadas Cisco Integrated Service Routers da segunda geração (ISR G2): Cisco IOS Release 15.4(2)T. Cisco ASR 1000, ISR 4400 e CSR 1000v: Cisco IOS-XE Release 3.12.0S. Cisco ASR 9000: Cisco IOS-XR Release 5.2.0. Referência: https://developer.cisco.com/filemedia/download/7513cf78-ef38-4232-82b5-21e36083d581 Cisco Confidential 16
onepk: All-in-One Virtual Machine VM baseada em Ubuntu Desktop. SDKs de C, Java e Python. Incluso tutoriais e documentação offline! Possivel criar instâncias virtuais de IOS. Compatível com VirtualBox! Referência: https://developer.cisco.com/site/networking/one/onepk/sdk-and-docs/all-in-one-vm/index.gsp Cisco Confidential 17
ONE: Agentes (SDN não é OpenFlow!) Cisco Confidential 18
ONE: Controlador OpenDaylight Cisco Confidential 19
ONE: Controlador do ACI (APIC) Cisco Confidential 20
ONE: Virtual Network Overlays Redes Físicas Topologias físicas complexas. Fronteiras L2/L3. Falta de flexibilidade. Aplicações precisam ser adaptadas. Cisco Confidential 21
ONE: Virtual Network Overlays Tecnologias de Overlay Abstraem a complexidade física. Permitem melhor uso dos recursos. VXLAN, NVGRE, ACI. Cisco Confidential 22
ONE: Virtual Network Overlays Redes Lógicas (Overlay) Criação de topologias lógicas. Escalabilidade (L2/L3). Transparente para as aplicações. Uso da melhor topologia possível. Cisco Confidential 23
Certificações para Programabilidade Cisco Business Application Engineer Specialist Sem pré-requisitos! Exames: 600-501 (NPIBA) e 600-509 (NPIBAACI). Cisco Network Programmability Developer Specialist Pré-Requisito: CCNA Exames: 600-502 (NPDEV) e 600-510 (NPDEVACI). Cisco Network Programmability Design Specialist Pré-Requisito: CCNP Exames: 600-503 (NPDES) e 600-511 (NPDESACI). Cisco Network Programmability Engineer Specialist Pré-Requisito: CCNP Exames: 600-504 (NPENG) e 600-512 (NPENGACI). Cisco Confidential 24
DEMO1: onepk + Python + CSR 1000v! 1. Obter a OVA (imagem) mais recente do Cisco CSR 1000v: http://software.cisco.com 2. Importar a OVA do CSR no VMware (vsphere/workstation/fusion). 3. Obter o SDK Python do onepk versão 1.2.1: https://developer.cisco.com 4. Confirmar que a versão do Python na sua máquina é 2.7.x. 5. Após descompactar, instalar o SDK (privilégios de administrador): # python setup.py install 6. Verificar se o SDK foi instalado adequadamente (carregar o módulo): # python >>> import onep Cisco Confidential 25
DEMO1: onepk + Python + CSR 1000v! 7. Configurar o OnePK e gerar o certificado digital local no CSR 1000v : CSR1KV-ONEPK(config)# interface gigabitethernet 1 CSR1KV-ONEPK(config-if)# ip address <endereço IP> <máscara de rede> CSR1KV-ONEPK(config-if)# no shutdown CSR1KV-ONEPK(config)# onep CSR1KV-ONEPK(config-onep)# transport type tls disable-remotecert-validation CSR1KV-ONEPK(config-onep)# exit CSR1KV-ONEPK(config)# crypto pki trustpoint <nome do trustpoint criado pelo passo anterior> CSR1KV-ONEPK(ca-trustpoint)# serial-number CSR1KV-ONEPK(ca-trustpoint)# ip-address <endereço IP usado anteriormente> CSR1KV-ONEPK(ca-trustpoint)# exit CSR1KV-ONEPK(config)# crypto pki enroll <nome do trustpoint> CSR1KV-ONEPK(config)# crypto pki export <nome do trustpoint> pem terminal Cisco Confidential 26
DEMO1: onepk + Python + CSR 1000v! 8. Escreva seu programa Python usando a API (Element Service Set): from onep.element.sessionconfig import SessionConfig from onep.element.networkelement import NetworkElement config = SessionConfig(None) config.ca_certs = 'csr1kv-onepk.pem # Arquivo texto com a saída do último comando no CSR. config.transportmode = SessionConfig.SessionTransportMode.TLS ne = NetworkElement( <endereço IP configurado no CSR>', <nome da aplicação> ) # Info do CSR. ne.connect('admin', 'cisco', config) # Usar usuário/senha do configurado no CSR. hostname = ne.properties.sys_name uptime = ne.properties.sys_uptime free_memory = ne.get_free_system_memory() print("host: %s Uptime: %d Memory: %d" % (hostname, uptime, free_memory)) ne.disconnect() Cisco Confidential 27
DEMO1: onepk + Python + CSR 1000v! Cisco Confidential 28
DEMO2: Routing for Dollar no Cisco Live! Youtube: https://www.youtube.com/watch?v=xzmr0drxzvi Cisco Confidential 29
Obrigado!