Network Infrastructure Optimization

Balazs
Nemeth

Bij de internetaanbieders is er een sterk stijgende vraag naar bandbreedte, dit door klanten die steeds aan hogere snelheden materiaal willen raadplegen. Internetaanbieders gebruiken netwerkapparatuur die ontwikkeld is voor slechts een functie. De apparatuur wordt geïmplementeerd met ASICs (hardware ontwikkeld voor slechts een doel). De gespecialiseerde apparatuur is nodig om alle data tijdig te verwerken. Om bijvoorbeeld firewall functionaliteit te voorzien, moet er een nieuwe toestel geïnstalleerd worden dat deze functionaliteit aanbiedt. Tegelijkertijd wordt er momenteel ook aan een versneld tempo geïnnoveerd op gebied van netwerk protocollen. In sommige gevallen zorgt de beperking van de aangeboden functionaliteit van de apparatuur ervoor dat de apparatuur vervangen moet worden. Een oplossing voor de beperking in functionaliteit is het gebruik van programmeerbare ASICs. Hierbij kan (een deel van) de functionaliteit geprogrammeerd worden. In de praktijk wordt er een combinatie van ASICs (voor de functionaliteit die vast staat) en programmeerbare ASICs gebruikt. Op het eerste zicht lijkt dit de ideale oplossing te zijn, maar de kosten zijn te hoog.

Daarom wordt er verder gezocht naar goedkopere alternatieven en overwegen internetaanbieders om over te stappen naar software oplossingen die geïmplementeerd worden op standaard servers. Het is een actueel onderwerp aangezien het witboek dat het idee introduceert recent (in oktober 2012) werd gepubliceerd. Door softwareoplossingen te gebruiken wordt het, dankzij hun flexibiliteit, mogelijk vernieuwingen aan te brengen in de netwerkinfrastructuur, dit met een kostverlagend resultaat. Deze thesis is een haalbaarheidsstudie die gericht is op de volgende vraag: ``Kan netwerkapparatuur, die gebruikt wordt door internetaanbieders, vervangen worden door software implementaties op processoren die dienen voor algemene doeleinden, zonder de kwaliteit van de aangeboden diensten negatief te beinvloeden?''. Hierbij richten we ons op een netwerkfunctie (Quality of Service). Quality of Service functionaliteit laat de internetaanbieders toe om de kwaliteit van de aangeboden diensten te garanderen en te verhogen. Deze functie wordt beschouwd in combinatie met een broadband remote access server implementatie. De broadband remote access server is apparatuur waarlangs alle klanten van een internetaanbieder met het Internet verbonden zijn. Tijdens de analyse van het systeem, wordt de software en de interactie met de onderliggende hardware bestudeerd. De studies zijn niet eigen aan de specifieke netwerkfunctie en dezelfde werkwijzen, technieken en tests kunnen gebruikt worden voor andere implementaties. De doeltreffendheid van het systeem wordt bestudeerd aan de hand van meetresultaten. Er worden methodes gezocht en gepresenteerd om gelokaliseerde bottlenecks te omzeilen en het systeem te optimaliseren. Zowel de technieken als hun motivaties worden besproken. Door telkens de motivatie te bespreken wordt aangetoond dat de technieken niet gebonden zijn aan een specifiek systeem. Ze zouden gebruikt kunnen worden in andere implementaties (zelfs buiten het domein van netwerkfuncties). De thesis werd uitgevoerd als deel van een stage bij Intel.

De thesis is onderverdeeld in vijf hoofdstukken. Het eerste hoofdstuk bespreekt de doelstellingen van de thesis en overloopt de gehanteerde structuur. In het tweede hoofdstuk worden de algemene concepten aangehaald waarnaar teruggegrepen wordt in de volgende hoofdstukken. Er wordt beschreven welke metrieken gebruikt worden om de doeltreffendheid van het systeem uit te drukken. De metrieken kunnen gebruikt worden om verschillende systemen te vergelijken en het effect van aanpassingen aan implementaties te analyseren. Om deze metingen uit te voeren werd er gebruik gemaakt van gespecialiseerde en erkende testapparatuur. De beperkingen in de functionaliteit van de testapparatuur worden aangehaald en er wordt beschreven hoe deze beperkingen omzeild kunnen worden. In het derde hoofdstuk wordt besproken hoe we de Quality of Service functionaliteit hebben toegevoegd aan een bestaande broadband remote access server implementatie. We richten ons vooral op aspecten van het onderliggende systeem die de doeltreffendheid van de software implementatie beïnvloeden. In het vierde hoofdstuk halen we optimalisaties aan die gebruikt zijn in de software implementatie. Dankzij deze optimalisaties was het mogelijk om de doeltreffendheid van het systeem te verhogen en acceptabele resultaten te behalen. In het laatste hoofdstuk richten we ons op caching. Aangezien dit aspect van het systeem een grote invloed heeft op de uiteindelijke systeemprestaties, stellen we in dit laatste hoofdstuk een methode voor die de analyse van dit aspect mogelijk maakt. De methode steunt op functionaliteit die eventueel in toekomstige processoren aanwezig zou kunnen zijn.

