What's new

[Release] FreshJR Adaptive QOS (Improvements / Custom Rules / and Inner workings)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

Status
Not open for further replies.
FreshJR does your current FreshJR Adaptive QOS filter or throttle Internet Download Manager traffic (IDM) ? Thanks.
 
FreshJR does your current FreshJR Adaptive QOS filter or throttle Internet Download Manager traffic (IDM) ? Thanks.

Have you looked at the IDM traffic using something like Wireshark? You might be able to create your own custom rules yourself and insert them into your copy of FreshJRs script. He's made it pretty clear in the body of the script how to do that.

/dedd
 
Here's a beta 1 of the FreshJR QOS fakeTC approach for anyone having issues.

Not this does the same EXACT thing as the v382.2 version. You do not have to try this out.

Pros:
-on the fly tc command patching / modifications / instant results
-no need for the hacky 3 minute sleep
-more advanced configurations / fine tuning easily possible (aka modify subclass rates)

Cons:
-more processing power used per tc command
-possibly going to use nvram if current data file with variables has timing/race issues

Known Bugs:
Uninstall argument will sometimes fail to remove the file FreshJR_QOS_fakeTC
(I make sure to unmount it, so I have no idea what gives me "device is busy, cannot delete" message) To delete file, you have to reboot router and delete. Help appreciated with this one, since I'm not sure where my unmounting is going wrong.

Install Guide:
In command prompt
Code:
pscp -scp C:\Putty\FreshJR_QOS_beta1.txt admin@192.168.1.1:/jffs/scripts/FreshJR_QOS

pscp -scp C:\Putty\FreshJR_QOS_fakeTC_beta1.txt admin@192.168.1.1:/jffs/scripts/FreshJR_QOS_fakeTC

In putty
Code:
chmod 0755 /jffs/scripts/FreshJR_QOS
chmod 0755 /jffs/scripts/FreshJR_QOS_fakeTC
dos2unix /jffs/scripts/FreshJR_QOS
dos2unix /jffs/scripts/FreshJR_QOS_fakeTC
sed -i '/FreshJR_QOS/d' /jffs/scripts/firewall-start
/jffs/scripts/FreshJR_QOS install

Uninstall Guide:
In putty
Code:
/jffs/scripts/FreshJR_QOS uninstall


Temporarily Disable Guide:
In putty
Code:
/jffs/scripts/FreshJR_QOS disable

There will be a beta2 with subclass tuning available. That is if all goes alright with this one. Not quite sure which fork I should continue.

Feel free to try it out of the current one is giving you bugs. It's a difference approach. I did a fair share of testing, but I do not use QOS anymore, so feedback is good. Same same but different.
just a nit pick but you forgot to mention to disable qos first and dos to unix has to be run before chmod, i got an disbale wos error at the install scrip part

also getting this after the install, a rebbot might fix it since i still have to update to the new firmware build.

the bandwith percentages commands fixed that error

ioctl_iqos_op_switch(1) fail!
Jan 28 12:53:30 kernel: ERR[parse_qos_conf:932] Can't set new QoS conf while QoS is started!
Jan 28 12:53:30 kernel: ERR[ioctl_iqos_op_config:3592] parse qos_conf error!!
Jan 28 12:53:30 kernel: ioctl_iqos_op_config() fail!
Jan 28 12:53:30 kernel: ERR[qos_start:3344] QoS is already started!

other wise the new script runs a hell of alot better then the previous, versions also thanks very much.
 
Last edited:
While it might be the general case, it's not always the case. I would probably avoid creating that type of filter.
ok just trying to separate traffic from steam into its respective catergory.
 
For anyone interested, I got the full list of Port Forwarding rules to optimize Xbox One connection.

Clarification port numbers:

  • 53 DNS, name resolving

  • 80 HTTP, used for downloads

  • 88 Kerberos, used for Xbox live authentication

  • 3074 Xbox live, used for peer to peer connections (games, party)

  • 500 Teredo, used for connection to Azure cloud

  • 3544 Teredo handshake, used to establish Teredo connection with Azure cloud

  • 4500 IPSec, used to tunnel IPv6 so connections between people using IPv4 and 6 can be made.
*Only 3074 is inbound, so that has to be forwarded. The other ports are only listed to ease troubleshooting as forwarded ports bypass router firewalls. So if you aren't experiencing problems they aren't needed. Forwarding 53 and 80 may also lead to other problems on certain routers. *

https://www.reddit.com/r/xboxone/co...nterested_i_got_the_full_list_of_port/coasx21
 
Required Ports for Steam
Which ports do I need to open on my router or firewall for Steam?

To log into Steam and download content:
  • HTTP (TCP port 80) and HTTPS (443)
  • UDP 27015 through 27030
  • TCP 27015 through 27030
Steam Client
  • UDP 27000 to 27015 inclusive (Game client traffic)
  • UDP 27015 to 27030 inclusive (Typically Matchmaking and HLTV)
  • UDP 27031 and 27036 (incoming, for In-Home Streaming)
  • TCP 27036 and 27037 (incoming, for In-Home Streaming)
  • UDP 4380
