HOMECOURSESSTUDENTSDONATIONSVIDEOSEVENTSTUTORIALSLINKSNEWSCONTACT


Tutorials :: The Linux Channel

Watch on Youtube - [4916//0] 0x1c6 NAS OS | Never use a USB flash drive as a OS boot pool | FreeNAS DIY Hardware ↗

Select a video series topic:


☆ Tutorials :: Arduino UNO Projects ↗


Tutorials :: Network Software Development

TCP Link Bonding vs Multipath TCP (MPTCP) ↗
Saturday' 13-Mar-2021

Design & Architecture of custom Dynamic Routing Protocols ↗
Saturday' 13-Mar-2021

Smart NIC Cards ↗
Saturday' 13-Mar-2021
NIC Cards (Network Interface Cards) traditionally contain controller chip which takes care of the core aspects, such as packet reception, buffering (till they are read by OS device drivers), etc. But these days increasingly modern NIC cards can perform several CPU Network Offload functions such as packet/frame checksum, etc. Such hardware offload features of modern NIC cards is crucial to process packets and support packet data transfer rates of around 1Gbps, 10Gbps, even 40Gbps and so on. But beyond that such as 100Gbps and so on, at times even a high-end Xeon/ Intel/ AMD processors will struggle if need to support transfer rates of around 100Gbps or beyond (situations like Link Bonding). These are the situations we need what we call as Smart NIC Cards. A Smart NIC card implements most of the network traffic processing on the NIC itself that would necessarily be performed by the CPU (i.e Operating System) in the case of a traditional NIC card.

C code to check valid IP Address (IPv4) - Live Demo and Example ↗
Saturday' 13-Mar-2021

TCP vs UDP an Expert Opinion ↗
Saturday' 01-Jan-2022

Layer-2 (L2) Multicast Frame Deep Analysis ↗
Saturday' 13-Mar-2021

Introduction to Network Processors (NPU) ↗
Saturday' 13-Mar-2021

UDP sample socket code for Systems and Network software developers ↗
Saturday' 13-Mar-2021
Here is my sample UDP socket code written in C. Unlike other versions you get commonly on-line this version is focused towards systems and network software developers and as a quick reference even for experienced software programmers. In this example/template, I am sending test raw binary data bytes from UDP sample client to registered UDP sample server. The code has documentation already in the form of comments (as you can see below). You can download my source below and you can use it directly in your projects or you can use the same for learning purposes to understand about user-space socket programming via IPv4 UDP transport layer protocol.

Multi-Client TCP Server with pthreads Mutex Synchronized - Code-walk of viewer code - Sekhar Pariga ↗
Saturday' 01-Jan-2022
Here is a code-walk of a git-hub source submitted by a viewer Sekhar Pariga, which is a Multi-client TCP Server with pthreads Mutex synchronized. Basically it is a Directory Listing Server, that serves ls, cd, pwd of directory functions to connecting TCP clients which are remotely (locally) executed by the server. Server is implemented using multi-thread pthread library, to serve multiple clients simultaneously. Server keeps the each accepted client session details in the queue data structure. Client session queue contains each clients socket-fd and present working directory as a queue node.

iPerf tool - for network channel analysis, bandwidth tests and system & network benchmarking ↗
Saturday' 13-Mar-2021

Network MTU and Path MTU Discovery PMTUD - WAN and Internet Performance Optimization ↗
Saturday' 13-Mar-2021

Linux Kernel Module to Drop Packets captured via netfilter hooks ↗
Saturday' 13-Mar-2021
Here is my sample Kernel Module to drop packets (i.e sk_buff instance) captured via netfilter hooks. When you want to drop packets in your custom netfilter hooks make sure you never do a manual kfree_skb(skb) API call. Since it is anyway performed once the flow of the code moves out of your kernel module netfilter hook. All you need to do is to return NF_DROP to drop gracefully the desired packet. Here is my detailed video and a sample Linux Kernel module.

Código de soquete de amostra UDP para desenvolvedores de software de sistemas e redes ↗
Saturday' 13-Mar-2021
Aqui está meu código de soquete UDP de amostra escrito em C. Ao contrário de outras versões, você costuma obter on-line, esta versão é voltada para desenvolvedores de software de rede e sistemas e como uma referência rápida até mesmo para programadores de software experientes. Neste exemplo / modelo, estou enviando bytes de dados binários brutos de teste do cliente de amostra UDP para o servidor de amostra UDP registrado. O código já possui documentação na forma de comentários (como você pode ver abaixo). Você pode baixar meu código-fonte abaixo e você pode usá-lo diretamente em seus projetos ou você pode usar o mesmo para fins de aprendizagem para entender sobre a programação de soquete de espaço do usuário via protocolo de camada de transporte UDP IPv4.

Bufferbloat in a Networking Device or an Appliance ↗
Saturday' 13-Mar-2021

Data-Plane and Control-Plane of a Networking Device ↗
Saturday' 13-Mar-2021

Linux Networking Stack :: RFS: Receive Flow Steering ↗
Saturday' 13-Mar-2021
Linux Networking Stack Receive Flow Steering (RFS) aim is to increase data-cache hitrate by steering kernel processing of packets to the CPU where the application thread consuming the packet is running. RFS relies on the same RPS mechanisms to enqueue packets onto the backlog of another CPU and to wake up that CPU.

Socket Options - Socket Programming - setsockopt(), getsockopt() ↗
Saturday' 13-Mar-2021

Tail Drop - by Network Schedulers to Drop Packets in Network Appliances ↗
Saturday' 13-Mar-2021

IP-in-IP Tunneling Demystified - VPN Tunnels ↗
Saturday' 13-Mar-2021
There can be many ways one can architect VPN Networks. The end objective is to tunnel private IP (typically LAN subnets) within public IP Networks (such as Internet). You can establish such a tunnel in various creative ways, such as Transport Mode, Tunnel Mode, IP-in-IP tunneling, etc. Also you can choose any transport layer protocol of your choice such as send VPN traffic via TCP, or via UDP and so on.


☆ Tutorials :: Research and Projects ↗


☆ Tutorials :: Linux (user-space), Systems Architecture ↗

Join on-line Classes


☆ Tutorials :: Linux Kernel Software Development ↗


☆ Tutorials :: Linux Kernel Internals (PDFs) - by Ramin Farajpour ↗


☆ Tutorials :: Software Development (Programming) Tools ↗


☆ Tutorials :: Embedded Projects ↗

Join The Linux Channel :: Facebook Group ↗

Visit The Linux Channel :: on Youtube ↗


💗 Help shape the future: Sponsor/Donate


Recommended Topics:
Featured Video:
Watch on Youtube - [487//0] 0x16b Tracking Linux Kernel bugs in Kernel.org Bugzilla (or Bugzee as we call it in the Industry) ↗

Network MTU and Path MTU Discovery PMTUD - WAN and Internet Performance Optimization ↗
Saturday' 13-Mar-2021

Deciding the future: Cloud/Colocation Data Center or Premise-Built Data Center? ↗
Saturday' 13-Mar-2021
Before we go ahead expounding on picking between managed hosting and data center co-location, let us initially comprehend what each of these methods for a business endeavor to achieve. According to an article written by Nitin Mishra, According to an article written by Nitin Mishra, Former Airtel & Samsung executive. “which is perfect for your business? The appropriate response lies in the points of interest and relies upon your organisation's particular prerequisites and the workloads that you would need to keep running from both of these alternatives.” PROS/CONS: Premise-Built Data Center vs. Cloud/Colocation Data Center.

Weekly News Digest - Week 02 - July 2020 ↗
Saturday' 13-Mar-2021
The Linux Channel :: Weekly News Digest - Week 02 - July 2020
> Google is teaming up with Ubuntu to bring Flutter apps to Linux
> Linux kernel developers: This new BLM coding style avoids words like blacklist
> Zstd'ing The Kernel Might See Mainline With Linux 5.9 For Faster Boot Times
> Linux 5.9 To Bring Arm Memory Tagging Extension Support
> Linux Kernel Raising Compiler Build Requirement To GCC 4.9
> Linux Developers May Discuss Allowing Rust Code Within The Kernel
> Premio Unveils Intel 9th Gen Industrial Motherboard For Advanced Embedded And IoT Solutions

IP-in-IP Tunneling Demystified - VPN Tunnels ↗
Saturday' 13-Mar-2021
There can be many ways one can architect VPN Networks. The end objective is to tunnel private IP (typically LAN subnets) within public IP Networks (such as Internet). You can establish such a tunnel in various creative ways, such as Transport Mode, Tunnel Mode, IP-in-IP tunneling, etc. Also you can choose any transport layer protocol of your choice such as send VPN traffic via TCP, or via UDP and so on.

Programming Language Performance and Overheads ↗
Saturday' 01-Jan-2022
A detailed Youtube video series of various programming language performance and overheads - a big picture

Online Course - Linux CLI Scripting ↗
Saturday' 13-Mar-2021

Intro to Crypto and Blockchain | Progate Bangalore Meetup ↗
Saturday' 13-Mar-2021

Linux Kernel Network Programming ↗
Saturday' 13-Mar-2021

Adding your own Kernel Modules into Linux Kernel Source | Linux Kernel Programming ↗
Saturday' 13-Mar-2021
Whenever you do custom kernel modules, you can optionally make it a part of existing Linux Kernel source. This does not mean you are submitting your kernel module to the mainline kernel source (i.e kernel.org Linux Kernel Foundation). What I meant is, you can make your kernel module(s) part of Linux Kernel source so that when you compile your kernel you can automatically compile your kernel module(s) too. As well when you create/modify kernel .config configuration file (such as via make menuconfig, etc), you can enable or disable your kernel module(s) too.
To do the same you have to register (and include) your custom Kernel Module's Kconfig and Makefile to the existing Kconfig and Makefile of the Linux Kernel source Here is a detailed multi-episode video of mine which gives the overall idea and the big-picture.

Linux Kernel Tasklets | Big-Picture | vs User-Space pthreads ↗
Saturday' 01-Jan-2022
Linux Kernel Tasklets and Work queues are somewhat similar to user-space process threads in terms of the functionality and of course not in terms of its operation or its internal architecture. You can schedule Tasklet(s) for a registered function to run later. So typically the Interrupt top half (of the interrupt handler) performs a small amount of critical work (not to be confused with critical section), and then schedules such as a tasklet to execute later at the bottom half.


Trending Video:
Watch on Youtube - [792//0] x249 Porting my old /proc code to new Linux Kernel 5.15.0-27-generic - Ubuntu 22.04 LTS - year 2022 ↗

Bufferbloat in a Networking Device or an Appliance ↗
Saturday' 13-Mar-2021



Recommended Video:
Watch on Youtube - [484//0] 0x208 TCP Sequence Numbers | why not in UDP ? | FAQ | Network Architecture | The Linux Channel ↗