Advanced Computer Network

Chapter 9
Software-Defined Networking and Network Virtualization

Post Graduate Program in Computer Science Engineering
Advanced Computer Network   •   Post Graduate

9. Software-Defined Networking and Network Virtualization

Introduction and Context

Traditional computer networks were built from tightly integrated devices. A router or switch contained both the control plane, which decided how traffic should be handled, and the data plane, which forwarded packets at high speed. Configuration was commonly performed device by device through command-line interfaces or vendor-specific management systems. This model provided stability, but it became difficult to operate at large scale, particularly in cloud data centres, multi-tenant infrastructures, mobile networks, and highly dynamic enterprise environments.

Software-Defined Networking (SDN) emerged as an architectural response to this difficulty. It separates decision-making from packet forwarding and exposes programmable interfaces through which network behaviour can be configured, monitored, and automated. Network virtualization extends this idea by allowing several logically independent networks, services, or topologies to share the same physical infrastructure.

Together, SDN and network virtualization change networking from a collection of individually configured appliances into a programmable infrastructure. The change is not merely technological. It affects network design, operations, security, procurement, governance, and the responsibilities of network engineers. A sound understanding therefore requires attention to architecture, protocols, programmability, operational processes, and the trade-offs introduced by centralization and abstraction.

Learning Objectives

After studying this chapter, the reader should be able to:

1. Explain the distinction between control-plane and data-plane functions.

2. Describe SDN architecture and the roles of controllers, southbound interfaces, and northbound interfaces.

3. Analyse OpenFlow, programmable data planes, and the P4 language.

4. Explain Network Functions Virtualization (NFV), virtual network functions, and service chaining.

5. Compare network virtualization approaches used in data centres and multi-tenant environments.

6. Apply intent-based networking principles to operational scenarios.

7. Evaluate the benefits, limitations, security risks, and governance implications of SDN-based designs.

8. Design an appropriate high-level virtual network architecture for a practical case.

From Device-Centric Networking to Programmable Infrastructure

The control plane computes reachability and policy. Routing protocols such as OSPF, IS-IS, and BGP exchange information and calculate paths, while switching logic determines how local frames are forwarded. The data plane executes the resulting decisions. It performs operations such as table lookup, forwarding, encapsulation, filtering, queuing, and packet modification.

In a conventional device, these planes are usually implemented in the same product, although modern hardware may internally separate processors and forwarding components. SDN makes the separation explicit at the architectural level. The controller or control applications determine desired network behaviour, while switches and routers perform forwarding according to rules installed by the control system.

The separation offers several advantages. A controller can obtain a wider view of network state than an individual device. Applications can express policies across many devices, and automation can replace repetitive manual configuration. However, centralization does not mean that every packet travels through the controller. In a properly designed SDN system, the controller establishes rules; packets continue to move through the data plane at line rate.

A useful abstraction is:

  • Application plane: expresses business, security, traffic-engineering, or operational requirements.
  • Control plane: translates requirements into network decisions and maintains a consistent view of topology and state.
  • Data plane: forwards and processes packets according to installed rules.
  • Management and orchestration plane: provisions resources, coordinates domains, collects telemetry, and manages lifecycle operations.

These planes are logical rather than necessarily separate physical machines. A commercial platform may combine several functions, whereas a research or cloud environment may implement them as independent services.

SDN Architecture and Its Interfaces

An SDN controller is a logically centralized decision-making system. “Logically centralized” is important: production controllers are normally distributed for availability, scalability, and fault tolerance. They maintain replicated state and may divide responsibility among multiple controller instances.

The southbound interface connects the controller to forwarding devices. OpenFlow was an influential early protocol, but modern deployments may use NETCONF, RESTCONF, gNMI, vendor APIs, P4Runtime, or specialized overlay control protocols. The southbound interface can support configuration, rule installation, topology discovery, statistics collection, and event notification.

The northbound interface exposes services to applications and orchestration systems. It may consist of REST APIs, message buses, software libraries, or declarative policy interfaces. Northbound applications can implement access control, load balancing, traffic engineering, monitoring, or security automation.

A controller must maintain several types of state:

1. Topology state, including links, devices, ports, and adjacency relationships.

2. Reachability state, including routes and next-hop information.

3. Policy state, such as segmentation, quality-of-service, and access rules.