Als de prestaties aanvaardbaar zouden zijn, dan zouden internetaanbieders het eventueel overwegen om gelijkaardige systemen te gebruiken binnen hun infrastructuur omwille van de verhoogde flexibililteit en mogelijkheid tot het verlagen van de kosten. We hebben ons enkel gericht op een specifiek geval waarbij we verschillende problemen zijn tegengekomen. We hebben de resultaten geanalyseerd en technieken voorgesteld om de prestaties te verhogen. We hebben aangetoond dat, met de juiste technieken en met begrip van de onderliggende hardware, meer dan acceptabele (in vergelijking met een gepubliceerde analyse van het internetverkeer in het jaar 2013) prestaties gehaald kunnen worden. In de meeste gevallen halen we zelfs het theoretisch maximum, wat, in de praktijk, onrealistisch is.  Een ander onderwerp waar we in de toekomst aandacht aan zouden willen besteden is het verder onderzoeken van de bestaande bottlenecks. Als we deze bottlenecks in meer detail begrijpen, dan zouden we verder doorgedreven optimalisaties kunnen voorstellen. Aangezien we ons beperkt hebben tot de snelheid van 10GbE zouden we, in de toekomst, systemen die gebruik maken van 40GbE verbindingen, willen analyseren. Tenslotte, in de context van netwerkfunctie virtualisatie, is er interesse voor virtualisatie op dezelfde wijze waarop het gebruikt wordt in de IT industrie. Het zou daarom relevant zijn om virtualisatie, en de verschillende configuraties die hierbij mogelijk zijn, te analyseren tijdens ons toekomstige werk.
 

Bibliografie

Intel Corporation (2009a). Intel 64 and IA-32 Architectures Software Developer's Manual. Number 253669-033US.

ETSI (2012). Network functions virtualisation - introductory white paper. http://portal.etsi.org/NFV/NFV_White_Paper.pdf.

Intel Corporation (2014b). Intel Network Builders Reference Architecture: Network Function Virtualization: Virtualized BRAS with Linux and Intel Architecture. http://networkbuilders.intel.com/docs/Network_Builders_RA_vBRAS_Final.pdf.

Intel Corporation (2014a). Intel Network Builders Reference Architecture: Network Function Virtualization: Quality of Service in Broadband Remote Access Servers with Linux and Intel Architecture. http://networkbuilders.intel.com/docs/Network_Builders_RA_NFV_QoS_June2014.pdf.

Demichelis, C. and Chimento, P. (2002). IP Packet Delay Variation Metric for IP Performance Metrics (IPPM). RFC 3393, RFC Editor. [ http ]

Bradner, S. and McQuaid, J. (1999). Benchmarking Methodology for Network Interconnect Devices. RFC 2544, RFC Editor. [ http ]

Heinanen, J. and Guerin, R. (1999a). A Single Rate Three Color Marker. RFC 2967, RFC Editor. [ http ]

Heinanen, J. and Guerin, R. (1999b). A Two Rate Three Color Marker. RFC 2968, RFC Editor. [ http ]

Almes, G., Kalidindi, S., and Zekauskas, M. J. (1999). A One-way Delay Metric for IPPM. RFC 2968, RFC Editor. [ http ]

Intel Corporation (2014f). Intel vtuneTM amplifier xe 2013. http://software.intel.com/en-us/intel-vtune-amplifier-xe.

Intel Corporation (2014g). Intel 64 and IA-32 Architectures Optimization Reference Manual. Number 248966-029.

Intel Corporation (2014h). Intel 82599 10 Gigabit Ethernet Controller: Datasheet. Number Revision 2.9.

Intel Corporation (2014i). Intel Data Plane Development Kit: Programmer's Guide. Number 326003-006.

Intel Corporation (2014d). Intel data plane development kit. http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/packet-processing-is-enhanced-with-software-from-intel-dpdk.html.

Drepper, U. (2007). What every programmer should know about memory.

Hat, R. Huge pages and transparent huge pages. https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-memory-transhuge.html.

Intel Corporation (2013). Avoiding and identifying false sharing among threads. http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads.

Matz, M., Hubicka, J., Jaeger, A., and Mitchell, M. (2013). System V Application Binary Interface AMD64 Architecture Processor Supplement. Number Draft Version 0.99.6.

Hegde, R. (2014). Optimizing application performance on intel coreTM microarchitecture using hardware-implemented prefetchers. https://software.intel.com/en-us/articles/optimizing-application-performance-on-intel-coret-microarchitecture-using-hardware-implemented-prefetchers.

Spirent (2012). How to test 10 gigabit ethernet performance. http://ekb.spirent.com/resources/sites/SPIRENT/content/live/FAQS/10000/FAQ10597/en_US/How_to_Test_10G_Ethernet_WhitePaper_RevB.PDF.

Intel Corporation (2010). What are forwarding modes and how do they work? http://www.intel.com/support/express/switches/sb/cs-014410.htm.

(2013). Tcpdump/libpcap public repository. http://www.tcpdump.org/.

Wind River and Intel Corporation. High-performance multi-core networking software design options. http://embedded.communities.intel.com/servlet/JiveServlet/previewBody/7070-102-1-2281/7785_PerformanceDesignOptions_WP_1111.pdf.

Intel Corporation (2008). Design patterns for packet processingapplications on multi-core intel architecture processors. http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/ia-multicore-packet-processing-paper.html.

Wallén, C., Wikstrom, K., and Savolainen, P. (2013). Open event machine 1.2. http://sourceforge.net/projects/eventmachine/.

Wind River (2013). Hands-on lab: Intel data plane development kit and wind river intelligent network platform with deep packet inspection. https://intel.activeevents.com/sf13/connect/fileDownload/session/A2DEBBD0E050F8F6FB2399BBE772C5BA/SF13_COML001_100.pdf.

Gorman, M. (2010). Huge pages parts 1 to 5. http://lwn.net/Articles/374424/.

Corbet, J. (2011). Transparent huge pages in 2.6.38. http://lwn.net/Articles/423584/.

Transparent huge pages in 2.6.38. https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt.

Intel Corporation. How to call vtune resume and pause api from fortran and c/c++ code? https://software.intel.com/en-us/articles/how-to-call-resume-and-pause-api-from-fortran-code.

Cisco (2012). Understanding switch latency. http://www.cisco.com/c/en/us/products/collateral/switches/nexus-3000-series-switches/white_paper_c11-661939.pdf.

Baron, M. (2007). Probability and Statistics for Computer Scientists. Taylor & Francis. [ http ]

Intel Corporation (2014e). Intel data plane performance demonstrators. https://01.org/intel-data-plane-performance-demonstrators.

Intel Corporation (2012b). Intel performance counter monitor - a better way to measure cpu utilization. https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization.

Budruk, R. (2007). Pci express basics. http://www.pcisig.com/developers/main/training_materials/get_document?doc_id=4e00a39acaa5c5a8ee44ebb07baba982e5972c67.

Intel Corporation (2012a). Intel data direct i/o technology (intel ddio): A primer. http://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/data-direct-i-o-technology-brief.pdf.

Wong, H. (2013). Intel ivy bridge cache replacement policy. http://blog.stuffedcow.net/2013/01/ivb-cache-replacement/.

Intel Corporation (2014c). Intel 64 and ia-32 architectures software developer's manual volume 3b: System programming guide, part 2. http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html.

Intel Corporation (2009b). msr - x86 cpu msr access device. http://man7.org/linux/man-pages/man4/msr.4.html.

Cisco (2005). Stacked vlan processing. http://www.cisco.com/c/en/us/td/docs/ios/12_0s/feature/guide/qinq.pdf.

Intel Corporation (20122). Telefónica i+d: Unleashing network-based service innovation. http://www.intel.com/content/www/us/en/high-performance-computing/high-performance-computing-xeon-e5-telefonica-study.html.

Hick, P. Statistical information for the CAIDA Anonymized Internet Traces (collection). http://imdc.datcat.org/collection/1-06XR-Z=Statistical+information+for+the+CAIDA+Anonymized+Internet+Traces.

Download scriptie (3.44 MB)
Universiteit of Hogeschool
Universiteit Hasselt
Thesis jaar
2014