A packet sending method, comprising: obtaining (S301, S302), by a controller, a forwarding latency requirement of a service flow and a destination address of the service flow, and determining, based on the forwarding latency requirement and the destination address, a forwarding path for forwarding the service flow, wherein a latency of the forwarding path meets the forwarding latency requirement of the service flow, the forwarding path passes through a first network node and a second network node, the first network node is an ingress node on the forwarding path, and the second network node is an intermediate node on the forwarding path; determining, by the controller, a number of a first cycle time in which the first network node forwards a packet and a number of a second cycle time in which the second network node forwards the packet, wherein the packet is a packet in the service flow; generating, by the controller, a first entry and a second entry, wherein the first entry comprises a correspondence between a sequence number of the packet and the first cycle time number, and the second entry comprises a correspondence between the sequence number of the packet and the second cycle time number; sending, by the controller, the first entry to the first network node, wherein the first entry is used to indicate the first network node to send the packet in a time period corresponding to the first cycle time number; and sending, by the controller, the second entry to the second network node, wherein the second entry is used to indicate the second network node to send the packet in a time period corresponding to the second cycle time number. obtaining (S301, S302), by a controller, a forwarding latency requirement of a service flow and a destination address of the service flow, and determining, based on the forwarding latency requirement and the destination address, a forwarding path for forwarding the service flow, wherein a latency of the forwarding path meets the forwarding latency requirement of the service flow, the forwarding path passes through a first network node and a second network node, the first network node is an ingress node on the forwarding path, and the second network node is an intermediate node on the forwarding path; determining, by the controller, a number of a first cycle time in which the first network node forwards a packet and a number of a second cycle time in which the second network node forwards the packet, wherein the packet is a packet in the service flow; generating, by the controller, a first entry and a second entry, wherein the first entry comprises a correspondence between a sequence number of the packet and the first cycle time number, and the second entry comprises a correspondence between the sequence number of the packet and the second cycle time number; sending, by the controller, the first entry to the first network node, wherein the first entry is used to indicate the first network node to send the packet in a time period corresponding to the first cycle time number; and sending, by the controller, the second entry to the second network node, wherein the second entry is used to indicate the second network node to send the packet in a time period corresponding to the second cycle time number.