使用 Wireshark 查看实际数据包的头部大小需要抓取网络流量并分析数据包的结构。以下是具体步骤,帮助你在 PPPoE 接入场景下确认头部开销:

步骤 1:抓包准备

  1. 安装 Wireshark:

    • 在你的电脑上安装 Wireshark(官网:https://www.wireshark.org/),或者如果你的 OpenWrt 软路由支持,可以直接在路由器上安装(需要安装 tcpdump 或 wireshark 包,但通常硬件性能有限,建议在电脑上操作)。
  2. 选择抓包接口:

    • 如果在电脑上抓包,连接到软路由的 LAN 口,确保流量经过路由器。

    • 打开 Wireshark,选择正确的网络接口(比如连接路由器的网卡,通常是 Ethernet 或 Wi-Fi 接口)。

    • 如果在路由器上抓包,SSH 登录路由器,使用 tcpdump 命令抓取 WAN 接口流量,例如:

      bash
      重击

      tcpdump -i eth0 -w capture.pcap
      

      然后将 capture.pcap 文件传输到电脑,用 Wireshark 打开。

  3. 开始抓包:

    • 点击 Wireshark 的“Start Capturing Packets”按钮,或者在路由器上运行 tcpdump。

    • 为了生成流量,可以在电脑上 ping 一个外部地址(如 ping 8.8.8.8)或下载文件,确保抓到 WAN 口的 PPPoE 数据包。已经通过tcpdump抓包,用Wireshark怎么分析这个数据包,并确定链路层适配值

在用 tcpdump 抓包生成 capture.pcap 文件后,你可以用 Wireshark 打开并分析数据包,以确定 PPPoE 接入下的链路层适配值(即开销/overhead)。以下是具体步骤,帮助你分析数据包并计算出适合 OpenWrt SQM 配置的数值:


步骤 1:打开抓包文件

  1. 启动 Wireshark:

  2. 导入 pcap 文件:

    • 点击菜单栏的 File -> Open,选择你从路由器传输过来的 capture.pcap 文件(如 ./capture.pcap)。

    • 文件加载后,你会看到数据包列表。


步骤 2:筛选 PPPoE 数据包

  1. 应用过滤器:

    • 在 Wireshark 上方的过滤栏输入:

      pppoes
      

      然后按回车。这会筛选出 PPPoE 会话(PPPoE Session)数据包,因为你使用的是 PPPoE 接入。

    • 如果没有数据包显示,尝试输入 eth 或清空过滤器,检查是否抓到了 WAN 接口的流量。

  2. 确认抓包接口:

    • 确保抓包是在 WAN 接口(如 pppoe-wan)进行的。如果抓的是 LAN 侧流量,可能看不到 PPPoE 头部,需要重新抓包。

步骤 3:分析数据包结构

  1. 选择一个数据包:

    • 在数据包列表中,找到一个标记为 PPPoE Session 的数据包,点击它。

    • 下方的“Packet Details”面板会显示该数据包的层级结构。

  2. 展开链路层相关部分:

    • Wireshark 会按层级显示数据包内容,重点关注以下部分:

      • Ethernet II(以太网帧):

        • 展开此层,查看:

          • Destination MAC(6 字节)
            目标 MAC(6 字节)

          • Source MAC(6 字节)

          • Type(2 字节,通常是 0x8864 表示 PPPoE)

          • 长度:固定 14 字节。

        • 检查是否有 VLAN:

          • 如果 Type 是 0x8100(VLAN),会多出一个 4 字节的 VLAN Tag(包含优先级和 VLAN ID)。
      • PPPoE(Point-to-Point Protocol over Ethernet):
        PPPoE(以太网上的点对点协议):

        • 展开 Point-to-Point Protocol over Ethernet Session:

          • Version(1 字节)
            版本(1 字节)

          • Type(1 字节)

          • Code(1 字节,通常是 0x00 表示会话数据)

          • Session ID(2 字节)
            会话 ID(2 字节)

          • Length(2 字节)

          • 长度:固定 8 字节。

      • PPP(Point-to-Point Protocol):
        PPP(Point-to-Point Protocol)协议):

        • 展开此层,通常是 2-4 字节(协议字段,如 0x0021 表示 IPv4)。
    • FCS(帧校验序列):

      • 以太网帧末尾的 4 字节校验字段,Wireshark 默认不显示,但实际存在。
  3. 计算链路层开销:

    • 从最外层(Ethernet)到 PPPoE 的结束位置(不包括 PPP 和上层协议),计算总字节数:

      • 无 VLAN:Ethernet (14) + PPPoE (8) + FCS (4) = 26 字节。
        无 VLAN:以太网 (14) + PPPoE (8) + FCS (4) = 26 字节。

      • 有 VLAN:Ethernet (14) + VLAN (4) + PPPoE (8) + FCS (4) = 30 字节。
        有 VLAN:以太网 (14) + VLAN (4) + PPPoE (8) + FCS (4) = 30 字节。

    • 注意:PPP 部分(2-4 字节)通常不计入 SQM 的链路层开销,因为它属于更高层协议。


