Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/5] Make tcp-metrics source-address aware
@ 2014-01-08 15:05 Christoph Paasch
  2014-01-08 15:05 ` [PATCH net-next v2 1/5] tcp: metrics: rename tcpm_addr to tcpm_daddr Christoph Paasch
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Christoph Paasch @ 2014-01-08 15:05 UTC (permalink / raw)
  To: netdev; +Cc: David Miller, Eric Dumazet, Yuchung Cheng, Julian Anastasov

Currently tcp-metrics only stores per-destination addresses. This brings
problems, when a host has multiple interfaces (e.g., a smartphone having
WiFi/3G):

For example, a host contacting a server over WiFi will store the tcp-metrics
per destination IP. If then the host contacts the same server over 3G, the
same tcp-metrics will be used, although the path-characteristics are completly
different (e.g., the ssthresh is probably not the same).

In case of TFO this is not a problem, as the server will provide us a new cookie
once he saw our SYN+DATA with an incorrect cookie.
It may be (in case of carrier-grade NAT), that we keep the same public IP but
have a different private IP. Thus, we better reuse the old cookie even if our
source-IP has changed. However, this scenario is probably very uncommon, as 
carriers try to provide the same src-IP to the clients behind their CGN.

Patches 1 + 2 add the source-IP to the tcp metrics.

Patches 3 to 5 modify the netlink-api to support the source-IP. From now on,
when using the command "ip tcp_metrics delete address ADDRESS" all entries
which match this destination IP will be deleted.

Today's iproute2 will complain when doing "ip tcp_metrics flush PREFIX" if
several entries are present for the same destination-IP but with different
source-IPs:

root@client:~/test# ip tcp_metrics
10.2.1.2 age 3.640sec rtt 16250us rttvar 15000us cwnd 10
10.2.1.2 age 4.030sec rtt 18750us rttvar 15000us cwnd 10
root@client:~/test# ip tcp_metrics flush 10.2.1.2/16
Failed to send flush request
: No such process


Follow-up patches will modify iproute2 to handle this correctly and allow
specifying the source-IP in the get/del commands.


v2: Added the patch that allows to selectively get/del of tcp-metrics based
    on src-IP and moved the patch that adds the new netlink attribute before
    the other patches.

Christoph Paasch (5):
  tcp: metrics: rename tcpm_addr to tcpm_daddr
  tcp: metrics: Add source-address to tcp-metrics
  tcp: metrics: New netlink attribute for src IP and dumped in netlink
    reply
  tcp: metrics: Delete all entries matching a certain destination
  tcp: metrics: Allow selective get/del of tcp-metrics based on src IP

 include/uapi/linux/tcp_metrics.h |   2 +
 net/ipv4/tcp_metrics.c           | 151 ++++++++++++++++++++++++++-------------
 2 files changed, 105 insertions(+), 48 deletions(-)

-- 
1.8.3.2

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-01-10 23:11 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-08 15:05 [PATCH net-next v2 0/5] Make tcp-metrics source-address aware Christoph Paasch
2014-01-08 15:05 ` [PATCH net-next v2 1/5] tcp: metrics: rename tcpm_addr to tcpm_daddr Christoph Paasch
2014-01-08 15:05 ` [PATCH net-next v2 2/5] tcp: metrics: Add source-address to tcp-metrics Christoph Paasch
2014-01-08 17:55   ` Eric Dumazet
2014-01-08 22:43     ` Christoph Paasch
2014-01-08 23:13       ` Eric Dumazet
2014-01-10 22:37         ` David Miller
2014-01-10 23:10           ` Hannes Frederic Sowa
2014-01-08 15:05 ` [PATCH net-next v2 3/5] tcp: metrics: New netlink attribute for src IP and dumped in netlink reply Christoph Paasch
2014-01-08 15:05 ` [PATCH net-next v2 4/5] tcp: metrics: Delete all entries matching a certain destination Christoph Paasch
2014-01-08 15:05 ` [PATCH net-next v2 5/5] tcp: metrics: Allow selective get/del of tcp-metrics based on src IP Christoph Paasch
2014-01-10 22:38 ` [PATCH net-next v2 0/5] Make tcp-metrics source-address aware David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox