A common objective of Internet traffic engineering is to minimize the maximal link utilization in a network in order to accommodate more traffic and reduce the chance of congestion. Traditionally this can be achieved by setting OSPF link weights appropriately or using MPLS tunnels to direct traffic. However, they both have their own problems: OSPF weight setting triggers network-wise convergence and traffic shift, while pure MPLS approach requires a full mesh of tunnels to be configured throughout the network. In this paper, we formulate this traffic engineering problem as a Multi-Commodity Flow problem and realize its optimal solution by hybrid MPLS/OSPF routing. As a result, the majority of traffic in a network is routed by regular OSPF, while only a small number of MPLS tunnels are needed to fine-tune the traffic distribution. Therefore it avoids the drawbacks of OSPF weight setting and full MPLS mesh. Comparing with existing hybrid routing approaches, ours achieves the optimal link...