How to prove that $a^2b+b^2c+c^2a \leqslant 3$, where $a,b,c >0$, and $a^ab^bc^c=1$

Brute Force ($200\times200\times200$ grid) Not a proof, but couldn't resist.
Of course, everybody knows where the maximum is, for reasons of symmetry:
with $\,(a,b,c) = (1,1,1)\,$ we have $\,a^ab^bc^c=1\,$ and $\,a^2b+b^2c+c^2a = 3$ .
The following (Delphi Pascal) program is supposed to be self documenting.
program HN_NH;
{
  Brute Force with Seven Point Stars
  ==================================
}
function pow(x,r : double) : double;
{
  x^r
}
begin
  pow := exp(r\*ln(x));
end;
procedure test(veel : integer); var i,j,k,ken : integer; a,b,c,d,f,min,max : double;
procedure vertex(x,y,z : integer); var a,b,c,h : double; begin a := (2\*i+x)\*d; b := (2\*j+y)\*d; c := (2\*k+z)\*d; h := pow(a,a)\*pow(b,b)\*pow(c,c); if h < 1 then ken := ken\*2 else ken := ken\*2+1; end;
begin { Verify maximum (a,b,c)-value < 1.6 } Writeln(exp(2/exp(1)),' <',pow(1.6,1.6)); d := 1.6/veel/2; { half voxel size } min := 3; max := 0; { initialize } for i := 1 to veel-1 do begin for j := 1 to veel-1 do begin for k := 1 to veel-1 do begin ken := 0; { Binary number for collecting <> } { Each vertex of a 7-point star } vertex(-1,0,0); vertex(+1,0,0); vertex(0,-1,0); vertex(0,+1,0); vertex(0,0,-1); vertex(0,0,+1); if (ken = 0) or (ken = 63) then Continue; { Midpoint of star is near a^a\*b^b\*c^c = 1 } a := 2\*i\*d; b := 2\*j\*d ; c := 2\*k\*d; f := sqr(a)\*b + sqr(b)\*c + sqr(c)\*a; if f < min then min := f; { Determine maximum of f(a,b,c) } if f > max then max := f; end; end; end; Writeln(min,' < f(a,b,c) <',max); end;
begin test(200); end.
And now we are curious, of course, what the maximum is (it's the last number in this output):
 2.08706522863453E+0000 < 2.12125057109759E+0000
 9.12537600000000E-0003 < f(a,b,c) < 3.00026265600000E+0000
Well, anyway better than the previous (Brute Force with Voxels) attempt. To be convincing, though, a decent error analysis is still needed :-(

Note. Explaining the estimate $\{a,b,c\} < \{1.6\}$ in the program: $$ f(x) = x^x = e^{x\ln(x)} \quad \Longrightarrow \quad f'(x) = [1+\ln(x)]e^{x\ln(x)} = 0 \quad \Longrightarrow \quad x=1/e \\ \Longrightarrow \quad f(1/e) = e^{-1/e} $$ This means that the maximum $x$ of each one of the coordinates in the product $a^ab^bc^c=1$ is: $$x^x = e^{2/e} < (1.6)^{1.6}$$ Therefore each of the coordinates $\;x < 1.6\,$ (or $\,1.58892154635044$ , to be double precise).