Two widely studied models of multiple-node repair in distributed storage systems are centralized repair and cooperative repair. The centralized model assumes that all the failed nodes are recreated in one location, while the cooperative one stipulates that the failed nodes may communicate but are distinct, and the amount of data exchanged between them is included in the repair bandwidth.As our first result, we prove a lower bound on the minimum bandwidth of cooperative repair. We also show that the cooperative model is stronger than the centralized one, in the sense that any MDS code with optimal repair bandwidth under the former model also has optimal bandwidth under the latter one. These results were previously known under the additional "uniform download" assumption, which is removed in our proofs.As our main result, we give explicit constructions of MDS codes with optimal cooperative repair for all possible parameters. More precisely, given any n, k, h, d such that 2 ď h ď n´d ď n´k we construct pn, kq MDS codes over the field F of size |F | ě pd`1´kqn that can optimally repair any h erasures from any d helper nodes. The repair scheme of our codes involves two rounds of communication. In the first round, each failed node downloads information from the helper nodes, and in the second one, each failed node downloads additional information from the other failed nodes. This implies that our codes achieve the optimal repair bandwidth using the smallest possible number of rounds.