multiple ovsdb connections from same southbound client


suneelu
 

Hi,

 

      Sometimes southbound node does not appear on the operational topology upon reboot of the southbound node in a haproxy deployment .

 

      In a HAPROXY deployed environment, it exposes a virtual ip say 192.168.56.20 to southbound devices.

      All southbound devices connect to tcp: 192.168.56.30:6640.

      haproxy load balances these connections among the three controller nodes  say (192.168.56.10, 192.168.56.11, 192.168.56.12)

      while load balancing it does not retain the source ip of the device but puts its own ip.

 

root@odl1:~# netstat -nap | grep :6640

tcp        0      0 192.168.56.10:6640      192.168.56.20:38312     ESTABLISHED 27863/java     

tcp        0      0 192.168.56.10:6640      192.168.56.20:57524     ESTABLISHED 27863/java     

   

      Now controller thinks that there are multiple ovsdb connections from same client node  192.168.56.20 (it does not know its client is a haproxy ).

 

      In ovsdb library there is a connection maintenance logic (StalePassiveConnectionService) which is supposed to the following ( correct my understanding ).

 

      Get existing connections from same client ip 192.168.56.20.

      if there are none

               Process the new connection by handing off the connection object to ovsdb and hwvtep library.

      else

               Send  echo on all the existing connections.

               If echo for any of them succeeds, do not process the fresh connection, keep it in pending list.

         

      But it was doing the opposite.

 

     In some of restart test cases we hit into the following bug.

      if the other connected devices respond back to echo within 10sec , new connection is processed.

      If any of the existing connected device is not responding back to echo within 10sec, new connection is not processed.

 

     In a haproxy deployments this check should be turned off.

 

Thanks,

Suneelu