原创 DPDK內存管理三:用戶接口

DPDK以兩種方式對外提供內存管理方法,一個是rte_mempool,主要用於網卡數據包的收發;一個是rte_malloc,主要爲應用程序提供內存使用接口。 struct rte_mempool 內存池結構體 /** * The RTE

原创 sizeof總結

1、基本數據類型 cout << sizeof(char); // 結果是1 cout << sizeof(int); // 結果是4 cout << sizeof(unsigned int);

原创 DPDK內存管理二:初始化

DPDK 內存的初始化主要在rte_eal_init()函數中進行: eal_hugepage_info_init() /* 獲取系統中hugepage種類以及數量信息到internal_config.hugepage_info,用於

原创 指針數組和數組指針

指針數組:array of pointers,即用於存儲指針的數組,也就是數組元素都是指針 數組指針:a pointer to an array,即指向數組的指針 舉例說明: int* a[4] //指針數組 表示:數

原创 Vim編輯器打開時自動跳轉到上次光標位置

在~/.vimrc裏面添加如下內容: if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g

原创 linux定時任務crontab

crond是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啓動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務

原创 TCP/IP協議概述

網絡協議通常分不同層次進行開發,每一層分別負責不同的通信功能。一個協議族,比如TCP/IP,是一組不同層次上的多個協議的組合。 TCP/IP協議族的四個層次:應用層、傳輸層、網絡層、鏈路層 在TCP/IP協議族中,網絡層IP提供一種不可

原创 調用sendmsg時出現permission denied錯誤

在使用ipsec-tools發送IKE協商包時,調用sendmsg時出現permission denied錯誤 解決方法 IKE協商包使用udp傳送,所以需要注意發送udp報文時設置SO_BROADCAST特性 setsockopt

原创 內存的分段和分頁

分段 定義: 把一段與程序所需要的內存空間大小的虛擬空間映射到某個地址空間 如上圖所示: A程序需要10M的內存,假設一個地址從0x00000000到0x00A00000的10MB大小的虛擬空間,然後從實際物理內存中分配一個相同大小的物

原创 DPDK內存管理一:結構體

DPDK的內存管理工作主要分佈在幾個大的部分:大頁初始化與管理,內存管理。使用大頁可以減少頁表開銷,是爲了儘量減少TBL miss導致的性能損失。基於大頁,DPDK又進一步細化管理這部分內存,使得分配,回收更加方便。 大頁內存的基本原理

原创 IPsec VPN基礎知識一

IPsec是一個集合了許多標準的體系結構。這些標準在網絡層爲IPv4、IPv6 [RFC4301]以及移動IPv6 [RFC4877]提供數據源認證、完整性、機密性以及訪間控制。它還爲兩個通信的實體提供了一種交換密鑰的方法、一個加密套件以

原创 DPDK源碼學習——初始化

DPDK所有的宏定義基本都在rte_config.h(需要編譯DPDK之後纔會在目錄中生成)中,所以第一個頭文件應該爲#include <rte_config.h> DPDK首先初始化了Environment Abstraction La

原创 iptables——四表五鏈

netfilter/iptables IP 信息包過濾系統是一種功能強大的工具,可用於添加、編輯和除去規則,這些規則是在做信息包過濾決定時,防火牆所遵循和組成的規則。這些規則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。