In this paper we address the problem of Software Defined Networking (SDN) controller placement in large networks. Indeed, to solve the scalability issue raised by the centralized architecture of SDN, multi-controllers deployment (or distributed controllers system) is envisioned. However, the number and the location of controllers in large networks remain an issue. In this context, several works have been proposed to find the optimal placement of SDN controllers. Most of them consider latency among SDN controllers and switches as the main metric. In this work, we go beyond the state of art by proposing a solution that considers at the same time three critical objectives for the optimal placement of controllers: (i) the latency and communication overhead between switches and controllers; (ii)the latency and communication overhead between controllers; (iii) the guarantee of load balancing between controllers. We then solve the system by using Bargaining Game in order to find a fair trade off between these objectives. Simulation results clearly demonstrate the effectiveness of the proposed solution in finding the optimal placement of controllers that enforces this trade-off.