nat: improve outside port selection & perf
[vpp.git] / src / plugins / nat / nat.c
index 36d03a6..60ef22f 100644 (file)
@@ -2851,14 +2851,6 @@ end:
   return 0;
 }
 
-static_always_inline u16
-snat_random_port (u16 min, u16 max)
-{
-  snat_main_t *sm = &snat_main;
-  return min + random_u32 (&sm->random_seed) /
-    (random_u32_max () / (max - min + 1) + 1);
-}
-
 int
 snat_alloc_outside_address_and_port (snat_address_t * addresses,
                                     u32 fib_index,
@@ -4122,8 +4114,10 @@ snat_config (vlib_main_t * vm, unformat_input_t * input)
          nat_ha_init (vm, nat_ha_sadd_ed_cb, nat_ha_sdel_ed_cb,
                       nat_ha_sref_ed_cb);
          clib_bihash_init_16_8 (&sm->out2in_ed, "out2in-ed",
+                                clib_max (1, sm->num_workers) *
                                 sm->translation_buckets,
-                                translation_memory_size);
+                                clib_max (1, sm->num_workers) *
+                                sm->translation_memory_size);
          clib_bihash_set_kvp_format_fn_16_8 (&sm->out2in_ed,
                                              format_ed_session_kvp);
        }