MobileSDWAN_Backend

published

Mobile SDWAN PoC Solution:

Cisco ASA + Cisco NSO + Cisco SDWAN = Mobile SDWAN solution

Requirements

  • Cisco NSO 5.0+
  • Cisco ASA NED (cisco-asa-6.8)
  • Cisco SD-WAN (Viptela)
  • Linux Server

This is the backend Server for Mobile SDWAN,

For the front-end code, please check:
https://github.com/CiscoOctopus/MobileSDWAN_Frontend

Description

This project is a PoC of a potential Mobile SDWAN solution powered by Cisco Orchestration tools (Requested by user)

Currently on Cisco SD-WAN side, the configuration needs to be preconfigured on vManage (NSO is not managing SD-WAN for current PoC)

This repo consist of two parts, the NSO service module and the Python backend.

How it works

The ASA is connected to vEdgeCloud device's service VPN.

NSO is used to programatically add new user and assign correct VPN membership group

You can check the detail template under "asauser" folder.

The Python part use Tornado framework as a REST API Server.

It serves the requests from MobileSDWAN_Frontend, allowing Frontend to:

  • Create new VPN user
  • Modify/Delete existing VPN user
  • Check ASAv Server Info
  • Check latency info

It redirects the requests to NSO Restconf and create VPN per user's need.

Demo Topology

image

Note that we support multi-customer in this design, so each customer has it's own VMs under different SDWAN VPN.

Since this is a PoC right now, we don't have public testbed available to use. You can follow the topology above to setup the topology.

Install

# Under NSO work dir.
cp THISPROJECTPATH/asauser ./packages/
cd ./packages/asauser/src/
make all

Install Python Backend:

pip install -r requirements.txt
mv config.yaml.example config.yaml
vi config.yaml
# Modify the NSO info to fit your environment
# Also modify the ASAServer IP to fit correct server.
# Then run
python3 ./main.py

And your RESTAPI server will be running at 9888 port.

After deployed the Frontend code,
please modify Nginx to proxy_pass the API request to backend server.

Thank you very much.

View code on GitHub

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.