Cognitive radio (CR) is an exciting technology to improve spectrum utilization. However, spectrum availability can change very fast due to primary user's activity, which makes most of existing CR routing protocols fail to work because they are designed for cognitive radio networks (CRNs) with slow variation of spectrum availability. Opportunistic routing is a promising routing paradigm for CRNs with fast variation of spectrum availability. We propose a multi-channel spectrum aware opportunistic routing (MSAOR) algorithm based on link delay analysis. By introducing channel access probability to characterize the opportunistic CR link, access delay is integrated into queuing delay. Our analysis shows that our algorithm achieves a lower link delay than the existing routing algorithm SAOR (spectrum aware opportunistic routing). Our simulation results also show that our MSAOR algorithm can reduce end-to-end delay by up to 50%, can increase the supported offered load by up to 190% and is more robust than SAOR.