In this paper we study Hash-based Traffic Steering on Softswitches (HATS) which is a load balancing scheme for chaining virtualized network functions (VNFs), with the aim of mitigating the control and data plane overheads of existing methods. Our method uses a flow-hashing technique applied to softswitches to carry out server and network load balancing without triggering the controller. By exploiting the advantages of HATS, we then derive two algorithms, HATS with Flowcell-based Multipathing (HATS-Flowcell) and Dynamic Weight Adjustment for HATS (D-HATS), to address hash collision problems which downgrade system performance. The first algorithm divides an elephant flow into various equal-size flowcells, which are distributed over network paths as individual flows. The second algorithm periodically updates the hashing weights of VNFs and network paths according to their current load status. Our implementation demonstrates that HATS can be readily deployed on commodity network hardware. Furthermore, our experimental results show that D-HATS has roughly the same load balancing performance with Least Load First (LLF), a controller-based service chaining algorithm; while significantly reducing the number of flow entries and service chaining time by 54% and 93%.