## 2 Related Works
### Packet Processing Solutions and Related Research  
In this information age, the amount of data transferred over networks and the corresponding traffic workloads have been growing dramatically, and IoT environments are no exception. Despite the use of high speed NICs (Network Interface Cards) and the advancement of network applications, this issue still remains a problem, as the essential bottlenecks arise not in the user-space, but in the kernel-space. To solve this problem, various dedicated network hardware solutions have been proposed. The representative examples are EZChip's NP-4 and NPS-400(Mellanox Technologies, Yorneam Illit, Israel) [14], Cavium's OCTEON line (Cavium, San Jose, CA, USA) [15] and Tilera's Tile-Gx line (Mellanox Technologies, Yorneam Illit, Israel) [16]. Aside from the hardware-based approaches, software-based fast packet processing solutions have been introduced as well, increasing the interest in SDN (Software-Defined Networking) and NFV (Network Function Virtualization). The main solutions are NTOP's PF_RING (NTOP, Pisa, Italy) [17], Intel's DPDK (Data Plane Development Kit) (Intel, Santa Clara, CA, USA) [18], and 6 WIND's 6 WINDGate (6 WIND, Montigny-le-Bretonneux, France) [19]. PF_RING is a high-speed packet capture, filtering, and analysis solution, and was proposed by NTOP to solve the interrupt and memory copy issues of the existing network stack. There are two versions of this solution: Vanilla PF_RING and PF_RING ZC. Vanilla PF_RING is free software and uses NAPI (New API) [20], an extension to the device driver packet processing framework, to avoid system interrupts. PF_RING ZC is a commercial version which supports the zero-copy concept. Both versions of PF_RING support x86-based processors and various Linux distributions and NICs. Intel's DPDK is an open-source solution for developing the data plane. It uses a zero-copy concept and PMD (Poll Mode Driver) to avoid the kernel's interrupt mechanism. Thanks to these features, a packet received in the NIC can be referenced to the user application directly, without the kernel's interference. In addition, it offers several cipher algorithms such as AES-CBC, AES-CTR, AES-GCM and HMAC-SHA1, and some lookup algorithms such as hash and longest prefix match. It is designed to run on Intel x86-based, IBM Power PC and ARM processors, and supports various Linux distributions and NICs. 6 WIND's 6 WINDGate is a commercial solution and works on various platforms such as ARM, Cavium, Intel and Mellanox. It also uses a zero-copy concept and supports various cipher algorithms. It supports data plane and control plane architectures and provides a synchronization module to synchronize both planes. Like the other solutions, it supports x86-based PC processors and various Linux distributions and NICs. Table 1 summarizes the features of the packet processing solutions. All of the solutions listed in Table 1 can work in the cloud environment, and support x86-based PC processors and various Linux distributions and NICs. However, while Vanilla PF_RING can bypass the kernel's interrupt mechanism by using NAPI polling, it still remains in overhead, requiring memory copy operations to copy received packets into a user space buffer due to the absence of the zero-copy concept. On the other hand, PF_RING ZC applies the zero-copy concept to bypass the kernel's network stack. However, this makes it difficult to add or modify some functions, since it is a commercial solution. 6 WINDGate supports all of the features of DPDK, and provides processing functions to handle IKE (Internet key exchange) and TCP messages. However, a drawback of 6 WINDGate is that it is a commercial solution. In addition, its update schedule may be slow compared with DPDK, since it works based on DPDK; that is, it can only be updated after applying DPDK's updates to its base library when a new version of DPDK is released.