SlideShare a Scribd company logo
1 of 37
Download to read offline
Contemporary Linux Networking
Confessions of a Professional Freifunker
DENOG9
Maximilian Wilhelm
<max@sdn.clinic>
@BarbarossaTM
2
Who am I?
● Maximilian Wilhelm
– @BarbarossaTM
● Senior Infrastructure Architect, Uni Paderborn
● Infrastructure Archmage, Freifunk Hochstift
● Fanboy of
– (Debian) Linux
– ifupdown2
● Networker
● OpenSource Hacker
Agenda
● The Old Gods and the New
● ifupdown2
● VRFs
● VXLAN
● VLAN-aware bridges
● MPLS
● DIY-SDN
root@Stretch:~$ ifconfig
-bash: ifconfig: command not found
root@Stretch:~$ route
-bash: route: command not found
root@Stretch:~$ arp
-bash: arp: command not found
● vconfig
● ifenslave
● iproute2 – Swiss Army knife for networkers
● Functions cleanly separated into subcommands
● ip link – L2: MTU, VLANs, LAGs, bridges, ...
● ip addr – L3 addresses
● ip neigh – ARP/ND
● ip route – Routing + MPLS
Old vs. New
vconfig add eth0 42
→ ip link add vlan42 link eth0
type vlan id 42
ifenslave bond0 eth0
→ ip link add bond0 type bond mode 4
ip link set master bond0 dev eth0→
arp
→ ip -4 neigh
Old vs. New - Bridges
brctl addbr br0
➔ ip link add br0 type bridge
[ forward_delay FORWARD_DELAY ]
...
[ vlan_filtering VLAN_FILTERING ]
[ vlan_default_pvid VLAN_D_PVID ]
...
[ nf_call_iptables NF_CALL_IPT ]
...
brctl addif br0 eth0
➔ ip link set eth0 master br0
8
Network interface configuration
● Classic ifupdown not easily automated
● Generating /etc/network/interfaces simple
● How to reload?
– »service networking restart« disruptive
– No tool for “reload” present
– Isn't trivial to build
➔ CumulusNetworks Ifupdown2
– Rewrite of ifupdown in Python
– https://github.com/CumulusNetworks/ifupdown2
9
ifupdown2
● No full feature parity with ifupdown (yet?)
● Shipped with batteries included
– dependency resolution
– ifreload
– VRFs
– VXLAN
– VLAN-aware bridges
● Not (yet) supportedmerged:
– ppp
10
ifupdown2 Patches
● Easy to extend, thanks to Python
● Upstream open for ideas (Hi Julien & Roopa)
● Added support for
– B.A.T.M.A.N. interfaces
– Tunnel (GRE, SIT, IPIP, GRETAP)
● Open Pull-Requests for
– Condoning bridge interfaces for configuration
– Setting phys-dev for VXLAN
– Setting vEth peer name
11
VRFs
● Independent routing instances
– L3-VPNs
– Usually in combination with MPLS
● Related features
– Policy-Routing (since Kernel 2.2)
● Old and busted
● Management headache
– Network Namespaces (Kernel 2.6.24++)
● Sometimes “too much” separation
12
VRFs on Linux
● Separation for Layer3 communication
● VRF interface is master for “real” interfaces
– Defines routing table for VRF
● Since Kernel 4.[345] (use >= 4.9)
https://git.kernel.org/cgit/linux/kernel/git/to
rvalds/linux.git/tree/Documentation/networking/
vrf.txt
https://cumulusnetworks.com/blog/vrf-for-linux/
https://de.slideshare.net/CumulusNetworks/opera
tionalizing-vrf-in-the-data-center
13
VRFs on Linux
ip link add VRF_DEVICE type vrf
table ID
ip link set dev DEVICE
master VRF_DEVICE
Note:
● Device routes move from table main and local
to table $ID
14
VRFs with ifupdown2
auto eth0
iface eth0
address 185.46.137.163/25
address 2a00:13c8:1000:2::163/64
gateway 185.46.137.129
gateway 2a00:13c8:1000:2::1
vrf vrf_external
auto vrf_external
iface vrf_external
vrf-table 1023
15
inter VRF Communication
● Requires vEth pair
– Like a virtual network cable within the box
● A end in main VRF, Z end in VRF “foo”
● Usual routing
– Static
– Bird talking BGP to itself
– ...
16
vEth interfaces w/o + w/ ifupdown2
ip link add VETH_END1 type veth
peer name VETH_END2
iface veth_ext2int
link-type veth
veth-peer-name veth_int2ext
vrf vrf_external
iface veth_int2ext
link-type veth
veth-peer-name veth_ext2int
17
VXLAN
● “Ethernet over UDP”
– Or: “Poor mans approach to MPLS”
● Designed as Layer2 overlay for DCs
– Multi-tenant Overlay over IP-Fabric
– 24Bit VNI => 16M Instances
– Unicast/Multicast communication
● Read: VLL / VPLS
– Endpoints = VTEP (VXLAN Tunnel End Point)
● RFC7348
18
VTEPs on Linux
ip link add DEVICE type vxlan id ID
[ dev PHYS_DEV ]
[ { group | remote } IPADDR ]
[ local { IPADDR | any } ]
[ … ]
bridge fdb show [ brport DEVICE ]
19
VTEPs with ifupdown2
# vx_v2001_padcty
auto vx_v2001_padcty
iface vx_v2001_padcty
vxlan-id 1310977
vxlan-physdev vlan2001
vxlan-svcnodeip 225.20.1.1
#
hwaddress f2:00:c1:01:20:01
mtu 1560
VLAN-aware bridges
● VLANs and bridges have been a challenge
● That ain't true no more
– echo 1 > /sys/class/net/br0/bridge/
vlan_filtering
– Now it's a “regular switch”
● Configured with bridge utility from iproute
● Simple KVM/Qemu hook for VLAN assignment
– https://github.com/FreifunkHochstift/ffho-salt-
public/blob/master/kvm/qemu-hook
Bridge utility
bridge vlan { add | del }
vid VLAN_ID dev DEV
[ pvid ] [ untagged ]
[ self ] [ master ]
bridge vlan show [ dev DEV ]
[ vid VLAN_ID ]
● Related:
bridge fdb [...]
VLAN-aware bridges w/ ifupdown2
iface br0
bridge-ports bond0
bridge-vlan-aware yes
bridge-vids 1013 4002
iface bond0
bridge-vids 100 101 200 201 1013 2000 [..]
iface cr02_eth1
bridge-vids 1013 2000 2004 2006 3002
iface br0.1013
address 10.132.252.22/28
[…]
MPLS
● Forwarding path available in vanilla kernel
– Use >= 4.9
● Requires iproute >= 4.3
ip -f mpls or ip -M
● Enable use of labels up to n
sysctl -w net.mpls.platform_labels=n
● Enable MPLS decap on $iface
sysctl -w net.mpls.conf.$iface.input=1
MPLS
● Push
ip route add 10.23.42.0/24 encap
mpls 100 via inet 192.168.42.23
● Swap (100 → 200)
ip -f mpls route add 100 as 200 via
inet 192.168.47.11
● Pop
ip -f mpls route add 300 dev lo
25
The SDN part
#SDN
Disclaimer: Font on special request of AbraXXL
26
Wireless Backbone (planned)
27
Cyber Supply Chain
SDN ingredients
ifupdown2
28
Pillar Example
bbr-vega.in.ffho.net:
id: 198
sysLocation: Vega
roles:
- router
- batman
- bbr
sites:
- pad-cty
Quelle für Loopback-IP
Bird config (OSPF + iBGP)
Source for Loopback-IP
Generate Batman interfaces
Batman instances
29
Pillar Example contd.
ifaces:
bond0:
bond-slaves: "eth0 eth1 eth2"
vlan1002:
desc: "<-> gw04"
vlan-raw-device: bond0
prefixes:
- 10.132.253.58/31
- 2a03:2260:2342:fe1c::1/126
batman_connect_sites: pad-cty
[...]
Source for /etc/network/interfaces
Generate VXLAN
overlay
30
IPoBATMANoVXLANoIPoVLANoRF
● Wait, what?
Ethernet (RF / Kabel)
Vlan
IP
VXLAN
B.A.T.M.A.N. Adv.
VXLAN
IP
31
Lessons Learned
32
Offloading
● Difference between 4KB/s and 40MB/s...
for iface in eth0 eth1; do
for feature in sg gro gso tso; do
ethtool --offload ${iface}
${feature} off
done
done
https://downloadmirror.intel.com/22919/eng/README.txt
33
OpenVPN vs. VRFs
● Lots of OpenVPN tunnels
● OpenVPN tunnel should use VRF “external”
● Needed a small patch
setsockopt (sd, SOL_SOCKET,
SO_BINDTODEVICE, dev, strlen(dev)
+1);
● https://github.com/OpenVPN/openvpn/pull/65
– Hi Gert, are you here?
34
Systemd + OpenVPN vs. ifup
● Lots of OpenVPN instances
● up /etc/openvpn/ifup
– ifup “$1”
● Thanks to systemd all starting in parallel
– Some ifup calls in parallel
– Nearly no IPs configured anywhere
– Damn
➔ flock –exclusive –wait 30
35
Further Reading
● Salt-Orchestrated Software Defined (Freifunk)
Network (german)
– https://www.slideshare.net/BarbarossaTM/software
-defined-freifunk-backbones-78288014
● Blog series DIY-SDN with OSS
– https://blog.sdn.clinic/2017/09/building-your-own-
software-defined-network-with-linux-and-open-
source-tools/
● #routingdays – Learn to build the Internet
– https://blog.sdn.clinic/2017/09/ffrl-routingdays-
learn-to-build-the-internet/
36
Questions? Remarks?
Tell me:
Maximilian Wilhelm
<max@elitepeer.de>
@BarbarossaTM
37
Freifunkromantik

More Related Content

What's hot

Waris l2vpn-tutorial
Waris l2vpn-tutorialWaris l2vpn-tutorial
Waris l2vpn-tutorial
rakiva29
 

What's hot (20)

Waris l2vpn-tutorial
Waris l2vpn-tutorialWaris l2vpn-tutorial
Waris l2vpn-tutorial
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
 
CCNA Lab Guide
CCNA Lab GuideCCNA Lab Guide
CCNA Lab Guide
 
Bgp
BgpBgp
Bgp
 
ISP Load Balancing with Mikrotik ECMP
ISP Load Balancing with Mikrotik ECMPISP Load Balancing with Mikrotik ECMP
ISP Load Balancing with Mikrotik ECMP
 
Bgp (1)
Bgp (1)Bgp (1)
Bgp (1)
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
EVPN Introduction
EVPN IntroductionEVPN Introduction
EVPN Introduction
 
Interconnecting Neutron and Network Operators' BGP VPNs
Interconnecting Neutron and Network Operators' BGP VPNsInterconnecting Neutron and Network Operators' BGP VPNs
Interconnecting Neutron and Network Operators' BGP VPNs
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
Border Gateway Protocol (BGP)
Border Gateway Protocol (BGP)Border Gateway Protocol (BGP)
Border Gateway Protocol (BGP)
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Demystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesDemystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode series
 
DPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet ProcessingDPDK: Multi Architecture High Performance Packet Processing
DPDK: Multi Architecture High Performance Packet Processing
 
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemTutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
 
macvlan and ipvlan
macvlan and ipvlanmacvlan and ipvlan
macvlan and ipvlan
 
How BGP Works
How BGP WorksHow BGP Works
How BGP Works
 
Network LACP/Bonding/Teaming with Mikrotik
Network LACP/Bonding/Teaming with MikrotikNetwork LACP/Bonding/Teaming with Mikrotik
Network LACP/Bonding/Teaming with Mikrotik
 
Juniper mpls best practice part 1
Juniper mpls best practice   part 1Juniper mpls best practice   part 1
Juniper mpls best practice part 1
 
Openstack Neutron & Interconnections with BGP/MPLS VPNs
Openstack Neutron & Interconnections with BGP/MPLS VPNsOpenstack Neutron & Interconnections with BGP/MPLS VPNs
Openstack Neutron & Interconnections with BGP/MPLS VPNs
 

Similar to Contemporary Linux Networking

Building your own sdn with debian linux salt stack and python
Building your own sdn with debian linux salt stack and pythonBuilding your own sdn with debian linux salt stack and python
Building your own sdn with debian linux salt stack and python
Maximilan Wilhelm
 