4. Operational state, including counters, failures, latency, and resource utilization.

5. Intent state, representing the desired outcome rather than a device-specific command.

The distinction between desired state and observed state is central to automation. If the desired policy requires isolation between two tenant networks, the controller should be able to determine whether the deployed forwarding rules actually enforce that isolation. This leads to continuous reconciliation: observing the infrastructure, comparing it with the intended state, and correcting deviations.

Controller Design Considerations

Controller design involves more than selecting a protocol. Important considerations include consistency, failure handling, scale, latency, multi-tenancy, security, and integration with existing infrastructure. A controller that provides strong consistency may simplify policy reasoning but incur coordination overhead. A highly distributed controller may scale better but make global policy enforcement more complex.

Controllers also need a clear ownership model. If multiple applications can independently modify forwarding rules, conflicts may occur. A policy-resolution layer, role-based authorization, or application priority mechanism is therefore necessary. Controllers should support transactions or staged updates where partial installation could create loops, black holes, or security exposure.

OpenFlow and Flow-Based Control

OpenFlow helped establish the SDN model by defining communication between a controller and a switch. An OpenFlow switch contains one or more flow tables. A flow entry generally includes match fields, counters, a priority, and actions. A packet may be matched on fields such as ingress port, Ethernet address, VLAN identifier, IP address, transport protocol, or transport-layer port.

Typical actions include forwarding to a port, dropping the packet, modifying a header, pushing or removing a tag, or sending selected packets to the controller. A controller can install proactive rules before traffic arrives or reactively install rules after receiving a packet-in event.

Reactive control can conserve table space and adapt to demand, but the first packet of a new flow may experience additional delay, and a large number of controller interactions can overload the control system. Proactive installation reduces control latency and improves predictability, but it requires more accurate forecasting and consumes forwarding resources.

OpenFlow should not be treated as synonymous with SDN. It is one southbound mechanism, and its original match-action model does not express every requirement of modern networks. Many deployments use hybrid models in which traditional routing protocols, overlays, device APIs, and controller applications coexist.

Programmable Data Planes and P4

Conventional switches generally support a fixed set of packet-processing functions determined by hardware and firmware. A programmable data plane allows the operator or equipment provider to define, within hardware constraints, how packets are parsed, matched, modified, and forwarded.

P4 is a language for describing packet-processing behaviour. A P4 program commonly specifies parsers, headers, match-action tables, actions, and a control pipeline. It does not normally calculate global routes or replace the controller. Instead, it defines what the device can do, while a controller supplies table entries and operational policy through an interface such as P4Runtime.

For example, a P4-enabled switch could parse a telemetry header, identify a tenant identifier, apply a policy based on an application-specific field, and record metadata for monitoring. This flexibility supports in-band telemetry, custom load balancing, emerging protocols, and specialized security functions.

Programmability introduces constraints. Hardware pipelines have limited memory, processing stages, and supported operations. A logically elegant program may not fit the target architecture. Verification, testing, compiler behaviour, portability, and failure handling must therefore be considered. A programmable data plane is not automatically a faster or safer data plane; its value depends on disciplined design and validation.

Network Virtualization: Overlays, Tunnels, and Logical Topologies

Network virtualization creates logical networks that are decoupled from the physical topology. Virtual networks can provide tenant isolation, independent addressing, custom security policy, and mobility of workloads. The physical network supplies connectivity, while virtualization supplies logical structure.

A common technique is an overlay. An overlay packet is encapsulated at an ingress tunnel endpoint, transported across an underlay network, and decapsulated at an egress endpoint. The underlay needs reachability between tunnel endpoints; the overlay carries tenant or service-specific information. VXLAN is a widely used example of an encapsulation technology for extending Layer 2 segments over Layer 3 infrastructure. EVPN is commonly used as a control-plane mechanism for distributing reachability information associated with such overlays.

The separation between underlay and overlay simplifies physical network design but introduces operational dependencies. Underlay failures can disrupt many virtual networks. Encapsulation adds overhead, and troubleshooting requires visibility into both outer and inner headers. MTU planning is essential because insufficient packet size can cause fragmentation or loss.

Virtualization can occur at several levels:

  • Virtual LANs and virtual routing instances provide logical segmentation within network devices.
  • Overlay networks create virtual connectivity across a shared IP fabric.
  • Virtual switches connect virtual machines or containers to physical networks.
  • Network slices allocate logical resources and policies for distinct services.
  • Virtual network functions implement network services in software rather than dedicated appliances.

