x step 4 = database! - image contextualisation - dnsmasq - metadata - for getting keys - user metadata - user authentication - otp or ldap or plain file - for registering keys - for creating VMs - automating - trigger / postgres / etcd - building vm images! - generate tap names matching vm??? problem, because inteerfaces are limited in length! [root@diamond hackcloud]# ip link add b23456789012345 type bridge [root@diamond hackcloud]# ip link add b234567890123456 type bridge Error: argument "b234567890123456" is wrong: "dev" not a valid ifname [root@diamond hackcloud]# - VMID is not uuid, but counter; using hexa; using 16**10, gives 1099511627776 VMs >>> (16**10)/(1000*24*365) 125515.02600182648 interface names: x = vxlan ? b = bridge v = vm => 16 types possible 10+1 used => 4 left 2 positions for interface id? => 256 interfaces per VM mac: 48 bits = 6 bytes 1 byte = 2hexa positions prefix is 02:00: = 2 bytes we have 4 bytes = 8 hexa left!!!! embed mac suffix as ID! full mac = 12 bytes No vmprefix + counter -> because counter size might always be wrong (how many interfaces? 16? 256? ... ) -------------------------------------------------------------------------------- No stale firewall entries as we regnerate, not keep the list! table bridge filter { chain prerouting { type filter hook prerouting priority 0; policy accept; ibrname br100 jump netpublic-$version } chain netpublic-10 { ... } } can generate new full chain, change only the jump -------------------------------------------------------------------------------- Much later: - rate limiting