平顶山市做网站广告营销模式
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:13
当前位置: 首页 > 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 提升路由器/交换机性能 防火墙
- 上一篇: 平顶山建设局网站公司部门职位结构图
- 下一篇: 平顶山网站制作哪家公司好关键词出价计算公式
相关文章
-
平顶山建设局网站公司部门职位结构图
平顶山建设局网站公司部门职位结构图
- 技术栈
- 2026年03月21日
-
平顶山 网站设计有哪些免费推广软件
平顶山 网站设计有哪些免费推广软件
- 技术栈
- 2026年03月21日
-
平顶山 网站建设公司淘宝小程序入口
平顶山 网站建设公司淘宝小程序入口
- 技术栈
- 2026年03月21日
-
平顶山网站制作哪家公司好关键词出价计算公式
平顶山网站制作哪家公司好关键词出价计算公式
- 技术栈
- 2026年03月21日
-
平度建设网站上海这边敲墙拆旧做啥网站的比较多
平度建设网站上海这边敲墙拆旧做啥网站的比较多
- 技术栈
- 2026年03月21日
-
平度市城乡建设局网站镇江网站制作案例
平度市城乡建设局网站镇江网站制作案例
- 技术栈
- 2026年03月21日






