作者:张华 发表于:2015-08-28
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
( http://blog.csdn.net/quqi99 )
eBPF(Extended Linux Socket Filtering aka Berkeley Packet Filter) [1], 允许一个用户空间的程序attach(SO_ATTACH_FILTER)到任意socket来过滤某种类型的流量。可用eBPF+tc代替OVS kernel dataplane。
Geneve control plane, 可用eBPF实现。
Linux 4.0 switchdev [2], Linux Bridge是软交换,现在有硬交换(TOR是机架交换Top-of-rack switch, SR-IOV是嵌套在NIC里的交换,这恐怕是在Server里的交换。[3]),传统的netfilter来实现硬交换驱动的话CPU总要中断将数据拉到Bridge或IP层,再交回硬件。而使用Linux 4.0 switchdev可以不用中断CPU,完全通过硬件来转发数据包,只有数据和本地协议栈相关的时候才中断CPU(这样它可以绕过大多数kernel的控制平面的软东西如netfilter, tc等),并且支持通过openflow对硬交换下发流表,全面迎合SDN做好了准备啊。这么做的目的是可以完全用linux来实现硬件交换机的控制平面了啊。毕竟硬交换芯片的port(对外看起来是NIC)数目是有限的,其实switchdev作为一个从内核中offload交换转发流量的通用抽象框架,它不仅支持硬交换,也支持SR-IOV或像OVS一样的软交换[4]。switchdev与sr-iov如何集成见[3]中的最后一个图,switchdev可以帮助sr-iov提升交换方面的性能。
H/W accelerated virtio for NFV, switchdev可以绕过netfilter, tc等内核控制平面的软件,那么它是可以对virtio流量进行加速的。
OF-DPA(OpenFlow Data Plane Abstraction [4]),
6lowPAN(IPv6 over IEEE 802.15.4), 无线个域网(物联网)标准,短距离、低速率、低功耗。首个融入IP协议的无线通信标准,只定义了PHY和MAC层。它只用了UDP/IPv6 and Bluetooth,不需要TCP,所以需要将TCP从Linux编译时拿去。
ILA (Identifier Locator Addressing), 位置与标志相分离,一些IPv6的位作位置,一些做标志。
User space networking,一些交换机上运行Linux,在用户空间运行厂商专用交换软件,下面使用DPDK做packet I/O操作。
TCP Fast Open, 传统的TCP要三次握手才能建立连接,Google给出了一个解决方案,让第一个SYN包握手阶段就可以携带数据,于是在一个RTT之内就能得到response。但要用它的话要求socket服务端与客户端都修改程序。它类似于Google QUIC。
Google QUIC (Quick UDP Internet Connection), Google开发的结合UDP和TCP优点的东东。在客户端和服务器首次连接时不需要握手步骤,某种程度上与TCP快速开启(TCP Fast Open)类似。在一次跨大西洋的连接中TCP握手要耗时300ms,而QUIC可以将延迟降为100ms。QUIC的另一个优势是通信通道的定义基于ID而不是IP+端口,这使得切换网络后继续转发连接成为可能,例如从WiFi网络进入移动网络。QUIC还可以使用多个通道传输数据,当一个通道阻塞时,其他的通道并不会因此阻塞等待丢失的数据包。
[1] https://www.kernel.org/doc/Documentation/networking/filter.txt
[2] http://www.linuxidc.com/Linux/2015-05/117638.htm
[3] http://devconf.cz/files/slides2015/friday/switchdev.pdf
[4] https://www.kernel.org/doc/Documentation/networking/switchdev.txt