茱莉亚•埃文斯

netdev会议,第一天

今天我在netdev,关于Linux联网的会议。我答应mycoworkers笔记所以大家也指出:)

比平时对我来说这是一个不同的会议,在这个会议上我认为我学习比大多数会议lastfew年我一直在。很多是我头顶(很多主持人/ attendeeswork在Linux内核网络子系统),但是我喜欢!它meansthere很多新的想法和术语。

这里有一些今天的谈话记录。他们relativelystream-of-consciousness但如果我要指出这个conferenceat的它会是如何。这里会有很多错误。

XDP实际上:整合XDP DDoS缓解管道

通过吉尔伯托·贝尔坦公司fromCloudflare。

这篇讲话是云火公司的!他们是一个CDN,他们提供的服务之一是DDOS缓解。所以,如果你被ddos,他们会找出whichnetwork流量攻击和吸收的恶意流量themselvesinstead传递。

如何判断流量是否是恶意的??

阻止恶意通信,首先你需要找出它'smalicious !当你在做DDOS缓解手动(缓慢),你lookfor恶意流量匹配的模式,然后编写代码来blocktraffic匹配模式。他们做同样的事情,exceptautomatically

他们这样做

  1. 抽样一些小的流量比例在每个边缘服务器
  2. 编码,交通”sFlow”(维基百科文章并通过UDP将其发送到一些进行包分析的中央服务器
  3. 中央服务器提出“模式“应该阻止
  4. 例如,这些中央服务器可能注意到有大量看起来可疑的数据包,它们都来自相同的IP地址

你怎么阻止恶意流量??

他们编译malicious-traffic-patterns成带通滤波器的规则。Cloudflare具有软件称为bpftools让你带一个模式和编译到内核的代码可以运行tofilter包。

例如/ bpfgen dns - * .www.example.uk将为DNSpackets匹配创建一个BPF过滤器* .www.example.uk

好吧,假设你有带通滤波器字节码相匹配的交通,你想阻止!你怎么

方法1IpTabe

他说,他们一开始使用IPtables过滤流量。这使iptables变得有意义,因为我知道过滤流量的唯一方法:)

这里的问题是,有“IRQ风暴”。我不完全确定这意味着什么,但我认为这意味着在Linux网络栈中有很多中断,和中断在某种程度上是ofexpensive,使用iptables过滤真正高的数据包量最终会很糟糕。

2路用户空间卸载

好吧,所以在内核网络缓慢。让我们在用户空间里做吧!他说,他们使用solarflareisa专有用户空间网络栈。(他们还卖硬件?))

有两个问题但我理解是,“gettingpackets回内核网络堆栈是昂贵的”“

3路XDP

这个演讲是关于XDP显然他们最终使用它。以下是关于XDP somelinks:

我理解什么XDP:有很多步骤Linuxnetworking堆栈(看监控和调优Linux网络栈:接收数据)。

如果希望快速筛选出数据包,你不想去这些步骤即可!你想读包网卡,如“不不是一个!“,然后快速前进。

