You can assemble a server from off the shelf components that will be able to sent and receive traffic in multi Gigabit speed. Here is an example of an 10Gps net card from Intel.
But can we turn this server into a high performance network appliance? Do we still need a dedicated hardware like for example ASIC, FPGA, low latency RAM and TCAM RAM in network devise so they can efficiently switch and forward packets with maximum wire speed.
Router hardware design plan
Looking at this presentation from 2012 https://ripe64.ripe.net/presentations/18-ripe-64-router-architecture-challenges.pdf you would think that yes. These would be the obvious reasons (screenshots taken from the presentation):
Network processing unit (NPU) and new hardware design
The key points listed above still hold. But the next generation network appliances will be rather build with a help of a multicore generic NPU using the power of parallel processing than expensive and purposely design ASIC. With the right software (OS - often Linux, drivers, firmware, SDK, and API libraries) you will be able to turn a conventional x86 server with a modern PCIe data bus into a high performance, low latency and high speed network appliance.
Netronome Network Cards Accelerate SDN and NFV Designs
100Gps FlowNIC-6xxx network card
Hardware reference designs for FlowProcessor NPU chips
Search This Blog
Showing posts with label cpu. Show all posts
Showing posts with label cpu. Show all posts
Saturday, March 8, 2014
Sunday, January 5, 2014
Nested virtualization support on Rackspace public cloud
We have found the CPU hardware architecture that the public cloud is running on in this blog: Hypervisor hardware differences on Openstack Rackspace Cloud.
Problem
Does Rackspace public cloud support nested visualization?
Results discussion
But once the cloud server boots up the cloud virtual CPU no longer exports the hardware CPU virtualization capabilities. You can verify this with this little script below.
That means you can't use your cloud server to run another, a guest hypervisor ( called as well nested hypervisor).
Another solution
If your cloud server doesn't offer nested virtualization support you can always use the emulation mode. Qemu supports running VM that way.
References
http://www.ibm.com/developerworks/cloud/library/cl-nestedvirtualization/
https://www.diigo.com/user/rtomaszewski/nested_virtualization?type=all&snapshot=no&sort=updated
http://en.wikipedia.org/wiki/X86_virtualization
Problem
Does Rackspace public cloud support nested visualization?
Results discussion
- Public Cloud
But once the cloud server boots up the cloud virtual CPU no longer exports the hardware CPU virtualization capabilities. You can verify this with this little script below.
egrep -i 'vmx|svm|ept|vpid|npt|tpr_shadow|flexpriority|vnmi'
That means you can't use your cloud server to run another, a guest hypervisor ( called as well nested hypervisor).
- Private cloud
Another solution
If your cloud server doesn't offer nested virtualization support you can always use the emulation mode. Qemu supports running VM that way.
References
http://www.ibm.com/developerworks/cloud/library/cl-nestedvirtualization/
https://www.diigo.com/user/rtomaszewski/nested_virtualization?type=all&snapshot=no&sort=updated
http://en.wikipedia.org/wiki/X86_virtualization
Hypervisor hardware differences on Openstack Rackspace Cloud
You can spin up test cloud servers and extract CPU flags with the help of this little script using csplit.
By comparing the results we can definitely say that:
cat /proc/cpuinfo | csplit -z - '/processor/' '{*}'
diff xx0*
grep flags xx01 | cut -d ':' -f 2 | xargs -n1 echo | sort > flags.txt
By comparing the results we can definitely say that:
- Performance1 and performance2 cloud servers are running on the same hardware.
- New performance cloud servers are hosted on Intel CPU.
- The standard (next generation) series are being hosted on AMD CPU.
The CPU flags for comparison.
processor : 1 vendor_id : AuthenticAMD cpu family : 16 model : 4 model name : Quad-Core AMD Opteron(tm) Processor 2374 HE stepping : 2 microcode : 0x1000086 cpu MHz : 2200.096 cache size : 512 KB fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu de tsc msr pae cx8 cmov pat clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni cx16 popcnt hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch hw_pstate bogomips : 4400.19 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 48 bits physical, 48 bits virtual power management: ts ttp tm stc 100mhzsteps hwpstate
processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 45 model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping : 7 microcode : 0x70d cpu MHz : 2600.068 cache size : 20480 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 43 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes hypervisor lahf_lm arat pln pts dtherm bogomips : 5200.13 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
Labels:
cloud,
cpu,
hardware,
hypervisor,
openstack,
virtualisation
Sunday, June 9, 2013
SR-IOV technology enables low level network virtualization
In the virtualization space the SR-IOV technology was introduced in about 2008/2010 [1]. The technical details can be found under the links in the reference section but in plain English the technology allows to create many virtual devices base on single a physical device. For this to work the hardware (CPU, North chip) and operating system need to have SR-IOV support.
Below is a video demonstrating packet processing for an Intel Ethernet card that supports SR-IOV.
Interesting slides showing the concept from the video and reference links:
Below is a video demonstrating packet processing for an Intel Ethernet card that supports SR-IOV.
Interesting slides showing the concept from the video and reference links:
- After the frame enters the physical port on the NIC the low level driver/firmware (supporting the SR-IOV) distributes the packet (based on header classifications/hash value/etc) to separate virtual queues
- Each virtual queue is assigned directly to a virtual device
- Once the packet is in the queue it can be deliver to the VM DIRECTLY without the usual software hypervisor overhead
- Packets don't have to be copied from physical port buffer(s) to OS RAM and than from OS RAM to VM OS buffers. The data can be sent directly from the physical port to VM OS buffers. That way the hypervisor processing overhead can be minimised.
- Critical part for the technology is CPU and chipset virtualization support
- As access to physical RAM need to be protected between hypervisor and VMs as well as VMs themselves the virtual memory address is translated to the physical location by the north chipset
- For the DMA request to copy the packets the address translation between the hypervisor address space and the VM address space is transparent (north chip take care of it)
- Another view how the packet is delivered from physical port to the VM
- http://www.intel.com/content/dam/doc/application-note/pci-sig-sr-iov-primer-sr-iov-technology-paper.pdf
- http://www.intel.com/content/dam/doc/white-paper/pci-sig-single-root-io-virtualization-support-in-virtualization-technology-for-connectivity-paper.pdf
- http://communities.intel.com/community/wired/blog/2010/09/07/sr-iov-explained
Labels:
cpu,
hardware,
hypervisor,
network,
sr-iov,
virtualisation
Subscribe to:
Posts (Atom)








