9

Debating The Value Of Xdp

 3 years ago
source link: https://kernel.taobao.org/2017/01/debating-the-value-of-XDP/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Jan 1, 2017

Debating The Value Of Xdp

https://lwn.net/Articles/708087/ 

XDP价值大讨论

内核各个子系统的设计都面临扩展性和性能的要求,网络子系统走在了前面。最近出现了一种XDP(express data patch)的计数开始出现,然而评论褒贬不一。XDP大致想对收方向的packets做出一些简单快速判断,它最早被希望应用在丢弃不需要的包上,随后加上了简单路由和包修改的功能。实现上内核通过加载BPF程序,在包进入内核协议栈之前做出判断。

很多关于XDP的讨论都集中在XDP的实现方面,而不是XDP设计本身。直到12月初,Florian Westphal在给Hannes Frederic Sowa的回信中说到,“netdev分支开始出现大量关于XDP的patch,我觉得应该停一ä¸了”。他宁愿开发者解决那些网络子系统正在面临的问题,而不是那些“很有意义但是意义不大”事情。

这些事情,(包括DPDK)用用户态程序来bypass网络协议栈,需要使用定义限制严格的一å¥机制,并且把通用内核协议栈带来的好处全部抛弃,来换取性能上的提升。他还说,这种情况下用硬件提供的包过滤功能比较合适。Westphal还认为XDP是一种比较low的机制。用户态的网络代码好歹å¯以用各种语言编写,调试方便等等。相比之下,BPF开发不方便,功能上也更受限制。用XDP来解决的路由、负载均衡和先期包过滤等功能,各自都有更好的解决方式。

Thomas Graf提到:packet出了内æ ¸之后一切就变得不可控了,在用户态做安全控制就不合适了,用户态代码可能被破坏。内核里面的BPF代码应该更难被破坏,他也不同意负载均衡这样的事情在用户态来做。

Sowa提到:在早期包丢弃这个应用场景下,用硬件做丢包已经可以解决问题,使用XDP有什么好处呢?Herbert解释了这个问题,灵活性和高性能都是需要的:面对DDOS攻击的时候XDP非常有帮助,XDP让系统遭受攻击时可以尽å¿«丢包,可以影响到协议栈,可编程对越来越鸡贼的攻击者来说也非常必要。仅仅用硬件解决方案在这个问题上远远不够。

网络模块maintainer David Miller也认为XDP应用在丢包场景非常合适,硬件方æ¡不足以解决问题。

Sowa还提到了不太好解决的API问题,随着XDP的发展会用到越来越多内核用户态的ABI。反过来ABI会限制网络协议栈的发展。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK