APIs e redes definidas por software
# APIs e redes definidas por software
## O que é SDN
SDN (Software-Defined Networking) separa o plano de controle do plano de dados. Em redes tradicionais, cada dispositivo toma decisões de encaminhamento de forma independente. No modelo SDN, um controlador centralizado assume o plano de controle, e os dispositivos de rede passam a ser simples elementos de encaminhamento.
### Planos de rede
| Plano | Função | Exemplo |
|-------|--------|---------|
| **Dados** | Encaminha pacotes | Tabela MAC, tabela de roteamento |
| **Controle** | Decide como encaminhar | OSPF, STP, ARP |
| **Gerenciamento** | Configuração e monitoramento | SSH, SNMP, NETCONF |
No SDN, o plano de controle sai do dispositivo e vai para o **controlador SDN** (software centralizado).
---
## APIs em redes
API (Application Programming Interface) é a interface que permite que softwares se comuniquem entre si. Em automação de redes, as APIs substituem a configuração manual via CLI.
### Tipos de API
**Northbound API** — interface entre o controlador SDN e as aplicações de negócio. Permite que sistemas externos programem a rede.
**Southbound API** — interface entre o controlador SDN e os dispositivos de rede. Protocolos comuns:
- **OpenFlow** — protocolo padrão de southbound
- **NETCONF** — usa XML e SSH
- **RESTCONF** — versão REST do NETCONF, usa JSON ou XML sobre HTTPS
**East/Westbound APIs** — comunicação entre controladores SDN em ambientes distribuídos.
---
## REST APIs
REST (Representational State Transfer) é o estilo de API mais usado em automação de redes modernas. Características:
- Comunicação via HTTP/HTTPS
- Dados em formato **JSON** ou **XML**
- Operações baseadas em verbos HTTP:
| Verbo HTTP | Ação CRUD |
|------------|-----------|
| GET | Ler (Read) |
| POST | Criar (Create) |
| PUT/PATCH | Atualizar (Update) |
| DELETE | Deletar (Delete) |
---
## NETCONF e RESTCONF
### NETCONF
Usa SSH (porta 830) e XML. Permite ler e escrever configurações de dispositivos de forma estruturada.
### RESTCONF
Versão simplificada do NETCONF sobre HTTP/HTTPS. Mais fácil de usar com ferramentas modernas como Python `requests` ou Postman.
---
## Cisco DNA Center e SD-Access
O **Cisco DNA Center** é o controlador SDN da Cisco para redes empresariais. Oferece:
- Interface gráfica para automação
- REST API northbound para integração com sistemas externos
- Provisionamento automático de dispositivos
O **SD-Access** é a arquitetura Cisco que usa o DNA Center para criar redes com políticas baseadas em intenção (IBN — Intent-Based Networking).
---
## Ansible, Puppet e Chef
Ferramentas de automação usadas com ou sem SDN:
| Ferramenta | Protocolo | Agente no dispositivo? |
|------------|-----------|----------------------|
| **Ansible** | SSH / NETCONF | Não (agentless) |
| **Puppet** | HTTPS | Sim |
| **Chef** | HTTPS | Sim |
O **Ansible** é o mais cobrado no CCNA por ser agentless e usar YAML para definir playbooks.
---
## Configuração mínima para NETCONF no IOS-XE
Router(config)# netconf-yang Router(config)# ip ssh version 2 Router(config)# aaa new-model
Verificação:
Router# show netconf-yang sessions
---
## Pontos críticos para o exame
- SDN separa plano de **controle** do plano de **dados**
- Northbound API = controlador ↔ aplicações
- Southbound API = controlador ↔ dispositivos (OpenFlow, NETCONF)
- REST usa HTTP + JSON; verbos: GET, POST, PUT, DELETE
- Ansible é **agentless**; Puppet e Chef precisam de agente
- DNA Center usa **IBN** (Intent-Based Networking)