Similar to Contemporary Linux Networking (20)

Building your own sdn with debian linux salt stack and python
Building your own sdn with debian linux salt stack and pythonBuilding your own sdn with debian linux salt stack and python
Building your own sdn with debian linux salt stack and python
 
VLANs in the Linux Kernel
VLANs in the Linux KernelVLANs in the Linux Kernel
VLANs in the Linux Kernel
 
VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話
 
Deeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay NetworksDeeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay Networks
 
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
 
20141102 VyOS 1.1.0 and NIFTY Cloud New Features
20141102 VyOS 1.1.0 and NIFTY Cloud New Features20141102 VyOS 1.1.0 and NIFTY Cloud New Features
20141102 VyOS 1.1.0 and NIFTY Cloud New Features
 
VXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building BlocksVXLAN BGP EVPN: Technology Building Blocks
VXLAN BGP EVPN: Technology Building Blocks
 
Xpress path vxlan_bgp_evpn_appricot2019-v2_
Xpress path vxlan_bgp_evpn_appricot2019-v2_Xpress path vxlan_bgp_evpn_appricot2019-v2_
Xpress path vxlan_bgp_evpn_appricot2019-v2_
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
 
Flexible NFV WAN interconnections with Neutron BGP VPN
 Flexible NFV WAN interconnections with Neutron BGP VPN Flexible NFV WAN interconnections with Neutron BGP VPN
Flexible NFV WAN interconnections with Neutron BGP VPN
 
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack UpPushing Packets - How do the ML2 Mechanism Drivers Stack Up
Pushing Packets - How do the ML2 Mechanism Drivers Stack Up
 
Deep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay NetworksDeep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay Networks
 
Cumulus networks conversion guide
Cumulus networks conversion guideCumulus networks conversion guide
Cumulus networks conversion guide
 
DCSF 19 Data Center Networking with Containers
DCSF 19 Data Center Networking with ContainersDCSF 19 Data Center Networking with Containers
DCSF 19 Data Center Networking with Containers
 
Hardware accelerated switching with Linux @ SWLUG Talks May 2014
Hardware accelerated switching with Linux @ SWLUG Talks May 2014Hardware accelerated switching with Linux @ SWLUG Talks May 2014
Hardware accelerated switching with Linux @ SWLUG Talks May 2014
 
Openstack Networking and ML2
Openstack Networking and ML2Openstack Networking and ML2
Openstack Networking and ML2
 
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SIDeep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
 
FD.io - The Universal Dataplane
FD.io - The Universal DataplaneFD.io - The Universal Dataplane
FD.io - The Universal Dataplane
 
Implementing an IPv6 Enabled Environment for a Public Cloud Tenant
Implementing an IPv6 Enabled Environment for a Public Cloud TenantImplementing an IPv6 Enabled Environment for a Public Cloud Tenant
Implementing an IPv6 Enabled Environment for a Public Cloud Tenant
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
 

More from Maximilan Wilhelm

This is the way - Holistic (Network) Automation
This is the way - Holistic (Network) AutomationThis is the way - Holistic (Network) Automation
This is the way - Holistic (Network) Automation
Maximilan Wilhelm
 
Intent driven, fully automated deployment of anycasted load balancers with ha...
Intent driven, fully automated deployment of anycasted load balancers with ha...Intent driven, fully automated deployment of anycasted load balancers with ha...
Intent driven, fully automated deployment of anycasted load balancers with ha...
Maximilan Wilhelm
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
Maximilan Wilhelm
 

More from Maximilan Wilhelm (18)

This is the way - Holistic (Network) Automation
This is the way - Holistic (Network) AutomationThis is the way - Holistic (Network) Automation
This is the way - Holistic (Network) Automation
 
Fun with PRB, VRFs and NetNS on Linux - What is it, how does it work, what ca...
Fun with PRB, VRFs and NetNS on Linux - What is it, how does it work, what ca...Fun with PRB, VRFs and NetNS on Linux - What is it, how does it work, what ca...
Fun with PRB, VRFs and NetNS on Linux - What is it, how does it work, what ca...
 
Building your own CGN boxes with Linux
Building your own CGN boxes with LinuxBuilding your own CGN boxes with Linux
Building your own CGN boxes with Linux
 
Contemporary network configuration for linux - ifupdown-ng
Contemporary network configuration for linux - ifupdown-ngContemporary network configuration for linux - ifupdown-ng
Contemporary network configuration for linux - ifupdown-ng
 
Angewandte Netzwerkgrundlagen reloaded - von Layer 1 bis 3
Angewandte Netzwerkgrundlagen reloaded - von Layer 1 bis 3Angewandte Netzwerkgrundlagen reloaded - von Layer 1 bis 3
Angewandte Netzwerkgrundlagen reloaded - von Layer 1 bis 3
 
Intent driven, fully automated deployment of anycasted load balancers with ha...
Intent driven, fully automated deployment of anycasted load balancers with ha...Intent driven, fully automated deployment of anycasted load balancers with ha...
Intent driven, fully automated deployment of anycasted load balancers with ha...
 
Anycast all the things
Anycast all the thingsAnycast all the things
Anycast all the things
 
Out-of-Band-Management für APU-Boards
Out-of-Band-Management für APU-BoardsOut-of-Band-Management für APU-Boards
Out-of-Band-Management für APU-Boards
 
Wie baue ich ein Freifunkbackbone - Was wir in den letzten 5 Jahren gelernt h...
Wie baue ich ein Freifunkbackbone - Was wir in den letzten 5 Jahren gelernt h...Wie baue ich ein Freifunkbackbone - Was wir in den letzten 5 Jahren gelernt h...
Wie baue ich ein Freifunkbackbone - Was wir in den letzten 5 Jahren gelernt h...
 
Best Current Operational Practices - Dos, Don’ts and lessons learned
Best Current Operational Practices - Dos, Don’ts and lessons learnedBest Current Operational Practices - Dos, Don’ts and lessons learned
Best Current Operational Practices - Dos, Don’ts and lessons learned
 
L2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-Netzwerkstack
L2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-NetzwerkstackL2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-Netzwerkstack
L2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-Netzwerkstack
 
Overlays & IP-Fabrics - viele Wege führen nach Rom und warum Layer2 keine Lös...
Overlays & IP-Fabrics - viele Wege führen nach Rom und warum Layer2 keine Lös...Overlays & IP-Fabrics - viele Wege führen nach Rom und warum Layer2 keine Lös...
Overlays & IP-Fabrics - viele Wege führen nach Rom und warum Layer2 keine Lös...
 
Dynamische Routingprotokolle Aufzucht und Pflege - BGP
Dynamische Routingprotokolle Aufzucht und Pflege - BGPDynamische Routingprotokolle Aufzucht und Pflege - BGP
Dynamische Routingprotokolle Aufzucht und Pflege - BGP
 
Dynamische Routingprotokolle Aufzucht und Pflege - OSPF
Dynamische Routingprotokolle Aufzucht und Pflege - OSPFDynamische Routingprotokolle Aufzucht und Pflege - OSPF
Dynamische Routingprotokolle Aufzucht und Pflege - OSPF
 
IPv6 im Jahre 2018
IPv6 im Jahre 2018IPv6 im Jahre 2018
IPv6 im Jahre 2018
 
Netzwerkgrundlagen - Von Ethernet bis IP
Netzwerkgrundlagen - Von Ethernet bis IPNetzwerkgrundlagen - Von Ethernet bis IP
Netzwerkgrundlagen - Von Ethernet bis IP
 
AS201701 - Building an Internet backbone with pure 1he servers and Linux
AS201701 - Building an Internet backbone with pure 1he servers and LinuxAS201701 - Building an Internet backbone with pure 1he servers and Linux
AS201701 - Building an Internet backbone with pure 1he servers and Linux
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 

Recently uploaded

一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
apekaom
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
ayvbos
 
原版定制英国赫瑞瓦特大学毕业证原件一模一样
原版定制英国赫瑞瓦特大学毕业证原件一模一样原版定制英国赫瑞瓦特大学毕业证原件一模一样
原版定制英国赫瑞瓦特大学毕业证原件一模一样
AS
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
F
 
一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理
SS
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
AS
 
一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理
A
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
 
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
mikehavy0
 
一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书
F
 
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
c6eb683559b3
 
一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理
F
 
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
AS
 

Recently uploaded (20)

Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirtsDown bad crying at the gym t shirts
Down bad crying at the gym t shirtsDown bad crying at the gym t shirts
 
一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
一比一原版桑佛德大学毕业证成绩单申请学校Offer快速办理
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
A LOOK INTO NETWORK TECHNOLOGIES MAINLY WAN.pptx
A LOOK INTO NETWORK TECHNOLOGIES MAINLY WAN.pptxA LOOK INTO NETWORK TECHNOLOGIES MAINLY WAN.pptx
A LOOK INTO NETWORK TECHNOLOGIES MAINLY WAN.pptx
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
原版定制英国赫瑞瓦特大学毕业证原件一模一样
原版定制英国赫瑞瓦特大学毕业证原件一模一样原版定制英国赫瑞瓦特大学毕业证原件一模一样
原版定制英国赫瑞瓦特大学毕业证原件一模一样
 
Loker Pemandu Lagu LC Semarang 085746015303
Loker Pemandu Lagu LC Semarang 085746015303Loker Pemandu Lagu LC Semarang 085746015303
Loker Pemandu Lagu LC Semarang 085746015303
 
一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理一比一原版田纳西大学毕业证如何办理
一比一原版田纳西大学毕业证如何办理
 
一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理一比一原版澳大利亚迪肯大学毕业证如何办理
一比一原版澳大利亚迪肯大学毕业证如何办理
 
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
一比一原版(毕业证书)新西兰怀特克利夫艺术设计学院毕业证原件一模一样
 
一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理一比一原版美国北卡罗莱纳大学毕业证如何办理
一比一原版美国北卡罗莱纳大学毕业证如何办理
 
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
[Hackersuli] Élő szövet a fémvázon: Python és gépi tanulás a Zeek platformon
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
Abortion Clinic in Germiston +27791653574 WhatsApp Abortion Clinic Services i...
 
一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书一比一原版贝德福特大学毕业证学位证书
一比一原版贝德福特大学毕业证学位证书
 
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
一比一原版(NYU毕业证书)美国纽约大学毕业证学位证书
 
一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理一比一原版犹他大学毕业证如何办理
一比一原版犹他大学毕业证如何办理
 
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrStory Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
Story Board.pptxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 
APNIC Updates presented by Paul Wilson at CaribNOG 27
APNIC Updates presented by Paul Wilson at  CaribNOG 27APNIC Updates presented by Paul Wilson at  CaribNOG 27
APNIC Updates presented by Paul Wilson at CaribNOG 27
 
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
一比一原版(毕业证书)新加坡南洋理工学院毕业证原件一模一样
 

Contemporary Linux Networking

  • 1. Contemporary Linux Networking Confessions of a Professional Freifunker DENOG9 Maximilian Wilhelm <max@sdn.clinic> @BarbarossaTM
  • 2. 2 Who am I? ● Maximilian Wilhelm – @BarbarossaTM ● Senior Infrastructure Architect, Uni Paderborn ● Infrastructure Archmage, Freifunk Hochstift ● Fanboy of – (Debian) Linux – ifupdown2 ● Networker ● OpenSource Hacker
  • 3. Agenda ● The Old Gods and the New ● ifupdown2 ● VRFs ● VXLAN ● VLAN-aware bridges ● MPLS ● DIY-SDN
  • 4. root@Stretch:~$ ifconfig -bash: ifconfig: command not found root@Stretch:~$ route -bash: route: command not found root@Stretch:~$ arp -bash: arp: command not found ● vconfig ● ifenslave
  • 5. ● iproute2 – Swiss Army knife for networkers ● Functions cleanly separated into subcommands ● ip link – L2: MTU, VLANs, LAGs, bridges, ... ● ip addr – L3 addresses ● ip neigh – ARP/ND ● ip route – Routing + MPLS
  • 6. Old vs. New vconfig add eth0 42 → ip link add vlan42 link eth0 type vlan id 42 ifenslave bond0 eth0 → ip link add bond0 type bond mode 4 ip link set master bond0 dev eth0→ arp → ip -4 neigh
  • 7. Old vs. New - Bridges brctl addbr br0 ➔ ip link add br0 type bridge [ forward_delay FORWARD_DELAY ] ... [ vlan_filtering VLAN_FILTERING ] [ vlan_default_pvid VLAN_D_PVID ] ... [ nf_call_iptables NF_CALL_IPT ] ... brctl addif br0 eth0 ➔ ip link set eth0 master br0
  • 8. 8 Network interface configuration ● Classic ifupdown not easily automated ● Generating /etc/network/interfaces simple ● How to reload? – »service networking restart« disruptive – No tool for “reload” present – Isn't trivial to build ➔ CumulusNetworks Ifupdown2 – Rewrite of ifupdown in Python – https://github.com/CumulusNetworks/ifupdown2
  • 9. 9 ifupdown2 ● No full feature parity with ifupdown (yet?) ● Shipped with batteries included – dependency resolution – ifreload – VRFs – VXLAN – VLAN-aware bridges ● Not (yet) supportedmerged: – ppp
  • 10. 10 ifupdown2 Patches ● Easy to extend, thanks to Python ● Upstream open for ideas (Hi Julien & Roopa) ● Added support for – B.A.T.M.A.N. interfaces – Tunnel (GRE, SIT, IPIP, GRETAP) ● Open Pull-Requests for – Condoning bridge interfaces for configuration – Setting phys-dev for VXLAN – Setting vEth peer name
  • 11. 11 VRFs ● Independent routing instances – L3-VPNs – Usually in combination with MPLS ● Related features – Policy-Routing (since Kernel 2.2) ● Old and busted ● Management headache – Network Namespaces (Kernel 2.6.24++) ● Sometimes “too much” separation
  • 12. 12 VRFs on Linux ● Separation for Layer3 communication ● VRF interface is master for “real” interfaces – Defines routing table for VRF ● Since Kernel 4.[345] (use >= 4.9) https://git.kernel.org/cgit/linux/kernel/git/to rvalds/linux.git/tree/Documentation/networking/ vrf.txt https://cumulusnetworks.com/blog/vrf-for-linux/ https://de.slideshare.net/CumulusNetworks/opera tionalizing-vrf-in-the-data-center
  • 13. 13 VRFs on Linux ip link add VRF_DEVICE type vrf table ID ip link set dev DEVICE master VRF_DEVICE Note: ● Device routes move from table main and local to table $ID
  • 14. 14 VRFs with ifupdown2 auto eth0 iface eth0 address 185.46.137.163/25 address 2a00:13c8:1000:2::163/64 gateway 185.46.137.129 gateway 2a00:13c8:1000:2::1 vrf vrf_external auto vrf_external iface vrf_external vrf-table 1023
  • 15. 15 inter VRF Communication ● Requires vEth pair – Like a virtual network cable within the box ● A end in main VRF, Z end in VRF “foo” ● Usual routing – Static – Bird talking BGP to itself – ...
  • 16. 16 vEth interfaces w/o + w/ ifupdown2 ip link add VETH_END1 type veth peer name VETH_END2 iface veth_ext2int link-type veth veth-peer-name veth_int2ext vrf vrf_external iface veth_int2ext link-type veth veth-peer-name veth_ext2int
  • 17. 17 VXLAN ● “Ethernet over UDP” – Or: “Poor mans approach to MPLS” ● Designed as Layer2 overlay for DCs – Multi-tenant Overlay over IP-Fabric – 24Bit VNI => 16M Instances – Unicast/Multicast communication ● Read: VLL / VPLS – Endpoints = VTEP (VXLAN Tunnel End Point) ● RFC7348
  • 18. 18 VTEPs on Linux ip link add DEVICE type vxlan id ID [ dev PHYS_DEV ] [ { group | remote } IPADDR ] [ local { IPADDR | any } ] [ … ] bridge fdb show [ brport DEVICE ]
  • 19. 19 VTEPs with ifupdown2 # vx_v2001_padcty auto vx_v2001_padcty iface vx_v2001_padcty vxlan-id 1310977 vxlan-physdev vlan2001 vxlan-svcnodeip 225.20.1.1 # hwaddress f2:00:c1:01:20:01 mtu 1560
  • 20. VLAN-aware bridges ● VLANs and bridges have been a challenge ● That ain't true no more – echo 1 > /sys/class/net/br0/bridge/ vlan_filtering – Now it's a “regular switch” ● Configured with bridge utility from iproute ● Simple KVM/Qemu hook for VLAN assignment – https://github.com/FreifunkHochstift/ffho-salt- public/blob/master/kvm/qemu-hook
  • 21. Bridge utility bridge vlan { add | del } vid VLAN_ID dev DEV [ pvid ] [ untagged ] [ self ] [ master ] bridge vlan show [ dev DEV ] [ vid VLAN_ID ] ● Related: bridge fdb [...]
  • 22. VLAN-aware bridges w/ ifupdown2 iface br0 bridge-ports bond0 bridge-vlan-aware yes bridge-vids 1013 4002 iface bond0 bridge-vids 100 101 200 201 1013 2000 [..] iface cr02_eth1 bridge-vids 1013 2000 2004 2006 3002 iface br0.1013 address 10.132.252.22/28 […]
  • 23. MPLS ● Forwarding path available in vanilla kernel – Use >= 4.9 ● Requires iproute >= 4.3 ip -f mpls or ip -M ● Enable use of labels up to n sysctl -w net.mpls.platform_labels=n ● Enable MPLS decap on $iface sysctl -w net.mpls.conf.$iface.input=1
  • 24. MPLS ● Push ip route add 10.23.42.0/24 encap mpls 100 via inet 192.168.42.23 ● Swap (100 → 200) ip -f mpls route add 100 as 200 via inet 192.168.47.11 ● Pop ip -f mpls route add 300 dev lo
  • 25. 25 The SDN part #SDN Disclaimer: Font on special request of AbraXXL
  • 27. 27 Cyber Supply Chain SDN ingredients ifupdown2
  • 28. 28 Pillar Example bbr-vega.in.ffho.net: id: 198 sysLocation: Vega roles: - router - batman - bbr sites: - pad-cty Quelle für Loopback-IP Bird config (OSPF + iBGP) Source for Loopback-IP Generate Batman interfaces Batman instances
  • 29. 29 Pillar Example contd. ifaces: bond0: bond-slaves: "eth0 eth1 eth2" vlan1002: desc: "<-> gw04" vlan-raw-device: bond0 prefixes: - 10.132.253.58/31 - 2a03:2260:2342:fe1c::1/126 batman_connect_sites: pad-cty [...] Source for /etc/network/interfaces Generate VXLAN overlay
  • 30. 30 IPoBATMANoVXLANoIPoVLANoRF ● Wait, what? Ethernet (RF / Kabel) Vlan IP VXLAN B.A.T.M.A.N. Adv. VXLAN IP
  • 32. 32 Offloading ● Difference between 4KB/s and 40MB/s... for iface in eth0 eth1; do for feature in sg gro gso tso; do ethtool --offload ${iface} ${feature} off done done https://downloadmirror.intel.com/22919/eng/README.txt
  • 33. 33 OpenVPN vs. VRFs ● Lots of OpenVPN tunnels ● OpenVPN tunnel should use VRF “external” ● Needed a small patch setsockopt (sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev) +1); ● https://github.com/OpenVPN/openvpn/pull/65 – Hi Gert, are you here?
  • 34. 34 Systemd + OpenVPN vs. ifup ● Lots of OpenVPN instances ● up /etc/openvpn/ifup – ifup “$1” ● Thanks to systemd all starting in parallel – Some ifup calls in parallel – Nearly no IPs configured anywhere – Damn ➔ flock –exclusive –wait 30
  • 35. 35 Further Reading ● Salt-Orchestrated Software Defined (Freifunk) Network (german) – https://www.slideshare.net/BarbarossaTM/software -defined-freifunk-backbones-78288014 ● Blog series DIY-SDN with OSS – https://blog.sdn.clinic/2017/09/building-your-own- software-defined-network-with-linux-and-open- source-tools/ ● #routingdays – Learn to build the Internet – https://blog.sdn.clinic/2017/09/ffrl-routingdays- learn-to-build-the-internet/
  • 36. 36 Questions? Remarks? Tell me: Maximilian Wilhelm <max@elitepeer.de> @BarbarossaTM