IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 网络协议栈与netmap -> 正文阅读

[系统运维]网络协议栈与netmap

netmap

作用

netmap是个IO框架(并不是一个驱动),可以高效的收发报文;官方数据是10 GigE(千兆网,传输速度高达120 MB/s)测试,发包数据可以达到14.88 Mpps(million packet per second – 百万数据包转发);
一旦netmap开起来,对应网卡的所有数据都被映射到用户内存,不会再经过内核的协议栈,因此ARP的自动响应也就需要手动实现;
netmap接收的数据包属于数据链路层的帧一层,即每次获取数据包获取的都是数据帧,以帧为单位进行协议解析。

驱动信息查看

  • ethtool -i eth0 就可以得到相应网卡的驱动
  • modinfo modName 就可以得到驱动的具体信息
  • sudo apt install linux-source – 安装内核源码

安装

按照文件夹中的readme.md进行安装,安装的时候按照要求看不同的驱动看需不需要内核源码

  1. ./configure

    1. 编译问题:
      ice_netmap_linux.h会编译出错:是有关NM_ICE_TX_RING(vsi, 0)宏的,直接使用类型强制转换转换一下就可以了(struct ice_ring *)NM_ICE_TX_RING(vsi, 0) – na.num_tx_desc = ((struct ice_ring *)NM_ICE_TX_RING(vsi, 0))->count;
  2. make

  3. sudo make install

    1. 模块安装,模块安装的时候会出现无法找到ice.7.zip的问题,通过查看打印信息发现是gzip生成的,不知道为什么没生成,因此到./ice-1.7.16/src 目录下手动执行如下步骤:
      1. sudo apt install gzip
      2. gzip -c …/ice.7 > ice.7.gz

注意点

  • 安装的话使用netmap-master,使用netmap-13.0的话无法进行编译
  • 不要在ssh测试,因为netmap接管数据后,ssh会失效,直接在虚拟机上测试

编程

  1. sudo modprobe netmap.ko
  2. 要留意在编程时,在引入头文件 #include “net/netmap_user.h”,而且在引入头文件之前要进行宏定义 #define NETMAP_WITH_LIBS
  3. 在进行编程的时候,使用nm_nextpkt提取出来的就是数据链路层的一个帧,如果不够一个帧,netmap会在内核中进行处理;

编程测试发现问题

  1. 一段时间后就无法进行udp接收:
    这是因为在进行网络发送的时候,如果发送端在自己的arp表中未找到目标的arp项,那么他就会发送一个arp请求,接收端收到之后进行arp响应,发送端接收到响应之后再进行数据包发送,没接收到arp请求他就是不会进行数据包发送的。
    win10 查看arp表:
    win + R --> arp -a 查看每个网络适配器的arp表
    会发现这个arp表是没有对应arp项的(如果存在就查看MAC是否对得上,不同的IP但是目标MAC是一样的也可以正常接收 – 局域网的数据收发基于MAC(通过arp将IP转换为MAC))
    • arp -a – 显示所有网卡的arp表
    • arp -d IP – 删除arp表中的某个项目
    • arp -d – 删除所有的arp项
  2. 应对方案:
    对ARP请求进行处理:
    1. mac地址直接按照顺序写入;
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:25:00  更:2022-04-18 18:26:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:34:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码