RT ,
因,v2ex.com/t/850496 ,让我又把这个问题抛出来了。
op 拨号下,打开 iptv rstp 流 慢,换台慢 ,播放正常。 但,切换到 hw 光猫拨号,vlan 类型 选择完全锥形,换台切换,都是秒开。
用 vlc 客户端测试,在首选项 解码 -> live555 流 -> 选择 rtp over rtsp ( tcp ) 也秒开; 选 http ,要等半天。
请问,有知道问题出在哪里吗?
tcpdump 日志如下:
1
a8Fy37XzWf70G0yW 2022-05-02 21:43:19 +08:00
看上去像是傳輸擁塞控制方面所導致的問題。(因爲部分路由器不是小包優先通過的策略)
|
2
huangya 2022-05-03 13:08:16 +08:00
我是你引用帖的 op, 你的问题不一定与我相同。我的问题基本已经解决。只是还有一个问题没有搞清楚。你的 tcpdump 没有显示出来。append 一下,我可以帮忙看看。
|
3
cloudsigma OP |
4
cloudsigma OP @huangya 增加了图片,麻烦有空帮忙一起研究下,谢谢!从 wireshark 分析:
server 先发 udp ,op 回发 icmp ,显示 server 端口不可用。来回几次后,server 发 udp ,op 就是不回包,发 n 次包后,vlc 客户端 改发 tcp ,这时,切换成功。 |
5
huangya 2022-05-03 19:35:29 +08:00
这个问题看起来是因为路由器阻止了 112.86.202.42 发过来的包。
LAN PC(port x,z) -- router(port y, z) -- Internet server 通常来讲,internet server 那边的包能通过 router, 必须要从 LAN PC 这边先丢一个 udp 包过去,不然 router 的防火墙会挡。 那从 LAN PC 发出去的包,经过 router 的 NAT , 源 port x 会变成 port y 。x 与 y 可能相等,也可能不等。相等就是完全锥形。一般来讲,不管相等还是不等,后续从 internet server 这边过来的包都可以顺利通过 router 的防火墙到达 LAN PC. 但现在你的情况是看起来是路由器阻止了 112.86.202.42 发过来的包。又根据你的说法,“切换到 hw 光猫拨号,vlan 类型 选择完全锥形,换台切换,都是秒开。”所以我怀疑 OpenWRT 对 udp 不完全锥形有 bug. 你可以: 1. 在 OpenWRT 系统,确认 x 和 y 是否相等。 2. 如果 internet server IP 地址固定,在 OpenWRT 系统,防火墙设置把所有这个 internet server IP 的包全部 port forwarding 到你的 vlc client IP 中。目的是让 OpenWRT 的防火墙不要丢掉进来的包。为了防止干扰,先关掉机顶盒。 |
6
cloudsigma OP @huangya port x 和 port y 相同。
添加 iptables -I FORWARD -p udp -j ACCEPT ,问题依旧。应该不是防火墙问题。 vlc 客户端测试,在首选项 解码 -> live555 流 -> 对比 rtp over rtsp ( tcp )和 http 的抓包,显示,http 下,多了个 RTCP 和 ICMP ,其中 RTCP 走的时 udp 协议。难道是 op 对应用层协议 RTCP 兼容性有问题? |
7
cloudsigma OP @huangya hw 光猫 里有应用层协议支持: 包括 RTCP RTSP 等。RTCP 应该需要 端口完全锥形
|
8
huangya 2022-05-03 21:52:56 +08:00
@cloudsigma
>添加 iptables -I FORWARD -p udp -j ACCEPT ,问题依旧。应该不是防火墙问题。 不是这样设置,在 http://router-ip/cgi-bin/luci/admin/network/firewall/forwards 添加端口转发。添加后,看看是否 router 还会对 server 发送 icmp destination unreachable port unreachable. 你上传的 udp 包截图中可以看到这样的 icmp 包。 |
9
huangya 2022-05-03 21:54:53 +08:00
@cloudsigma 你说了 port x 和 port y 相同,就表示 OP 已经支持端口完全锥形了
|
10
cloudsigma OP @huangya iptv server 应该不会主动给客户端发包,所以不存在需要在防火墙上加端口转发到内网 ip 的 port 。估计是 openwrt 对 RTCP 应用层协议支持度不够造成的,我放弃折腾了,改光猫拨号了。
|
11
bclerdx 2022-05-04 10:17:13 +08:00 via Android
@viberconnection 什么是小包有限策略?
|