Static multi-controller deployment architecture cannot adapt to the drastic changes of network traffic, which will lead to a load imbalance between controllers, resulting in a high packet loss rate, high latency, and other network performance degradation problems. In this paper, an efficient dynamic load balancing scheme based on Nash bargaining is proposed for a distributed software-defined network. Firstly, considering the connectivity of network nodes, the switch migration problem is transformed into a network mapping relationship reconstruction problem. Then, we establish the Nash bargaining game model to fairly optimize the two contradictory goals of migration cost and load balance. Finally, the model is solved by an improved firefly algorithm, and the optimal network mapping state is obtained. The experimental results show that this scheme can optimize the migration cost and load balance at the same time. Compared with the existing research schemes, the migration process of the switch is optimized, and, while effectively balancing the load of the control plane, the migration cost is reduced by 14.5%.