当前位置: 首页 > news >正文

平顶山市做网站苏州做网站公司电话

平顶山市做网站,苏州做网站公司电话,免费注册入口,文创产品设计网目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载#xff1a; DPDK 下载版本#xff1a;DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载 DPDK 下载版本DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-linux-gcc cd /root/dpdk-stable-19.08.2 ./usertools/dpdk-setup.sh 选择39 x86_64-native-linux-gcc回车后自动开始编译 2、设置运行环境 1、添加一个网卡作为dpdk抓包网卡设置桥接模式 2、修改虚拟机vmx文件将抓包网卡的virtualDev 由 e1000 修改 vmxnet3因为 vmware 的 vmxnet3 支持多队列网卡 单队列网卡在单队列网卡中所有的网络中断和处理任务通常都由单个CPU核心处理这可能会导致该核心的高负载和瓶颈。 多队列网卡多队列网卡可以将网络流量分散到多个CPU核心上这样可以避免单个核心过载并提高整体系统的性能。 cat /proc/interrupts | grep 网卡名称 可以查看该网卡是多队列还是单队列单队列只有一行多队列有多行 3、设置巨页内存 dpdk巨页一般配置为2M和1G 修改/etc/default/grub文件增加图中的内容 物理机: default_hugepages1G hugepagesz1G hugepages20 isolcpus0-7 虚拟机 default_hugepages1G hugepagesz2M hugepages1024 isolcpus0-2 执行update-grup重启 4、 cd /root/dpdk-stable-19.08.2 ./usertools/dpdk-setup.sh 执行43、44、45、46(填512)、47(填512)、49执行49前要把dpdk抓包网卡down掉(ifconfig ens160 down) 当使用DPDK绑定网卡后该网卡会从Linux内核网络栈中解绑并交由DPDK控制。这意味着网卡不再由操作系统的网络栈管理因此使用ip a或ifconfig这样的命令将看不到这块网卡。 ./usertools/dpdk-devbind.py --status可以看到dpdk绑定的网卡 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 查看绑定网卡的ip和mac地址加到报文发送端的arp中 在指定网卡上加上对应的arp信息 netsh -c i i add neighbors 19 192.168.1.5 00-0c-29-f2-de-8d 执行arp -a 3.2、测试 发送报文dpdk可以接收到 3.3、代码 #include rte_eal.h #include rte_ethdev.h #include rte_mbuf.h #include stdio.h #include arpa/inet.h#define NUM_MBUFS (4096-1) // 内存池中 mbuf 的数量 #define BURST_SIZE 32int gDpdkPortId 0;static const struct rte_eth_conf port_conf_default {.rxmode {.max_rx_pkt_len RTE_ETHER_MAX_LEN} };static void ng_init_port(struct rte_mempool *mbuf_pool) {//dpdk绑定的网卡数量uint16_t nb_sys_ports rte_eth_dev_count_avail();if (nb_sys_ports 0) {rte_exit(EXIT_FAILURE, not support eth\n);}struct rte_eth_dev_info dev_info;/*获取以太网设备的配置和状态信息。它通常用于初始化网络设备、*配置网络设备或者获取网络设备的状态信息。*这里的端口号和网卡是一一对应的*/rte_eth_dev_info_get(gDpdkPortId, dev_info);const int num_rx_queues 1; //接收队列个数const int num_tx_queues 0; //发送队列个数struct rte_eth_conf port_conf port_conf_default;rte_eth_dev_configure(gDpdkPortId, num_rx_queues, num_tx_queues, port_conf);// 0是0号接收队列// 128是队列长度if (rte_eth_rx_queue_setup(gDpdkPortId, 0, 128, rte_eth_dev_socket_id(gDpdkPortId), NULL, mbuf_pool) 0) {rte_exit(EXIT_FAILURE, Could not setup RX queue\n);}if (rte_eth_dev_start(gDpdkPortId) 0) {rte_exit(EXIT_FAILURE, Could not start\n);}}int main(int argc, char *argv[]) {/*dpdk初始化资源*用于初始化 Environment Abstraction Layer (EAL)。EAL 是 DPDK 的一个核心组件*负责抽象和管理硬件和操作系统依赖性使得上层应用可以在不同的硬件和操作系统上*以统一的方式运行。*/if (rte_eal_init(argc, argv) 0) {rte_exit(EXIT_FAILURE, Error with EAL initialization\n);}//内存池接收的数据存在该内存池中struct rte_mempool *mbuf_pool rte_pktmbuf_pool_create(mbuf_pool, NUM_MBUFS,0, 0, RTE_MBUF_DEFAULT_BUF_SIZE, rte_socket_id());if (mbuf_pool NULL) {rte_exit(EXIT_FAILURE, Could not create mbuf pool\n);}ng_init_port(mbuf_pool);while(1) {struct rte_mbuf *mbufs[BURST_SIZE] {0};unsigned num_recvd rte_eth_rx_burst(gDpdkPortId, 0, mbufs, BURST_SIZE);if (num_recvd BURST_SIZE) {rte_exit(EXIT_FAILURE, Error receive from eth\n);}unsigned int i 0;for (i 0; i num_recvd; i) {struct rte_ether_hdr *ehdr rte_pktmbuf_mtod(mbufs[i], struct rte_ether_hdr*);if (ehdr-ether_type ! rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4)) {rte_pktmbuf_free(mbufs[i]);continue;}struct rte_ipv4_hdr *iphdr rte_pktmbuf_mtod_offset(mbufs[i], struct rte_ipv4_hdr*, sizeof(struct rte_ether_hdr));if (iphdr-next_proto_id IPPROTO_UDP) {struct rte_udp_hdr *udphdr (struct rte_udp_hdr *)(iphdr 1);//两个字节以上的变量是需要大小端转换uint16_t length ntohs(udphdr-dgram_len);*((char*)udphdr length) \0;struct in_addr addr;addr.s_addr iphdr-src_addr;printf(src: %s:%d, , inet_ntoa(addr), ntohs(udphdr-src_port));addr.s_addr iphdr-dst_addr;printf(dst: %s:%d, %s\n, inet_ntoa(addr), ntohs(udphdr-dst_port), (char *)(udphdr1));}rte_pktmbuf_free(mbufs[i]);}}return 0; } 4、其他 1、设置中断对应的cpu /proc/irq/是一个特殊的文件系统目录它提供了一个接口来观察和配置内核中的中断请求IRQ相关信息。/proc/irq/目录下的每个子目录通常对应一个特定的IRQ号。 /proc/irq/57/smp_affinity文件允许你查看或设置中断号为57的IRQ在多处理器系统中的亲和性affinity。亲和性是指操作系统尝试将中断处理任务绑定到特定的CPU核心上以提高处理效率和性能。 smp_affinity文件中的值是一个掩码mask用十六进制表示它指定了处理该中断的CPU核心。每一个十六进制数字代表了4个位因此一个数字可以表示4个CPU核心的开关状态。如果你看到smp_affinity文件中有32个十六进制数字那么这表示该系统可能支持多达32 * 4 128个CPU核心。 例如如果smp_affinity文件中的值是ff那么它表示前8个CPU核心因为ff在二进制中是11111111都被允许处理这个中断。如果值是1则只有第一个CPU核心被允许处理这个中断。 要绑定第5个cpu核心则echo 10 /proc/irq/57/smp_affinity 2、dpdk使用场景 dpdknginxnginx不从内核协议栈收包从dpdk收包提升性能 dpdkdns 提升路由器/交换机性能 防火墙
http://www.hkea.cn/news/14293807/

