RNDIS和CDC-ECM差别

默认建议的接口都是ethernet的(会包含eth头部),但对于RNDIS又定义了一层44字节的封包头部需要插入了报文中(cdc-ecm没有),然后再提交给usb处理

即对于驱动来说,

cdc-ecm基本属于透传模式,tx报文直接透传给usb;rx报文透传给CPU

rndis需要增加44字节头部封装,tx报文在skb中扩展头部给usb;rx报文剥掉头部给CPU

cdc-ncm从驱动上看也是有自己的头部扩展

gobinet有些差异,gobinet可以配置2种模式(rawIPMode,即是否带有以太网头部),如果是rawIPMode,则

tx报文在skb中剥掉eth头部给usb;rx报文增加eth头部给CPU

对于剥掉头部的动作,在实现上只是指针偏移;但是增加头部的动作则会因为skb数据区域预留空间不够导致报文重新分配skb(skb_copy),这个动作比较容易降低性能并且可能触发报文拥塞导致丢包

从传输效率上来说:cdc-ecm和gobinet no-rawIPMode模式的效率更高(透传)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值