A multicast service implementation method, comprising: Receiving, by a first network device, a first unicast join message sent by a second network device, wherein the first unicast join message is used to request to join a multicast group, a source address of the first unicast join message is an address of the second network device, and a destination address of the first unicast join message is a multicast source address or a rendezvous point RP address; and establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message, wherein before the establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message, the method further comprises: determining, by the first network device based on a first field carried in the first unicast join message, whether the second network device is a neighboring node of the first network device, wherein each time the first unicast join message is forwarded by one network device, a value of the first field is subtracted by 1; and the establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message comprises: if the second network device is not the neighboring node of the first network device, establishing, by the first network device, the tunnel from the first network device to the second network device. Receiving, by a first network device, a first unicast join message sent by a second network device, wherein the first unicast join message is used to request to join a multicast group, a source address of the first unicast join message is an address of the second network device, and a destination address of the first unicast join message is a multicast source address or a rendezvous point RP address; and establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message, wherein before the establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message, the method further comprises: determining, by the first network device based on a first field carried in the first unicast join message, whether the second network device is a neighboring node of the first network device, wherein each time the first unicast join message is forwarded by one network device, a value of the first field is subtracted by 1; and the establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message comprises: if the second network device is not the neighboring node of the first network device, establishing, by the first network device, the tunnel from the first network device to the second network device. determining, by the first network device based on a first field carried in the first unicast join message, whether the second network device is a neighboring node of the first network device, wherein each time the first unicast join message is forwarded by one network device, a value of the first field is subtracted by 1; and the establishing, by the first network device, a tunnel from the first network device to the second network device based on the first unicast join message comprises: if the second network device is not the neighboring node of the first network device, establishing, by the first network device, the tunnel from the first network device to the second network device.