Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
maxLevel3

Team

NameOrganizationEmail
Patrick LiuHuawei TechonologiesPartick.Liu@huawei.com
Jiang Chuncheng
(Lucius)Lu KaiHuawei Techonologieslukai1@huawei.com
Xu ShipingHuawei Techonologies
jiangchuncheng@huawei
xushiping7@huawei.com
(Lucius)Lu Kai
Adarsh MHuawei Techonologies
lukai1@huawei
adarsh.m@huawei.com
Li Shuai
Bharat SaraswalHuawei Techonologies
lishuai12@huawei
bharat.saraswal@huawei.com
Zhang Yuanyou
Gaurav AgrawalHuawei Techonologies
zhangyuanyou@huawei
gaurav.agrawal@huawei.com
HongTao Yin
Janani BHuawei Techonologies
hongtao,yin@huawei
janani.b@huawei.com
Zhao Ying
Sonu GuptaHuawei Techonologies
ying
sonu.
zhaoying@huawei
gupta@huawei.com
Xu Shiping
Vidyashree RamaHuawei Techonologies
xushiping7@huawei
vidyashree.rama@huawei.com

 

Vinod Kumar SHuawei Techonologiesvinods.kumar@huawei.com

...




What is L3VPN  

Layer 3 Virtual Private Networks (l3vpn): L3VPN is a technology based on PE. It uses MPLS to forward VPN packets over service provider backbones.

L3VPN comprises the following types of devices:

            Customer edge (CE) device—A CE resides on a customer network and has one or more interfaces directly connected to service provider networks. It can be a router, a switch, or a host. 

·           Provider edge (PE) device—A PE resides at the edge of a service provider network and connects one or more CEs. On an MPLS network, all VPN services are processed on the PEs.

·           Provider (P) device—A P device is a core device on a service provider network. It is not directly connected to any CE. It has only basic MPLS forwarding capability.

Introduction 

This project in ONOS implements the L3VPN creation requests from App. It provides a Rest Api for north app to use. When getting creation requests , the L3VPN component prepares the configuration informations and downloads the configuration informations into PE devices.

The Project is primarily driven by Yang Model.

Architecture

The architecture of L3VPN as below:

                          Image Removed       Image Added

Basic Network diagram for L3VPN model:

                                      Image Added

Call Flow

                                                                                               Image Added

                                                                                                Image Removed


What we do

NetL3VPN manager

It's a application. 

  • Provider Provide REST services for Neutron.
  • Provider Provide distributed store for Neutron resourcesL3VPN instances.
  • Provider unified API for other applications

NEL3VPN manager

It's also a application. Takes charge of listening event from ONOS core or VTN resource manager application and applying configurations to network elements.

Details as below:

  • Listens the event that Neutron compute node and network node , both named Controller , are detected or vanished, and then applies or remove configuration(tunnel and OVS) via driver subsystem.
  • Listens the event that OVS is detected or vanished, and then applies or removes the default forwarding rules into OVS.
  • Listens the event that Host is detected or vanished, and then applies or removes L2 rules into OVS.
  • Listens the event that floating IP、route、route interface are changed, and then applies or removes L3 rules into OVS

Core Enhancement

New behaviors and their OVSDB-based implementation are added in driver subsystem.

TunnelConfig: Behaviour for handling various drivers for tunnel configuration.

OvsdbTunnelConfig: OVSDB-based implementation of tunnel config behaviour.

BridgeConfig: Behaviour for handling various drivers for bridge configurations.

OvsdbBridgeConfig: OVSDB-based implementation of bridge config behaviour.

OpenVSwitchPipeline: Behaviour for handling traffic under Virtual data center scenario.

 

OVSDB Adapter

 

Class diagram as below:

Goals

Hummingbird Release

Implement basic foundation for SFC

Integrate with Openstack Neutron and service the REST based APIs

Interact with VTN Resource Manager and VTN Manager. Store the SFC resources. Define service chain logic in SFC.

Basic flow rule download to classifier and SFF.

Introduce NSH header in the flows for service plane logic in SFC
  • Provide Resource Allocation for L3VPN instance.

How we do

  • Build onos and start onos cli session.
  • Activate the below necessary apps in cli

    Info
    titleApplications to activate

    app activate org.onosproject.yang
    app activate org.onosproject.config
    app activate org.onosproject.restconf
    app activate org.onosproject.protocols.restconfserver
    app activate org.onosproject.netconf
    app activate org.onosproject.netconfsb
    app activate org.onosproject.l3vpn
    app activate org.onosproject.drivers.huawei

  • Configure all the necessary pre-configuration on the device to establish a netconf connection and then connect to the devices by following NETCONF#ConnectyourowndevicetoONOS
  • Configure L3VPN instance by sending via json.

    Code Block
    titleURI : http://127.0.0.1:8181/onos/restconf/data
    {       
    		"ietf-l3vpn-svc:l3vpn-svc":{
    			"vpn-services":{
                	"vpn-svc":[{
                    	"vpn-id":"vpna",
                    	"customer-name":"jan"
                	}]
            	}
    		}
    }
    Code Block
    titleURI : http://127.0.0.1:8181/onos/restconf/data/ietf-l3vpn-svc:l3vpn-svc
    {
    	"ietf-l3vpn-svc:sites":{
                	"site":[
                    	{
                    	"site-id":"100",
                    	"site-network-accesses":{
                    	    "site-network-access":[
                        	    {
                        	        "site-network-access-id":"500",
                            	    "bearer":{
                            	        "l3vpn-svc-ext:bearer-attachment": {
                            	            "pe-mgmt-ip":"172.16.11.12"
                            	        },
                            	        "requested-type":{
                            	            "l3vpn-svc-ext:requested-type-profile": {
                            	                "physical":{
                            	                    "physical-if":"Ethernet3/0/0"
                            	                }
                            	            }
                            	        }
                            	    },
                               
                            	    "vpn-attachment":{
                            	        "vpn-id":"vpna",
                            	        "site-role" :"any-to-any-role"
                            	    },
                               
                                	"ip-connection":{
                                    	"ipv4":{
                                    	"addresses":{
                                    	    "provider-address":"50.1.1.1",
                                    	    "mask":"24"
                                    	}
                                    	}
                                	}
                            	},
                            	{
                            	    "site-network-access-id":"501",
                            	    "bearer":{
                            	        "l3vpn-svc-ext:bearer-attachment": {
                            	            "pe-mgmt-ip":"172.16.11.13"
                            	        },
                            	        "requested-type":{
                            	            "l3vpn-svc-ext:requested-type-profile": {
                            	                "physical":{
                            	                    "physical-if":"Ethernet3/0/0"
                            	                }
                            	            }
                            	        }
                            	    },
                                
                               	 	"vpn-attachment":{
                               	    	"vpn-id":"vpna",
                               	    	"site-role" :"any-to-any-role"
                               	 	},
                               	 
                               		"ip-connection":{
                               	    	"ipv4":{
                               	    		"addresses":{
                               	        		"provider-address":"50.1.1.2",
                               	        		"mask":"24"
                               	     		}
                               	    	}
                               	 	}
                            	}
                            ]
                    	}
                    }
    			]
    		}
    }