Professional Documents
Culture Documents
Puneet Zaroo
Provide value added services like encryption, network address translation esp. at the network edge. Issues
Software architecture.
Per flow threads / per-packet threads Division of input, forwarding and output functions How to determine CPU shares How to enforce CPU shares.
CPU scheduling.
Objective
Flexibility in designing routers Reusability of software components Dynamic addition of element modules
Overlay a QoS provisioning mechanism on top of the component based system. Develop an adaptive QoS system
Per flow code modules or plugins. Implemented in the NetBSD kernel. Routers made of elements composed into a flow graph. Programmable and customizable networks. Customizable applications acting on packets / packets carrying code as well as data. Object oriented interface to protocols. Can be used on end systems as well as routers.
ANTS
Communication oriented OS based on x-kernel. Path based abstraction. Advanced CPU scheduling.
Scout
Proportional scheduling. CPU balance (extension of work on livelock) Resource Containers : Rice University Decoupling of protection domain/resource domain. Proper accounting of resources to processes.
Resources include threads as well as kernel data structures and memory, bound to containers.
Click
Packets travel along graph edges Element based processing (push/pull). Element based scheduling. Multithreaded SMP Click
Flow level accounting and scheduling. CPU balance b/w input, output and processing. CPU conservation of idle elements.
Containers
Linux process scheduler Proportional (Dynamic stride scheduling) Simple Round Robin scheduling
Elements tested for scheduling eligibility Containers tested for scheduling eligibilty Notifier Queues - wake up elements (make eligible for scheduling) Delayed wakeup Network interface Input Element
Switching between polling and interrupt Based on a threshold packet input rate to reduce programmed I/O overhead
Topology discovery
Container tickets CPU cycles consumed Packet rate/drop rate Elements Input/Output queues Set container tickets
Why ?
Inability to do a-priori CPU share calculation Variations in packet input rate Variations in per-packet processing cost
Scheduler for each container keeps track of
How ?
Queues used to connect containers Packet pass/drop rates at Queues indicate the difference between the required and the actual CPU shares for the container
T Ticket share C Current CPU share p Input packet rate d packet drop rate m maximum input rate
General idea
Increase ticket share of a container so that the drop rate is removed at all the containers
No action taken
Discussion
Reservations based on packet rates more intuitive CPU shares may vary for the same packet rates
Input container
Only include CPU cycles used in packet processing as opposed to idle polling.
Easy to calculate since no idle polling.
Other containers
Evaluation
Using a simulator
Calculates the forwarding rate , drop rate based on the CPU shares. Mimics the actions of the adaptive algorithm Eases loading the router and testing of diverse workloads
Router 1 MHz CPU => max forwarding rate initially = 100,000 packets/s Constant input = 50,000 packets/s Per packet processing cost increased by 2 s every 10 secs. Max. forwarding rate = 50,000 packets/s at t=50s.
Adaptation in m
Hard to determine m at router initialization May vary with variations in per packet processing costs. m = maxi (TOTAL_CPU_CPS/cpu_cpp(ci)) where ci C
TOTAL_CPU_CPS - Total CPU cycles per second available to the router cpu_cpp(ci) - cycles/packet being used by the flow serviced by container ci cpu_cpp(ci) = cpu_cpi() + cpu_cycles(ci)/num_packets(ci) + cpu_cpo() C - The set of containers servicing active flows
Input (8s), Best Effort/QoS (1s), Output Container (1s) Router 1 MHz CPU => max forwarding rate, initially = 100,000 packets/s Constant input = 50,000 packets/s Per packet processing cost increased by 2 s every 5 secs Max forwarding rate = 50,000 packets/s at t=30 s.
Advanced Adaptation in m
Previous algorithm gives too much stress to the least expensive flow.
Fine if all packets destined for that flow. The packet rate to different flows can be variable.
QoS container (50,000 p/s,30 s) => max forwarding rate achievable = 25,000 packets/s Best Effort container (3 s) => max forwarding rate achievable = 77,000 packets/s
Input rate to best effort container = 500 packets/s Input rate to QoS container varied from 15,000 packets/s to 50,000 packets/s in increments of 5,000 packets/s every 5 s.
Evaluation on a Router
CROSS/Linux software router platform P III 866 MHZ pc. 3 network interface cards.
866 MHz , PIII router Input Container(4.5 s) , Best Effort Container(3 s),QoS container (32,000 packets/s), Output Container (4.9 s) 3 different per packet processing costs for the QoS container
Input to QoS => 32,000 packets/ Input to Best Effort => 27,000 packets/s
15.2 s 0.213
15.2 s 0.21
No Adaptation CPU share Adaptation and m = 65000 packets/s CPU share Adaptation and m = 110000 packets/s
Future Work
Insufficient CPU share => always packet drops Once sufficient CPU shares, more buffering => more efficiency More buffering => higher packet delays and packets getting dropped at line cards.
Can use the SFQ scheduler already implemented
Conclusion
Provide a QoS provisioning layer on top of a component based system. Adaptive in response to variable packet input and processing costs.
THANK YOU