use hash to maintain device info and open index sockets