相关文章:

  • 一个好的网站建设需要多少钱网络游戏软件开发app
  • 湖北营销型网站建设多少钱wordpress 收邮件
  • dede网站地图样式修改c网站开发教程
  • 好看的美食怎么做视频网站城阳网站建设培训
  • 网站seo价格做网站签到挣钱吗
  • win8.1 wordpress抖音推广seo
  • 知名高端网站建设企业配音阁在线制作网站
  • 动漫人物做羞羞事的网站杭州企业展厅设计公司
  • 微商网站h5响应式集团网站推荐
  • 旅游的网站怎么做wordpress远程执行
  • 工作室网站涉密网络建设
  • wordpress 建站 电子书社交网站 cms
  • 建网站做淘宝客可以吗大型网站 开发语言
  • 泰安建站哪家好建设部网站实名制举报
  • 建立企业网站的意义网站开发应看什么书籍
  • 网站建设部门管理制度长春vi设计公司
  • 主机屋的免费空间怎么上传网站有实力的网站建设公司
  • 制作企业网站的问题大余做网站公司
  • 劳保用品 技术支持 东莞网站建设h5制作模板官网
  • 有没有做英语题的网站昆明购物网站建设
  • 网站开发报价单明细用cms建设网站课程宅门
  • 网站建设制作一个网站的费用做书的网站
  • 网站给他人做付刑事责任昌平最好的网站建设
  • 杭州一起做网站seo基础理论
  • 中山网站推广网站备案单位查询
  • 做网站教程免费wordpress批量导入标签
  • 大型做网站温州市手机网站制作
  • 怎样做响应式网站官方app下载安装
  • 商城网站设计网站 别名
  • 老专家个人网站网站的ci设计怎么做