看起来XDP是一个非常新的系统(在本文的最后,someonecommented”祝贺使用这种新技术!),并使用在大白鼠Cloudflare信息包过滤。一些笔记thissection的谈话:

  • “ebpftools生成XDP程序“
  • XDP程序是C程序,编译的叮当声,然后成为BPF字节码
  • (hashmap eBPF使用地图吗?(不清楚)与用户空间共享的。我不能听懂那些地图共享的用户空间代码。
  • 同时,他提到了一个工具p0f,,维基百科可以做操作系统指纹识别的网络流量。
  • 带通滤波器的字节码生成工具支持p0f签名
  • XDP至少需要4.8内核。4.9使用他们,因为他们想要使用一个LTS释放
  • XDP不支持所有的网卡

在本文的最后讨论了如何在XDP中标记数据包。我完全不明白你为什么要标记数据包,但是这里有一些事情我学会了。

这是一次很好的谈话,我学到了很多

XDP在Facebook

华鹏周,道格•波特瑞恩•蒂尔尼尼基塔Shirokov从Facebook(尽管只有一个人说)

这篇演讲是关于Facebook如何将XDP用于两个不同的方面:

  • 实现一个L4负载均衡器
  • DDOS的缓解

他说,他们有一个负载均衡器L4(称为“希夫?其将流量转发到下游L7负载均衡器。这是Facebook的前端,我觉得你像第一个服务器请求当你去facebook.com。

还有一个讨论负载平衡在Facebook SRECon了:建立十亿个用户负载均衡器

他说,之前他们使用一种叫做““IPVS”。在工作中,我们使用HAProxy进行负载平衡。似乎ipv是一个负载均衡器,isinside Linux内核?我发现这关于IPVS的博客帖子有更多的信息

不管怎样,所以他们停止使用ipv XDPinstead出于某种原因,决定使用。在会谈结束时,他们说XDP快10倍。

本讲座没有讨论如何配置负载均衡器(如何告诉它哪些后端用于哪些请求?)它dohealthchecks找出如果一些后台暂时下来吗?thehealthchecks在用户空间吗?健康检查的结果如何返回到运行在内核中的XDP程序中?)

在本次演讲中,有趣的是他们取得了一些进展debuggingXDP项目:调试XDP程序似乎有点困难(因为他们在eBPF运行虚拟机吗?所有这些ebpf东西仍然对我一点不清楚)。

eBPF似乎支持把事件分为通过性能事件betway菲律宾bpf_perf_event_output,这很酷,因为perf_betway菲律宾events是一个existingframework。

面向企业的Linux网络

来自库穆卢斯的施赖杰特·穆克吉

这篇讨论似乎是关于企业客户关心的网络特性。我从这次演讲,人们在企业有很多ofethernet电缆,那ethtool是(还是应该?))一个好的工具找到如果你的以太网电缆工作。

他还谈到了组播如何不再那么流行,但是很多ofenterprises关心多播,所以你需要多播支持。

午餐

午餐时有一张素食餐桌,它是一种很酷的方式来混合那些不可能坐在一起的人:)

每个人都真的很好,让我问一堆问题。以下是我在午餐时学到的一些东西:

在Linux内核和用户空间之间共享网卡

通常在Linux上,人们使用Linux内核进行联网。但sometimesyou想做网络在用户空间!(出于性能原因,或)有益。我想知道Linux内核是否能够与用户空间程序共享对网卡的访问。事实证明,它可以!!

我说的人提到有“许多RX队列”。午饭后我tookthat提示,在google上搜索,,发现Cloudflare的这个伟大的博客文章

如此!事实证明,接收网络包的第一步是网络卡把数据放到一个“RX环”或“RX队列”,这是一个区域inmemory。两个事实:

  1. 这些队列可能不止一个
  2. 你可以计划只把某些包的网卡certainqueues (“将所有来自端口53的UDP分组放入队列4”)
  3. 不同的应用程序可以使用不同的队列

所以如果你想Linux共享,您可以让Linux处理大多数RX队列,但是让用户空间程序处理其中的一个。太酷了!!

更多关于TC

前几天我写了关于如何让你的网络慢tc,结果表明,tc可以做更多的事情比让你的网络慢!!

例如!我曾经与我的表弟在楼上,分享我的互联网连接我运行一个Linux路由器。我可以用编程我的路由器以限制来自我表兄的计算机(通过过滤+从herMAC地址或其他东西中减少流量)。有更多关于如何去做OpenWRT的网站

tc显然能做的另一件事是硬件卸载。基本上,asI理解它——超级fancyfeatures很多网卡。它们可以完成通常内核要做的大量包处理(比如校验和,更多)。知道如何计划你的networkcard花式包处理。

还有很多,但是这两个是我最容易理解的。

网络性能讲习班

由亚历克斯·杜伊克担任主席,我没能记下所有的扬声器。

这是一个车间的新发展网络性能(来自英特尔的人、Mellanox和其他地方)。

我的笔记很稀疏的因为我最不理解的,他们都在“如何使网络更快?““

基于页面的接收+页面重用

