USB网络控制通讯NCM
+ -

USB-NCM数据传输机制NTB

2025-07-07 0 0

NCM允许设备和主机使用单个USB传输有效地传输一个或多个以太网帧。USB传输被格式化为NCM传输块(NTB)。


1. NTB的核心结构

每个NTB由三部分组成,按顺序排列:

  1. NCM Transfer Header (NTH)

    • 作用:标识NTB的起始,提供元数据(如NTB类型、长度、NDP指针位置)。
    • 特点:必须位于NTB的首部,接收端依赖NTH解析后续内容。
    • 字段示例
      • dwSignature:标识NTB类型(如0x484D434E表示NTB-32)。
      • wBlockLength:NTB总长度。
      • wNdpIndex:指向NDP结构的偏移量。
  2. NCM Datagram Pointer (NDP)

    • 作用:指向NTB内封装的以太网帧的起始位置(类似索引表)。
    • 特点
      • 每个NDP可指向多个以太网帧,形成链表结构。
      • 支持16位(NTB-16)32位(NTB-32)偏移量(见下图对比)。
    • 字段示例
      • dwDatagramIndex[]:以太网帧的偏移量数组。
      • wDatagramLength[]:对应帧的长度。
  3. 以太网帧数据

    • 封装格式:原始IEEE 802.3帧(含MAC头、载荷、FCS等)。
    • 排列方式:可由发送方自由排列,接收方通过NDP快速定位,无需拷贝重组

2. NTB的两种格式

NCM定义了两种NTB格式,适配不同USB速率和设备需求:

格式类型 最大容量 偏移量位数 适用场景 结构图示
NTB-16 ≤ 64 KiB 16位 USB 2.0 High Speed 图3-1
NTB-32 ≤ 4 GiB 32位 USB 3.0 SuperSpeed 图3-2

关键差异

  • NTB-16的字段(如wBlockLengthwNdpIndex)为16位,限制单次传输最多承载40个标准以太网帧(1514字节/帧 × 40 ≈ 60 KiB)。
  • NTB-32支持更大块传输,适合高速USB 3.0+设备。

3. NTB的工作流程

  1. 发送端(Host/Device)

    • 将多个以太网帧打包为NTB,按需选择NTB-16或NTB-32格式。
    • 填充NTH和NDP,确保接收端能正确解析帧位置。
    • 通过USB批量传输(Bulk Transfer)发送整个NTB。
  2. 接收端(Device/Host)

    • 读取NTH,确认NTB类型和长度。
    • 根据wNdpIndex找到NDP,遍历dwDatagramIndex提取所有以太网帧。
    • 直接处理帧数据,无需内存拷贝(零拷贝优化)。

4. 关键设计优势

  • 减少中断开销:单次USB传输替代多次小包传输,降低主机CPU负载。
  • 灵活性与兼容性
    • 主机动态选择NTB格式(通过初始化协商)。
    • 设备可声明不同的发送(TX)接收(RX) NTB大小上限。
  • 动态调整:发送方可按需调整NTB大小(如网络拥塞时减小块大小)。

5. 实现注意事项

  • 格式一致性:同一时间仅使用一种NTB格式(NTB-16或NTB-32),且IN/OUT方向需一致。
  • 大小限制:设备需在初始化时通过描述符或控制请求告知主机支持的NTB最大尺寸。
  • 错误处理:若NTB校验失败(如长度不符),接收端应丢弃整个块并报告错误。

图示参考

  • 图3-1(NTB-16结构)
    NTB-16
    [NTH(16位字段)] → [NDP(16位偏移)] → [以太网帧1][帧2]...[帧N]
    
  • 图3-2(NTB-32结构)
    NTB-32
    [NTH(32位字段)] → [NDP(32位偏移)] → [以太网帧1][帧2]...[帧N]
    

通过NTB机制,NCM在USB协议层实现了接近原生以太网的高效数据传输,同时保持对高低速USB的兼容性。

0 篇笔记 写笔记

USB-NCM数据传输机制NTB
NCM允许设备和主机使用单个USB传输有效地传输一个或多个以太网帧。USB传输被格式化为NCM传输块(NTB)。1. NTB的核心结构每个NTB由三部分组成,按顺序排列:NCM Transfer Header (NTH) 作用:标识NTB的起始,提供元数据(如NTB类型、长度、NDP指......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB网络控制通讯NCM
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!