DPDK入门

DPDK

a. dpdk环境搭建

1. 多队列网卡

2. hugepage 大页/巨页

网卡–> 网卡驱动–> tcp/ip协议栈–>系统调用/posix api/send/recv —>APP

网卡 桥接:与主机网卡的ip在同一个网段内,通过路由器进行桥接通讯

​ NAT:为主机的子网内的ip,主机相当于一个路由器,通过主机进行与其他设备通讯

​ 仅主机:仅可以与主机进行通讯

uio

pci

使用场景:数据备份 DPDK+RDMA

​ 网关防火墙

ARP协议

arp是地址解析协议,位于网络层;其基本功能是降网络层的逻辑地址(IP地址)转化为数据链路层的物理地址(MAC地址),保证网络设备间的正常通讯。

工作流程
  1. 查询过程
    • 当一台主机需要向同一局域网内的另一台主机发送数据时,他首先检测自己的ARP缓存表中是否有目标主机的IP地址与MAC地址的映射关系
    • 若没有映射关系,主机将构造一个ARP请求报文,其中包含自己的IP地址和MAC地址以及目标主机的IP地址。将以广播的形式发送到局域网中的所有主机
    • 局域网中每台主机都会接收该请求,但是只有目标主句会去响应该请求,他会发送一个ARP响应报文,包括其MAC地址以及原来请求中的IP地址
  2. 响应与缓存
    • 发起请求的主机接收到响应后,会将目标地址与MAC地址的映射关系存储到自己的ARP缓存中,后续接收通讯可以直接使用ARP缓存中的数据
    • 缓存项通常一定的生存是时间(TTL),过期后从缓存中清楚,下次通信时需要重新查询

ARP安全问题:

ARP欺骗:由于ARP的协议信任机制,恶意节点可以伪造ARP响应报文,谎报自己的MAC地址为其他设备的MAC地址,导致数据流向错误的设备,这个一种常见的网络安全威胁,这种攻击可以用于中间人攻击和拒接服务攻击;

NDP(邻居发现协议):在ipv6环境中。NDP已经取代了ARP功能,负责地址解析、邻居可达性检测、重复地址检测等任务;

  1. 初始化EAL环境抽象层

    rte_eal_init(argc, argv)
    
  2. 创建一个用于存储struct rte_mbuf结构体实例的内存池

    struct rte_mempool *rte_pktmbuf_pool_create(const char *name, 
                                                unsigned int n, 
                                                unsigned int socket_id, 
                                                unsigned int cache_size, 
                                                unsigned int priv_size, 
                                                unsigned int rte_socket_id);
    rte_pktmbuf_pool_create("mbuf_pool", 2048, 0, 0, 2048, rte_socket_id());
    
    • name: 内存池的名称,用于识别和调试。
    • n: 内存池中struct rte_mbuf实例的总数。
    • socket_id: 指定内存池应该从哪个CPU socket的内存中分配内存。在NUMA架构中,这有助于优化内存访问性能。
    • cache_size: 内存池中缓存的大小,每个CPU缓存的struct rte_mbuf实例的数量。合理的缓存大小可以减少CPU之间的缓存争用,提高性能。
    • priv_size: 每个struct rte_mbuf实例私有数据区域的大小,表示mbuf中数据缓冲区的大小
    • rte_socket_i: 当前执行该函数的CPU所在的NUMA节点ID。这样可以确保内存池被创建在调用该函数的CPU最近的NUMA节点上,从而优化内存访问效率。
  3. 查询当前DPDK中可用的以太网设备

    uint16_t rte_eth_dev_count_avail(void);
    rte_eth_dev_count_avail();
    

    返回值:该函数返回一个无符号16位整数,表示系统中可供DPDK使用的以太网设备的数量

  4. 获取指定以太网设备的详细信息

    int rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info)</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值