4. “…В архитектуреSDN разделены уровни управленияи передачиданных, обеспечена логическая централизация интеллектуальных сетевых механизмов и информации о состоянии сети, а нижележащая сетевая инфраструктура абстрагирована от приложений…”
Источник: www.opennetworking.org
ЧтоозначаетSoftware-defined Networking (SDN)?
5. 5
Контроллер/ Сетевая ОС
Управляющая программа
Маршрутизация, контроль доступа, и т.д.
Абстракциявсей сети
Коммутация данных
OpenFlow
Академический взгляд на SDN
Бизнес Приложения
6. Original SDN idea:
Clean Slate Project
(Stanford University)
SDN –Software Defined NetworkingРазвитие архитектуры уровня управления
Распределенный
Control Plane
Развитие Архитектуры Уровня Управления
…
Компоненты Control/Network/Services-plane
Компоненты ASIC’s, Data-plane
Приложения
ЦентрализованныйSDN
Гибридный SDN
Традиционный
Уровень Управления
Overlay (tunnels)
API-и
Протоколы
Коммутация, управляемая
приложениями
Underlay (physical)
Disconnected Net and Apps
7. Программные Интерфейсы по категориям
Настройка
Управление
Программные расширения
DevOps
Интеграция
NETCONF
YANG
BGP-LS
PCEP
OpFlex
Cisco
Python API
BGP Flowspec
SP Network
Domain
8. 8
Программные Интерфейсы Управления
Приложения, Системы Управления, Контроллеры, ...
Device
Forwarding
Control
Network Services
Orchestration
Management
…
…
OpenFlow
OpenFlow
Operating Systems –IOS / NX-OS / IOS-XR
API (OnePK) and Data Models (YANG)
OpenStack
Puppet
OnePKC/Java
Puppet
Neutron
Protocols
“Protocols” BGP, PCEP,...
Python
NETCONF
REST
ACI Fabric
OpFlex
onePK Plug-Ins
RESTful
YANG
JSON/XML
9. •
Пример: Control Plane Offload
–
Программно УправляемыйBNG
–
Data Plane остается наASR9000 ASIC
–
Control Plane перемещается вОблако
•
Пример: Новый функционал
–
напр. Application-Specific Routes
–
Plug-in-ы, Агенты
Пример Программных Расширений–OnePKAPI
IP/MPLS
Cloud DC
DSLAM
FTTX
Cable
BNG
Controller
BNG
RADIUS
DHCP
PCRF
Интернет
BNG
BNG
BNG
BNG
10. Приложения, Системы Управления, Контроллеры, ...
Device
Forwarding
Control
Network Services
Orchestration
Management
…
…
OpenFlow
OpenFlow
Operating Systems –IOS / NX-OS / IOS-XR
API (OnePK) and Data Models (YANG)
OpenStack
Puppet
OnePKC/Java
Puppet
Neutron
Protocols
“Protocols” BGP, PCEP,...
Python
NETCONF
REST
ACI Fabric
OpFlex
onePK Plug-Ins
RESTful
YANG
JSON/XML
Программные Интерфейсы Управления
11. “…открытый стандарт, определяющий взаимодействие междуразделёнными уровнями управления (контроллер) и передачи данных (агент)…”
Источник: www.openflow.org
Openflow
Чтотакое OpenFlow?
12. Протокол Openflow
Openflow v1.0
Openflow v1.1
Openflow v1.2
Openflow v1.3
Openflow v1.3.x
Initial Standard –Most prevalent in the market today
Добавлена поддержка нескольких таблиц потоков
Добавлена поддержка MPLS
Два режима работы –Hybrid | Pure Openflow
Добавлена поддержка IPv6
Добавлена поддержка Rate Limiting | поля расширения IPv6
GRE –версия считается production ready
Поддержка согласования версии по TLV, багфиксы
Openflowv1.4
Расширяемость, бандлы, tcp/66336653, другие улучшения…
13. Коммутатор
FLOW
TABLE 1
SWITCH FORWARDING ENGINE
Контроллер OPENFLOW
(например OpenDaylight/Cisco XNC)
CPU
GROUP
TABLE (1.1)
FLOW
TABLE 2
FLOW
TABLE n
FLOW METER
TABLE (1.3)
OPENFLOW
HYBRID SWITCH
(1.1)
Data
Data
STD Ethernet Processing Pipeline
OF
или
STD
OUTPUT
pipeline
(1.1)
-Symmetric Sync Messages (Hello, Echo, Vendor…)
-AsyncMessages (Port-Status, Flow-Removed, Error…)
-Forwarding Control & Stats Collection
API’s
Приложения
OF 1.1+:
Требуется специальный ASIС
Openflow
14. FLOW TABLE
HEADER FIELDS
COUNTERS
ACTIONS
…
…
…
…
…
…
Счетчики:
•
per Table, Flow, Queue, Port
•
Bytes, Packets, Errors, Flow duration…
•
Counter Disable (1.3)
Ingress
Port
Source
MAC
Dest
MAC
Ether
Type
VLAN
ID
VLAN
Priority
IPSRC
IPDEST
IPProtocol
IPTOS
TCP/UDP
SRC
ICMP Type
TCP/UDP
DEST
ICMP Code
MPLS
Label
MPLS
Traffic
Class
MPLS (1.1,BoS 1.3)
IPv4 (1.0), IPv6 (1.2)
L1/L2 (1.0)
L4 ports (1.0)
Маскируемые поля(14-tuple):
Действия(1.0)
1
Forward out all ports except input port
2
Redirect to Openflow Controller
3
Forward to local Forwarding Stack (CPU)
4
Perform action in flow table
5
Forward to input port
6
Forward to destination port
7
Drop Packet
Optional Actions –Modify-Field, Enqueue, Forward Normally
Openflow
OF 1.1+:
Требуется специальныйASIC
15. Openflowс Контроллером Cisco XNC 1.5 –Приложения
Network Slicing
(Сегментация сети)
Разделение сети с высокой степенью детализации политик
Topology Independent
Forwarding
(Управление трафиком)
Статическое и динамическое создание правил для каждого потока на основе различных параметров
Использование стандартных коммутаторов для передачи на основе политик зеркалированноготрафика к Инструментам анализа
Data Broker
(Сеть Matrix)
16. Interface to the Routing System (I2RS) IETF –I2RS WG
Применение
Programmable Route Indirection (like PBR)
Traffic Mirroring
Static Multicast Trees
Automated BGP Policy Configuration
see draft-keyupate-i2rs-bgp-usecases
Optimized and programmable “Hot Potato” Routing
Dynamic VPN provisioning
Service Overlay Scheduling and Provisioning
Dynamic DDoSattack mitigation (Arbor)
…
Модели Данных
Routing/signaling state, topology, policy, events, etc.
Self-describing semantics
Converging to YANG as the data model language (described in RFC6020 as used in Netconf)
draft-clemm-i2rs-yang-network-topo
I2RS Client
YANG
X
X data
I2RS
server
BGP
BGP data
I2RS
server
RIB
RIBdata
I2RS
server
ISIS
ISIS data
I2RS
server
AAA
NACM data
I2RS
server
Framework for a common, standardinterface enabling programmaticaccess to information maintainedinside a router (e.g. RIB, interface, stats, policy)
17. Приложения, Системы Управления, Контроллеры, ...
Device
Forwarding
Control
Network Services
Orchestration
Management
…
…
OpenFlow
OpenFlow
Operating Systems –IOS / NX-OS / IOS-XR
API (OnePK) and Data Models (YANG)
OpenStack
Puppet
OnePKC/Java
Puppet
Neutron
Protocols
“Protocols” BGP, PCEP,...
Python
NETCONF
REST
ACI Fabric
OpFlex
onePK Plug-Ins
RESTful
YANG
JSON/XML
Программные Интерфейсы Управления
18. YANG
YANG
SNMP
Framework
(definition language)
YANG
SMI
Content
(information model)
YANG module
MIB
Payload
(encoded data)
XML (ASCII)
ASN.1 BER (binary)
Protocol
(remoteaccess)
NETCONF, RESTCONF
SNMP
YANG (RFC6020) язык описания модели данных(data modelling language)
•
“Yet Another Net Generation“ –разработан после фиаско NG-SNMP
•
Разрабатывалсякак язык описания модели данных для протокола NETCONF
•
NETCONF/YANG‘s должны обеспечить мультивендорное R/W управление элементами и услугами, став таким образом открытым стандартом программного управления устройствами
YANG vs. SNMP
19. <?xml version="1.0" encoding="ISO-8859-1"?>
<show>
<interface>
<__XML__OPT_Cmd_show_interface_brief___readonly__>
<__readonly__>
<TABLE_interface>
<ROW_interface>
<interface>mgmt0</interface>
<state>up</state>
<ip_addr>172.23.40.45</ip_addr>
<speed>100</speed>
<mtu>1500</mtu>
</ROW_interface>
<ROW_interface>
<interface>Ethernet3/1</interface>
<vlan>--</vlan>
<type>eth</type>
<portmode>routed</portmode>
<state>up</state>
<state_rsn_desc>none</state_rsn_desc>
<speed>auto</speed>
<ratemode>D</ratemode>
…
{
"show": {
"interface": {
"__JSON__OPT_Cmd_show_interface_brief___readonly__": {
"__readonly__": {
"TABLE_interface": {
"ROW_interface": [
{
"interface": "mgmt0”,
"state": "up”,
"ip_addr": "172.23.40.45”,
"speed": "100”,
"mtu": "1500”
},
{
"interface": "Ethernet3/1”,
"vlan": "--”,
"type": "eth”,
"portmode": "routed”,
"state": "up”,
"state_rsn_desc": "none”,
"speed": "auto”,
XML формат
JSON формат
Формат Данных
XML и JSON это распространенные форматы данных
•
eXtensible Markup Language (XML): функциональнее, но перегруженный
•
JavaScript Object Notation (JSON): менее функционален, но легко читается
20. Интерфейс YANG(пример)
ietf-interfaces –the structure (RFC7223)
+--rwinterfaces
| +--rwinterface* [name]
| +--rwname string
| +--rwdescription? string
| +--rwtype identityref
| +--rwenabled? boolean
| +--rwlink-up-down-trap-enable? enumeration
+--rointerfaces-state
+--rointerface* [name]
+--roname string
+--rotype identityref
+--roadmin-status enumeration
+--rooper-status enumeration
+--rolast-change? yang:date-and-time
+--roif-index int32
+--rophys-address? yang:phys-address
+--rohigher-layer-if* interface-state-ref
+--rolower-layer-if* interface-state-ref
+--rospeed? yang:gauge64
+--rostatistics
+--rodiscontinuity-time yang:date-and- time
+--roin-octets? yang:counter64
+--roin-unicast-pkts? yang:counter64
+--roin-broadcast-pkts? yang:counter64
+--roin-multicast-pkts? yang:counter64
+--roin-discards? yang:counter32
...
ietf-interfaces.yang–YANG module example
containerinterfaces{
description"Interface configurationparameters.";
list interface{ key"name“;
leafname{ type string; }
leafdescription{ type string; }
leaftype{
type identityref{
base interface-type;
}
mandatorytrue;
}
l eafenabled{
type boolean;
default "true";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enumenabled { value 1; }
enumdisabled { value 2; }
}
}
}
}
c ontainer interfaces-state {
configfalse;
description
"Data nodes for the operational state of interfaces.";
list interface { key "name";
...
getreply–XML-encodedYANG data example
<?xmlversion="1.0" encoding="UTF-8"?>
<rpc-replymessage-id=“9“
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0“>
<data>
<interfaces
xmlns="urn:ietf:params:xml:ns:yang:ietf- interfaces“>
<interface>
<name>eth0</name>
<type>ianaift:ethernetCsmacd</type>
<enabled>false</enabled>
</interface>
</interfaces>
<interfaces-state
xmlns="urn:ietf:params:xml:ns:yang:ietf- interfaces“>
<interface>
21. NETCONF и RESTCONF –для доступа к даннымYANGRPC (RemoteProcedureCall) операции с конфиг. и оперативными данными в формате XML
NETCONF
RESTCONF
Процедура
<get>
HTTP GET
Get operational data (like“show” commands)
<get-config>
HTTPGET
Get configuration (like “show run”)
<edit-config>
HTTP PATCH
Edit configuration (like“conft” and then “commit”)
<edit-config>operation=“delete”
HTTPDELETE
Delete configuration (eg. like “no intloo1”)
<edit-config> operation=“create”
HTTP POST
Create configuration (eg. like “inttunnel-te1 …”)
<edit-config> operation=“replace”
HTTP PUT
Replace configuration
…
•
NETCONF (RFC6241) –для сетевого сообщества
-
работает поверх SSH илиTLS –пример сессииNETCONF: ssh–s admin@r1.net.com -p 830 netconf
-
операторы типа <get>, <get-config>, <edit-config>, <commit>, <copy-config>, <lock> ...
•
RESTCONF (draft-bierman-netconf-restconf) –для сообщества разработчиков
-
использует стандартные операции HTTP –GET, PUT, POST, DELETE…
-
основан на REST (Representational State Transfer) –программная архитектура веб приложений
22. NETCONF пример в IOS иIOS XR
NETCONF вXR 5.1.1
sshserver v2
netconfagent ttyxml agent tty!
crypto key generate rsa
NETCONF вIOS 15.4T
ipsshversion 2
netconfssh
!
ipdomain name cisco.localcrypto key generate rsamod 1024
#ssh–s cisco@1.2.3.4 netconf
Password:
<?xmlversion="1.0" encoding="UTF-8"?>
<hello>...
#sshcisco@1.2.3.4 netconfformat
Password:
<?xmlversion="1.0" encoding="UTF-8"?>
<hello>...
•
Доступ к базе данныхXML в IOS-XR
•
Оперативные и конфигурационные данные
•
ПолучитьXML с: xmlecho format
•
Доступ к IOS командам в формате XML
•
Оперативные данные в формате show ком-нд
•
Получить XML с: shrun int| format
23. REST API примервOpenDaylightконтроллереOpenDaylightHydrogen кIOS XR 5.1.1
PUT метод–Создание нового TE туннеля[например с использованием Firefoxплагина RESTClient]
http://localhost:8080/restconf/operations/network-topology-pcep:add-lsp
Content-Type: application/xml <input> <node>pcc://172.16.1.51</node> <name>my-tunnel1</name> <arguments> <endpoints-obj> <ipv4> <source-ipv4-address>192.168.0.9</source-ipv4-address> <destination-ipv4-address>192.168.0.11</destination-ipv4-address> </ipv4> </endpoints-obj> </arguments> <network-topology-ref xmlns:topo="urn:TBD:params:xml:ns:yang:network-topology">/topo:network-topology/topo:topology[topo:topology- id="pcep-topology"]</network-topology-ref> </input>
GET метод–Запрос топологииBGP-LS [cиспользованием любого браузера]
http://localhost:8080/restconf/operational/network-topology:network-topology/topology/example-linkstate-topology
24. Приложения, Системы Управления, Контроллеры, ...
Device
Forwarding
Control
Network Services
Orchestration
Management
…
…
OpenFlow
OpenFlow
Operating Systems –IOS / NX-OS / IOS-XR
API (OnePK) and Data Models (YANG)
OpenStack
Puppet
OnePKC/Java
Puppet
Neutron
Protocols
“Protocols” BGP, PCEP,...
Python
NETCONF
REST
ACI Fabric
OpFlex
onePK Plug-Ins
RESTful
YANG
JSON/XML
Программные Интерфейсы Управления
25. Централизованный Traffic Engineering –Предсказуемый SDN“Что-если” сценарии–Cisco Quantum WAE
Определение почти в режиме реального времени матрицы потребностей на основе данных статистики с сети
Разбор трафика
Анализ рисков
Оптимизация
Анализ последствий при увеличении потребностей или отказах
Тактическая оптимизация для снижения локальных перегрузок, стратегическая оптимизация для уменьшения хронических проблем с перегрузками на всей сети.
Оптимизация LSP
Анализ отказов узлов
Анализ потребностей трафика
Before
After
Что произойдет дальше?
“Что если”произойдет отказ или изменитсятрафик?
Что лучше?
26. Domain 1
Domain 2
Domain 0
TED
BGP-LS
BGP-LS
BGP-LS
RR
WAN-O Info Collection –как получить топологию? Расширить возможности BGP!
•
BGP Link-State (BGP-LS) –draft-ietf-idr-ls-distribution
•
Redistribute IGP LSDB into per-domain BGP speaker
•
Advantages
–
Single upstream topology feed (BGP)
–
IGP isolated from external entities
–
Leverage well-known BGP security, transport and policy knobs
–
Enables operator control, responsibility border
•
IGP LSDB can contain more information than just cost
–
Delay, Jitter, Loss, Residual bandwidth, Available bandwidth
–
Extensions to ISIS/OSPF (new TLVs)
•
draft-previdi-isis-te-metric-extensions
•
draft-ietf-ospf-te-metric-extensions
Контроллер SDN
•
Cisco WAE
•
OpenDaylight
27. router isisDEFAULT
is-type level-2-only
net 49.0000.1720.1625.5001.00
distribute bgp-lslevel 2
address-family ipv4 unicast
metric-style wide
mplstraffic-englevel-2-only
mplstraffic-engrouter-id Loopback0
!
interface Loopback0
passive
address-family ipv4 unicast
!
!
interface TenGigE0/0/2/0
point-to-point
address-family ipv4 unicast
!
!
!
router bgp65172
address-family link-state link-state
!
neighbor 172.31.0.1
remote-as 65172
update-source Loopback0
address-family link-state link-state
!
!
!
BGP-LS Детали и Конфигурация–Cisco IOS XR 5.1.1
Prefix string format:
[NLRI-Type][Area][Protocol-ID][Local node descriptor][Remote node descriptor][Attributes]/prefix- length
Distribute level-2 link state database into BGP-LS
Enable link-state addresses and specify BGP-LS peer
BGP speakers express their BGP-LS support in capabilities
LSDB carried in BGP Messages using:
–
MP_REACH_NLRI, MP_UNREACH_NLRI, Link-State Attribute
Link State
–
LS NLRI: link, node or prefix (IPv4/IPv6)
–
LS Attribute: Describes a topology element
28. PCEP
WAE
TED
LSP DB
PCC Agent
PCE-initiated LSP
WAN-O программируемость –как запрограмировать explicit path? Enhance PCE!
StatefulPCE Server
•
PCE (Path Computation Element) Architecture
–
Centralized Computation Model for MPLS TE (2006)
–
Cisco innovation, originally for Inter-AS TE (stateless)
•
PCE Architecture Elements
–
Controller = PCE Server (PCS)
–
Agent = Path Computation Client (PCC) on the router
–
PCE Protocol (PCEP) = protocol between PCC & PCS (RFC5440)
–
Traffic Engineering Database (TED) –contains topology and resource information (LSDB etc.)
•
StatefulPCE (RFC4655)–introduces PCEP extensions for:
–
LSP state synchronization between PCCs and PCEs
–
PCC delegation of LSP control to PCE (active PCE)
Приложение
REST
Короткий путь не является оптимальным!
29. Конфигурирование –Cisco IOS XR 5.1.1
-
show mplstraffic-engauto-tunnel pcc[…]
-
show mplstraffic-engpcepeer (all|ipv4 <addr>|node-id <id>|stateful|stateless)
-
show mplstraffic-engpcetunnels <id>
-
show mplstraffic-engpcetrace […]
!
ipv4 unnumbered mplstraffic-engLoopback0
!
mplstraffic-eng
pce
peer ipv4 172.16.255.3
stateful-client
capabilities instantiation
capabilities update
!
!
auto-tunnel pcc
tunnel-id min 1000 max 5000
!
!
Allow PCE-initiated LSP
Range of tunnel-teinterfaces for PCE initiated LSPs
Required for auto- tunnel
PCE server
30. PCEP
WAE
TED
LSP DB
StatefulPCC
PCE-initiated LSP
WAN-O программирование–как направить трафик в LSP? Несколько опций
StatefulPCE
Autoroute/PBTS/Openflow/Flowspec
MATCH/SET
•
Per-router granularity (XR 5.1.1): Use standard routing tools
TE Autoroute(granularity per egress PE)
Static routing (multiple loopbacks on egress PE)
PBTS (set forward-class) can add CoSawareness
•
Per-application granularity (future): Use Openflowor BGP Flowspecto program classifiers on the Edge
MATCH/SET NH (Forward into LSP Tunnel)
Source matching, Application (L4 port) matching,…
31. Traffic Actions
New NLRI defined (AFI=1, SAFI=133) –components are optional, order dependent
1.
Destination IP Address (1 component)
2.
Source IP Address (1 component)
3.
IP Protocol (+1 component)
4.
Port (+1 component)
5.
Destination port (+1 component)
6.
Source Port (+1 component)
7.
ICMP Type
8.
ICMP Code
9.
TCP Flags
10.
Packet length
11.
DSCP
12.
Fragment
BGP Flowspec(RFC5575) Dissemination of Flow Specification Rules
The MP_REACH_NLRI –RFC4760
•
Rate-limit or Drop, Redirect VRF, Mark DSCP…
32. BGP FlowSpecрасширения под SDN
•
Redirect IP extension: draft-simpson-idr-flowspec-redirect-02
•
IPv6 extensions: draft-ietf-idr-flow-spec-v6-03
•
IBGP extension: draft-ietf-idr-bgp-flowspec-oid-01
•
Persistence Support:draft-uttaro-idr-bgp-persistence-02
•
HA/NSR Support
Redirect IP details:
•
The redirect nexthopcan be explicitly configured and can possibly resolve over IP/MPLS/tunnel
•
Redirect nexthopis encoded as the MP_REACH nexthopin the BGP flowspecNLRI along with associated extended community.
•
Since the MP_REACH nexthopcan be overwritten at a ebgpboundary, for cases where the nexthopconnectivity spans multiple ASes, the nexthopcan be preserved through the use of the unchanged knob.
34. Original SDN idea:
Clean Slate Project
(Stanford University)
Распределенный
Control Plane
…
Компоненты Control/Network/Services-plane
Компоненты ASIC’s, Data-plane
Приложения
Централизованный SDN
Гибридный SDN
Underlay (physical)
Overlay (tunnels)
API-и
Протоколы
Explicit Paths: MPLS TE (statefulRSVP)
Plain IP: GRE (MPLSoGRE, NV-GRE), VXLAN
Stateless Network with Explicit Paths:
SEGMENT ROUTING
Stateless Network: IP or MPLS
Развитие Архитектуры Уровня Управления
Традиционный
Уровень Управления
SDN –Software Defined NetworkingРазвитие архитектуры уровня управления
disconnected Net and Apps
35. Развитие MPLS для поддержкиSDN IETFSegment Routing & Stateless MPLS
Nodal segment: A shortest-path to the related node. Operator allocates a label from the SR registry to each node. For example Z is given label 65 (packet follows shortest path to Z).
Adjacency segment: Node automatically allocates a local label for each adjacency. For example Label 9001 allocated for adjacency C-O (packet takes this link to O).
•
Forwarding state (segment) established by ISIS/OSPF
•
LDP and RSVP-TE are not required
•
No need to migrate to IPv6 LDP/RSVP!
•
MPLS Dataplaneis leveraged without any modification
•
push, swap and pop: all what we need
•
ECMP, PHP, normal h/w behavior
Combining nodal and adjacency segments as labels stack:
The state is no longer in the network, it’s in the packet!
A
B
C
M
N
O
Z
D
P
Packet to Z
65
9001
Packet to Z
65
Packet to Z
Packet to Z
65
9001
72
65
9001
www.segment-routing.net
The state in the car (packet), the road (network) is stateless.
TI-LFA (Loop-Free Alternate)
-Local Decision (guaranteed <50ms)
-Topology Independent (guaranteed)
36. WAE
TED
LSP DB
PCC
WAN-O программирование–StatefulPCE задает Explicit SR Paths
PCE
•
PCE knows topology and node/adjsegment IDsvia BGP-LS
•
Computes path that avoidscongested links (based on service request constraints)
•
PCEP extensions needed toprogram SR path (label stack) in router
-
SR path (label stack prependedto each packet)
•
No RSVP-TE signaling needed
Сервисный запрос
PCE Create LSP
<LableStack>
50
60
80
50
60
80
Link State Report
Congested