The embodiment of the invention discloses a method of selecting a network function for data forwarding and a service function forward (SFF), so as to realize hot backup of a service chaining network function or realizing load balancing. The method of the embodiment of the invention comprises steps: the SFF receives a data packet, according to the load amount of a local network function entity associated with the SFF or indication information of whether to operate normally, a decision is made to whether to forward the data packet to the local network function entity or to another SFF, and a network function entity associated with the another SFF is a hot-backup network function entity for the local network function entity or a load-balancing network function entity. Thus, a path does not need to be added for the network function entity of the same type for realizing backup, management on the paths and NSHs (Network Service Header) can be reduced, the complexity is reduced, and an effective load balancing mechanism is provided for SFC (Service Function Chaining) in a distributed architecture.