Articles of networking

Swarm需要在docker中使用overlay来使用多主机networkingfunction

我已经通过示例开始覆盖 ,我有一个简单的查询。 是否可以使用叠加使用多主机networkingfunction而不创buildswarm cluster ? 我不想使用像编织等第三方插件我想使用docker原生networking支持。 我有运行RHEL和3.16+ kernel docker 1.9 3.16+ kernel 。

linux:禁用loopback并通过一个comp的2个eth卡之间的线路发送数据

我有一个与2个乙烯卡,用接插线(从第一个到第二个直接eth。电缆连接)的comp。 Linux安装,我想从第一张网卡发送数据到第二。 我想强制数据包通过电缆传递。 我可以在卡上设置任何IP。 与平,我得到卡上的计数器不断。 是否有可能与TCP / IP套接字? PS。 我需要写一个程序。 这将通过eth发送数据包,所以stackoverflow相关的问题。 可以有一些操作系统依赖的方式,他们也会帮助我

在具有多个接口的服务器上接收多播(linux)

要在我的非默认网卡(dvb)上接收多播,请执行以下操作: 打开一个套接字(AF_INET,SOCK_DGRAM) 在dvb接口上join带有IP_ADD_MEMBERSHIP的多播地址 绑定多播地址(注意,一个常见的错误是绑定“0.0.0.0”,然后在该套接字上接收,甚至你不感兴趣的多播)和端口 此时接收所需多播数据包的唯一方法是在路由表中添加一条规则,通过dvb到达发送者所在的networking(另一个networking),就好像dvb需要回复多播发送者; 让我们说一个源发送者多播模式。 任何人都知道发生了什么事? 这个问题对我来说很烦,因为原则上我不知道发件人的IP地址。

Linux的USB连接/断开事件

您好,我正在一个embedded式Linux设备与usb端口使用g_ether驱动程序的USBnetworking。 当usb插头连接时,dmesg的输出是: g_ether小工具:全速configuration#2:RNDIS 拔下USB电缆时,不会将消息写入dmesg。 使用C如何侦听连接/断开事件? embedded式Linux操作系统没有任何附加function。 没有dbus守护进程或hotplug助手脚本。 我甚至不确定这些是否有用。

Linux UDP接收缓冲区的最大大小

Linux UDP接收缓冲区的最大大小是多less? 我认为这只受可用内存的限制,但是当我设置时 5GB的rmem_max: echo 5000000000 > /proc/sys/net/core/rmem_max 和4GB的实际套接字缓冲区(在Erlang): gen_udp:listen(Port, [{recbuf, 4000000000}]) 当我测量缓冲区利用率时,它显示: # netstat -u6anp | grep 5050 udp6 1409995136 0 :::5050 :::* 13483/beam.smp 我不能超过这个1.4GB。 对于较小的缓冲区大小,例如500MB,实际的缓冲区大小与configuration的值相匹配。 我的系统是Debian 6.0,机器有50GB RAM可用。

我可以从一个已知的MAC地址确定当前的IP吗?

我有一个shell脚本,它使用etherwake来唤醒本地networking上的一台机器。 机器清醒后,我不确定IP地址。 在试图回答我自己的问题时,我想到了: ip=$(ping -c 1 hostname | head -1 | awk '{print $3}' | sed 's/[()]//g') 这个解决scheme规定,我知道远程机器的主机名,这并不麻烦。 如果我知道的是MAC地址,有没有办法获得IP?

使用Recv-Q和Send-Q

netstat命令输出中使用Recv-Q和Send-Q列什么时候我们在实时场景中使用它? 在我的系统中,两列总是显示为零。 这是什么意思?

UDP IP分片和MTU

我试图了解在发送UDP数据包的上下文中看到的一些行为。 我有两个小Java程序:一个传输UDP数据包,另一个接收它们。 我在两台通过一台交换机连接的计算机之间的networking上本地运行它们。 两个networking适配器上的MTU设置(由/ sbin / ifconfig报告)均为1500。 如果我发送大小<1500的数据包,我收到它们。 预期。 如果我发送1500 <size <24258的数据包,我收到它们。 预期。 我已经通过wireshark确认IP层将它们分段。 如果我发送大小> 24258的数据包,则会丢失。 不期望。 当我在接收端运行wireshark时,我没有看到任何这些数据包。 我能够看到类似的行为与ping -s。 ping -s 24258 hostA可以工作 ping -s 24259 hostA失败。 有没有人了解可能发生的事情,或者有我应该寻找的想法? 这两台电脑都运行CentOS 5 64位。 我使用1.6 JDK,但我不认为这是一个编程问题,这是一个networking或操作系统的问题。

获取Linux内核中的networking设备列表

我一直在通过net / core / dev.c和其他文件来查看如何获取当前configuration的networking设备列表,这certificate有点难以find。 最终目标是能够使用dev.c中的dev_get_stats获取networking设备统计信息,但是我需要知道当前的接口,所以我可以抓取net_device结构来传入。我必须在内核中执行此操作,因为我写了一个模块,它添加了一个新的/ proc /入口,这涉及到一些来自当前networking设备的统计信息,所以从我能收集到的信息必须在内核中完成。 如果有人能指点我如何获得接口,将不胜感激。

包除了iptables的包改造工具?

我正在寻找一个Linux实用程序,可以根据一组规则来改变networking数据包的有效载荷。 理想情况下,我会使用iptables和netfilter内核模块,但是它们不支持通用的有效负载模式: iptables将会改变不同的头域(地址,端口,TOS等),并且可以匹配一个数据包中的任意字节,但它显然无法改变数据包内的任意数据。 内核模块将是一个很大的优势,因为效率是一个问题,但我很乐意探索任何可以完成工作的其他选项。 感谢您的想法! 姗姗来迟的更新: 我们select使用NFQUEUE模块,这是Robert Gamblebuild议的QUEUE模块的最新实现。 它似乎相当简单,让我们的代码在用户而不是内核空间中运行,这是一个安全奖金。 如果我们只是想改变有效载荷而不改变它的大小,那么实现将几乎是微不足道的。 在这种情况下,我们将定义一个iptables规则来为我们select“有趣的”数据包,并向它们发送一个NFQUEUE目标。 我们将编写一个callback函数来检查来自NFQUEUE的数据包,根据需要修改数据,并重新计算TCP和IP头中的校验和。 但是,我们的用例涉及在数据stream中注入更多字符。 这在TCPstream中增加了相应的SEQ / ACK号码的副作用比较明显,混淆了conntrack模块的副作用并不明显,完全打破了NAT。 经过大量的研究,头部划伤和实验,最NOTRACK解决scheme是禁用这些特定数据包的连接跟踪(在raw表中使用NOTRACK目标),并在我们的callback中处理。 保存你的西红柿和讨厌的邮件; 我一点都不骄傲让你置身事外,但在下一个冰河世纪之前,这是唯一可以获得可靠产品给客户的方法。 这是一个很好的故事。 但我真的很感激,并分享你的衷心的感受。 版本2将利用我们新发现的启示,通过用自定义NAT和/或conntrack助手来replace我们的callback和多个iptables规则。 我们相信,目前的练习已经给了我们足够的经验来创build一个内核模块,它将有机地融入到netfilter体系结构中来解决我们遇到的问题。 再次感谢您的关注和build议!