A novel satellite network routing algorithm named CFR is proposed in this paper. In the CFR geographical location, delay and packet drop rate are used as metrics to calculate routes to meet different QoS requirements. When packets arrive, instead of using global routing tables, CFR calculates routes in real time, in order to achieve convergence free. In addition, an explicit load balancing mechanism is proposed to achieve load balance. The link load information is exchanged among satellites transmitting packets from the same data flow. In response, a less congested path is selected when there are satellites with heavy link load. The retrieved path does not include the congested link, and a portion of data is communicated via the retrieved path. CFR is able to guarantee a good performance in terms of a better distribution of traffic among satellites, lower packet drops and higher throughput.