步骤 4:验证数据包

  1. 检查多个数据包:

    • 重复步骤 3,分析几个不同的 PPPoE 数据包,确保结果一致。

    • 如果有 VLAN 标记(0x8100),所有数据包都应包含额外的 4 字节。

  2. 查看总长度:

    • 在数据包顶部,Wireshark 会显示“Frame”信息,例如:

      Frame 1: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
      
    • 这是整个数据包的长度(包括 FCS)。减去 IP 和上层协议的长度(通常从 PPP 后的 IPv4 开始),可以验证链路层部分。

  3. 确认 DSCP 或其他封装:

    • 如果你的 ISP 使用了额外的封装(如 MPLS),可能会增加开销,但这在 PPPoE 中不常见。如果看到异常头部,可以进一步分析。

步骤 5:确定链路层适配值

根据分析结果:

  • 26 字节:标准 PPPoE,无 VLAN。

  • 30 字节:PPPoE + VLAN(常见于某些光纤接入)。

  • 34-44 字节:如果有额外的封装或对齐要求(较少见,需抓包确认)。

推荐值:

  • 如果不确定是否有 VLAN,从 30 字节 开始测试(假设可能有 VLAN)。

  • 在 OpenWrt SQM 配置中:

    • 链路层适配:Ethernet with overhead
      链路层适配:以太网带开销

    • 开销(Overhead):填入 30(或根据抓包结果调整)。


示例分析

假设一个数据包显示:

- Ethernet II (14 bytes)
  - Destination: 00:11:22:33:44:55
  - Source: 66:77:88:99:aa:bb
  - Type: 0x8864 (PPPoE)
- PPPoE Session (8 bytes)
  - Version: 1
  - Type: 1
  - Code: 0x00
  - Session ID: 0x1234
  - Length: 42
- PPP (2 bytes)
- IPv4 (20 bytes)
  • 计算:14 (Ethernet) + 8 (PPPoE) + 4 (FCS) = 26 字节。
    计算:14 (以太网) + 8 (PPPoE) + 4 (FCS) = 26 字节。

  • 如果 Type 为 0x8100,后面跟 0x8864,则加 4 字节,总计 30 字节。


步骤 6:应用并测试

  1. 配置 SQM:

    • 在 LuCI 的 Network -> SQM QoS 中,设置:

      • 队列算法:cake

      • 脚本:layer_cake.qos(或其他)

      • 链路层适配:Ethernet with overhead
        链路层适配:以太网带开销

      • 开销:30(根据分析调整)。

    • 保存并应用。

  2. 测试效果:

    • 运行高负载任务(如下载)并同时 ping 测试(ping 8.8.8.8)。

    • 如果延迟稳定,说明开销值合适;如果仍有缓冲区膨胀,尝试增加到 34 或减少到 26,微调至最佳。


注意事项

  • 抓包位置:确保抓的是 WAN 侧流量(pppoe-wan),LAN 侧看不到 PPPoE 头部。

  • FCS 不显示:Wireshark 默认不显示 4 字节 FCS,但计算时需加上。

  • 异常情况:如果发现额外封装(超出 30 字节),可能是 ISP 特定的协议,需联系 ISP 确认。


总结

通过 Wireshark 分析 capture.pcap,你可以:

  1. 确认以太网和 PPPoE 头部字节数(通常 26 或 30)。

  2. 检查是否有 VLAN(加 4 字节)。

  3. 将结果应用到 SQM 的链路层适配中。

登录

注册

重设密码

请输入您的用户名或电子邮箱地址。您会收到一封包含创建新密码链接的电子邮件。