Network Functions Virtualization and Service Chaining

Network Functions Virtualization (NFV) moves functions such as firewalls, routers, load balancers, intrusion detection systems, and packet gateways from dedicated hardware appliances to software instances running on commodity or cloud infrastructure. A software implementation is called a Virtual Network Function (VNF); newer cloud-native implementations are often called Cloud-Native Network Functions (CNFs).

NFV separates the network function from the hardware platform, but it does not eliminate the need for lifecycle management. A functioning NFV system must instantiate, configure, scale, monitor, heal, upgrade, and retire network functions. It must also manage placement, connectivity, resource allocation, licensing, and state synchronization.

Service chaining directs traffic through an ordered sequence of functions. Consider traffic from an enterprise branch to an application: it may pass through a virtual firewall, intrusion-prevention function, address translator, and WAN optimizer. The chain may be realized by VLANs, tunnels, segment routing, network-service headers, or an orchestration platform.

Service chaining creates important design questions. Should all traffic traverse every function, or should only selected classes do so? How is function state preserved when an instance fails? Where should functions be placed to reduce latency? Can encryption prevent inspection? How can asymmetric routing be avoided? These are architectural questions rather than merely configuration tasks.

Intent-Based Networking

Intent-based networking (IBN) allows an administrator or application owner to specify the desired outcome in higher-level terms. An intent might state that payment traffic must be encrypted, critical applications must receive a latency-aware path, or development workloads must not access production databases.

An IBN system typically performs four activities:

1. Intent capture: accepts a declarative policy from an authorized user or system.

2. Translation: converts the policy into device, overlay, security, and orchestration rules.

3. Validation: checks whether the desired policy is syntactically and semantically feasible.

4. Assurance: monitors telemetry and verifies that the running network continues to satisfy the intent.

IBN is not magic natural-language configuration. The intent must be unambiguous, conflicts must be resolved, and the system must understand available capabilities. A policy such as “give the application the best path” is incomplete unless best is defined in terms of latency, cost, loss, capacity, or business priority.

Virtual Network Design Method

A practical virtual network design begins with requirements rather than with a particular product. The designer should identify tenants, applications, trust boundaries, traffic classes, compliance requirements, availability objectives, and expected growth.

The following method is useful:

1. Define administrative and security domains. Determine which users, workloads, and services must communicate and which must remain isolated.

2. Select the physical underlay. Provide predictable IP reachability, sufficient capacity, redundancy, and an appropriate MTU.

3. Choose the overlay and control model. Consider VLAN-based designs, VXLAN/EVPN, SD-WAN overlays, segment routing, or a combination.

4. Define virtual topology. Specify virtual segments, routing instances, tunnel endpoints, gateways, and external connectivity.

5. Place network functions. Locate firewalls, load balancers, inspection systems, and gateways according to latency, throughput, and trust requirements.

6. Design policy and identity integration. Link access rules to users, workloads, applications, or service identities rather than relying only on physical ports.

7. Plan automation and telemetry. Define APIs, configuration workflows, event handling, metrics, logs, and rollback procedures.

8. Validate failure behaviour. Test link failure, controller failure, tunnel-endpoint failure, function restart, capacity exhaustion, and stale state.

9. Establish governance. Define ownership, approval, audit, change control, and emergency access.

A high-quality design makes failure domains explicit. A controller cluster, for example, should not depend on a single power domain or a single network path. Similarly, virtual networks should not be considered isolated unless the isolation mechanism, control access, and management interfaces have been tested.

Applied Case: Virtualizing a Multi-Tenant Research Data Centre

Background

This illustrative case concerns a university research data centre hosting computational biology, engineering simulation, and external collaboration workloads. The facility uses a shared leaf-spine network. Each research group requires independent address spaces, different firewall policies, and occasional high-bandwidth transfers. The original environment uses manually configured VLANs and hardware appliances.

Situation and Problem

Provisioning a new project takes several weeks because switches, routers, firewalls, and load balancers are configured separately. Address overlap occurs when external collaborators use private address ranges. Security policy is inconsistent across laboratory environments, and operators have limited visibility into traffic between virtual machines. A hardware firewall has become a bottleneck during large data transfers.

