A method of detecting a path, performed by a first forwarding device, comprising: iteratively performing the steps of: constructing, by the first forwarding device, a detection packet for a service flow, wherein forwarding information in a packet head of the detection packet is same as forwarding information in a packet head of the service flow; forwarding, by the first forwarding device, the detection packet based on the forwarding information in the packet head of the detection packet; when an error controlling packet corresponding to the detection packet is received from a second forwarding device of a plurality of second forwarding devices in a set time period, determining, by the first forwarding device, an address of the second forwarding device based on the received error controlling packet, wherein the steps are performed iteratively until no error controlling packet corresponding to the detection packet is received from a second forwarding device in a set time period, and wherein a TTL of the detection packet is increased with each iteration and the second forwarding device from which the error controlling packet is received is different with each iteration; and determining, by the first forwarding device, the path of the service flow based on the at least one respective address of the at least one second forwarding device when the error controlling packet is not received in the set time period, wherein the packet head of the detection packet comprises a checksum, and the checksum is set to be a designed check value indicating a checksum error, such that a target host of the service flow discards the detection packet based on the designed check value when receiving the detection packet. iteratively performing the steps of: constructing, by the first forwarding device, a detection packet for a service flow, wherein forwarding information in a packet head of the detection packet is same as forwarding information in a packet head of the service flow; forwarding, by the first forwarding device, the detection packet based on the forwarding information in the packet head of the detection packet; when an error controlling packet corresponding to the detection packet is received from a second forwarding device of a plurality of second forwarding devices in a set time period, determining, by the first forwarding device, an address of the second forwarding device based on the received error controlling packet, wherein the steps are performed iteratively until no error controlling packet corresponding to the detection packet is received from a second forwarding device in a set time period, and wherein a TTL of the detection packet is increased with each iteration and the second forwarding device from which the error controlling packet is received is different with each iteration; and constructing, by the first forwarding device, a detection packet for a service flow, wherein forwarding information in a packet head of the detection packet is same as forwarding information in a packet head of the service flow; forwarding, by the first forwarding device, the detection packet based on the forwarding information in the packet head of the detection packet; when an error controlling packet corresponding to the detection packet is received from a second forwarding device of a plurality of second forwarding devices in a set time period, determining, by the first forwarding device, an address of the second forwarding device based on the received error controlling packet, wherein the steps are performed iteratively until no error controlling packet corresponding to the detection packet is received from a second forwarding device in a set time period, and wherein a TTL of the detection packet is increased with each iteration and the second forwarding device from which the error controlling packet is received is different with each iteration; and determining, by the first forwarding device, the path of the service flow based on the at least one respective address of the at least one second forwarding device when the error controlling packet is not received in the set time period, wherein the packet head of the detection packet comprises a checksum, and the checksum is set to be a designed check value indicating a checksum error, such that a target host of the service flow discards the detection packet based on the designed check value when receiving the detection packet.