Hello,
On Wed, 25 Oct 2017, Ye Yin wrote:
> Hi, all,
>
> We run ipvs at host and container in the same host at the same time,
> and ipvs at host will transport network traffic to ipvs in the
> container. Then some problem happended to us, the detail is as
> follows:
>
>
> ________________ _____________
> | ___|___ |container1 |
> | host bridge |_vethA_|----|192.168.1.232 |
> |192.168.1.193/26 | |____________|
> | ___|___ _____________
> | |_vethB_|----|container2 |
> |________________| |192.168.1.233 |
> |_____________|
>
> container1 and container2 connected each other by bridge on the host,
> which is the gateway of the two containers. Run ipvs on the host with
> VIP 172.17.169.208.
>
> host:
> $ ipvsadm -l -n
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Scheduler Flags
> -> RemoteAddress:Port Forward Weight ActiveConn InActConn
> TCP 172.17.169.208:80 rr
> -> 192.168.1.233:80 Masq 1 0 0
>
> container2:
> $ ipvsadm -l -n
> IP Virtual Server version 1.2.1 (size=4096)
> Prot LocalAddress:Port Scheduler Flags
> -> RemoteAddress:Port Forward Weight ActiveConn InActConn
> TCP 192.168.1.233:80 rr
> -> 14.17.xx.yyy:80 Masq 0 0 0
>
> telnet from container1 to container2:
>
> access by ipvs at host will failed:
>
> $ telnet 172.17.169.208 80
> Trying 172.17.169.208...
> telnet: connect to address 172.17.169.208: Connection refused
>
> direct access ipvs in container will success:
> $ telnet 192.168.1.233 80
> Trying 192.168.1.233...
> Connected to 192.168.1.233.
> Escape character is '^]'.
> ^]
> telnet quit
> Connection closed.
>
>
> I think it's the ipvs_property flag make ipvs in container return
> NF_ACCEPT for network traffic, which make traffic go up to tcp layer.
> Please see ip_vs_in.
>
> We should clear this flag when SKB's netns has changed, Any idea?
Good idea. Are you able to test after adding such line to
net/core/skbuff.c:skb_scrub_packet()?:
skb->ipvs_property = 0;
Just after nf_reset_trace(skb);
On success we should provide a patch instead that adds
some ipvs_property_reset(skb) func in include/linux/skbuff.h that
depends on the IS_ENABLED(CONFIG_IP_VS), just like it is done
for nf_reset().
Regards
--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|