标签: linux-networking

ksoftirqd 在与 ixgbe 驱动程序的接口上达到 100%

这是我的司机信息。

ethtool -i ethXX
driver: ixgbe
version: 3.9.15-NAPI
firmware-version: 0x800000a5
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
Run Code Online (Sandbox Code Playgroud)

现在我有 1/1.5 Gbps(每秒 75k 数据包)的平均流量到达这个接口,我可以看到一个/或多个 ksoftirqd 线程达到 100%。

我尝试启用 rx-usecs/rx-frames 选项,但没有改进。有点延迟对我来说不是问题。我只想减少 ksoftirqd 的使用。

我看到 rx-usecs 的限制是 1022,这是之后应该触发下一个中断的 usecs(这是我的理解,如果我错了,请纠正我)。虽然它不能解决我的问题。

另一方面,此驱动程序不支持 rx 帧。也不支持“adaptive-rx”。

我应该关注的下一步是什么?任何帮助是极大的赞赏。

linux-networking high-load

5
推荐指数
1
解决办法
3449
查看次数

由于高系统 CPU 负载 (%sys) 导致的高负载平均值

我们有高流量网站的服务器。最近我们从

2 x 4 核服务器(/proc/cpuinfo 中的 8 核),32 GB RAM,运行 CentOS 5.x,以

2 x 4 核服务器(/proc/cpuinfo 中有 16 核),32 GB RAM,运行 CentOS 6.3

运行 nginx 作为代理的服务器、mysql 服务器和 sphinx-search。

流量很高,但 mysql 和 sphinx-search 数据库相对较小,通常一切都运行得非常快。

今天服务器的平均负载为 100++。查看 top 和 sar,我们注意到 (%sys) 非常高 - 50% 到 70%。磁盘利用率不到 1%。我们尝试重新启动,但重新启动后问题存在。在任何时候服务器至少有 3-4 GB 的可用内存。

只有 dmesg 显示的消息是“端口 80 上可能发生 SYN 泛洪。正在发送 cookie。”。

这是sar的片段

11:00:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
11:10:01        all     21.60      0.00     66.38      0.03      0.00     11.99
Run Code Online (Sandbox Code Playgroud)

我们知道这是交通问题,但我们不知道将来如何进行以及在哪里检查解决方案。

有没有办法我们可以找到那些“66.38%”的确切使用位置。

任何建议,将不胜感激。


更新:今天平均负载“正常”,“sys%”也正常~4%。然而,今天的流量比昨天减少了大约 20-30%。这让我觉得昨天的问题是因为 TCP 的一些内核设置。

linux linux-networking high-load

5
推荐指数
1
解决办法
5878
查看次数

ping 请求未在一个方向转发

编辑:就在我完成这篇超长的帖子时,我解决了我的问题。我根本没有在我的 Windows 防火墙中启用 ping 回复,这就是为什么我无法从网络 1 或 2 ping 网络 0 上的计算机(见下文)。当然,当我尝试 ping 网络 0 上的互联网路由器时,它不起作用,因为我忽略了在其上设置非默认网关,就像我在 Windows 上设置的一样。

