A data transmission method in flexible Ethernet, FlexE, wherein the method is applied to a physical layer, and the method comprises: obtaining multiple data blocks, wherein the multiple data blocks are sent by L FlexE clients, and L is a positive integer greater than or equal to 1; and sending a data frame comprising the multiple data blocks to a physical-layer device, wherein a transmission rate of the data frame is N ∗ 100 Gigabits per second, Gbit/s, the data frame comprises T data block groups, each of the T data block groups comprises M continuous data block subgroups, each of the M continuous data block subgroups comprises R ∗ N continuous data blocks, the data frame further comprises T overhead block groups, a t th overhead block group in the T overhead block groups is sent before a t th data block group in the T data block groups, the t th overhead block group and the t th data block group are continuous in the data frame, the t th overhead block group comprises N continuous overhead blocks, a FlexE overhead multiframe to which an n th overhead block in the t th overhead block group belongs carries a FlexE client indication field, the FlexE client indication field carried in the FlexE overhead multiframe to which the n th overhead block in the t th overhead block group belongs is used to indicate a FlexE client that sends an r th data block in R data blocks in each data block subgroup in the t th data block group or used to indicate that an r th data block in R data blocks in each data block subgroup in the t th data block group is vacant, the FlexE client that sends the r th data block in the R data blocks in each data block subgroup in the t th data block group is one of the L FlexE clients, the r th data block in the R data blocks in each data block subgroup in the t th data block group is indicated only by the FlexE client indication field carried in the FlexE overhead multiframe to which the overhead block belongs, and a quantity of bits comprised in each data block in the data frame is equal to a quantity of bits comprised in each overhead block in the data frame, wherein R, M, T, and N are positive integers greater than or equal to 2, t=1,..., T, n=1,..., N, and r=1,..., R. obtaining multiple data blocks, wherein the multiple data blocks are sent by L FlexE clients, and L is a positive integer greater than or equal to 1; and sending a data frame comprising the multiple data blocks to a physical-layer device, wherein a transmission rate of the data frame is N ∗ 100 Gigabits per second, Gbit/s, the data frame comprises T data block groups, each of the T data block groups comprises M continuous data block subgroups, each of the M continuous data block subgroups comprises R ∗ N continuous data blocks, the data frame further comprises T overhead block groups, a t th overhead block group in the T overhead block groups is sent before a t th data block group in the T data block groups, the t th overhead block group and the t th data block group are continuous in the data frame, the t th overhead block group comprises N continuous overhead blocks, a FlexE overhead multiframe to which an n th overhead block in the t th overhead block group belongs carries a FlexE client indication field, the FlexE client indication field carried in the FlexE overhead multiframe to which the n th overhead block in the t th overhead block group belongs is used to indicate a FlexE client that sends an r th data block in R data blocks in each data block subgroup in the t th data block group or used to indicate that an r th data block in R data blocks in each data block subgroup in the t th data block group is vacant, the FlexE client that sends the r th data block in the R data blocks in each data block subgroup in the t th data block group is one of the L FlexE clients, the r th data block in the R data blocks in each data block subgroup in the t th data block group is indicated only by the FlexE client indication field carried in the FlexE overhead multiframe to which the overhead block belongs, and a quantity of bits comprised in each data block in the data frame is equal to a quantity of bits comprised in each overhead block in the data frame, wherein R, M, T, and N are positive integers greater than or equal to 2, t=1,..., T, n=1,..., N, and r=1,..., R.