NAT44: endpoint-dependent mode session timeout improvement (VPP-1423) 85/14985/2
authorMatus Fabian <matfabia@cisco.com>
Wed, 26 Sep 2018 08:08:00 +0000 (01:08 -0700)
committerOle Trøan <otroan@employees.org>
Wed, 26 Sep 2018 12:45:40 +0000 (12:45 +0000)
Change-Id: Ib62e503f4eb5d72431288de32f417a4553df4e0c
Signed-off-by: Matus Fabian <matfabia@cisco.com>
src/plugins/nat/in2out_ed.c
src/plugins/nat/out2in_ed.c

index 31977ac..adf0ff3 100644 (file)
@@ -242,6 +242,8 @@ icmp_in2out_ed_slow_path (snat_main_t * sm, vlib_buffer_t * b0,
       nat44_session_update_counters (s0, now,
                                     vlib_buffer_length_in_chain
                                     (sm->vlib_main, b0));
+      /* Per-user LRU list maintenance */
+      nat44_session_update_lru (sm, s0, thread_index);
     }
   return next0;
 }
@@ -473,6 +475,8 @@ nat_not_translate_output_feature_fwd (snat_main_t * sm, ip4_header_t * ip,
          /* Accounting */
          nat44_session_update_counters (s, now,
                                         vlib_buffer_length_in_chain (vm, b));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s, thread_index);
          return 1;
        }
       else
@@ -815,6 +819,8 @@ nat44_ed_in2out_unknown_proto (snat_main_t * sm,
 
   /* Accounting */
   nat44_session_update_counters (s, now, vlib_buffer_length_in_chain (vm, b));
+  /* Per-user LRU list maintenance */
+  nat44_session_update_lru (sm, s, thread_index);
 
   /* Hairpinning */
   if (vnet_buffer (b)->sw_if_index[VLIB_TX] == ~0)
@@ -1075,6 +1081,8 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace00:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1274,6 +1282,8 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s1, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b1));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s1, thread_index);
 
        trace01:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1502,6 +1512,8 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1927,6 +1939,8 @@ nat44_ed_in2out_reass_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
index 1a9f897..dce6c56 100644 (file)
@@ -112,6 +112,8 @@ icmp_out2in_ed_slow_path (snat_main_t * sm, vlib_buffer_t * b0,
       nat44_session_update_counters (s0, now,
                                     vlib_buffer_length_in_chain
                                     (sm->vlib_main, b0));
+      /* Per-user LRU list maintenance */
+      nat44_session_update_lru (sm, s0, thread_index);
     }
   return next0;
 }
@@ -453,6 +455,8 @@ create_bypass_for_fwd (snat_main_t * sm, ip4_header_t * ip, u32 rx_fib_index,
 
   /* Accounting */
   nat44_session_update_counters (s, now, 0);
+  /* Per-user LRU list maintenance */
+  nat44_session_update_lru (sm, s, thread_index);
 }
 
 u32
@@ -663,6 +667,8 @@ nat44_ed_out2in_unknown_proto (snat_main_t * sm,
 
   /* Accounting */
   nat44_session_update_counters (s, now, vlib_buffer_length_in_chain (vm, b));
+  /* Per-user LRU list maintenance */
+  nat44_session_update_lru (sm, s, thread_index);
 
   return s;
 }
@@ -936,6 +942,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace00:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1152,6 +1160,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s1, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b1));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s1, thread_index);
 
        trace01:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1401,6 +1411,8 @@ nat44_ed_out2in_node_fn_inline (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)
@@ -1769,6 +1781,8 @@ nat44_ed_out2in_reass_node_fn (vlib_main_t * vm,
          nat44_session_update_counters (s0, now,
                                         vlib_buffer_length_in_chain (vm,
                                                                      b0));
+         /* Per-user LRU list maintenance */
+         nat44_session_update_lru (sm, s0, thread_index);
 
        trace0:
          if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE)