CFR: A cooperative link failure recovery scheme in software-defined networks