Given an undirected network with L possible facility types for each edge, and a partition of the nodes into L levels or grades, the Multi-level Network Design (MLND) problem seeks a fixed cost minimizing design that spans all the nodes and connects the nodes at each level by facilities of the corresponding or higher grade. This problem generalizes the well-known Steiner network problem and the hierarchical network design problem, and has applications in telecommunication, transportation, and electric power distribution network design. In a companion paper the authors studied alternative model formulations for a two-level version of this problem, and analyzed the worst-case performance of several heuristics based on Steiner network and spanning tree solutions. This paper develops a dual-based algorithm for the MLND problem. The method first performs problem preprocessing to fix certain design variables, and then applies a dual ascent procedure to generate upper and lower bounds on the optimal value. The authors report extensive computational results on large, random two-level test problems (containing up to 500 nodes, and 5000 edges) with varying cost structures. The integer programming formulation of the largest of these problems has 20000 integer variables and over 5 million constraints. The present tests indicate that the dual-based algorithm is very effective, producing solutions that are within 0.9% of optimality.