Skip to content

能否实现rtp2httpd直接识别带vlan tag标签的组播数据的功能 #742

Open

Description

@liujievs

感谢开发,有个想法您看下有没有机会实现。
使用10g epon猫棒或者SFU光猫情况下,为全透传模式,路由器wan端接收到的组播数据是带vlan tag标签的数据,无法被rtp2httpd识别,需使用网管交换机、openwrt或ros来剥离掉tag标签,但爱快路由器不具备这样的功能,后期能否实现rtp2httpd直接识别带vlan tag标签的组播数据的功能(rtp2httpd内剥离vlan tag标签,再转单播)?

Activity

  1. stackia commented on Sep 3, 2026

    @stackia
    Owner

    不需要在 rtp2httpd 里解析或剥离 802.1Q。组播收包走的是普通 UDP socket + IGMP join,内核不会把带 VLAN tag 的帧交给物理口(如 eth0)上的 IP/UDP socket,所以绑定物理口确实收不到全透传过来的 tagged 组播。

    直接把上游接口写成 eth0.12 可以工作,但前提是系统里已经有这个内核设备。 配置里写 eth0.12 并不会创建 VLAN,也不会替内核剥 tag。正确顺序是:

    1. 先在操作系统里建好 VLAN 子接口(内核 8021q 模块会在收包时剥 tag、发包时加 tag):
    ip link add link eth0 name eth0.12 type vlan id 12
    ip link set eth0.12 up
    1. 再让 rtp2httpd 绑定这个已经存在的设备:
    upstream-interface-multicast = eth0.12
    # 如果 FCC 也走同一 VLAN,可以直接
    # upstream-interface = eth0.12

    接口不存在时日志会报 Multicast: interface eth0.12 does not exist。

    接口名必须是 ip link 能看到的内核设备名,不一定叫 eth0.12:

    • OpenWrt DSA 常见 wan.85 / eth0.85 / br-vlan85
    • 爱快「基于 VLAN 的混合模式」常见 vwan* 一类虚拟线路名。爱快需要先在网卡/线路里创建对应 VLAN 虚拟接口,再在 rtp2httpd 插件里填这个名字;插件不会替系统建 VLAN。

    不会做进程内剥 tag(AF_PACKET 解析 802.1Q 再自己发带 tag 的 IGMP)。那是内核 VLAN 子接口的职责,rtp2httpd 也不是 VLAN 管理器。

    文档补充见 #743

  2. stackia commented on Sep 3, 2026

    @stackia
    Owner

    我让 AI 分析可能性,结果上面 AI 自己就回复了。。

    rtp2httpd 是应用态程序,并不太容易实现 vlan tag 剥离。还是需要在系统层面配置 vlan 子接口,然后设置为 rtp2httpd 组播上游接口。

  3. liujievs commented on Sep 3, 2026

    @liujievs
    Author

    按照上述方法,设置了组播vlan的虚拟接口vwan_zb,在rtp2httpd中设置组播上游接口为vwan_zb,现应用能够识别组播数据,但只能播放第一个频道,无法切台,fcc也提示timeout。是否这几个上游端口设置有问题?

    Image Image Image Image
  4. lqzhj commented on Sep 14, 2026

    @lqzhj

    更正:
    魔都电信桥接,单线融合,openwrt正常实现rtp2httpd功能的前提下,飞牛原生rtp2httpd 功能实现参考(含FCC功能)
    SSH飞牛后台:
    ip link add link enp4s0 name iptv type vlan id 85
    ip link set iptv up
    dhclient -4 iptv(FCC能正常工作的关键一步,整个内网最好只有一个含DHCP客户端的组播vlan)

    rtp2httpd 绑定创建的虚拟网口:
    upstream-interface-multicast = iptv

  5. igmp666 commented on Sep 24, 2026

    @igmp666

    你的FCC上游接口要填 vwan_iptv !FCC用的是单播地址,必须是IPTV拨号线路,不能是组播线路。暂时先不用FCC,看能否正常换台。正常之后再开FCC,一步一步来。此外,你至少能做到在内网设备能 ping 通 FCC 服务器再说。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions