67
Software Networking and Interfaces Matt Turner SRECon, Singapore | June 2019 on Linux @mt165 | mt165.co.uk

Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces

Matt TurnerSRECon, Singapore | June 2019

on Linux

@mt165 | mt165.co.uk

Page 2: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)
Page 3: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Outline● Networking 101● Interfaces● Bridges● Emergent Systems

Page 4: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

This is not about● IP, TCP, addressing● SDN

Page 5: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Networking 101

Page 6: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Ethernet and ARPEthernet - L2 protocol

MAC Address - Media Access Control Address - Ethernet address, eg c0:ff:ee:be:ef:69

ARP - Address Resolution Protocol - DNS for ethernet: IP -> MAC

$ arpAddress HWtype HWaddress Flags Mask Iface192.168.0.239 ether 48:3b:38:01:6a:23 C enp2s0172.28.0.13 ether 02:42:ac:1c:00:0d C br-de368312f566

Page 7: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

vLANsVirtual LANs

IEEE 802.1q

Simulates multiple networks using one set of cables and switches

Each vLAN has a short numeric ID

Nested vLANs - IEEE 802.1ad, aka “q in q”

Page 8: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

iptablesLinux kernel subsystem

Can do lots of things to packets as they pass through a system

Including: packet manipulation

Page 9: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

NAT vs Routing

123.1.2.1123.1.2.3

123.1.2.4

192.168.0.10

192.168.0.11

234.1.2.3

234.1.2.4

10.0.0.10

10.0.0.11

123.1.2.3 234.1.2.3

234.1.2.1

��

��

��

��

Page 10: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Route tablesGives the next hop for a destination subnet.

$ routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault moon.lan 0.0.0.0 UG 3 0 0 enp2s0loopback localhost 255.0.0.0 UG 0 0 0 lo172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0

Page 11: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Classful Routing

Class A 8 bit 0.0.0.0 127.0.0.1

Class B 16 bit 128.0.0.0 191.255.0.0

Class C 24 bit 192.0.0.0 223.255.255.0

Class D - multicast 224.0.0.0 239.255.255.255

Class E - reserved 240.0.0.0 255.255.255.255

Page 12: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Private Address Ranges

The “24-bit block” 8 bit prefix 10.0.0.0 – 10.255.255.255

1 class A

The “20-bit block” 12 bit prefix 172.16.0.0 – 172.31.255.255

16 class Bs

The “16-bit block “ 16 bit prefix 192.168.0.0 – 192.168.255.255

256 class Cs

Loopback 8 bit prefix 127.0.0.0 - 127.255.255.255

1 class A

Page 13: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Classless Routing and CIDRsClassless Inter-Domain Routing

Classful was too rigid and wasteful

Arbitrary ranges of addresses, notated as start address and size (as prefix mask)

CIDR notation: 192.168.42.0/24; 10.0.0.0/8

Page 14: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Address all, some, one host

● All hosts in a subnet● Some hosts, which have opted in● One arbitrary host from a set

Broadcast, Multicast, Anycast

Page 15: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

DHCPAsks a central server to allocate you an IP address

Based on an ethernet broadcast

Page 16: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Interfaces and Bridges

Page 17: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

Page 18: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

enp0s2

Page 19: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

enp0s2192.168.0.10

Page 20: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

enp0s2192.168.0.10

ping

connect(“google.com”);

Page 21: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

enp0s2192.168.0.10

nginx

bind(“*:80”);

Page 22: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

192.168.0.10

nginx

172.16.0.10

bind(“*:80”);

Page 23: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0

nginx

bind(“192.168.0.10:80”);

192.168.0.10172.16.0.10

Page 24: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10

nginx

eth1172.16.0.10

bind(“192.168.0.10:80”);

Page 25: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10

nginx

bind(“172.16.0.10:80”);eth1

172.16.0.10

Page 26: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

Page 27: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

e1000eth0

192.168.0.10

hardware software

Page 28: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

foo0

Page 29: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

foo0

Page 30: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

foo0packetd

Page 31: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

tun0packetd172.16.0.10

Page 32: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

ping

tun0packetd172.16.0.10

Page 33: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

e1000eth0

192.168.0.10

tun0packetd172.16.0.10

Page 34: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

tun0packetd172.16.0.10

NAT

Page 35: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

tun0packetd172.16.0.10

ip_forward = 1

Page 36: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0192.168.0.10e1000

tap0packetd

172.16.0.10DE:AD:BE:EF:00:00

Page 37: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000

tap0packetd

br0

Page 38: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

tap0packetd

Page 39: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

tap0packetd

br0 192.168.0.10

Page 40: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

ovs0

eth0e1000

tap0packetd

ovs0 192.168.0.10

Page 41: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

tap0

br0192.168.0.10

qemu [+ kvm]

Page 42: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

tap0

br0192.168.0.10

e1000eth0

qemu192.168.0.11C0:FF:EE:C0:FF:EE

Page 43: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

tap0

br0192.168.0.10

virtio_net

eth0qemu

192.168.0.11C0:FF:EE:C0:FF:EE

Page 44: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

Page 45: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

Page 46: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

Page 47: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

veth0 veth1

Page 48: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

veth0 veth1172.16.0.1 172.16.0.2

Page 49: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

veth0

veth1 172.16.0.2

Page 50: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

veth0veth1

172.16.0.2

ftpd

Page 51: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

veth0eth0

172.16.0.2

ftpd

Page 52: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000

br0192.168.0.10

nginx

ping

eth0172.16.0.2

ftpd

Page 53: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000 192.168.0.10

eth0.42 172.16.0.2

ftpd

vlan : 42

ftpd

Page 54: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000 192.168.0.10

nginxeth0.42

172.16.0.2

ftpd

vlan : 42

Page 55: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000C0:FF:EE

192.168.0.10

eth1192.168.0.11

ftpd

eth2192.168.0.12

Page 56: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000F0:00:01 192.168.0.10

eth1192.168.0.11

ftpd

macvlanF0:0B:4R

eth2192.168.0.12

macvlanF0:07:07

Page 57: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000F0:00:01 192.168.0.10

eth1192.168.0.11

ftpd

macvlanF0:0B:4R

eth2192.168.0.12

macvlanF0:07:07

Page 58: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000F0:00:01 192.168.0.10

eth1192.168.0.11

ftpd

macvlanF0:0B:4R

eth2192.168.0.12

macvlanF0:07:07

Page 59: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000F0:00:01 192.168.0.10

eth1192.168.0.11

ftpd

macvlanF0:0B:4R

eth2192.168.0.12

macvlanF0:07:07

Page 60: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

br0

eth0e1000F0:00:01 192.168.0.10

macvlan0

ftpd

macvlanF0:0B:4R

macvtapF0:07:07

qemutap0

qemumacvtap0

Page 61: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000C0:FF:EE 192.168.0.10

eth1192.168.0.11

ftpd

ipvlanC0:FF:EE

eth2192.168.0.12

ipvlanC0:FF:EE

Page 62: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000C0:FF:EE 192.168.0.10

eth1192.168.1.10

ftpd

ipvlan L3

eth2192.168.2.10ipvlan L3

Page 63: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

eth0e1000C0:FF:EE 192.168.0.10

192.168.1.10ipvlan L3

ipvlan L3

BIRD

Calico

192.168.1.10 nodejs

Page 64: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Software Networking and Interfaces @mt165

K8s etcd

K8s API

plugin

Calico etcd

calico-node

felix

confd

BIRD

eth0 (192.168.0.1)

vEth-xxxx (no IP)

vEth pair

L2 broadcast domain (routing by ARP),Or, L3 network (routing by BGP peering)

eth0 eth0

iptables (outside namespace)

Linux kernel ip_forwardin

g

Kernel route table

BGP(mesh up to 100 nodes)

workload

workload

i.e. no in-host broadcast domain switchNo multi-host broadcast domain overlay

Page 65: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Recap - Interface Types● Loopback● Dummy● “real”● (multiple L3 addresses)● TAP / TUN● vEth● Vlan● Macvlan / macvtap● Ipvlan / ipvtap L2● Ipvlan / ipvtap L3

Page 66: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Recap - Bridge Types● Linux Bridge● Open vSwitch (inc DPDK)● Macvtap● (netmap / VALE)● (snabbswitch)● (SR-IOV NIC, Cisco vNIC)

Page 67: Software Networking on Linux - USENIX · vEth-xxxx (no IP) vEth pair L2 broadcast domain (routing by ARP), Or, L3 network (routing by BGP peering) eth0 eth0 iptables (outside namespace)

Thanks!@mt165

SlidesVideos

Demo codemt165.co.uk