A data packet processing method, wherein the method is applied to a computing device, the computing device comprises a network interface card, NIC, and a host, the NIC establishes a communications connection to the host, a virtual machine, VM, runs on the host, and the method comprises: receiving, by the NIC, which is a hardware device, a first data packet of a data flow; querying, by the NIC, a NIC-accessible flow table set according to matching information of the first data packet; and when a flow table corresponding to the data flow cannot be obtained in the NIC-accessible flow table set, forwarding, by the NIC, the first data packet to a virtual switch running on the host, wherein after receiving the first data packet, the virtual switch obtains the flow table corresponding to the data flow from a software-defined networking, SDN, controller, so that the flow table corresponding to the data flow is added to the NIC-accessible flow table set and a virtual-switch-accessible flow table set; after the forwarding, by the NIC, the first data packet to the virtual switch, the method further comprises: performing, by the virtual switch, matching between the first data packet and the flow table that is corresponding to the data flow and that is in the virtual-switch-accessible flow table set, to obtain data packet routing information of the data flow; receiving, by the NIC, a first data packet returned by the virtual switch, wherein the returned first data packet comprises a port identifier corresponding to a destination VM, the port identifier is a virtual switch port identifier or a NIC port identifier, and the port identifier is added by the virtual switch according to the data packet routing information of the data flow; and forwarding, by the NIC, the first data packet to the destination VM according to the port identifier. receiving, by the NIC, which is a hardware device, a first data packet of a data flow; querying, by the NIC, a NIC-accessible flow table set according to matching information of the first data packet; and when a flow table corresponding to the data flow cannot be obtained in the NIC-accessible flow table set, forwarding, by the NIC, the first data packet to a virtual switch running on the host, wherein after receiving the first data packet, the virtual switch obtains the flow table corresponding to the data flow from a software-defined networking, SDN, controller, so that the flow table corresponding to the data flow is added to the NIC-accessible flow table set and a virtual-switch-accessible flow table set; after the forwarding, by the NIC, the first data packet to the virtual switch, the method further comprises: performing, by the virtual switch, matching between the first data packet and the flow table that is corresponding to the data flow and that is in the virtual-switch-accessible flow table set, to obtain data packet routing information of the data flow; receiving, by the NIC, a first data packet returned by the virtual switch, wherein the returned first data packet comprises a port identifier corresponding to a destination VM, the port identifier is a virtual switch port identifier or a NIC port identifier, and the port identifier is added by the virtual switch according to the data packet routing information of the data flow; and forwarding, by the NIC, the first data packet to the destination VM according to the port identifier. performing, by the virtual switch, matching between the first data packet and the flow table that is corresponding to the data flow and that is in the virtual-switch-accessible flow table set, to obtain data packet routing information of the data flow; receiving, by the NIC, a first data packet returned by the virtual switch, wherein the returned first data packet comprises a port identifier corresponding to a destination VM, the port identifier is a virtual switch port identifier or a NIC port identifier, and the port identifier is added by the virtual switch according to the data packet routing information of the data flow; and forwarding, by the NIC, the first data packet to the destination VM according to the port identifier.