[iperf]指定发包tos

MAC数据帧传输类别

QoS数据帧

MAC数据帧定义传输类别(Traffc Identifer,TID)字段,用于指示业务优先级。包含TID的MAC数据帧被称为QoS数据帧(QoS data)。不包含TID的MAC数据帧,则称为非OoS数据帧(Non-OoS data)
在这里插入图片描述

类别

MAC层把数据业务分为8个类型,用TID0~7来表示不同业务类型的优先等级。MAC层按照优先级由高到低的次序传输不同的数据业务,数值越大等级越高。
在这里插入图片描述

指定Qos类别

iperf数据设置qos类别"-S"

//-S, --tos N  ; 设置 IP 服务类型(TOS,Type Of Service)
iperf -c 192.168.0.1 -S 0x80 -u -p 1234 -i 1 -b 1M -l 626 -t 10
iperf -s -p 1234 -i 1 -u

应用层更改qos类别

1.通过DSCP的值将流量映射到WMM的多个访问类别:
数据流的DSCP(Differentiated Services Code Point)值可以通过修改IP标头中的TOS(Type of Service)字段来设置。这样可以将流量打上不同的QoS标记,让路由器或交换机对数据包进行差异化处理。

2.不同的网络设备、无线设备可能会略有不同的映射规则

DSCPTID
0x00BE(tid=0)
0x20BK(tid=1)
0x40(tid=2)
0x60(tid=3)
0x80VI(tid=4)
0xA0VI(tid=5)
0xC0VO(tid=6)
0xE0VO(tid=7)

lwip设置qos类别

1.setting:socket设置tos配置到“struct raw_pcb *pcb->tos”
2.output:发包过程中通过“IPH_TOS_SET”将pcb->tos设置ip包的tos字段

#include "lwip/ip.h"
#include "lwip/ip_addr.h"
#include "lwip/inet.h"
 
void send_packet_with_tos(const ip_addr_t *ipaddr, uint8_t tos) {
    struct pbuf *p = pbuf_alloc(PBUF_TRANSPORT, 0, PBUF_RAM); // 分配一个PBUF
    if (p != NULL) {
        struct ip_hdr *iphdr = (struct ip_hdr *)p->payload; // 获取IP头部
        IPH_TOS_SET(iphdr, tos); // 设置TOS字段
        
        // 填充其他IP头部信息...
        iphdr->src = ...; // 设置源IP地址
        iphdr->dest = ipaddr; // 设置目的IP地址
        // 设置其他必要的IP头部字段...
        
        // 使用LwIP的API发送数据包
        err_t err = ip_output_if(p, NULL, ipaddr, 0, 0, 0, IP_PROTO_TCP, etharp_output); // 根据需要调整协议类型
        if (err != ERR_OK) {
            // 处理错误...
        }
        pbuf_free(p); // 释放PBUF
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值