mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ipv4: Delete routing cache.
The ipv4 routing cache is non-deterministic, performance wise, and is subject to reasonably easy to launch denial of service attacks. The routing cache works great for well behaved traffic, and the world was a much friendlier place when the tradeoffs that led to the routing cache's design were considered. What it boils down to is that the performance of the routing cache is a product of the traffic patterns seen by a system rather than being a product of the contents of the routing tables. The former of which is controllable by external entitites. Even for "well behaved" legitimate traffic, high volume sites can see hit rates in the routing cache of only ~%10. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									fa0afcd109
								
							
						
					
					
						commit
						89aef8921b
					
				
					 3 changed files with 13 additions and 933 deletions
				
			
		| 
						 | 
				
			
			@ -109,7 +109,6 @@ extern struct ip_rt_acct __percpu *ip_rt_acct;
 | 
			
		|||
struct in_device;
 | 
			
		||||
extern int		ip_rt_init(void);
 | 
			
		||||
extern void		rt_cache_flush(struct net *net, int how);
 | 
			
		||||
extern void		rt_cache_flush_batch(struct net *net);
 | 
			
		||||
extern struct rtable *__ip_route_output_key(struct net *, struct flowi4 *flp);
 | 
			
		||||
extern struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp,
 | 
			
		||||
					   struct sock *sk);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1072,11 +1072,6 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
 | 
			
		|||
		rt_cache_flush(dev_net(dev), 0);
 | 
			
		||||
		break;
 | 
			
		||||
	case NETDEV_UNREGISTER_BATCH:
 | 
			
		||||
		/* The batch unregister is only called on the first
 | 
			
		||||
		 * device in the list of devices being unregistered.
 | 
			
		||||
		 * Therefore we should not pass dev_net(dev) in here.
 | 
			
		||||
		 */
 | 
			
		||||
		rt_cache_flush_batch(NULL);
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
	return NOTIFY_DONE;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										940
									
								
								net/ipv4/route.c
									
									
									
									
									
								
							
							
						
						
									
										940
									
								
								net/ipv4/route.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
		Reference in a new issue