我使用 Synergy 在 Linux 桌面和 MacBook Air 之间共享键盘和鼠标。每次我开始移动鼠标(或开始输入)时,都会出现非常明显的延迟,但只要我不停止移动鼠标(或输入),一切都会变得顺畅。
查看了两端的数据包转储后,似乎 synergy 服务器几乎立即开始发送 TCP 数据包,但 synergy 客户端直到很晚才开始接收它们(例如,在一种情况下是 288 毫秒)。
我的无线路由器可以缓冲初始数据包吗(有点类似于 TCP 中的 Nagle 算法)?
我的设置
- 无线路由器:NetGear WNDR3300
- 运行 synergy 服务器的 Linux 桌面共享其键盘和鼠标
- 以太网连接到路由器(192.168.1.13)
- MacBook Air 笔记本电脑运行协同客户端
- 无线连接路由器(192.168.1.16)
- Ping 时间:1ms 至 3ms
- Synergy 版本 1.4.10
细节
查看下面的数据包转储,我们可以看到服务器在 09:58:02.782 开始报告鼠标移动(数据包 #69135-69144),但仅在 288ms 后于 09:58:03.070 收到第一个确认(数据包 #69146)。事实上,服务器甚至在收到第一个确认之前就重传了数据包 #69145 中的更新。
另一方面,客户端仅在 09:58:03.069 开始接收更新。这意味着延迟为 288ms,但随着交换的数据包增多,延迟会显著降低。
服务器数据包转储
No. Time Source Destination Protocol Length Info
69135 09:58:02.782930 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235851 Ack=159785 Win=114 Len=12 TSval=22033564 TSecr=1176772351
69136 09:58:02.790841 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235863 Ack=159785 Win=114 Len=12 TSval=22033566 TSecr=1176772351
69137 09:58:02.799139 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235875 Ack=159785 Win=114 Len=12 TSval=22033568 TSecr=1176772351
69138 09:58:02.806898 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235887 Ack=159785 Win=114 Len=12 TSval=22033570 TSecr=1176772351
69139 09:58:02.815360 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235899 Ack=159785 Win=114 Len=12 TSval=22033572 TSecr=1176772351
69140 09:58:02.823324 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235911 Ack=159785 Win=114 Len=12 TSval=22033574 TSecr=1176772351
69141 09:58:02.831131 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235923 Ack=159785 Win=114 Len=12 TSval=22033576 TSecr=1176772351
69142 09:58:02.839354 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235935 Ack=159785 Win=114 Len=12 TSval=22033578 TSecr=1176772351
69143 09:58:02.846889 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235947 Ack=159785 Win=114 Len=12 TSval=22033580 TSecr=1176772351
69144 09:58:02.855029 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=235959 Ack=159785 Win=114 Len=12 TSval=22033582 TSecr=1176772351
69145 09:58:03.025003 192.168.1.13 192.168.1.16 synergy 186 [TCP Retransmission] 24800 > 60966 [PSH, ACK] Seq=235851 Ack=159785 Win=114 Len=120 TSval=22033625 TSecr=1176772351
69146 09:58:03.070263 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159785 Ack=235863 Win=8191 Len=0 TSval=1176774186 TSecr=22033564
69147 09:58:03.070519 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159785 Ack=235875 Win=8190 Len=0 TSval=1176774186 TSecr=22033566
69148 09:58:03.070530 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159785 Ack=235887 Win=8191 Len=0 TSval=1176774186 TSecr=22033568
69149 09:58:03.071303 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159785 Ack=235887 Win=8192 Len=8 TSval=1176774186 TSecr=22033568
69150 09:58:03.071322 192.168.1.13 192.168.1.16 TCP 66 24800 > 60966 [ACK] Seq=235971 Ack=159793 Win=114 Len=0 TSval=22033636 TSecr=1176774186
69151 09:58:03.073834 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235899 Win=8191 Len=0 TSval=1176774187 TSecr=22033570
69152 09:58:03.073854 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235911 Win=8190 Len=0 TSval=1176774187 TSecr=22033572
69153 09:58:03.074433 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235923 Win=8189 Len=0 TSval=1176774187 TSecr=22033574
69154 09:58:03.074452 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235935 Win=8189 Len=0 TSval=1176774187 TSecr=22033576
69155 09:58:03.074459 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235947 Win=8188 Len=0 TSval=1176774187 TSecr=22033578
69156 09:58:03.074464 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235959 Win=8187 Len=0 TSval=1176774187 TSecr=22033580
69157 09:58:03.074468 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=159793 Ack=235971 Win=8186 Len=0 TSval=1176774187 TSecr=22033582
69158 09:58:03.074483 192.168.1.13 192.168.1.16 synergy 150 24800 > 60966 [PSH, ACK] Seq=235971 Ack=159793 Win=114 Len=84 TSval=22033637 TSecr=1176774187
69159 09:58:03.074490 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159793 Ack=235971 Win=8192 Len=8 TSval=1176774187 TSecr=22033582
69160 09:58:03.074499 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159801 Ack=235971 Win=8192 Len=8 TSval=1176774187 TSecr=22033582
69161 09:58:03.074550 192.168.1.13 192.168.1.16 TCP 66 24800 > 60966 [ACK] Seq=236055 Ack=159809 Win=114 Len=0 TSval=22033637 TSecr=1176774187
69162 09:58:03.075162 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159809 Ack=235971 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
69163 09:58:03.075177 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159817 Ack=235971 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
69164 09:58:03.075188 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=159825 Ack=235971 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
69165 09:58:03.075191 192.168.1.16 192.168.1.13 TCP 66 [TCP Dup ACK 69164#1] 60966 > 24800 [ACK] Seq=159833 Ack=235971 Win=8192 Len=0 TSval=1176774189 TSecr=22033625
客户端数据包转储
No. Time Source Destination Protocol Length Info
5020 09:58:03.069606000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17603 Ack=11921 Win=114 Len=12 TSval=22033564 TSecr=1176772351
5021 09:58:03.069662000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17615 Ack=11921 Win=114 Len=12 TSval=22033566 TSecr=1176772351
5022 09:58:03.069753000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17627 Ack=11921 Win=114 Len=12 TSval=22033568 TSecr=1176772351
5023 09:58:03.069791000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11921 Ack=17615 Win=8191 Len=0 TSval=1176774186 TSecr=22033564
5024 09:58:03.069792000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11921 Ack=17627 Win=8190 Len=0 TSval=1176774186 TSecr=22033566
5025 09:58:03.069849000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11921 Ack=17639 Win=8191 Len=0 TSval=1176774186 TSecr=22033568
5026 09:58:03.070526000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11921 Ack=17639 Win=8192 Len=8 TSval=1176774186 TSecr=22033568
5027 09:58:03.070674000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17639 Ack=11921 Win=114 Len=12 TSval=22033570 TSecr=1176772351
5028 09:58:03.070678000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17651 Ack=11921 Win=114 Len=12 TSval=22033572 TSecr=1176772351
5029 09:58:03.070679000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17663 Ack=11921 Win=114 Len=12 TSval=22033574 TSecr=1176772351
5030 09:58:03.070680000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17675 Ack=11921 Win=114 Len=12 TSval=22033576 TSecr=1176772351
5031 09:58:03.070681000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17687 Ack=11921 Win=114 Len=12 TSval=22033578 TSecr=1176772351
5032 09:58:03.070682000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17699 Ack=11921 Win=114 Len=12 TSval=22033580 TSecr=1176772351
5033 09:58:03.070682000 192.168.1.13 192.168.1.16 synergy 78 24800 > 60966 [PSH, ACK] Seq=17711 Ack=11921 Win=114 Len=12 TSval=22033582 TSecr=1176772351
5034 09:58:03.070799000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17651 Win=8191 Len=0 TSval=1176774187 TSecr=22033570
5035 09:58:03.070799000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17663 Win=8190 Len=0 TSval=1176774187 TSecr=22033572
5036 09:58:03.070800000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17675 Win=8189 Len=0 TSval=1176774187 TSecr=22033574
5037 09:58:03.070800000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17687 Win=8189 Len=0 TSval=1176774187 TSecr=22033576
5038 09:58:03.070801000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17699 Win=8188 Len=0 TSval=1176774187 TSecr=22033578
5039 09:58:03.070834000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17711 Win=8187 Len=0 TSval=1176774187 TSecr=22033580
5040 09:58:03.070835000 192.168.1.16 192.168.1.13 TCP 66 60966 > 24800 [ACK] Seq=11929 Ack=17723 Win=8186 Len=0 TSval=1176774187 TSecr=22033582
5041 09:58:03.070944000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11929 Ack=17723 Win=8192 Len=8 TSval=1176774187 TSecr=22033582
5042 09:58:03.071374000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11937 Ack=17723 Win=8192 Len=8 TSval=1176774187 TSecr=22033582
5043 09:58:03.072831000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11945 Ack=17723 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
5044 09:58:03.073123000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11953 Ack=17723 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
5045 09:58:03.073432000 192.168.1.16 192.168.1.13 synergy 74 60966 > 24800 [PSH, ACK] Seq=11961 Ack=17723 Win=8192 Len=8 TSval=1176774189 TSecr=22033582
5046 09:58:03.073561000 192.168.1.13 192.168.1.16 synergy 186 [TCP Retransmission] 24800 > 60966 [PSH, ACK] Seq=17603 Ack=11921 Win=114 Len=120 TSval=22033625 TSecr=1176772351
5047 09:58:03.073599000 192.168.1.16 192.168.1.13 TCP 66 [TCP Dup ACK 5045#1] 60966 > 24800 [ACK] Seq=11969 Ack=17723 Win=8192 Len=0 TSval=1176774189 TSecr=22033625
答案1
我昨天才发现,在无线路由器上设置非常低的信标间隔可以解决信号不连贯的问题。
对于我来说,数据包到达的顺序是混乱的,导致捷克重音元音(可能在较长的数据包中)比周围的辅音更早或更晚到达。
我已经将信标设置从100毫秒只是5毫秒尽管 10ms 应该足够了(您需要让 Synergyied 机器上的无线网卡保持忙碌状态,以防止它们进入睡眠状态)。
我想警告大家这个解决方案有以下缺点:
- 我没有研究安全影响更频繁地发送无线信标(即使我的是 WPA2 情况)。也许这样的 AP 可以被更快地破解。
- 防止无线客户端进入睡眠状态可以从其电池中消耗更多电量(例如:手机)。
- 过于频繁地发送信标可能会降低无线网络的有用吞吐量(需要更多测试)。