这里似乎是前提

  • 通常的Linux是4 kb的页面大小
  • 通常的MTU包(“最大传输单位”,或基本上thepacket大小)是1500个字节
  • 使新页面是昂贵的(虽然我不明白这100%)
  • 但是一页比一包大两倍多,所以你可以把两个小袋子放在一页里
  • 还有一系列的并发症

有趣的事:演讲者提到网络驱动程序,很多人使用”记忆障碍”太强劲。但是,等等,memorybarrier是什么?通过网络搜索,我发现https://www.kernel.org/doc/Documentation/memory-barriers.txt关于人们在Linux内核中使用的可读存储器。在我的阅读清单上尚有数量庞大的条目:所以thatgoes)

我认为他建议使用dma_rmb/dma_wmb记忆障碍,而不是人民币/wmb

内存瓶颈

第二是谈论一个非常类似的话题——想法是memoryallocator性能限制你可以处理数据包与XDP多快。

他们说,如果你使用更大的页(64 k),然后你没有toallocate尽可能多的内存(这很好),但问题是,如果你putmany包/碎片到相同的大页面,然后你必须等待这些碎片处理才能免费页面。所以那里有鹦鹉。

AF_PACKETv4

好吧,这是一个不同的东西!这是一项正在进行中的工作,他们甚至还没有编写内核中的代码。motivationfor这项工作就我理解它是让tcpdump(和工具liketcpdump)运行得更快。

我认为这里的想法是:

  • 使用tcpdump时,它从网络接口读取原始数据包并解析它们
  • 但它将这些数据包拷贝到内存(在用户空间)和copyingtakes时间
  • 因此,如果tcpdump可以获得数据包而不必复制它们,那就更好了。

我认为这里的想法是,您可以在模式中打开一个套接字AF_PACKET_v4或者什么,然后你会获得数据包从一个网络interfacewithout然后被复制。

我很喜欢tcpdump所以任何可能让tcpdump更快是我兴奋!我想更好的理解这个。

当我查找关于这个的文章时,我发现了Cloudflare的Marek关于tcpdump如何工作的一篇很酷的博客:带通滤波器:被遗忘的字节码

甲骨文的讲话

由Sowmini Varadhan,印度央行戴夫

我错过了今年上半年所以我不能告诉youwhat谈论但她说一些有趣的事情!!

她显示4图的延迟和吞吐量。所有的图表:

  • 他们开始时是平的(所以你可以做10次,000请求/秒1000毫秒的延迟,50岁,000与1000毫秒延迟请求/秒)
  • 在某种程度上他们触及吞吐量”悬崖”——就像,系统不会处理超过100个,000请求/秒,当你向它提出更多的请求时,延迟会继续增加

我知道有延迟和吞吐量之间的权衡任何系统(如果你想要的答复,你必须发送请求),这是很高兴见到graphsof权衡。这是有趣的看到这样一个突然的吞吐量悬崖。

进化的网络i / o虚拟化

由:Anjali耆那教的,亚历山大·杜伊克从事Sarangam,恩布鲁尔贾尼

这一个是关于过去/现在/未来的网络virtualizationworks。从英特尔的人。

我学会了什么:

  • SR-IOV是一种做网络虚拟化
  • 他们花了大部分的时间谈论SR-IOV所以它也一定是重要的?也许英特尔投资了很多??
  • 一个“IOMMU”是一个重要的事情
  • 在SR-IOV中,一次只能有2^16个虚拟机(16位)
  • “东西方vm之间交通在同一机器上,和“南北”交通vm之间在不同的盒子吗
  • 有性能问题vm在同一个主机上说(“east-westtraffic”)。这是因为”这是由PCI总线瓶颈”。thePCI总线是什么和为什么它造成瓶颈??

他们花了很长时间在这个演讲讨论的是虚拟机的动态迁移以及itinteracts网络虚拟化。动态迁移意味着你把虚拟机里,把它移动到另一台计算机的运行。我觉得很有趣,他们谈起这件事来好像很正常,因为我觉得……完全神奇的东西,在现实生活中不存在。

但是我想如果你是网络硬件建设我们要using5-10年的未来,你需要提前考虑!!

今天就到这儿了

更多的明天,希望。