A method of distributing data to multiple computing devices, the method comprising the step of: identifying a source computing device comprising the data and at least two intended destination computing devices to which copies of the data will be distributed; characterized by the steps of identifying at least one expensive network segment that is part of both a first network path between the source computing device and a first of the at least two intended destination computing device and a second network path between the source computing device and a second of the at least two intended destination computing devices, such that both a first copy of the data, directed to the first intended destination computing device, and a second copy of the data, directed to the second intended destination computing device, would be transmitted, separately, along the identified expensive network segment; identifying an intermediate computing device such that data transmitted from the source computing device to the intermediate computing device would be transmitted along the identified expensive network segment, but data transmitted from the intermediate computing device to multiple ones of the at least two intended destination computing devices would avoid transmission along the identified network segment; and generating a store-and-forward routing comprising: transmission of a copy of the data from the source computing device, through the identified expensive network segment, to the identified intermediate computing device; storage of the transmitted copy of the data on the intermediate computing device; forking, at the intermediate computing device, of the copy of the data into multiple copies of the data; and transmission of each of the forked multiple copies of the data from the intermediate computing device to multiple ones of the at least two intended destination computing devices. identifying a source computing device comprising the data and at least two intended destination computing devices to which copies of the data will be distributed; characterized by the steps of identifying at least one expensive network segment that is part of both a first network path between the source computing device and a first of the at least two intended destination computing device and a second network path between the source computing device and a second of the at least two intended destination computing devices, such that both a first copy of the data, directed to the first intended destination computing device, and a second copy of the data, directed to the second intended destination computing device, would be transmitted, separately, along the identified expensive network segment; identifying an intermediate computing device such that data transmitted from the source computing device to the intermediate computing device would be transmitted along the identified expensive network segment, but data transmitted from the intermediate computing device to multiple ones of the at least two intended destination computing devices would avoid transmission along the identified network segment; and generating a store-and-forward routing comprising: transmission of a copy of the data from the source computing device, through the identified expensive network segment, to the identified intermediate computing device; storage of the transmitted copy of the data on the intermediate computing device; forking, at the intermediate computing device, of the copy of the data into multiple copies of the data; and transmission of each of the forked multiple copies of the data from the intermediate computing device to multiple ones of the at least two intended destination computing devices.