SDN & NFV in Telecom — Network Virtualization Guide
In this tutorial, you'll learn about SDN & NFV in Telecom. We cover key concepts, practical examples, and best practices.
SDN (Software-Defined Networking) decouples the control plane from the data plane, while NFV (Network Functions Virtualization) runs network functions as software on commodity servers — together they replaced proprietary telecom hardware with flexible, programmable infrastructure.
What You'll Learn
- SDN architecture: controller, southbound/northbound APIs, OpenFlow
- NFV principles: VNFs, NFVI, MANO orchestration
- Network service chaining and SFC
- How SDN/NFV enable 5G cloud-native core
Why SDN/NFV Matters
Traditional telecom networks ran every function on proprietary hardware — firewalls, load balancers, MMEs, SGWs were all purpose-built appliances. SDN/NFV replaced these with software running on standard x86 servers, reducing CAPEX by 40-60% and enabling network functions to be instantiated in minutes instead of months. 5G's service-based architecture and network slicing are impossible without SDN/NFV.
DodaZIP uses SDN-inspired traffic engineering for its cloud compression service, dynamically routing large file processing jobs to the least-loaded server instance.
Learning Path
flowchart LR A[Traditional Networking] --> B[SDN Concepts] B --> C[OpenFlow & Controllers
You are here] C --> D[NFV & VNFs] D --> E[MANO Orchestration] E --> F[5G Cloud Native Core] style C fill:#f90,color:#fff
SDN Architecture
flowchart TD
subgraph Application Layer
A1[Network Apps: LB, FW, Routing]
end
subgraph Control Layer
C1[SDN Controller
ONOS, OpenDaylight, Ryu]
end
subgraph Infrastructure Layer
D1[OpenFlow Switch 1]
D2[OpenFlow Switch 2]
D3[OpenFlow Switch 3]
end
A1 -- Northbound API REST --> C1
C1 -- Southbound API OpenFlow --> D1
C1 -- OpenFlow --> D2
C1 -- OpenFlow --> D3
| Layer | Component | Role |
|---|---|---|
| Application | Network apps | Routing, security, load balancing — write policies |
| Control | SDN Controller | Centralized brain — makes forwarding decisions |
| Infrastructure | OpenFlow switches | Simple forwarding hardware — executes controller decisions |
OpenFlow Protocol
OpenFlow is the most widely deployed southbound protocol. A controller programs flow tables in switches:
class OpenFlowSwitch:
def __init__(self, dpid):
self.dpid = dpid
self.flow_table = {}
def add_flow(self, match, actions, priority=100):
self.flow_table[len(self.flow_table)] = {
"match": match, "actions": actions, "priority": priority
}
def process_packet(self, packet):
for fid, flow in sorted(self.flow_table.items(),
key=lambda x: x[1]["priority"], reverse=True):
match_ok = all(packet.get(k) == v for k, v in flow["match"].items())
if match_ok:
print(f"[OF-{self.dpid}] Match flow {fid}: {flow['actions']}")
return flow["actions"]
print(f"[OF-{self.dpid}] No match -> send to controller (packet_in)")
return "packet_in"
sw = OpenFlowSwitch("00:00:00:00:00:01")
sw.add_flow({"ip_dst": "10.0.1.0/24"}, "output:2")
sw.add_flow({"ip_dst": "10.0.2.0/24"}, "output:3")
sw.add_flow({"tcp_dst": 443, "ip_dst": "10.0.1.50"}, "output:4", priority=200)
print(sw.process_packet({"ip_dst": "10.0.1.50", "tcp_dst": 443}))
print(sw.process_packet({"ip_dst": "10.0.1.99"}))
Expected output:
[OF-00:00:00:00:00:01] Match flow 2: output:4
output:4
[OF-00:00:00:00:00:01] Match flow 0: output:2
output:2
NFV Architecture
NFV decouples network functions from dedicated hardware:
flowchart TD
subgraph NFVI[NFV Infrastructure]
COTS[Compute / Storage / Network]
VMM[Virtualization Layer - KVM, ESXi, Docker]
end
subgraph VNFs[Virtual Network Functions]
vFW[vFirewall]
vMME[vMME]
vSGW[vSGW]
vPCRF[vPCRF]
end
subgraph MANO[Management & Orchestration]
NFVO[NFV Orchestrator]
VNFM[VNF Manager]
VIM[VIM - Virtualized Infrastructure Manager]
end
VNFs --> NFVI
MANO --> VNFs
MANO --> NFVI
VNF Examples
| Traditional Appliance | VNF Equivalent | Software |
|---|---|---|
| Cisco ASA Firewall | vFW | pfSense, OPNsense, FortiGate-VM |
| Ericsson MME | vMME | Affirmed Networks, Mavenir |
| F5 Load Balancer | vLB | HAProxy, Nginx, F5 VE |
| Session Border Controller | vSBC | Oracle ACME, Metaswitch |
Network Service Chaining
Service chaining steers traffic through a sequence of VNFs in a specific order:
Traffic: [Ingress] -> [vFirewall] -> [vIDS] -> [vLB] -> [vCache] -> [Egress]
class ServiceChain:
def __init__(self, name):
self.name = name
self.vnfs = []
def add_vnf(self, vnf_name, vnf_type):
self.vnfs.append({"name": vnf_name, "type": vnf_type})
def apply_chain(self, traffic_type, src_ip, dst_ip):
print(f"Service Chain: {self.name}")
print(f"Traffic: {traffic_type} {src_ip} -> {dst_ip}")
for vnf in self.vnfs:
print(f" -> [{vnf['type']}] {vnf['name']}")
if vnf["type"] == "firewall" and traffic_type == "malicious":
print(f" BLOCKED by {vnf['name']}")
return "blocked"
print(f"Result: FORWARDED to {dst_ip}")
return "forwarded"
chain = ServiceChain("Internet Access")
chain.add_vnf("vFW-01", "firewall")
chain.add_vnf("vIPS-01", "ids")
chain.add_vnf("vProxy-01", "proxy")
chain.apply_chain("malicious", "10.0.1.50", "203.0.113.5")
print("---")
chain.apply_chain("normal", "10.0.1.50", "93.184.216.34")
Expected output:
Service Chain: Internet Access
Traffic: malicious 10.0.1.50 -> 203.0.113.5
-> [firewall] vFW-01
BLOCKED by vFW-01
Result: blocked
---
Service Chain: Internet Access
Traffic: normal 10.0.1.50 -> 93.184.216.34
-> [firewall] vFW-01
-> [ids] vIPS-01
-> [proxy] vProxy-01
Result: FORWARDED to 93.184.216.34
MANO (Management and Orchestration)
ETSI NFV-MANO defines the orchestration framework:
- NFVO (NFV Orchestrator): Manages the lifecycle of network services, resource allocation across VNFs, policy enforcement
- VNFM (VNF Manager): Manages individual VNFs — instantiation, scaling, termination, health checks
- VIM (Virtualized Infrastructure Manager): Controls compute/storage/network resources (OpenStack, Kubernetes, VMware)
Common Errors
1. Assuming SDN and NFV Are the Same
SDN separates control and data planes for programmable networking. NFV virtualizes network functions as software. They complement each other: SDN provides the network fabric, NFV provides the services.
2. Underestimating NFV Performance Overhead
Virtualized network functions running on x86 servers have 10-30% throughput penalty vs dedicated hardware. Use DPDK, SR-IOV, or SmartNICs to mitigate.
3. Ignoring Orchestration Complexity
MANO is the hardest part to get right. Simple VNF deployment without orchestration leads to configuration drift and operational chaos at scale.
Practice Questions
What does OpenFlow do? A southbound protocol that allows SDN controllers to program flow tables in switches, defining how packets are forwarded.
What is the difference between VNF and NFVI? VNF is the virtualized network function software (vFW, vMME). NFVI is the infrastructure it runs on (servers, hypervisors, networking).
What is service function chaining? Steering traffic through an ordered sequence of VNFs (e.g., firewall -> IDS -> load balancer) before reaching the destination.
Challenge: Design a service chain for a 5G UPF (User Plane Function) that applies: DPI (deep packet inspection), content filtering, parental controls, and QoS marking for a URLLC slice. Specify the order and what each VNF does.
FAQ
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-24.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro