<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/include/net/ip_vs.h, branch v2.6.38</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v2.6.38</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v2.6.38'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2010-10-21T09:04:43Z</updated>
<entry>
<title>ipvs: provide address family for debugging</title>
<updated>2010-10-21T09:04:43Z</updated>
<author>
<name>Julian Anastasov</name>
<email>ja@ssi.bg</email>
</author>
<published>2010-10-17T13:46:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0d79641a96d612aaa6d57a4d4f521d7ed9c9ccdd'/>
<id>urn:sha1:0d79641a96d612aaa6d57a4d4f521d7ed9c9ccdd</id>
<content type='text'>
 	As skb-&gt;protocol is not valid in LOCAL_OUT add
parameter for address family in packet debugging functions.
Even if ports are not present in AH and ESP change them to
use ip_vs_tcpudp_debug_packet to show at least valid addresses
as before. This patch removes the last user of skb-&gt;protocol
in IPVS.

Signed-off-by: Julian Anastasov &lt;ja@ssi.bg&gt;
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
</content>
</entry>
<entry>
<title>ipvs: changes for local real server</title>
<updated>2010-10-21T09:03:46Z</updated>
<author>
<name>Julian Anastasov</name>
<email>ja@ssi.bg</email>
</author>
<published>2010-10-17T13:38:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=fc604767613b6d2036cdc35b660bc39451040a47'/>
<id>urn:sha1:fc604767613b6d2036cdc35b660bc39451040a47</id>
<content type='text'>
 	This patch deals with local real servers:

- Add support for DNAT to local address (different real server port).
It needs ip_vs_out hook in LOCAL_OUT for both families because
skb-&gt;protocol is not set for locally generated packets and can not
be used to set 'af'.

- Skip packets in ip_vs_in marked with skb-&gt;ipvs_property because
ip_vs_out processing can be executed in LOCAL_OUT but we still
have the conn_out_get check in ip_vs_in.

- Ignore packets with inet-&gt;nodefrag from local stack

- Require skb_dst(skb) != NULL because we use it to get struct net

- Add support for changing the route to local IPv4 stack after DNAT
depending on the source address type. Local client sets output
route and the remote client sets input route. It looks like
IPv6 does not need such rerouting because the replies use
addresses from initial incoming header, not from skb route.

- All transmitters now have strict checks for the destination
address type: redirect from non-local address to local real
server requires NAT method, local address can not be used as
source address when talking to remote real server.

- Now LOCALNODE is not set explicitly as forwarding
method in real server to allow the connections to provide
correct forwarding method to the backup server. Not sure if
this breaks tools that expect to see 'Local' real server type.
If needed, this can be supported with new flag IP_VS_DEST_F_LOCAL.
Now it should be possible connections in backup that lost
their fwmark information during sync to be forwarded properly
to their daddr, even if it is local address in the backup server.
By this way backup could be used as real server for DR or TUN,
for NAT there are some restrictions because tuple collisions
in conntracks can create problems for the traffic.

- Call ip_vs_dst_reset when destination is updated in case
some real server IP type is changed between local and remote.

[ horms@verge.net.au: removed trailing whitespace ]
Signed-off-by: Julian Anastasov &lt;ja@ssi.bg&gt;
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
</content>
</entry>
<entry>
<title>ipvs: do not schedule conns from real servers</title>
<updated>2010-10-21T08:50:41Z</updated>
<author>
<name>Julian Anastasov</name>
<email>ja@ssi.bg</email>
</author>
<published>2010-10-17T13:24:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=190ecd27cd7294105e3b26ca71663c7d940acbbb'/>
<id>urn:sha1:190ecd27cd7294105e3b26ca71663c7d940acbbb</id>
<content type='text'>
 	This patch is needed to avoid scheduling of
packets from local real server when we add ip_vs_in
in LOCAL_OUT hook to support local client.

 	Currently, when ip_vs_in can not find existing
connection it tries to create new one by calling ip_vs_schedule.

 	The default indication from ip_vs_schedule was if
connection was scheduled to real server. If real server is
not available we try to use the bypass forwarding method
or to send ICMP error. But in some cases we do not want to use
the bypass feature. So, add flag 'ignored' to indicate if
the scheduler ignores this packet.

 	Make sure we do not create new connections from replies.
We can hit this problem for persistent services and local real
server when ip_vs_in is added to LOCAL_OUT hook to handle
local clients.

 	Also, make sure ip_vs_schedule ignores SYN packets
for Active FTP DATA from local real server. The FTP DATA
connection should be created on SYN+ACK from client to assign
correct connection daddr.

Signed-off-by: Julian Anastasov &lt;ja@ssi.bg&gt;
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
</content>
</entry>
<entry>
<title>ipvs: switch to notrack mode</title>
<updated>2010-10-21T08:50:20Z</updated>
<author>
<name>Julian Anastasov</name>
<email>ja@ssi.bg</email>
</author>
<published>2010-10-17T13:21:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=cf356d69db0afef692cd640917bc70f708c27f14'/>
<id>urn:sha1:cf356d69db0afef692cd640917bc70f708c27f14</id>
<content type='text'>
 	Change skb-&gt;ipvs_property semantic. This is preparation
to support ip_vs_out processing in LOCAL_OUT. ipvs_property=1
will be used to avoid expensive lookups for traffic sent by
transmitters. Now when conntrack support is not used we call
ip_vs_notrack method to avoid problems in OUTPUT and
POST_ROUTING hooks instead of exiting POST_ROUTING as before.