Analysis

The central problem is not simply insufficient bandwidth. It is the absence of a consistent abstraction for tenant connectivity and policy. A physical VLAN-only model makes mobility and large-scale segmentation difficult. Manual appliance configuration also creates configuration drift. However, full centralization would introduce controller and orchestration risks, so the design must retain resilient local forwarding and well-defined failure behaviour.

Approach and Solution

The data centre adopts a routed IP underlay with redundant leaf-spine paths. Tenant segments are implemented using an overlay, with distributed tunnel endpoints on the leaf switches. A control-plane mechanism distributes endpoint reachability. Each research group receives a virtual routing and forwarding instance, allowing overlapping address spaces where necessary.

Security policy is expressed centrally and translated into distributed enforcement rules. Internet-bound and externally shared traffic is directed through redundant virtual firewall instances. Selected data-transfer flows bypass deep inspection only after an approved policy decision; ordinary east-west traffic remains subject to segmentation rules. A controller cluster maintains desired state, while telemetry systems collect flow, latency, loss, and resource data.

Provisioning is performed through an orchestrator. A project request specifies the tenant identity, address requirements, permitted services, retention period, and data classification. The orchestrator validates the request, creates the virtual network, applies policies, and records the change for audit. Automated tests verify that prohibited tenant-to-tenant paths do not exist.

Outcome

Provisioning becomes a repeatable workflow rather than a sequence of device-specific changes. Overlapping addresses can be supported through separate routing contexts, and policy enforcement is applied consistently. The organization also gains better visibility into overlay and underlay health. The design does not remove all operational work: firewall capacity, controller availability, tunnel MTU, and function state remain important operational concerns.

Learning Points

The case demonstrates that SDN value comes from coordinated control, automation, and verification. Overlay technology alone would not solve inconsistent policy. Similarly, virtualization without a resilient underlay would merely conceal physical dependencies. A successful design combines abstraction with observability, security governance, and tested failure procedures.

Benefits, Risks, and Common Design Errors

SDN can accelerate provisioning, improve policy consistency, support centralized analytics, and enable traffic engineering across many devices. Network virtualization can increase infrastructure utilization and allow tenants to obtain logically independent networks. NFV can reduce dependence on proprietary appliances and permit software-based scaling.

These benefits must be balanced against several risks. A controller or orchestration platform may become a high-value target. Incorrect policy translation can affect thousands of devices simultaneously. Control-plane outages may prevent new rules from being installed, even though existing data-plane rules continue forwarding. Inconsistent versions and APIs can create interoperability problems. Encapsulation can complicate troubleshooting, while virtual functions may have unpredictable performance under contention.

Common mistakes include:

  • treating logical centralization as a license to eliminate redundancy;
  • deploying overlays without planning MTU and tunnel-endpoint failure;
  • assuming tenant isolation without testing management and control paths;
  • allowing multiple automation systems to change the same policy independently;
  • collecting telemetry without defining actionable indicators;
  • failing to model stateful firewall and load-balancer behaviour during failover;
  • using reactive rule installation for traffic volumes that overwhelm the controller;
  • treating P4 programmability as a substitute for verification and testing.

Security, Governance, and Professional Responsibility

SDN expands the security boundary. Controller APIs, orchestration systems, switch agents, telemetry pipelines, and virtual functions all become potential attack surfaces. Strong authentication, authorization, encryption, certificate management, secure boot where available, software supply-chain controls, and detailed audit logging are necessary.

Least privilege is particularly important. An application that needs to modify quality-of-service rules should not automatically be able to alter tenant isolation or redirect all traffic through an external endpoint. API requests should be validated, rate-limited, and associated with accountable identities.

Governance must address who may create a virtual network, approve a service chain, change an intent, or access packet metadata. Telemetry may contain sensitive information, including user identifiers or application patterns. Data collection therefore requires purpose limitation, retention controls, access restrictions, and compliance review.

Professionally, engineers must avoid presenting automation as inherently safe. Automation increases repeatability, but it can also repeat an error at scale. Staged rollout, simulation, formal policy checks, canary deployment, rollback, and independent review are appropriate safeguards for high-impact changes.

Current Developments and Emerging Directions

