SlideShare a Scribd company logo
1 of 42
Download to read offline
Борисенко Олексій
Cisco DevNet developer advocate
16.03.2019
Network Programmability
using Python
Emacs vs Vim
Tabs vs spaces
Про мене
Нагороди за активну участь
Що таке мережа?
Людина, Сім’я, Місто, Країна, Світ…
PAN, LAN, MAN, WAN, INTERNET…
Personal Area Network
Local Area Network
Metropolitan Area Network
Wide Area Network
Virtual Private Network
Application / Infrastructure
What is Network Programmability?
*compound annual growth rate
Network Programmability
Управління конфігурацією сьогодні
Available APIs
Northbound APIs (Web UI, RESTfu
Southbound APIs (CLI, SNMP ...)
Управління конфігурацією сьогодні
APIs can have various Properties
● Transport (SSH, HTTP)
● Encoding (XML, JSON, ProtoBuffer)
● Data structure (Data Models)
Python for the Enterprise
Python for the Enterprise
Python for the Enterprise
• Use OpenConfig model for configuration and operational state data, and
perform NETCONF actions.
• Use NETCONF to communicate with the routers to get, manipulate and delete
configurations in a network.
• Model-Driven configuration and operation of Multi-Vendor or Multi-OS routers
across the network.
Controller
Client (NETCONF,
gRPC, gNMI etc.)
Communication
Protocol (Eg.
NETCONF, gRPC etc.)
Router w/ OpenConfig
Model
NETCONF
NETwork CONFiguration protocol
• IETF Standard [rfc6241, rfc 6242]
• Transaction based
• Configure, manipulate & delete the config.
[get-config, edit-config & delete-config]
• Query Operational data [get]
• Operations are realized on top of RPC
[remote procedure calls]
• Uses XML data encoding
Source :
https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/programmability/63x/b-program
mability-cg-ncs5500-63x/b-programmability-cg-ncs5500-63x_chapter_011.html
YANG
Yet Another Next Generation
• YANG is a data modeling
language used to model
configuration and state data
manipulated by the NETCONF
protocol
• IETF Standard [rfc6020]
• specifically targeted to the needs of
configuration management
• Easy to read, to promote adoption.
• Provides mechanisms to validate
models of configuration data for
semantics and syntax.
YDK – The YANG Development Kit
OpenConfig
http://www.openconfig.net/
https://developer.cisco.com/site/dna-demo/
NETCONF Client
• Satisfies the prerequisites for an SSH/TLS connection
• Opens/Ends a NETCONF session
• Sends NETCONF RPCs requesting/changing configuration/Operation data
• Optional
• Syntax and Semantics Verification.
• locks/unlocks the candidate configuration / temporary configuration
• Open source clients available:
• libnetconf: NETCONF library in C
• ncclient: Python library for NETCONF clients
• https://github.com/ncclient/ncclient
NETCONF Client
Де попрактикуватись?
https://devnetsandbox.cisco.com/RM/Topology
Python implementations
• CPython (default)
• Cython
• IronPython
• Jython
• PyPy
Паралелізм в Python
• Concurrency - кілька завдань виконуються на
перекриваються періодах часу
• Parallelism - кілька завдань, що відбуваються
одночасно
Типові підходи:
• Мультипроцессор
• Threads
• Асинхронне програмування
Мультипроцессор на Python
• Створює кілька інтерпретаторів Python як вилки, які можуть працювати
на декількох ядрах процесора
• Більш високі витрати над потоками
• Складніше спілкуватися між процесами
• Вищий обсяг пам'яті
• Ефективне розподілення навантаження на обчислювальну потужність
процесора через декілька ядер
Зробити Python додатки для мережі швидше з
асинхронними фреймворками
• asyncio
• tornado
• gevent
All I/O heavy use-cases
• Web back-end
• REST API interaction
• Database interaction
• Interaction with network devices
App inside
Рішення та
приклади
Cisco DevNet - це програма для програмістів та інженерів, яка допомагає
розробникам та фахівцям у галузі ІТ, які хочуть писати додатки та розвивати
інтеграцію з продуктами, платформами та інтерфейсами Cisco.
API ecosystem
Cisco API - це просто
• формат JSON
• NETCONF
• RESTful
Огляд рішень та програм: CMX
Connected Mobile Experiences (CMX)
Огляд рішень та програм: CMX
Що використовувати для тестування:
Cisco DNA Center, 3d party app
Інтеграція 3d party app з Webex Teams
https://apphub.webex.com
Огляд рішень та програм
https://marketplace.cisco.com/home
https://developer.cisco.com/ecosystem/solutions/
https://developer.cisco.com/codeintent/
Cisco DevNet
Простота
Підтримка від спільноти
API
SDK &
integrations
Ком’юніті
RESTful API з документацією та можливістю
тестування
Software Development Kit’s для різних рішень
Cisco.
Великий вибір інтеграції з різними продуктами
та сервісами (Trello, SalesForce, Jira, GitHub,
Zendesk, Twitter та ін.)
Модулі для навчання за різними напрямками
на https://learninglabs.cisco.com/
Підтримка Cisco ком'юніті -
https://community.cisco.com/t5/technology-and-s
upport/ct-p/technology-support
DevNet support:
https://developer.cisco.com/site/support/
Готові рішення
Open-source та
інші можливості
1
2
3
4
5
https://creations.devnetcloud.com
/
https://github.com/cisco
https://github.com/CiscoDevNet
Code Exchange
https://developer.cisco.com/codeexchange/
Безкоштовні Sandbox та HW lab
для тестування коду / додатків
https://developer.cisco.com/site/sandbo
x/
NetDevOps site
https://developer.cisco.com/netdevops
Запитання
E-mail & Cisco Webex Teams
https://twitter.com/alex_dev_k
balexey@cisco.com
Приєднуйтесь та практикуйтесь
developer.cisco.com
Alexey Borisenko - Network Programmability using Python

More Related Content

Similar to Alexey Borisenko - Network Programmability using Python

Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”Lviv Startup Club
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...Fwdays
 
Web service lecture
Web service lectureWeb service lecture
Web service lectureeleksdev
 
11 web services
11 web services11 web services
11 web serviceseleksdev
 
Right Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмуванняRight Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмуванняSerhiy Batyuk
 
Лабораторно-Практична робота
Лабораторно-Практична роботаЛабораторно-Практична робота
Лабораторно-Практична роботаAnna Popravka
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаHRdepartment
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsPavlo Iuriichuk
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoGlobalLogic Ukraine
 
5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPCПупена Александр
 
Изучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded SystemИзучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded Systemitconnect2016
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняcit-cit
 
Internet урок 1
Internet урок 1Internet урок 1
Internet урок 1Helen Pata
 
IR System
IR SystemIR System
IR Systemsnipter
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic Ukraine
 

Similar to Alexey Borisenko - Network Programmability using Python (20)

Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
Lviv MDDay 2014. Дмитро Андреєв “знайомство з .Net micro framework”
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
інтернет 15
інтернет 15інтернет 15
інтернет 15
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
 
Web service lecture
Web service lectureWeb service lecture
Web service lecture
 
11 web services
11 web services11 web services
11 web services
 
Right Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмуванняRight Tool for the Job: Як правильно вибрати мову програмування
Right Tool for the Job: Як правильно вибрати мову програмування
 
Лабораторно-Практична робота
Лабораторно-Практична роботаЛабораторно-Практична робота
Лабораторно-Практична робота
 
Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій Галушка
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020
 
Internet
InternetInternet
Internet
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
 
5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC
 
Изучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded SystemИзучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded System
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпечення
 
Internet урок 1
Internet урок 1Internet урок 1
Internet урок 1
 
IR System
IR SystemIR System
IR System
 
Pazdriy
PazdriyPazdriy
Pazdriy
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 

More from PyCon Odessa

Anton Caceres - The epic zoo of microservices
Anton Caceres - The epic zoo of microservicesAnton Caceres - The epic zoo of microservices
Anton Caceres - The epic zoo of microservicesPyCon Odessa
 
Christian Barra - Not just a Developer
Christian Barra - Not just a DeveloperChristian Barra - Not just a Developer
Christian Barra - Not just a DeveloperPyCon Odessa
 
Gabriel Bianconi - Introduction to Face Processing with Computer Vision
Gabriel Bianconi - Introduction to Face Processing with Computer VisionGabriel Bianconi - Introduction to Face Processing with Computer Vision
Gabriel Bianconi - Introduction to Face Processing with Computer VisionPyCon Odessa
 
Jorge Torres - Machine Learning Democratization with Python
 Jorge Torres - Machine Learning Democratization with Python  Jorge Torres - Machine Learning Democratization with Python
Jorge Torres - Machine Learning Democratization with Python PyCon Odessa
 
Taras Matsyk - Event Driven ML
Taras Matsyk - Event Driven MLTaras Matsyk - Event Driven ML
Taras Matsyk - Event Driven MLPyCon Odessa
 
Vsevolod Solovyov - Data science from the trenches
Vsevolod Solovyov - Data science from the trenchesVsevolod Solovyov - Data science from the trenches
Vsevolod Solovyov - Data science from the trenchesPyCon Odessa
 
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with Python
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with PythonMikhail Faraponov - Overview of Kubernetes Metacontrollers with Python
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with PythonPyCon Odessa
 

More from PyCon Odessa (7)

Anton Caceres - The epic zoo of microservices
Anton Caceres - The epic zoo of microservicesAnton Caceres - The epic zoo of microservices
Anton Caceres - The epic zoo of microservices
 
Christian Barra - Not just a Developer
Christian Barra - Not just a DeveloperChristian Barra - Not just a Developer
Christian Barra - Not just a Developer
 
Gabriel Bianconi - Introduction to Face Processing with Computer Vision
Gabriel Bianconi - Introduction to Face Processing with Computer VisionGabriel Bianconi - Introduction to Face Processing with Computer Vision
Gabriel Bianconi - Introduction to Face Processing with Computer Vision
 
Jorge Torres - Machine Learning Democratization with Python
 Jorge Torres - Machine Learning Democratization with Python  Jorge Torres - Machine Learning Democratization with Python
Jorge Torres - Machine Learning Democratization with Python
 
Taras Matsyk - Event Driven ML
Taras Matsyk - Event Driven MLTaras Matsyk - Event Driven ML
Taras Matsyk - Event Driven ML
 
Vsevolod Solovyov - Data science from the trenches
Vsevolod Solovyov - Data science from the trenchesVsevolod Solovyov - Data science from the trenches
Vsevolod Solovyov - Data science from the trenches
 
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with Python
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with PythonMikhail Faraponov - Overview of Kubernetes Metacontrollers with Python
Mikhail Faraponov - Overview of Kubernetes Metacontrollers with Python
 

Alexey Borisenko - Network Programmability using Python

  • 1. Борисенко Олексій Cisco DevNet developer advocate 16.03.2019 Network Programmability using Python
  • 2. Emacs vs Vim Tabs vs spaces Про мене
  • 3.
  • 5. Що таке мережа? Людина, Сім’я, Місто, Країна, Світ… PAN, LAN, MAN, WAN, INTERNET… Personal Area Network Local Area Network Metropolitan Area Network Wide Area Network Virtual Private Network
  • 7. What is Network Programmability? *compound annual growth rate
  • 10. Available APIs Northbound APIs (Web UI, RESTfu Southbound APIs (CLI, SNMP ...)
  • 11. Управління конфігурацією сьогодні APIs can have various Properties ● Transport (SSH, HTTP) ● Encoding (XML, JSON, ProtoBuffer) ● Data structure (Data Models)
  • 12. Python for the Enterprise
  • 13. Python for the Enterprise
  • 14. Python for the Enterprise • Use OpenConfig model for configuration and operational state data, and perform NETCONF actions. • Use NETCONF to communicate with the routers to get, manipulate and delete configurations in a network. • Model-Driven configuration and operation of Multi-Vendor or Multi-OS routers across the network. Controller Client (NETCONF, gRPC, gNMI etc.) Communication Protocol (Eg. NETCONF, gRPC etc.) Router w/ OpenConfig Model
  • 15. NETCONF NETwork CONFiguration protocol • IETF Standard [rfc6241, rfc 6242] • Transaction based • Configure, manipulate & delete the config. [get-config, edit-config & delete-config] • Query Operational data [get] • Operations are realized on top of RPC [remote procedure calls] • Uses XML data encoding Source : https://www.cisco.com/c/en/us/td/docs/iosxr/ncs5500/programmability/63x/b-program mability-cg-ncs5500-63x/b-programmability-cg-ncs5500-63x_chapter_011.html
  • 16. YANG Yet Another Next Generation • YANG is a data modeling language used to model configuration and state data manipulated by the NETCONF protocol • IETF Standard [rfc6020] • specifically targeted to the needs of configuration management • Easy to read, to promote adoption. • Provides mechanisms to validate models of configuration data for semantics and syntax.
  • 17. YDK – The YANG Development Kit
  • 20. NETCONF Client • Satisfies the prerequisites for an SSH/TLS connection • Opens/Ends a NETCONF session • Sends NETCONF RPCs requesting/changing configuration/Operation data • Optional • Syntax and Semantics Verification. • locks/unlocks the candidate configuration / temporary configuration • Open source clients available: • libnetconf: NETCONF library in C • ncclient: Python library for NETCONF clients • https://github.com/ncclient/ncclient
  • 23. Python implementations • CPython (default) • Cython • IronPython • Jython • PyPy
  • 24. Паралелізм в Python • Concurrency - кілька завдань виконуються на перекриваються періодах часу • Parallelism - кілька завдань, що відбуваються одночасно Типові підходи: • Мультипроцессор • Threads • Асинхронне програмування
  • 25. Мультипроцессор на Python • Створює кілька інтерпретаторів Python як вилки, які можуть працювати на декількох ядрах процесора • Більш високі витрати над потоками • Складніше спілкуватися між процесами • Вищий обсяг пам'яті • Ефективне розподілення навантаження на обчислювальну потужність процесора через декілька ядер
  • 26. Зробити Python додатки для мережі швидше з асинхронними фреймворками • asyncio • tornado • gevent
  • 27. All I/O heavy use-cases • Web back-end • REST API interaction • Database interaction • Interaction with network devices
  • 30. Cisco DevNet - це програма для програмістів та інженерів, яка допомагає розробникам та фахівцям у галузі ІТ, які хочуть писати додатки та розвивати інтеграцію з продуктами, платформами та інтерфейсами Cisco.
  • 32. Cisco API - це просто • формат JSON • NETCONF • RESTful
  • 33. Огляд рішень та програм: CMX Connected Mobile Experiences (CMX)
  • 34. Огляд рішень та програм: CMX Що використовувати для тестування:
  • 35.
  • 36. Cisco DNA Center, 3d party app
  • 37. Інтеграція 3d party app з Webex Teams https://apphub.webex.com
  • 38. Огляд рішень та програм https://marketplace.cisco.com/home https://developer.cisco.com/ecosystem/solutions/ https://developer.cisco.com/codeintent/
  • 39. Cisco DevNet Простота Підтримка від спільноти API SDK & integrations Ком’юніті RESTful API з документацією та можливістю тестування Software Development Kit’s для різних рішень Cisco. Великий вибір інтеграції з різними продуктами та сервісами (Trello, SalesForce, Jira, GitHub, Zendesk, Twitter та ін.) Модулі для навчання за різними напрямками на https://learninglabs.cisco.com/ Підтримка Cisco ком'юніті - https://community.cisco.com/t5/technology-and-s upport/ct-p/technology-support DevNet support: https://developer.cisco.com/site/support/ Готові рішення
  • 40. Open-source та інші можливості 1 2 3 4 5 https://creations.devnetcloud.com / https://github.com/cisco https://github.com/CiscoDevNet Code Exchange https://developer.cisco.com/codeexchange/ Безкоштовні Sandbox та HW lab для тестування коду / додатків https://developer.cisco.com/site/sandbo x/ NetDevOps site https://developer.cisco.com/netdevops
  • 41. Запитання E-mail & Cisco Webex Teams https://twitter.com/alex_dev_k balexey@cisco.com Приєднуйтесь та практикуйтесь developer.cisco.com