Setting y=f(x)3t we get
f(x+t)=x3f(f(x)3t)+f(x)(1)
for every x,t>0.
From (1) it is immediate that f is increasing.
Claim. f(1)=1
Proof of Claim. Let c=f(1). If c<1, taking x=1 and y=1−c31 we have y−yc3=1, so yf(1)3+1=y and f(yf(1)3+1)=f(y)=13f(y). Thus f(1)=0, a contradiction. Assume now for contradiction that c>1. We claim that
f(1+c3+⋯+c3n)=(n+1)c
for every n∈N. We proceed by induction, the case n=0 being trivial. The inductive step follows easily by taking x=1,t=c3+c6+⋯+c3(k+1) in (1).
Now taking x=1+c3+⋯+c3n−3, t=c3n in (1) we get
(n+1)c=f(1+c3+⋯+c3n)=(1+c3+⋯+c3n−3)f((n+1)3c3n)+nc
giving
f((n+1)3c3n)=(1+c3+⋯+c3n)3c<c=f(1)⟹(n+1)3c3n<1.
But this leads to a contradiction if n is large enough. □
Now for x=1 we get f(y+1)=f(y)+1 and since f(1)=1 inductively we get f(n)=n for every n∈N. For m,n∈N, setting x=n,y=q=m/n we get
mn2+n=f(qn3+n)=f(yf(x)3+x)=x3f(y)+f(x)=n3f(q)+n⟹f(q)=q.
Since f is strictly increasing with f(q)=q for every q∈Q>0 we deduce that f(x)=x for every x>0. It is easily checked that this satisfies the functional equation.