我正在研究是否可以在 Windows 上实现一个 HPC 应用程序,该应用程序使用十几个或最多 200 个多播组(即使用 MSI-X 和 RSS,我可以)以高速率接收小型 UDP 多播数据报(主要是 100-400 字节)扩展到多个内核),对每个数据包进行一些处理,然后将其发送出去。通过 TCP 发送我设法达到了我需要的程度(6.4Gb/秒)而没有撞墙,但是以高 pps 速率接收数据报却成了一个问题。
在最近对 Windows 2012 R2 上带有 2 端口 10Gb 以太网 NIC 的高规格 NUMA 机器进行的测试中,我每秒只能接收数十万个 UDP 数据报(早期丢弃,即没有实际处理数据,使用 2x12 内核从等式中删除我的应用程序的处理开销以查看它的速度有多快,并且测试的 12 个多播组的内核部分似乎分布在一个 NUMA 节点的 8 或 10 个内核上(设置了最大 RSS 队列)到 16) - 尽管使用 .net 应用程序,因此本机应用程序应该能够运行得更快。
但即使是Len Holgate 在他的高性能 Windows RIO 测试中也只能以 500kpps 的速度接收 UDP 数据包,使用 1024 …
我正在使用 tcpdump 来捕获多播数据包,并且必须编写一个自定义程序来加入多播源,以便 tcpdump 将“看到”数据包。只是想知道 netcat 或任何其他应用程序是否可以执行此功能?
Wireguard 最近非常热门,这是当之无愧的。我也渴望用 Wireguard 取代 OpenVPN。
然而,与 OpenVPN 不同的是,Wireguard 仅支持 UDP。我喜欢使用 TCP 端口 443,因为该端口可能不会被防火墙阻止。OpenVPN 甚至可以选择使用 HTTP 代理。这非常酷,因为它使我能够在没有互联网路由并要求用户使用网络代理的网络中获得完整、不受限制的互联网访问。
我怎样才能用wireguard达到同样的效果?适用于 UDP 的 HTTPS 隧道?
假设两个端点都运行 Linux,我对这两个端点都具有完全的 root 访问权限,当然,我也获得了所有相关人员的许可。
我的家庭路由器可以使用端口转发来充当服务器,因此我假设以我的公共 IP 地址作为目的地发送的所有互联网数据包都会命中它(并且只是没有从我的路由器获得任何响应,因为我没有使用该端口 -转发)。
因此,一个 IP 是否可以通过这种方式淹没我的路由器并快速耗尽我的所有每月数据上限?如果这种情况始终存在,就像拒绝服务攻击一样,那么互联网主干网和我的提供商是否会采取任何措施来限制这种情况?由于手机数据上限较小,手机数据提供商是否会采取更多措施来防止这种情况发生?
我在某些 Linux 机器上使用 netcat(请参阅其他问题),但看到了一些意外行为。
与已接受答案中的指南不同,我没有使用 UDP 隧道进行 DNS 查询。我有一个可以登录但不能安装软件的远程服务器,我正在尝试将 UDP 流量从我的计算机传输到服务器,然后设置一个单独的隧道将 UDP 响应从服务器发送回我的机器.
从我的机器到服务器的隧道工作正常,但是在服务器端,侦听来自 UDP 服务器的响应的 netcat 实例将在收到第一个响应后关闭侦听器。所以我可以发送一个请求并得到 1 个响应,但任何后续请求都可以正常发送到服务器,但没有收到响应。使用 netstat 我可以看到在收到响应之前 netcat 正在侦听,但是在收到响应后端口被关闭。
我机器上的 netcat 实例似乎可以很好地处理一切。两台机器都运行 netcat v1.10-38。任何想法发生了什么?
我使用 3G 作为我的主要互联网连接,而 TCP 每天都在变得越来越令人费解。例如:
从 kernel.org 下载非常快:
$wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.8.tar.bz2
Run Code Online (Sandbox Code Playgroud)
几秒钟后增加到~500kB/s!
一些服务器非常慢,例如 www.graphic-pc.com:
同样的事情,用 wget 下载一个大文件,它在一瞬间以 ~30kB/s 开始,然后崩溃到 5-10k 甚至更糟。
网页浏览是不错的,但有点不可靠。随机地,一个页面需要很长时间才能加载甚至无法加载,但重新加载几乎可以立即成功。
现在,我偶然开始在 3G 连接上通过 UDP 使用 OpenVPN,而且 OMG 突然间一切都变得非常快!
同样的 www.graphic-pc.com 现在以 100-200kB/s 的速度拍摄!
笔记:
设置是运行 Ubuntu Lucid 和华为 3G 加密狗的笔记本电脑(所以直接 pppd 连接)。
我几乎可以在白天的任何时间重现这一点,而且我没有移动,所以这显然不是蜂窝环境或互联网拥塞。(虽然没有 VPN 的 kernel.org 有时在晚上会更糟,60kB 左右 - 但使用 VPN 仍然是 500kB!)
对于 2)wireshark 显示重传的数据包,dup ack's,有时甚至乱序。
我试过使用不同的 /proc/sys/net/ipv4 参数(tcp_rmem、window_scaling、tcp_congestion...)似乎没有什么区别。
更新:
在 Windows 7(无 …
我有一个视频流应用程序,它在我的办公室运行良好,但在客户位置却惨遭失败。症状是每隔几秒钟,我就会停止接收 UDP 数据包 2 秒钟,然后流恢复,好像没有任何问题。
我在客户所在地运行了http://www.pingtest.net/,结果非常好。没有丢包和低延迟。我注意到我们两个位置之间的唯一区别是ping google.ca在他们的位置超时但在我的位置有效。
如何测试我所在的网络是否阻止传入的 UDP 数据包?有没有办法让我隔离谁正在丢弃数据包?
从我收集到的 UDP 多播/通过 WiFi 广播不会产生人们想象的速度。WiFi上的UDP单播怎么样?谁能确认后者的速度正常吗?
我已经在 Debian(树莓派模型 b+)上成功设置了一个 OpenVPN 服务器。将协议设置为 TCP 后,它完全按预期工作(通过 VPN 路由互联网,访问本地网络机器),但是当我将协议设置为 UDP(我认为这对于提高速度是可取的)时,我发现我能够ping 任何主机(IP 地址或域名),我可以 telnet 和 ssh(再次是 IP 地址或域),但是当我尝试在浏览器中打开页面时,它似乎进行了初始连接,但随后从未加载。
你有什么想法为什么网页浏览会成为 UDP 模式的问题?
我已经设置了 UFW 来管理 iptables,为此添加了主配置行 before.rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
Run Code Online (Sandbox Code Playgroud)
由于 TCP 一切正常,UDP 几乎可以正常工作,因此我认为问题不在于防火墙/iptables,但我可能是错的。
我的 openvpn 服务器配置是
local 192.168.0.31
dev tun
proto tcp
port 1194
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig 10.8.0.1 …Run Code Online (Sandbox Code Playgroud) 我知道 SSH 可以转发 TCP 端口,而不是 UDP。我不是在寻求帮助来规避此限制(此处涵盖此主题)。
我想知道 SSH 从未获得 UDP 转发能力的原因是什么。
谷歌搜索给了我很多“SSH不能”的答案和一些“这不是微不足道的”。仍然没有答案为什么。
到目前为止,我的猜测是:
我对么?还有更多原因吗?实施可能存在一些严重的技术困难?
udp ×10
networking ×3
tcp ×3
linux ×2
multicast ×2
netcat ×2
tunnel ×2
vpn ×2
3g ×1
connection ×1
openvpn ×1
performance ×1
ssh ×1
ssh-tunnel ×1
windows ×1
wireguard ×1