  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\le h \le n-d\le n-k$ we construct $(n,k)$ MDS codes over
the field $F$ of size $|F|\ge (d+1-k)n$ 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.
