Post on 17-Jul-2015
Eric Choi
echoi@brocade.com
Product Management and Strategy,
March 2015
Implementing MPLS Services
using Openflow
Why MPLS and Openflow for SP ?
Telcos are
struggling with
long lead-times for
their core services
Source: http://www.t1shopper.com/carriers/sla/#
Source :
https://www.nanog.org/sites/default/files/wednesday_general_migrating_be
zerra_63.10.pdf
1• Breaking Silo
2•Openness
•Open-source
•Programmability
3•Agility
•New Services
•Better tie to application
•Analytics
Source: https://www.opennetworking.org/images/stories/downloads/sdn-
resources/customer-case-studies/cs-googlesdn.pdf
ENABLING SDN WAN VIRTUALIZATION FOR SP with Openflow MPLS
EMS, NMS, CLI and APIs specific to the switch or router vendor
Proprietary control plane per device
Communication protocols standardized for interoperability© 2014 BROCADE COMMUNICATIONS SYSTEMS, INC. COMPANY PROPRIETARY
INFORMATION 3
SDN Architecture for SPSoftware Defined Networking Logically Centralizes the Control Plane
3/2/2015
CLI/API
EMS/NMS
Vendor A
CLI/API
EMS/NMS
Vendor BVendor
Specific
Management
Captive
Control
Plane
Industry
Standard
Protocols
Vendor C
CLI/API
EMS/NMS
Monitoring
Management
Operation
Vendor A Vendor B Vendor C
Open Source SDN
Controller (ODL,
Ryu)
Northbound APIIndustry Standard
Control Protocols
Standard
Modeling
Languag
e
• Logically centralized open control plane, non-vendor specific
• Normalized programming interface
• Standard control protocols and modeling language
Implementing MPLS Services using OF1.3
Openflow
Controller
Implementing MPLS Services using OF1.3Match L2/L3
Push two Tags
Match on Outer
Tag
Rewrite and Fwd
Match on Outer
Tag
Pop and Fwd
Match on Inner
Tag
Pop and Fwd
• Inserting and removing label works the same way for single label and double label cases
Implementing MPLS Services using OF1.3
Ethertype changed to 0x8847. Label
matching can take place in subsequent
nodes
Ethertype
rewrite
• Ethernet Type cannot be retained across the network
Implementing MPLS Services using OF1.3
Workaround
Implement MPLS label per Ethernet Type
Matching EthernetTypeon the ingress side and place them in different circuit
Not scalable .
impossible from service provider point of view
How can we transport the user frame without altering the ethernet type?
Advertise labels Y from label range for L2VPN
2. Pop the label and restore frame
How is it done today with L2VPN?
A B
How can it be achieved it with standard openflow controller?1. Push Inner label from label range for
L2VPN
2. Push outer label from default label
range
Pop the label and restore frame
MPLS
APP
Openflow
Controller
How can we transport the user frame without altering the ethernet type?
A B
Ryu
Openflow
Controller
Openflow
Device
App
Flow
table
restapi
An Example on
NTTCom Ryu
ControllerIngress Node
curl -X POST -d '{ "dpid":
"10195376623583232",
"priority": "23997", "match": {"in_port": "50",
"dl_vlan": "100" },
"actions": [{"type": "PUSH_MPLS",
"ethertype":34887},
{"type":"SET_FIELD","field":"mpls_label","va
lue":368929}, {"type": "PUSH_MPLS",
"ethertype":34887},
{"type":"SET_FIELD","field":"mpls_label","va
lue":499999},{"type": "OUTPUT", "port":
"50"}]}'
http://127.0.0.1:8080/stats/flowentry/add
Flow ID: 11 Priority: 23997 Status: Active
Rule:
In Port: e2/2
In Vlan: Tagged[100]
..
Instructions: Apply-Actions
Action: FORWARD
Out Port: e2/2
PUSH MPLS TAG: Label 368929, EXP 0,
BOS 0, TTL 0
PUSH MPLS TAG: Label 499999, EXP 0,
BOS 0, TTL 0
Transit Nodecurl -X POST -d '{ "dpid":
"10195376623583232",
"priority": "23994",
"match": {"in_port": "50", "eth_type":
"34887", "mpls_label": “368929" },
"actions": [{"type": "POP_MPLS",
"ethertype":34887}, {"type": "OUTPUT",
"port": "50"}]}'
http://127.0.0.1:8080/stats/flowentry/add
Flow ID: 14 Priority: 23994 Status: Active
Rule:
In Port: e2/2
Ether type: 0x00008847
MPLS Label: 368929
Instructions: Apply-Actions
Action: FORWARD
Out Port: e2/2
POP MPLS TAG
Egress Nodecurl -X POST -d '{ "dpid":
"10195376623583232",
"priority": "23996",
"match": {"in_port": "50", "eth_type":
"34887", "mpls_label": “499999" },
"actions": [{"type": "POP_MPLS",
"ethertype":34887}, {"type": "OUTPUT",
"port": "50"}]}'
http://127.0.0.1:8080/stats/flowentry/add
Flow ID: 12 Priority: 23996 Status: Active
Rule:
In Port: e2/2
Ether type: 0x00008847
MPLS Label: 499999
…
Instructions: Apply-Actions
Action: FORWARD
Out Port: e2/2
POP MPLS TAG
How can we transport the user frame without altering the ethernet type?
Frequently Ask Questions
Flow Table Matching
search
Ingres
sEgressR1
R2User Circuit
Ingres
sEgressR1
R2
Fast reroute on transit node and link.e1/1
e1/2
e1/1
e1/2
PriorityMatching Fields ActionCounters
100Match LBL 1000 Forward 1/11000/1000
101Match LBL 1000 Forward 1/20/0
R1 needs to report e1/1 link down and App/Controller
will remove the rule 100 and therefore slow
convergence
Frequently Ask Questions
Flow Table Matching
search
Ingres
sEgressR1
R2User Circuit
Ingres
sEgressR1
R2
Fast reroute on transit node and link.e1/1
e1/2
e1/1
e1/2
PriorityMatching Fields ActionCounters
100Match LBL 1000Forward
Port-Group 11000/1000
Output e 1/1GID 1 Mode
Failover Output e 1/2
Group Table
After link e1/1 went down, traffic will forward to e1/2 without
waiting for controller instruction. Fast convergence
Frequently Ask Questions
Integrating with Existing MPLS Network
13
Data Center
L2/L3 MPLS/VPN L2/L3
OpenFlow MPLS
Separate MPLS Label
RangeTransport Label LBL A > LBL B
L3VPN Label LBL B > LBL C
L2VPN Label LBL C > LBL D
OF Transport LBL D > LBL E
OF L2VPN Label LBL E > LBL F
Data Center
OpenFlow L2/L3OpenFlow L2/L3
Reducing Operational Complexity NSR and ISSU
How is it done using routing protocol within the device?
Master
Control
Forwarding
Standby
Control Protocol
Routing
DB Sync so as to
maintain
persistence
topology view
across controller
Reducing Operational Complexity NSR and ISSU
Old
Release
Forwarding
OF
Client
Openflow
Controller
cluster
OF
C
OF
C
OF
C
OF
C
Forwarding
OF
Client
OF
C
OF
C
OF
C
OF
C
New
Release
Forwarding
OF
Client
Flow
table
sync
Modify
If needed
OF
C
OF
C
OF
C
OF
C
Reducing Operational Complexity
E-OAM – complexity grows exponentially as more devices are added to the E-OAM domain
Reducing Operational Complexity
OAM for both Ethernet and MPLS domain using Openflow
Data Center Data Center
OAM
APP
Openflow
Controller
Packet out
Action:
forward e1/1
Push label 1000,2000(TTL=1)
Full probe messageFlow table
…Match MPLS TTL=1, for-controller
…
A B C D
•How Openflow MPLS work
•How some of the difficult problem in service provider network can be addressed with Openflow
•Network is no longer a standalone resources
Implementing MPLS
using Openflow