Software Defined Networks: A Comprehensive Approach