The network design problem with relays (NDPR) is defined on an undirected graph G = (V, E, K), where V = {1, . . . , n} is a vertex set, E = {(i, j) : i, j 2 V, i < j} is an edge set. The set K = {(o(k), d(k))} is a set of communication pairs (or commodities): o(k) 2 V and d(k) 2 V denote the origin and the destination of the kth commodity, respectively. With each edge (i, j) are associated a cost c ij and a length d ij . With vertex i is associated a fixed cost f i of locating a relay at i. The NDPR consists of selecting a subset E of edges of E and of locating relays at a subset V of vertices of V in such a way that: (1) the sum Q of edge costs and relay costs is minimized; (2) there exists a path linking the origin and the destination of each commodity in which the length between the origin and the first relay, the last relay and the destination, or any two consecutive relays does not exceed a preset upper bound k. This article develops a lower bound procedure and four heuristics for the NPDR. These are compared on several randomly generated instances with |V| 6 1002 and |E| 6 1930.