Linux 4.0的switchdev
一切坏消息在Linux 4.0内核中终结。
Linux 4.0引入了一个switchdev框架,它代表一类拥有“交换”能力芯片的多网口设备的抽象。其中每一个网口就是一个port,在switchdev框架中被注册成一个net_device。除此之外,内核中自带了一个rocker driver,演示了一个实际的设备驱动的实现。整个switchdev的示意图如下所示:
注意,理想化的实现中,OpenFlow控制器可以直接将流表注入到设备中,从而指导设备直接进行数据包交换。流表的内容超级复杂,不是本文的目标,但是相信在后一个内核版本中会出现相关的Document。
采用了硬件交换模块的Linux BOX和原来的截然不同了,它更像是一个高端的专业网络设备,类似Cisco那样的。它看起来就是下面的样子:
References: [1] Hardware offloading BOF at netdev0.1: https://netdevconf.org/0.1/sessions/10.html [2] switchdev BOF: https://netdevconf.org/1.1/bof-switchdev-roopa-prabhu-shrijeet-mukherjee.html [3] netlink API: http://man7.org/linux/man-pages/man7/netlink.7.html [4] support for 25G/50G/100G speed https://patchwork.ozlabs.org/patch/625047/ [5] ethtool: Support for FEC encoding control https://patchwork.ozlabs.org/patch/850494/ [6] Fix ipv6 address flush on ifdown of an interface: https://patchwork.ozlabs.org/patch/587543/ [7] Make ipv6 route notifications similar to ipv4: https://patchwork.ozlabs.org/patch/723301/ [8] Ecmp hash L4 support: https://patchwork.ozlabs.org/patch/739829/ [9] VRF: https://cumulusnetworks.com/blog/vrf-for-linux/ [10] PBR: Support for policy routing match extensions, Bug fixes and cleanups https://patchwork.ozlabs.org/patch/878911/ [11] scaling routing with new API: https://lwn.net/Articles/763950/ [12] devlink api for switch ASICS: https://lwn.net/Articles/674867/ [13] IP multicast: Improve hash scalability: https://patchwork.ozlabs.org/patch/714498/ [14 ] IP multicast: Support for all PIM msgs https://patchwork.ozlabs.org/patch/689275/ [15] E-VPN: Neighbour subsystem updates for E-VPN BGP distributed remote entries: https://patchwork.ozlabs.org/patch/903868/ [16] E-VPN: Arp-ND suppression support: https://patchwork.ozlabs.org/cover/822906/ [17] https://www.netdevconf.org/2.2/slides/prabhu-linuxbridge-tutorial.pdf [18] FRR : Free range routing (FRR): https://frrouting.org/ [19] Vxlan: Enhancements to support single vxlan device for scale https://patchwork.ozlabs.org/patch/722362/ Netlink api enhancements https://patchwork.ozlabs.org/patch/730096/ [20] sampling: https://blog.sflow.com/2017/07/linux-411-kernel-extends-packet.html [21 ] Linux bridge backup ports for faster convergence: https://patchwork.ozlabs.org/cover/947461/ [21] MPLS in the kernel: https://netdevconf.org/1.1/tutorial-deploying-mpls-linux-roopa-prabhu.html [22] MPLS GRE: http://patchwork.ozlabs.org/patch/636253/ [23] ip monitor to monitor kernel networking events: http://man7.org/linux/man-pages/man8/ip-monitor.8.html [24] fib tracepoints + bridge fdb tracepoints: http://patchwork.ozlabs.org/patch/807267/
netfilter.org Packet filtering, NAT and packet mangling for Linux =========================================================================== DISCLAIMER: people.netfilter.org hosts homepages and files of individual netfilter.org developers. They are often experimental in nature, so please use with caution. =========================================================================== [ICO] Name Last modified Size Description [PARENTDIR] Parent Directory - [ ] Hardware-accelerating-Linux-network-functions.pdf 2015-03-23 14:20 5.5M [ ] IPQ806x-Hardware-acceleration_v2.pdf 2015-03-27 12:56 2.6M [ ] MLAG-on-Linux-Lessons-Learned.pdf 2015-03-27 12:58 5.4M [ ] Networking-in-Containers-and-Container-Clusters..> 2015-03-27 13:33 70M [ ] bandewar-IPvlan-presentation-Netdev01.pdf 2015-03-27 11:55 2.3M [ ] duyck-fib-trie.pdf 2015-03-27 11:55 2.1M [ ] fastabend-netdev0.1-slides_v3.pdf 2015-03-27 12:08 5.2M [ ] feldman-Rocker.pdf 2015-03-27 12:39 63M [ ] gospodarek-Evolution-Not-Revolution.pdf 2015-03-27 12:43 27M [ ] hadi-salim-TC-act-arch-slides.pdf 2015-03-27 12:46 13M [ ] hadi-salim-dj-DTCCA-slides.pdf 2015-03-27 12:44 3.5M [ ] hadi-salim-netdev01-closing.pdf 2015-03-27 12:44 710K [ ] herbert-UDP-Encapsulation-Linux.pdf 2015-03-27 12:53 41M [ ] hunt-netfilter-bof.pdf 2015-03-27 12:56 16M [ ] mihai-budiu-netdev01-p4-demo.pdf 2015-03-27 12:57 3.9M [ ] mihai-budiu-netdev01-p4.pdf 2015-03-27 12:57 1.8M [ ] miller-Ottawa2015-Keynote.pdf 2015-03-27 12:57 609K [ ] mukherjee-BOF-agenda.pdf 2015-03-27 12:59 1.5M [ ] netdev01_bof_8021ad_makita_150212.pdf 2015-03-27 12:59 4.6M [ ] netdev_tutorial_bridge_makita_150213.pdf 2015-03-27 13:04 21M [ ] nftables-netdev-2015.pdf 2015-03-27 13:33 1.9M [ ] octavian-mptcp-netdev-final.pdf 2015-03-27 13:35 14M [ ] ondrej-zajicek-slides-netdev01.pdf 2015-03-27 13:36 1.6M [ ] pirko-ovstc-slides.pdf 2015-03-27 13:36 529K [ ] pirko-switchdev-slides.pdf 2015-03-27 13:36 1.2M [ ] prabhu-kok-hardware_acceleration_tutorial_netde..> 2015-03-27 13:37 5.5M [ ] prabhu-linux_ipv4_ipv6_inconsistencies_talk_sli..> 2015-03-27 13:38 3.4M [ ] prabhu-rtnetlink_dump_filtering_in_kernel_talk_..> 2015-03-27 13:38 2.4M [ ] sane-ocp-sai-status.pdf 2015-03-27 13:38 184K [ ] sowa-perf-analytics.pdf 2015-03-27 13:39 6.6M [ ] winter-cycling-tutorial.pdf 2015-03-17 11:30 394K
http://people.netfilter.org/pablo/netdev0.1/slides/