ABOUT THE AUTHOR

Michał Niciejewski

Software Engineer

Michał is a Software Engineer at CodiLime, specializing in network drivers and traffic offloading. He excels in C and C++ languages and has expanded his skills in Rust through projects at CodiLime. His experience includes designing and implementing network drivers and applications in DPDK, integrating SmartNICs with Tungsten Fabric SDN, and implementing packet processing offloading on GPUs. Michał's passion for operating systems and eagerness to learn new technologies drive his contributions in the field.

Michał Niciejewski

Recent posts by Michał:

Thumbnail of an article about Network ACL processing algorithms — optimizing firewall's performance
NETWORKS
SOFTWARE DEVELOPMENT

Network ACL processing algorithms — optimizing firewall's performance

A firewall is an important component in protecting a network from attacks. It allows configuration of what kind of traffic is allowed inside the network. So in a sense, a firewall is a barrier that can reject all suspicious connections at the very entrance to the network, making potential attacks significantly more difficult. There are many types of firewalls. In this article, we will focus only on simple stateless firewalls that work in the 3rd and 4th layer of the OSI model (L3 + L4 firewalls). Typically, a firewall uses a user-specified access control list (ACL) to decide which packets to let through and which to block.
Thumbnail of an article about How memory types affect DPDK application performance — case study
SOFTWARE DEVELOPMENT

How memory types affect DPDK application performance — case study

In this blog post, I will describe a problem encountered while working on a project involving GPU usage in network traffic processing (knowledge of GPU programming won’t be required as it will quickly become apparent that the problem is more general and the GPU can be eliminated). I will describe the steps that helped me in locating and fixing the problem – practical methods used for DPDK profiling and debugging. Also, I will describe some low-level internal DPDK mechanisms (e.g. packet processing, IOMMU, hugepages usage and impact) that helped in understanding the issue.
Thumbnail of an article about GPU in computer networks — how to speed up traffic processing
NETWORKS
SOFTWARE DEVELOPMENT

GPU in computer networks — how to speed up traffic processing

We are almost always online in our hyper-connected world. In just 10 years, the number of active device connections rose from 8.8 billion in 2010 to 21.6 billion in 2020, and it is expected to further increase to 41.2 billion by 2025 (according to Statista data). This rapid growth raises new technical issues regarding network traffic control and processing. Especially when we combine them with the development of 5G, a new standard offering peak data rates of up to 20 Gbps and supposedly supporting a 100-fold increase in traffic capacity and network efficiency.
Thumbnail of an article about Rust vs C: safety and performance in low-level network programming
SOFTWARE DEVELOPMENT

Rust vs C: safety and performance in low-level network programming

According to the Stack Overflow Developer Survey 2020, Rust is the most popular programming language. It won the title for the fifth year running, and the good news hardly ends there. Also in 2020, Linux kernel developers proposed including Rust in Linux Kernel, which was originally written in C. Quite recently, Facebook joined the Rust Foundation, an organization driving the development of the language Rust, with the intention of helping it go mainstream. Given all this, we decided to check if Rust can replace C in low-level network programming to ensure higher safety without sacrificing high performance.