A method for implementing a bidirectional segment routing, SR, tunnel, comprising: after receiving, by a controller, a command of establishing a bidirectional SR tunnel between a node A and a node Z, calculating, by the controller, a path between the node A and the node Z satisfying a requirement of the command, and assigning, by the controller, unique List SIDs to a tunnel in a first direction from the node A to the node Z and a tunnel in a second direction from the node Z to the node A corresponding to the path, respectively, wherein each of the List SIDs is configured to identify a complete segment list of a unidirectional SR tunnel; and pushing, by the controller and at each of both end points of the bidirectional SR tunnel, a SR label stack on a user packet after placing the List SID, as a part of the SR label stack, into the SR label stack, and forwarding the user packet, wherein pushing, by the controller and at each of both end points of the bidirectional SR tunnel, a SR label stack on a user packet after placing the List SID, as a part of the SR label stack, into the SR label stack, comprises: pushing, by the controller and at each of both end points of the bidirectional SR tunnel, the SR label stack on the user packet after placing the List SID, as the part of the SR label stack, into an innermost layer of the SR label stack, wherein the both end points are the node A and the node Z, the List SID placed at the node A is the List SID assigned to the tunnel in the first direction from the node A to the node Z to identify the tunnel in the first direction, and the List SID placed at the node Z is the List SID assigned to the tunnel in the second direction from the node Z to the node A to identify the tunnel in the second direction. after receiving, by a controller, a command of establishing a bidirectional SR tunnel between a node A and a node Z, calculating, by the controller, a path between the node A and the node Z satisfying a requirement of the command, and assigning, by the controller, unique List SIDs to a tunnel in a first direction from the node A to the node Z and a tunnel in a second direction from the node Z to the node A corresponding to the path, respectively, wherein each of the List SIDs is configured to identify a complete segment list of a unidirectional SR tunnel; and pushing, by the controller and at each of both end points of the bidirectional SR tunnel, a SR label stack on a user packet after placing the List SID, as a part of the SR label stack, into the SR label stack, and forwarding the user packet, wherein pushing, by the controller and at each of both end points of the bidirectional SR tunnel, a SR label stack on a user packet after placing the List SID, as a part of the SR label stack, into the SR label stack, comprises: pushing, by the controller and at each of both end points of the bidirectional SR tunnel, the SR label stack on the user packet after placing the List SID, as the part of the SR label stack, into an innermost layer of the SR label stack, wherein the both end points are the node A and the node Z, the List SID placed at the node A is the List SID assigned to the tunnel in the first direction from the node A to the node Z to identify the tunnel in the first direction, and the List SID placed at the node Z is the List SID assigned to the tunnel in the second direction from the node Z to the node A to identify the tunnel in the second direction. pushing, by the controller and at each of both end points of the bidirectional SR tunnel, the SR label stack on the user packet after placing the List SID, as the part of the SR label stack, into an innermost layer of the SR label stack, wherein the both end points are the node A and the node Z, the List SID placed at the node A is the List SID assigned to the tunnel in the first direction from the node A to the node Z to identify the tunnel in the first direction, and the List SID placed at the node Z is the List SID assigned to the tunnel in the second direction from the node Z to the node A to identify the tunnel in the second direction.