Project

General

Profile

Bug #252

Updated by Sven Eckelmann 2 months ago

Just tested TT with the [[open-mesh:Emulation_Debug]] environment. Two nodes were enabled and I've just send 3000 packets (different mac addresses) with the attached program to the other node. Then I can see that the remote node sends TT full table requests. But the node which send the 3000 packets never sends the response. The problem seems to be that the tvlv length is 31616 bytes (@tvlv_len@ in batadv_tt_prepare_tvlv_local_data) but this is larger than the maximum packet_size (@bat_priv->packet_size_max@). 


 If you print the size check in batadv_tt_local_add right before the @if (table_size > packet_size_max) {@ then you can see that the transmission size jumps (each "foobar" is an add to the local table): 

 <pre> 
 diff --git i/net/batman-adv/translation-table.c w/net/batman-adv/translation-table.c 
 index e8ec2b6c..1e37e210 100644 
 --- i/net/batman-adv/translation-table.c 
 +++ w/net/batman-adv/translation-table.c 
 @@ -849,6 +849,7 @@ batadv_tt_local_create(struct net_device *mesh_iface, const u8 *addr, 
 	 table_size = batadv_tt_local_table_transmit_size(bat_priv); 
 	 table_size += batadv_tt_len(1); 
 	 packet_size_max = READ_ONCE(bat_priv->packet_size_max); 
 + 	 printk("foobar %d %d\n", table_size, packet_size_max); 
 	 if (table_size > packet_size_max) { 
 		 net_ratelimited_function(batadv_info, mesh_iface, 
 					  "Local translation table size (%i) exceeds maximum packet size (%i); Ignoring new local tt entry: %pM\n", 
 </pre> 

 <pre> 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 116 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 foobar 11156 22080 
 .... 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 foobar 31652 22080 
 </pre> 

 The test was started on my node1 via 

 <pre> 
 insmod /host/batman-adv/net/batman-adv/batman-adv.ko 
 /host/batctl/batctl ra BATMAN_IV 
 /host/batctl/batctl if add eth0 
 ifconfig eth0 up 
 ifconfig bat0 up 
 # sleep 3 
 /host/batctl/batctl o 

 /host/rawsend_massive bat0 02:ba:de:af:fe:02 
 </pre>

Back