mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
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>
This commit is contained in:
parent
93040ae5cc
commit
c074da2810
9 changed files with 20 additions and 15 deletions
|
@ -828,7 +828,7 @@ static int arp_process(struct sk_buff *skb)
|
|||
}
|
||||
|
||||
if (arp->ar_op == htons(ARPOP_REQUEST) &&
|
||||
ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {
|
||||
ip_route_input_noref(skb, tip, sip, 0, dev, false) == 0) {
|
||||
|
||||
rt = skb_rtable(skb);
|
||||
addr_type = rt->rt_type;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue