On 11/2/18 1:10 PM, Mike Manning wrote: > Services currently have to be VRF-aware if they are using an unbound > socket. One cannot have multiple service instances running in the > default and other VRFs for services that are not VRF-aware and listen > on an unbound socket. This is because there is no easy way of isolating > packets received in the default VRF from those arriving in other VRFs. > > This series provides this isolation for stream sockets subject to the > existing kernel parameter net.ipv4.tcp_l3mdev_accept not being set, > given that this is documented as allowing a single service instance to > work across all VRF domains. Similarly, net.ipv4.udp_l3mdev_accept is > checked for datagram sockets, and net.ipv4.raw_l3mdev_accept is > introduced for raw sockets. The functionality applies to UDP & TCP > services as well as those using raw sockets, and is for IPv4 and IPv6. > > Example of running ssh instances in default and blue VRF: > > $ /usr/sbin/sshd -D > $ ip vrf exec vrf-blue /usr/sbin/sshd > $ ss -ta | egrep 'State|ssh' > State Recv-Q Send-Q Local Address:Port Peer Address:Port > LISTEN 0 128 0.0.0.0%vrf-blue:ssh 0.0.0.0:* > LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* > ESTAB 0 0 192.168.122.220:ssh 192.168.122.1:50282 > LISTEN 0 128 [::]%vrf-blue:ssh [::]:* > LISTEN 0 128 [::]:ssh [::]:* > ESTAB 0 0 [3000::2]%vrf-blue:ssh [3000::9]:45896 > ESTAB 0 0 [2000::2]:ssh [2000::9]:46398 >
DaveM: I will take a look at this set the early part of this week. I just need a few days. Thanks,