OVS currently has two prominent architectures, one is the native OVS architecture (using the kernel as the datapath), and the other is the DPDK-based architecture (using the user space as the datapath).
Native OVS
The native OVS architecture is shown below, which mainly includes two components:
-
openvswitch.ko : Responsible for fast path data forwarding in kernel mode. Forwarding is done by flow table, each flow table contains many matching items (match fields) and corresponding actions (actions)
-
match fields : defines the header fields that can identify a packet
-
actions : defines the actions that can operate on this data packet, such as adding or removing VLAN tags, modifying a certain header field of the data packet, and controlling the entry and exit of data packets from ports, etc.
-
-
ovs-vswitchd : Responsible for data forwarding of the slow path in user mode.
-
ofproto : implements an OpenFlow switch
-
netdev : an abstract interface layer for interacting with network devices (both physical and virtual)
-
dpif : implementation of user space data forwarding path
-
OVS-DPDK
The DPDK-based OVS architecture is shown below, and the modules in the dark part are the modules related to the introduction of DPDK.
-
dpif-netdev : The implementation of the fast path in user space, it implements
dpif
the module API, can directly operatenetdev
the device, can realize the fast processing of data packets in the user space, and reduce the switching overhead with the kernel space. -
ofproto-dpif : implements
ofproto
the module API to directly manipulatedpif
the layer. -
netdev-dpdk : use the DPDK library to implement
netdev
the module API, providing various types of interfaces, as follows:-
Physical ports(PMDs) : Ports implemented using
vfio
origb_uio
-
virtio /
librte_vhost
_vhost-user
_vhost-cuse
_ vhost is proven to be a fast, secure, standard set of interfaces for VM communication. -
dpdkr : Use to
librte_ring
implement, users can createdpdk-ring
ports based on this port type to complete data forwarding in user space, it can realize fast zero-copy communication with VM (using IVSHMEM or other inter-process communication methods)
-
Performance comparison of the two architectures
So which of these two architectures has better performance, needless to say, of course it is OVS-DPDK, we use data to speak, see the following performance report made by Intel (the time is 2015, but it is also informative).
The first is the experimental environment parameters:
Then look at the experimental topology diagram, including physical-to-physical
and physical-to-virtual-to-physical
Two topologies:
Finally, let's look at the performance comparison:
Also includes physical-to-physical
and physical-to-virtual-to-physical
two scenarios:
It can be seen that in the P2P scenario, the performance of OVS-DPDK is almost 12 times higher than that of native OVS.
For the PVP scenario, we add single-core and multi-core experimental observations. In the case of single-core, OVS-DPDK is 7 times faster than native OVS, and in the case of dual-core, it is nearly 13 times faster.
DPDK-based VNF uses OVS as the data plane
The VNF architecture based on OVS-DPDK is shown in the following figure:
DPDK not only accelerates the OVS data plane, but also accelerates VNF applications. This solution is implemented in the form of pure software, which is programmable and flexible. The participation of DPDK also greatly improves the performance, which is basically comparable to the form of pure hardware.
Original link: https://mp.weixin.qq.com/s/We-1j7WZgyu9vHp9UBQVYg
[Article Benefits]: The editor has sorted out some learning books and video materials that I personally think are better and shared them in the Junyang file. You can add them yourself if you need them! ~Click 909332607 to join (requires self-collection)
(information includes: Dpdk/network protocol stack/vpp/OvS/DDos/NFV/virtualization, tcp/ip, plugin, feature, flexible array, golang, mysql, linux, Redis, CDN etc.), free sharing~
Dpdk/network protocol stack/vpp/OvS/DDos/NFV/virtualization/high performance expert learning address : https://ke.qq.com/course/506620