Several developments are shaping the field. Cloud-native network functions increasingly use containers, service meshes, and orchestration platforms, although these technologies address different layers and should not be treated as interchangeable. Segment routing provides programmable path control using packet labels or segments and can reduce dependence on per-flow state. In-band network telemetry enables collection of path and queue information directly from packets or metadata.

P4 and related programmable data-plane technologies continue to support custom parsing, telemetry, and application-aware forwarding. Digital twins and network emulation are being used to test policies and failure scenarios before deployment. Machine-learning techniques may assist anomaly detection, capacity forecasting, and intent assurance, but they should supplement rather than replace deterministic policy controls and human accountability.

The broader trend is toward closed-loop networking: policy is declared, translated, deployed, observed, evaluated, and revised. The quality of such a loop depends on the accuracy of its models, the timeliness of telemetry, and the safety of its corrective actions.

Best Practices

A robust SDN or virtual-network deployment should:

1. Separate desired state, operational state, and observed telemetry.

2. Use redundant, distributed controllers and clearly define their consistency model.

3. Keep the underlay simple, highly available, and independently observable.

4. Validate overlay MTU, endpoint reachability, and failure recovery.

5. Apply least privilege to controller applications and APIs.

6. Use version-controlled, reviewable policies and automated pre-deployment tests.

7. Design for rollback and staged deployment.

8. Monitor both physical and virtual paths.

9. Test stateful network functions under scale and failure.

10. Document ownership, compliance responsibilities, and emergency procedures.

Chapter Summary

Software-Defined Networking separates logical network control from packet forwarding and enables network behaviour to be expressed through software. Its architecture commonly includes application, control, data, and orchestration planes connected through northbound and southbound interfaces. OpenFlow introduced a significant flow-based control model, while P4 extends programmability into packet parsing and match-action processing within the data plane.

Network virtualization creates logical networks over shared infrastructure through techniques such as virtual routing, overlays, tunnel endpoints, and distributed control planes. NFV implements network functions as software, and service chaining directs traffic through ordered functions. Intent-based networking raises the abstraction level by expressing desired outcomes and continuously verifying them.

The practical value of these technologies depends on more than automation. Successful designs require resilient underlays, controller redundancy, security, telemetry, policy governance, MTU planning, state management, and tested failure behaviour. SDN and virtualization therefore represent both technical architectures and new operational disciplines.

Key Terms

Control Plane: The part of a network system that computes reachability, policy, and forwarding decisions.

Data Plane: The part that forwards and processes packets according to installed rules.

Software-Defined Networking: An architecture that exposes programmable control over network forwarding and separates control logic from forwarding functions.

SDN Controller: A logically centralized, often physically distributed system that manages network state and installs forwarding behaviour.

Southbound Interface: An interface through which controllers communicate with forwarding devices.

Northbound Interface: An interface through which applications and orchestration systems express policies or consume network services.

OpenFlow: A protocol for communicating forwarding rules, statistics, and events between controllers and switches.

Programmable Data Plane: A forwarding pipeline whose packet-processing behaviour can be defined or extended through software.

P4: A language for specifying packet parsers, match-action tables, and processing pipelines.

Network Virtualization: The creation of logical networks independent of the physical network topology.

Overlay Network: A logical network implemented over an underlying physical or IP network, commonly using encapsulation.

Underlay: The physical or routed infrastructure that provides transport for an overlay.

Tunnel Endpoint: A device or software component that encapsulates or decapsulates overlay traffic.

NFV: Network Functions Virtualization, the implementation of network services as software on general-purpose infrastructure.

VNF: A Virtual Network Function implemented as a software network service.

Service Chaining: Directing traffic through an ordered sequence of network functions.

Intent-Based Networking: A model that translates high-level desired outcomes into configurations and verifies continuing compliance.

Telemetry: Automated collection of measurements and operational state from network systems.

Closed-Loop Automation: A process that observes network state, compares it with desired state, and applies corrective actions.

Review Questions

Short Answer Questions

1. What is the functional difference between the control plane and the data plane?

2. Why is an SDN controller described as logically centralized rather than necessarily physically centralized?

3. What roles do northbound and southbound interfaces perform?

4. What is the purpose of an overlay underlay relationship?

5. Distinguish a VNF from a service chain.

Long Answer Questions

1. Explain the architecture of SDN and discuss the responsibilities of its application, control, data, and orchestration planes.

