Thanks a lot for your complete help, but here I am a different scenario I believe.
I want to use the link(1) that it has 2mbps traffic limit and in normal situation, the link(2) is free and no request or traffic will route via this link(2).
The link(2) only routes the traffic to his own gateway that the link(1) is full. It means I am searching for an automatic mechanism that detects this case and automatically bring the link(2) to the internet usage and also automatically detects that the internet usage is less than 3mbps and automatically remove the link(2) routes.
Is there any way to do this case ?!
I think we should work on some scripts that detect this case.
Simple answer, there's no way to make it seamless to your users. Whole reason for using PCC is to keep connections on the same WAN link, once established, so they have the same src IP. At anytime script decides to stop routing to the second WAN link, connections will have to be removed from connection tracking (unless you're willing to keep established connections until closed/expired)
In your case I'd configure PCC for two WAN links then have a script assign 2nd connection traffic route mark 1 or 2:
When 1st WAN<80% capacity:
action=mark-routing chain=prerouting comment="" connection-mark=2nd-conn \
disabled=no new-routing-mark=
1st_route passthrough=yes
When 1st WAN>80% capacity:
action=mark-routing chain=prerouting comment="" connection-mark=2nd-conn \
disabled=no new-routing-mark=
2nd_route passthrough=yes
When 1st WAN<80% for 15 minutes:
action=mark-routing chain=prerouting comment="" connection-mark=2nd-conn \
disabled=no new-routing-mark=
1st_route passthrough=yes
and remove all of the connections made on the 2nd WAN:
:foreach i in=/ip firewall connection find connection-mark=2nd-conn] do={[/ip firewall connection remove $i]}