所以,我给你一个“正确”的方法来设置一个 linux box 作为子网之间的简单网关。请记住在客户端上正确设置所有网关(简单规则:默认网关应该是到 Internet 的路由,然后为连接到子网中其他网关的每个子网设置 1 个网关。

我正在创建一个带有连接 3 个子网的 Ubuntu linux 机器的测试网络。这是我的拓扑:

               ***********************
               * Internet Router     *
               *    192.168.2.1      *
               ***********************
                         *                   ***************
                         *                   *  Client 0   *
                   ***************           *192.168.2.117*
                   * Switch      * * * * * * *  Windows    *
                   ***************           ***************
                         *                               
                         *  192.168.2.0/24 = Network 0
                         *
 Network 1         ***************        Network 2
192.168.1.0/24     *    eth0     *       10.25.0.0/16 …
Run Code Online (Sandbox Code Playgroud)

networking linux routing gateway linux-networking

5
推荐指数
1
解决办法
1276
查看次数

如何使用 CentOS 6 永久删除/删除路线中的线路

root@new [~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
178.18.23.200   0.0.0.0         255.255.255.255 UH    0      0        0 eth0
178.18.23.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
176.0.0.0       0.0.0.0         248.0.0.0       U     0      0        0 eth0
0.0.0.0         178.18.23.253   0.0.0.0         UG    0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

我可以删除 176.0.0.0 条目

route delete -net 176.0.0.0/5
Run Code Online (Sandbox Code Playgroud)

这有效,但重启后这条线又回来了。知道如何永久删除它吗?

route centos linux-networking deleting

5
推荐指数
1
解决办法
6万
查看次数

WMI:wmic linux 代理查询错误:NTSTATUS: NT_STATUS_ACCESS_DENIED

我自己是 wmic 的新手,并一直尝试使用默认代理查询方法。

wmic 是基于 linux 的 WMI 工具,用于与 windows WMI 代理交谈。在尝试使用 wmic 从 nt(运行 WMI 服务的 win7)获取数据时,它显示在所有情况下都拒绝访问。

问题是可能的原因是什么,是防火墙端口、WMI 组、文件或用户权限还是其他原因?任何类型的提示都会非常有帮助。

[root@rhel6 wmic]# wmic -U nt-login-name% //nt-primary-ip "select caption, name, parentprocessid, processid from win32_process"

[librpc/rpc/dcerpc_util.c:1290:dcerpc_pipe_auth_recv()] Failed to bind to uuid 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 - NT_STATUS_NET_WRITE_FAULT
[librpc/rpc/dcerpc_connect.c:790:dcerpc_pipe_connect_b_recv()] failed NT status (c0000022) in dcerpc_pipe_connect_b_recv
[wmi/wmic.c:196:main()] ERROR: Login to remote object.

NTSTATUS: NT_STATUS_ACCESS_DENIED - Access denied
Run Code Online (Sandbox Code Playgroud)

linux opennms wmi linux-networking

5
推荐指数
1
解决办法
1万
查看次数

当服务器从某个 IP 接收到一定数量的数据时禁止该 IP

我需要的 :

通过每圈时间的请求量添加删除规则有很多结果,但我需要在一段时间内删除来自特定地址的接收字节数。

我调查的内容:

我查看了 iptables :对于第一种情况,我看到了一个专用match。我也看到了配额匹配,但是数据计数是全局跟踪的。
我不知道如何混合这两个规则来跟踪每个 IP 收到的数据。

其他事情 :

我知道跟踪每个 IP 的字节数可能会使用大量内存,这就是为什么我也希望保持较短的时间段。
我可以接受其他方法,只要有详细示例即可。

firewall denial-of-service linux-networking

5
推荐指数
1
解决办法
487
查看次数

是否可以在 MacOS 上执行 Linux 网络命名空间 (netns)?

上下文 - 我正在尝试在 MacOSX 上运行 docker 集群。

运行 docker 的安装过程的一部分是安装pipework

管道依赖 /var/run/netns

我的问题是:Mac OS X 是否有等效的 netns?

linux mac-osx linux-networking network-namespace docker

5
推荐指数
1
解决办法
6613
查看次数

通过 RDMA 网络设备传递到 docker 容器

我想将 infiniband 传递到 docker 容器,以便我可以通过 ipoib 运行一些高性能应用程序并使用 rdma。

目前,我正在使用 xen 虚拟机执行此操作。现在我正在考虑使用 CoreOS 和 docker 作为重量更轻且更易于管理的替代方案。

我有一个 IPoIB 设备 ib0,分配给它的静态 IP 为 10.10.10.10。我已经设法通过以下方式将其暴露在 docker 容器中:

docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm -t -i ubuntu:14.04 /bin/bash

太好了,这有效。ib0 在 docker 容器内可用。

现在假设我有一个双端口 HCA。在主机上,它们显示为 ib0 和 ib1,并分配了两个 ip。10.10.10.10/ib0 和 10.10.10.11/ib1

现在我想将 ib0 传递给第一个容器,将 ib1 传递给第二个。由于 --net=host 选项,使用上述方法两者都会出现在两个容器中。但是,不指定它意味着设备根本不会出现。

另一种情况是我有很多机器使用 SR-IOV 将 infiniband 设备传递到 xen 虚拟机。我如何才能将虚拟功能 infiniband 设备传递给 docker 容器并使其出现?

注意:管道在这种情况下不起作用,但如果我更好地理解它,它可能会被黑客入侵以做我想做的事。我只是不太明白它在做什么......还没有。

linux infiniband linux-networking docker

5
推荐指数
1
解决办法
3690
查看次数

使用 iptables 负载平衡网络流量

我正在尝试在具有两个网关的 linux 路由器上对来自内部 LAN 的流量进行负载平衡。最初我选择了 iproute 实现,它没有按预期平衡负载,原因是路由被缓存。

现在我使用 iptables 使用 CONNMARK 标记每个新连接,然后添加规则以通过不同的网关路由这些标记的连接。

Eth0 - 局域网,Eth1 - ISP1,Eth2 - ISP2

以下是我正在使用的脚本,

#!/bin/bash

echo 1 >| /proc/sys/net/ipv4/ip_forward
echo 0 >| /proc/sys/net/ipv4/conf/all/rp_filter

#   flush all iptables entries
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT

# initialise chains that …
Run Code Online (Sandbox Code Playgroud)

routing iptables load-balancing linux-networking

5
推荐指数
1
解决办法
5833
查看次数

在centos 7中使用Firewall-cmd创建地址特定限制

如何使用 firewall-cmd 工具(新的 firewalld)创建防火墙规则,以便限制特定网络仅访问一项服务,并允许一个区域中的所有服务。

例如:

我只有一个接口 eno1,它与公共区域相关联。该区域启用了 Http 和 https 服务。我想在该区域启用 ssh 访问,但我想限制对网络的 ssh 访问(例如 100.0.0.0/8)

做这个的最好方式是什么?

linux fedora linux-networking firewalld centos7

5
推荐指数
1
解决办法
5577
查看次数