Software Defined Networking (SDN) is a new technology that makes computer networks farther programmable. SDN is currently attracting significant consideration from both academia and industry. SDN is simplifying organisations to implement applications and assist flexible delivery, offering the capability of scaling network resources in lockstep with application and data. This technology allows the user to manage the network easily by permitting the user to control the applications and operating system. SDN not only introduces new ways of interaction within network devices, but it also gives more flexibility for the existing and future networking designs and operations. SDN is an innovative approach to design, implement, and manage networks that separate the network control (control plane) and the forwarding process (data plane) for a better user experience. The main differentiation between SDN and Traditional Networking is that SDN removes the decision-making part from the routers and it provides, logically, a centralised Control-Plane that creates a network view for the control and management applications. Through the establishment of SDN, many new network capabilities and services have been enabled, such as Software Engineering, Traffic Engineering, Network Virtualisation and Automation, and Orchestration for Cloud Applications. This paper surveys the state-of-the-art contribution such as a comparison between SDN and traditional networking. Also, comparison with other survey works on SDN, new information about controller, details about OpenFlow architecture, configuration, comprehensive contribution about SDN security threat and countermeasures, SDN applications, benefit of SDN, and Emulation & Tested for SDN. In addition, some existing and representative SDN tools from both industry and academia are explained. Moreover, future direction of SDN security solutions is discussed in detail.