2. Describe OpenFlow’s flow-table model and evaluate proactive versus reactive rule installation.

3. Explain how P4 and programmable data planes differ from conventional fixed-function forwarding.

4. Discuss the design and operational requirements of NFV and service chaining.

5. Develop a method for designing a secure, resilient virtual network for a multi-tenant data centre.

Analytical / Application Questions

1. A controller cluster remains operational, but tunnel endpoints cannot reach one another after an underlay routing change. Analyse the likely effects on virtual networks and propose a troubleshooting sequence.

2. An enterprise wants all traffic to pass through a virtual firewall, but high-volume scientific transfers are suffering severe performance degradation. Recommend a policy and architecture approach, including security and governance considerations.

3. Design an intent-based policy for isolating development and production workloads while allowing a monitored application gateway to communicate with both. Identify the required state, telemetry, validation, and failure checks.

22. Multiple Choice Questions with Answers

Question 1

Which statement best describes logical centralization in SDN?

A. All packets must pass through one physical controller

B. Network decisions are coordinated through a common control view, while controllers may be distributed

C. Every switch independently computes policy without external coordination

D. The data plane is removed from forwarding devices

Correct Answer: B. Network decisions are coordinated through a common control view, while controllers may be distributed

Question 2

What is a principal limitation of reactive flow-rule installation?

A. It prevents any form of traffic monitoring

B. It requires all forwarding rules to be manually entered

C. New flows may create controller interactions and delay under high demand

D. It cannot support packet filtering

Correct Answer: C. New flows may create controller interactions and delay under high demand

Question 3

In a P4-based architecture, which task is normally performed by the controller rather than by the P4 program itself?

A. Defining the packet parser and processing pipeline

B. Specifying the entries installed in match-action tables

C. Describing which headers can be extracted

D. Defining the available packet-processing stages

Correct Answer: B. Specifying the entries installed in match-action tables

Question 4

What is the main role of an underlay in an overlay network?

A. It defines every tenant’s security policy

B. It provides physical or routed reachability between overlay endpoints

C. It replaces all virtual routing instances

D. It prevents packet encapsulation

Correct Answer: B. It provides physical or routed reachability between overlay endpoints

Question 5

Which design issue is especially important when deploying an encapsulated overlay?

A. Eliminating all routing from the physical network

B. Ensuring adequate MTU for the additional headers

C. Disabling endpoint redundancy

D. Using only reactive controller rules

Correct Answer: B. Ensuring adequate MTU for the additional headers

Question 6

Which option best represents service chaining?

A. Assigning one IP address to every physical switch

B. Sending selected traffic through an ordered firewall, inspection, and load-balancing sequence

C. Replacing all network functions with routing protocols

D. Connecting only physical servers to a VLAN

Correct Answer: B. Sending selected traffic through an ordered firewall, inspection, and load-balancing sequence

Question 7

What distinguishes intent-based networking from simple device configuration?

A. It expresses desired outcomes and verifies whether the deployed network satisfies them

B. It eliminates the need for telemetry

C. It requires every policy to be written as a vendor CLI command

D. It operates only at the packet-forwarding level

Correct Answer: A. It expresses desired outcomes and verifies whether the deployed network satisfies them

Question 8

A virtual firewall fails while maintaining state for active sessions. Which concern is most relevant?

A. Whether the underlay uses Ethernet frames

B. Whether state synchronization or a suitable failover method exists

C. Whether P4 can parse IPv4 headers

D. Whether northbound APIs are disabled

Correct Answer: B. Whether state synchronization or a suitable failover method exists

Question 9

Why can SDN automation increase operational risk as well as reduce it?

A. Automation cannot be audited

B. Automated systems can apply an incorrect policy consistently and at large scale

C. Controllers cannot communicate with devices

D. Virtual networks always expose physical addresses

Correct Answer: B. Automated systems can apply an incorrect policy consistently and at large scale

Question 10

Which combination is most appropriate for a resilient multi-tenant virtual network?

A. A single controller, unmanaged overlays, and no telemetry

B. A simple redundant underlay, distributed control, policy isolation, and failure testing

C. Independent manual configuration of every virtual machine

D. One shared routing table with unrestricted tenant access

Correct Answer: B. A simple redundant underlay, distributed control, policy isolation, and failure testing

Advanced Computer Network
Chapter 9 of 15