Signed-off-by: Julian Anastasov &lt;ja@ssi.bg&gt;
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
</content>
</entry>
<entry>
<title>ipvs: optimize checksums for apps</title>
<updated>2010-10-21T08:50:02Z</updated>
<author>
<name>Julian Anastasov</name>
<email>ja@ssi.bg</email>
</author>
<published>2010-10-17T13:17:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=8b27b10f5863a5b63e46304a71aa01463d1efac4'/>
<id>urn:sha1:8b27b10f5863a5b63e46304a71aa01463d1efac4</id>
<content type='text'>
 	Avoid full checksum calculation for apps that can provide
info whether csum was broken after payload mangling. For now only
ip_vs_ftp mangles payload and it updates the csum, so the full
recalculation is avoided for all packets.

 	Add CHECKSUM_UNNECESSARY for snat_handler (TCP and UDP).
It is needed to support SNAT from local address for the case
when csum is fully recalculated.

Signed-off-by: Julian Anastasov &lt;ja@ssi.bg&gt;
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
</content>
</entry>
<entry>
<title>ipvs: IPv6 tunnel mode</title>
<updated>2010-10-19T08:38:48Z</updated>
<author>
<name>Hans Schillstrom</name>
<email>hans.schillstrom@ericsson.com</email>
</author>
<published>2010-10-19T08:38:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=714f095f74582764d629785f03b459a3d0503624'/>
<id>urn:sha1:714f095f74582764d629785f03b459a3d0503624</id>
<content type='text'>
IPv6 encapsulation uses a bad source address for the tunnel.
i.e. VIP will be used as local-addr and encap. dst addr.
Decapsulation will not accept this.

Example
LVS (eth1 2003::2:0:1/96, VIP 2003::2:0:100)
   (eth0 2003::1:0:1/96)
RS  (ethX 2003::1:0:5/96)

tcpdump
2003::2:0:100 &gt; 2003::1:0:5: IP6 (hlim 63, next-header TCP (6) payload length: 40)  2003::3:0:10.50991 &gt; 2003::2:0:100.http: Flags [S], cksum 0x7312 (correct), seq 3006460279, win 5760, options [mss 1440,sackOK,TS val 1904932 ecr 0,nop,wscale 3], length 0

In Linux IPv6 impl. you can't have a tunnel with an any cast address
receiving packets (I have not tried to interpret RFC 2473)
To have receive capabilities the tunnel must have:
 - Local address set as multicast addr or an unicast addr
 - Remote address set as an unicast addr.
 - Loop back addres or Link local address are not allowed.

This causes us to setup a tunnel in the Real Server with the
LVS as the remote address, here you can't use the VIP address since it's
used inside the tunnel.

Solution
Use outgoing interface IPv6 address (match against the destination).
i.e. use ip6_route_output() to look up the route cache and
then use ipv6_dev_get_saddr(...) to set the source address of the
encapsulated packet.

Additionally, cache the results in new destination
fields: dst_cookie and dst_saddr and properly check the
returned dst from ip6_route_output. We now add xfrm_lookup
call only for the tunneling method where the source address
is a local one.

Signed-off-by:Hans Schillstrom &lt;hans.schillstrom@ericsson.com&gt;
Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
</content>
</entry>
<entry>
<title>IPVS: Allow configuration of persistence engines</title>
<updated>2010-10-04T13:45:24Z</updated>
<author>
<name>Simon Horman</name>
<email>horms@verge.net.au</email>
</author>
<published>2010-08-22T12:37:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0d1e71b04a04b6912e50926b9987c1e72facb1f3'/>
<id>urn:sha1:0d1e71b04a04b6912e50926b9987c1e72facb1f3</id>
<content type='text'>
Allow the persistence engine of a virtual service to be set, edited
and unset.

This feature only works with the netlink user-space interface.

Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
Acked-by: Julian Anastasov &lt;ja@ssi.bg&gt;

</content>
</entry>
<entry>
<title>IPVS: management of persistence engine modules</title>
<updated>2010-10-04T13:45:24Z</updated>
<author>
<name>Simon Horman</name>
<email>horms@verge.net.au</email>
</author>
<published>2010-08-22T12:37:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=8be67a6617b3403551fccb67b1c624c659419515'/>
<id>urn:sha1:8be67a6617b3403551fccb67b1c624c659419515</id>
<content type='text'>
This is based heavily on the scheduler management code

Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
Acked-by: Julian Anastasov &lt;ja@ssi.bg&gt;

</content>
</entry>
<entry>
<title>IPVS: Add persistence engine data to /proc/net/ip_vs_conn</title>
<updated>2010-10-04T13:45:24Z</updated>
<author>
<name>Simon Horman</name>
<email>horms@verge.net.au</email>
</author>
<published>2010-08-22T12:37:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a3c918acd29a96aba3b46bf50136e7953a480d17'/>
<id>urn:sha1:a3c918acd29a96aba3b46bf50136e7953a480d17</id>
<content type='text'>
This shouldn't break compatibility with userspace as the new data
is at the end of the line.

I have confirmed that this doesn't break ipvsadm, the main (only?)
user-space user of this data.

Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
Acked-by: Julian Anastasov &lt;ja@ssi.bg&gt;

</content>
</entry>
<entry>
<title>IPVS: Add struct ip_vs_pe</title>
<updated>2010-10-04T13:45:24Z</updated>
<author>
<name>Simon Horman</name>
<email>horms@verge.net.au</email>
</author>
<published>2010-08-22T12:37:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=85999283a21ab2dd37427fdd8c8e8af57223977c'/>
<id>urn:sha1:85999283a21ab2dd37427fdd8c8e8af57223977c</id>
<content type='text'>
Signed-off-by: Simon Horman &lt;horms@verge.net.au&gt;
Acked-by: Julian Anastasov &lt;ja@ssi.bg&gt;

</content>
</entry>
</feed>
