f-stack初探

介绍

f-stack是基于DPDK(Data Plante Development Kit)实现的一个用户态的协议栈;DPDK主要是操作系统内核数据平面,重载网卡驱动,减少内核中断,内存拷贝和上下文切换;在此之前Linux数据平面和控制平面混在一起,不适合处理大规模的网络数据包;f-stack是基于DPDK从FressBsd协议栈移植而来的用户态协议栈;详细解释何以看相关blog,论坛和官网文档;

编译

  • 环境
  • Linux centos 4.16.5-1.el7.elrepo.x86_64 #1 SMP Thu Apr 26 09:54:55 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
  • 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-LM (rev 03)
  • 依赖

yum install kernel-devel kernel-headers pciutils net-tools libpcap-devel numactl* gcc*
主要就是kernel-devel和kernel-headers安装kernel对应的版本

  • 编译
  • 下载

可以直接从github上clone

  • 编译DPDK

1),cd f-stack/dpdk # 进入dpdk文件夹
2),make config T=x86_64-native-linuxapp-gcc # 这里选择x86_64-native-linuxapp-gcc
3),make # 编译,这里可能会出现一些错误,基本都是kernel版本和dpdk版本不匹配造成的,可以搜索相关的patch

  • 编译f-stack

1),设置环境变量 export FF_PATH=/data/f-stackexport FF_DPDK=/data/f-stack/dpdk/x86_64-native-linuxapp-gcc FF_PATH是f-stack所在的目录,FF_DPDK是dpdk编译好的目录
2),cd f-stack/lib && make

  • 编译nginx

1),cd f-stack/app/nginx-1.11.10 # 进入f-stack中nginx的目录
2)../configure --prefix=/data/nginx-fstack --with-ff_module && make && make install # --prefix选择安装目录,--with-ff_module包含fstack nginx module

配置

1), 在配置之前要保存网卡的相关信息,包括ip地址,netmask子网掩码,gateway网关,broadcast广播地址

# 确认网卡名称,我这里是enp0s25
myip=`ip addr show enp0s25 | grep inet | grep -v ':'  | awk '{print $2}' | awk -F '/' '{print $1}'`
mybroadcast=`ip addr show enp0s25 | grep brd | grep -v ':' | awk '{print $4}'`
mynetmask=`ipcalc -m $(ip addr show enp0s25 | grep inet | grep -v ":"  | awk '{print $2}') | awk -F '=' '{print $2}'`
mygateway=`route -n | grep 0.0.0.0 | grep enp0s25 | grep UG | awk -F ' ' '{print $2}'`

# 替换配置文件中的相关配置
sed "s/addr=192.168.1.2/addr=${myip}/" -i f-stack/config.ini
sed "s/netmask=255.255.255.0/netmask=${mynetmask}/" -i f-stack/config.ini
sed "s/broadcast=192.168.1.255/broadcast=${mybroadcast}/" -i f-stack/config.ini
sed "s/gateway=192.168.1.1/gateway=${mygateway}/" -i f-stack/config.ini

2), 配置大页内存 set hugepage

# single-node system
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

# NUMA
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

3), 安装DPDK驱动并绑定网卡

# 确保依赖,要不然安装的时候会出前错误,类似 unknow symbol in module
modinfo  f-stack/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko | grep depends
modinfo  f-stack/dpdk/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko | grep depends
modprobe uio # 我这里只有uio一个

# 安装
insmod f-stack/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
insmod f-stack/dpdk/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko

python f-stack/dpdk/tools/dpdk-devbind.py --status # 用于查看设备的状态

# 绑定网卡
ip link set enp0s25 down  # 绑定之前需要处于非激活状态
python f-stack/dpdk/tools/dpdk-devbind.py --bind=igb_uio enp0s25

测试

  • 启动
cd /data/nginx-fstack && ./sbin/nginx && ps -ef | grep nginx
  • 运行
curl -vo "http://192.168.55.177/" # 192.168.55.177是${myip},这里会看到nginx的响应,说名安装成功

后记

  • 一些DPDK的详细概念,和f-stack的详细配置,可以参看相关文档;
  • 这些都是在自己的机器上做的,在其它的机器上可能有一些会不一样,本文仅作参考;
  • 对于性能还没有来得及测试,后续有机器可以补上;

参考连接

https://dpdk.org/
http://www.f-stack.org/
https://github.com/F-Stack/f-stack
https://www.jianshu.com/p/0ff8cb4deaef
https://cloud.tencent.com/developer/column/1275

*** 如有疑问欢迎批评指正,谢谢! ***

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容