Eric Dumazet
c074da2810
ipv4: tcp: dont cache unconfirmed intput dst
...
DDOS synflood attacks hit badly IP route cache.
On typical machines, this cache is allowed to hold up to 8 Millions dst
entries, 256 bytes for each, for a total of 2GB of memory.
rt_garbage_collect() triggers and tries to cleanup things.
Eventually route cache is disabled but machine is under fire and might
OOM and crash.
This patch exploits the new TCP early demux, to set a nocache
boolean in case incoming TCP frame is for a not yet ESTABLISHED or
TIMEWAIT socket.
This 'nocache' boolean is then used in case dst entry is not found in
route cache, to create an unhashed dst entry (DST_NOCACHE)
SYN-cookie-ACK sent use a similar mechanism (ipv4: tcp: dont cache
output dst for syncookies), so after this patch, a machine is able to
absorb a DDOS synflood attack without polluting its IP route cache.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Hans Schillstrom <hans.schillstrom@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-06-27 15:34:24 -07:00
..
9p
9p: Reduce object size with CONFIG_NET_9P_DEBUG
2012-01-05 10:51:44 -06:00
bluetooth
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
2012-06-13 15:35:35 -04:00
caif
caif-hsi: Remove use of module parameters
2012-06-25 16:44:12 -07:00
irda
iucv
af_iucv: add shutdown for HS transport
2012-03-07 22:52:24 -08:00
netfilter
netfilter: fix missing symbols if CONFIG_NETFILTER_NETLINK_QUEUE_CT unset
2012-06-18 21:09:17 -07:00
netns
Merge branch 'master' of git://1984.lsi.us.es/net-next
2012-06-11 12:56:14 -07:00
nfc
NFC: Introduce target mode rx data callback
2012-06-04 21:34:31 +02:00
phonet
net: remove my future former mail address
2012-06-17 16:29:38 -07:00
sctp
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-05-16 22:17:37 -04:00
tc_act
act_api.h
addrconf.h
ipv6: bool/const conversions phase2
2012-05-19 01:08:16 -04:00
af_ieee802154.h
af_rxrpc.h
af_unix.h
af_unix: speedup /proc/net/unix
2012-06-08 14:27:23 -07:00
ah.h
arp.h
ipv4: Eliminate spurious argument to __ipv4_neigh_lookup
2012-02-15 17:48:35 -05:00
atmclip.h
atm: clip: Use device neigh support on top of "arp_tbl".
2011-11-30 18:51:03 -05:00
ax25.h
net ax25: Fix the build when sysctl support is disabled.
2012-04-23 22:14:47 -04:00
ax88796.h
cfg80211-wext.h
cfg80211.h
cfg80211: clarify set_channel APIs
2012-06-06 15:18:17 -04:00
checksum.h
cipso_ipv4.h
cipso: handle CIPSO options correctly when NetLabel is disabled
2012-06-01 14:18:29 -04:00
cls_cgroup.h
codel.h
fq_codel: should use qdisc backlog as threshold
2012-05-16 15:30:26 -04:00
compat.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
datalink.h
dcbevent.h
dcb: Add stub routines for !CONFIG_DCB
2011-10-06 15:49:51 -04:00
dcbnl.h
net/dcb: Add an optional max rate attribute
2012-04-05 05:08:04 -04:00
dn.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
dn_dev.h
dn_fib.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
dn_neigh.h
dn_nsp.h
dn_route.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
dsa.h
dsa: Include linux/if_ether.h to fix build error
2011-12-01 11:41:06 -05:00
dsfield.h
dst.h
include/net/dst.h: neaten asterisk placement
2012-06-16 15:20:35 -07:00
dst_ops.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
esp.h
ethoc.h
fib_rules.h
flow.h
ipv4: tcp: dont cache output dst for syncookies
2012-06-22 21:47:33 -07:00
flow_keys.h
flow_dissector: use a 64bit load/store
2011-11-29 13:17:03 -05:00
garp.h
gen_stats.h
genetlink.h
net: Deinline __nlmsg_put and genlmsg_put. -7k code on i386 defconfig.
2012-01-30 15:22:06 -05:00
gre.h
icmp.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
ieee80211_radiotap.h
wireless: move ieee80211chan2mhz macro
2011-11-11 12:32:50 -05:00
ieee802154.h
6LoWPAN: add fragmentation support
2011-11-14 00:19:42 -05:00
ieee802154_netdev.h
mac802154: declare reduced mlme operations
2012-05-16 15:16:56 -04:00
if_inet6.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
inet6_connection_sock.h
tcp: bind() use stronger condition for bind_conflict
2012-04-14 15:28:55 -04:00
inet6_hashtables.h
net: use IS_ENABLED(CONFIG_IPV6)
2011-12-11 18:25:16 -05:00
inet_common.h
inet_connection_sock.h
ipv4: tcp: dont cache output dst for syncookies
2012-06-22 21:47:33 -07:00
inet_ecn.h
inet: add rfc 3168 extract in front of INET_ECN_encapsulate()
2011-10-22 01:25:23 -04:00
inet_frag.h
ip_frag: struct inet_frags match() method returns a bool
2012-05-18 01:40:27 -04:00
inet_hashtables.h
ipv4: Early TCP socket demux.
2012-06-19 21:22:05 -07:00
inet_sock.h
net: implement IP_RECVTOS for IP_PKTOPTIONS
2012-02-13 00:46:41 -05:00
inet_timewait_sock.h
inet: remove rcu protection on tw_net
2011-12-14 13:34:55 -05:00
inetpeer.h
inet: Avoid potential NULL peer dereference.
2012-06-11 04:13:57 -07:00
ip.h
ipv4: Add sysctl knob to control early socket demux
2012-06-22 17:11:13 -07:00
ip6_checksum.h
ip6_fib.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-06-16 01:23:04 -07:00
ip6_route.h
ipv6: Handle PMTU in ICMP error handlers.
2012-06-15 14:54:11 -07:00
ip6_tunnel.h
ip_fib.h
inet: Add inetpeer tree roots to the FIB tables.
2012-06-11 02:09:16 -07:00
ip_vs.h
ipvs: add support for sync threads
2012-05-08 19:40:33 +02:00
ipcomp.h
ipconfig.h
ipip.h
tunnel: implement 64 bits statistics
2012-04-14 14:47:05 -04:00
ipv6.h
ipv6: bool/const conversions phase2
2012-05-19 01:08:16 -04:00
ipx.h
iw_handler.h
lapb.h
lapb: Neaten debugging
2012-05-17 18:45:20 -04:00
lib80211.h
include: replace linux/module.h with "struct module" wherever possible
2011-10-31 19:32:32 -04:00
llc.h
llc_c_ac.h
llc_c_ev.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
2012-06-13 15:35:35 -04:00
mac802154.h
mac802154: add wpan device-class support
2012-06-26 21:06:11 -07:00
mip6.h
mld.h
ndisc.h
Treat ND option 31 as userland (DNSSL support)
2012-04-12 15:56:57 -04:00
neighbour.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
net_namespace.h
net sysctl: Add place holder functions for when sysctl support is compiled out of the kernel.
2012-04-23 19:24:28 -04:00
net_ratelimit.h
netdma.h
netevent.h
netlabel.h
netlink.h
netlink: Delete all NLA_PUT*() macros.
2012-04-02 04:33:45 -04:00
netprio_cgroup.h
netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m
2012-02-10 15:08:57 -05:00
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h
pkt_cls.h
pkt_sched.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
protocol.h
ipv4: tcp: dont cache unconfirmed intput dst
2012-06-27 15:34:24 -07:00
psnap.h
raw.h
rawv6.h
ipv6: bool/const conversions phase2
2012-05-19 01:08:16 -04:00
red.h
net_sched: red: Make minor corrections to comments
2012-04-16 23:53:11 -04:00
regulatory.h
cfg80211: pass DFS region to drivers through reg_notifier()
2011-11-21 16:20:41 -05:00
request_sock.h
tcp: Change possible SYN flooding messages
2011-09-15 14:49:43 -04:00
rose.h
route.h
ipv4: tcp: dont cache unconfirmed intput dst
2012-06-27 15:34:24 -07:00
rtnetlink.h
rtnetlink: ops->get_tx_queue() cannot take a const 'tb'.
2012-04-13 14:21:04 -04:00
sch_generic.h
bonding: Fix corrupted queue_mapping
2012-06-12 15:29:21 -07:00
scm.h
af_unix: dont send SCM_CREDENTIALS by default
2011-09-28 13:29:50 -04:00
secure_seq.h
tcp: add const qualifiers where possible
2011-10-21 05:22:42 -04:00
slhc_vj.h
snmp.h
Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2012-01-09 13:08:28 -08:00
sock.h
net: struct sock cleanups
2012-06-25 16:09:18 -07:00
stp.h
tcp.h
ipv4: tcp: dont cache unconfirmed intput dst
2012-06-27 15:34:24 -07:00
tcp_memcontrol.h
cgroup: pass struct mem_cgroup instead of struct cgroup to socket memcg
2012-04-10 10:04:07 -07:00
tcp_states.h
timewait_sock.h
[PATCH] tcp: Cache inetpeer in timewait socket, and only when necessary.
2012-06-09 14:56:12 -07:00
transp_v6.h
net: relax PKTINFO non local ipv6 udp xmit check
2011-08-30 17:39:01 -04:00
udp.h
net/ipv6/udp: UDP encapsulation: introduce encap_rcv hook into IPv6
2012-04-28 22:21:51 -04:00
udplite.h
net: ipv4: Standardize prefixes for message logging
2012-03-12 17:05:21 -07:00
wext.h
wimax.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
wpan-phy.h
mac802154: monitor device support
2012-05-16 15:17:08 -04:00
x25.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
x25device.h
xfrm.h
xfrm: Convert several xfrm policy match functions to bool.
2012-05-15 15:04:57 -04:00