Dedicated or Listen Servers
  • TCP 27015 (SRCDS Rcon port)
Steamworks P2P Networking and Steam Voice Chat
  • UDP 3478 (Outbound)
  • UDP 4379 (Outbound)
  • UDP 4380 (Outbound)
https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711
 
Hope that helps with the gaming rules, I'm ststildeciding how to go about putting the rules my self. Im half thinking about putting in home streaming into video streaming traffic categcat since its mirroring what's on a pc.
 
Hope that helps with the gaming rules, I'm ststildeciding how to go about putting the rules my self. Im half thinking about putting in home streaming into video streaming traffic categcat since its mirroring what's on a pc.
Once Freshjr releases gaming script I will use it I hope those ports help him out thanks for the info I can't do much with it because I only know how to install the script not modify it
 
Modifying it is not that hard, just read the first page.
 
just a nit pick but you forgot to mention to disable qos first and dos to unix has to be run before chmod, i got an disbale wos error at the install scrip part

dos2unix should not, to my knowledge, reset file permissions, so the chmod 0755 should persist.
The message you got about needing to disabled QOS when installing using "FreshJR_QOS install" was created by me.
It will ease troubling shooting by making sure people do not have older configs persist after updates since it now requires the toggling of QOS off/on.
 
dos2unix should not, to my knowledge, reset file permissions, so the chmod 0755 should persist.
The message you got about needing to disabled QOS when installing using "FreshJR_QOS install" was created by me.
It will ease troubling shooting by making sure people do not have older configs persist after updates since it now requires the toggling of QOS off/on.
ahh cool gotcha well it works well, a lot better than he other one, I have amazingly low and stable pings while playing battlefield one watching Netflix and YouTube.
So I'm extremely grateful.

But its seem the script need to be formatted first by dos to unix before setting the file permissions, in order to get it to work in my case at least.
 
@FreshJR I found some time to test your new beta that replaces tc directly. I found this:
Code:
ori: class add dev br0 parent 17:1 classid 17:8 htb prio 2 rate 16000bit ceil 49664000bit burst 3200 cburst 60800 quantum 200
new: class add dev br0 parent 17:1 classid 17:8 htb overhead 34 linklayer ethernet prio 2 rate 16000bit ceil 49664000bit burst 3200 cburst 60800 quantum 200
This is partial output from the qos.log with debug enabled. What I see that ALL classes are created with overhead enabled, but from what I know you are only supposed to add the linklayer and overhead directives on the top level class. Putting it in all of them may cause multiple overheads to be calculated.
 
@FreshJR I found some time to test your new beta that replaces tc directly. I found this:
Code:
ori: class add dev br0 parent 17:1 classid 17:8 htb prio 2 rate 16000bit ceil 49664000bit burst 3200 cburst 60800 quantum 200
new: class add dev br0 parent 17:1 classid 17:8 htb overhead 34 linklayer ethernet prio 2 rate 16000bit ceil 49664000bit burst 3200 cburst 60800 quantum 200
This is partial output from the qos.log with debug enabled. What I see that ALL classes are created with overhead enabled, but from what I know you are only supposed to add the linklayer and overhead directives on the top level class. Putting it in all of them may cause multiple overheads to be calculated.

Thanks for the feedback.

Let me confirm I didn't mess up merlins portion of fakeTC. I tried to keep his code intact.

To my knowledge, within any class setup the overhead parameter does not actually add data to the packet. It just accounts for it.

For example let's say I have a main class with a limit of 100kb/s, and each packet has invisible to the router 1kb. (Just for simplicities sake)

So if I am transmitting at 20 pps. The router will be actually limiting the speed data speed to 100kb/s but the actual speed
used at the modem will be 120kb/s.


Without the overhead explicitly defined, the class with be queing at actual data speeds defined but these speeds are not the ones the user intended. This is because the overhead this is stripped/added at the modem, so it is invisible to the router, but your ISP may still be throttle your speeds based on it.

It's just lettin the router know to account for invisible variables when queuing, but the router does not pump the packets up per call. So the overhead calculation can never stack in an additive manor.

Hope this makes sense.

It should be the same as RMerlin correctly left it. I will double check when I get time. It's on the todo list.
 
Last edited:
As I am not an expert on this either I'll try to look it up later, the implementations I've seen to date though only set it on the top class. For example, shorewall on linux systems does it like this. But we need to confirm what is the right thing to do here.
 
As I am not an expert on this either I'll try to look it up later, the implementations I've seen to date though only set it on the top class. For example, shorewall on linux systems does it like this. But we need to confirm what is the right thing to do here.

Maybe that was done for performance reason.

Let's say the main class and subclass both have a ciel of 100kb/s BUT the main class an overhead.

That means the main class will never give the subclass 100kb/s of traffic. Now it's okay for the subclass to have a ciel of 100kb/s, but with that linear structure it will never hit ciel.

So maybe why waste power on tracking and calculating overhead again if you already did it once and the subclass is feed properly throttled data.

If my implementation does not differ for RMerlin you can maybe ask if he knows the reason. I tried to keep it the same.
 
Status
Not open for further replies.

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top