Skip to content

SDN & NFV in Telecom — Network Virtualization Guide

DodaTech Updated 2026-06-24 5 min read

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

  1. What does OpenFlow do? A southbound protocol that allows SDN controllers to program flow tables in switches, defining how packets are forwarded.

  2. 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).

  3. 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

What is the main benefit of SDN/NFV?

Agility — provisioning a new network service takes minutes instead of months. Also CAPEX reduction from replacing proprietary hardware with commodity servers.

What is the role of OpenStack in NFV?

OpenStack is the most common VIM (Virtualized Infrastructure Manager) in NFV deployments, providing compute, storage, and networking APIs for VNF lifecycle management.

Can SDN/NFV work with existing hardware?

Yes, through hybrid mode — existing switches can work alongside OpenFlow-enabled switches. NFV can run VNFs alongside physical network functions.


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