Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support for ip advanced router and add multiple tcp congestion algorithms #1459

Merged
merged 8 commits into from
Mar 27, 2017
Merged

Conversation

catalinii
Copy link
Contributor

Please add the following kernel config options:

Use cases for IP_ADVANCED_ROUTER:

  • using multiple interfaces, including openvpn tunnels

LiveTV works better over WAN connections using another congestions algorithms (like scalable tcp, or htcp).

@chewitt
Copy link
Member

chewitt commented Mar 20, 2017

I'd like to do some research to understand this change first. If accepted, we would also want the same changes to be made for other build projects/devices as we do try and keep configurations broadly in sync or equivalent. Thanks.

@catalinii
Copy link
Contributor Author

Hi,

None of the kernel config submitted changes the (existing) kernel behaviour.

If accepted, I can add to this PR commits for the other projects.

Thanks

@stefansaraev
Copy link
Contributor

this PR is safe, but I dont think busybox's ip route supports multiple routing tables. also you'll probably need at least CONFIG_FEATURE_IP_RULE in busybox-target.conf.

@stefansaraev
Copy link
Contributor

not sure about advanced congestion control, I never saw any difference, if your rtt delay is 300ms, you are screwed anyway, but as you wish. as said - enabling this does not hurt :)

@MilhouseVH
Copy link
Contributor

If you can add the other projects I'll include this in RPi/RPi2/Generic nightly builds prior to merging.

@catalinii
Copy link
Contributor Author

Added separate commit for CONFIG_FEATURE_IP_RULE in busybox.

The projects have been updated except Odroid C2 (added in commit 361ede3) and except projects from projects/RPi directory (@MilhouseVH will take care of this).

I have tested the kernel for Generic (4.10.2), Wetex_Core (amlogic 3.10), imx6 (3.14 and 4.4) and all the options are there. amlogic 3.14 was tested with Odroid C2.

Please let me know if something is missing.

Thanks

@MilhouseVH
Copy link
Contributor

MilhouseVH commented Mar 21, 2017

except projects from projects/RPi directory (@MilhouseVH will take care of this).

I think there's been a misunderstanding :)

Please add the config options for RPi and RPi2 devices - once you've added them to this PR I can include this PR in my RPi/RPi2/Generic test builds.

@catalinii
Copy link
Contributor Author

Hi,

the config for the RPi devices has been adjusted too.

Thanks

@MilhouseVH
Copy link
Contributor

Running make oldconfig on the .config when including this PR reveals that the following options are not required and should be removed from all projects:

# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_VENO is not set

The following option is required and should be added for all projects apart from imx6:

CONFIG_FIB_RULES=y

For imx6 only, you should add:

CONFIG_DEFAULT_CUBIC=y

I've included this PR in tonight's test build #321

@catalinii
Copy link
Contributor Author

Hi @MilhouseVH,

CONFIG_DEFAULT_VEGAS and CONFIG_DEFAULT_VENO have been removed from all the projects.

CONFIG_FIB_RULES is not part of this PR but I can add it if required.

I believe CONFIG_DEFAULT_CUBIC is already part of the imx6 config files.

Thanks

@MilhouseVH
Copy link
Contributor

CONFIG_FIB_RULES is not part of this PR but I can add it if required.

Ah, but it is. From net/ipv4/Kconfig

config IP_MULTIPLE_TABLES
        bool "IP: policy routing"
        depends on IP_ADVANCED_ROUTER
        select FIB_RULES
        ---help---
          Normally, a router decides what to do with a received packet based
          solely on the packet's final destination address. If you say Y here,
          the Linux router will also be able to take the packet's source
          address into account. Furthermore, the TOS (Type-Of-Service) field
          of the packet can be used for routing decisions as well.

          If you are interested in this, please see the preliminary
          documentation at <http://www.compendium.com.ar/policy-routing.txt>
          and <ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex>.
          You will need supporting software from
          <ftp://ftp.tux.org/pub/net/ip-routing/>.

          If unsure, say N.

So by enabling CONFIG_IP_MULTIPLE_TABLES=y you enable CONFIG_FIB_RULES=y.

I believe CONFIG_DEFAULT_CUBIC is already part of the imx6 config files.

Yes you are correct. When I ran make oldconfig for imx6 (4.4-xbian) I mis-read the diff - it had in fact removed then re-added CONFIG_DEFAULT_CUBIC and I missed the add: http://sprunge.us/iaHO

@catalinii
Copy link
Contributor Author

Hi,

CONFIG_FIB_RULES is added for all projects.

Please let me know if everything is good.

Thanks

@MilhouseVH
Copy link
Contributor

Looks fine, however you've also enabled CONFIG_IP_MROUTE_MULTIPLE_TABLES=y for all projects in your last commit, any particular reason for enabling that option now?

config IP_MROUTE_MULTIPLE_TABLES
        bool "IP: multicast policy routing"
        depends on IP_MROUTE && IP_ADVANCED_ROUTER
        select FIB_RULES
        help
          Normally, a multicast router runs a userspace daemon and decides
          what to do with a multicast packet based on the source and
          destination addresses. If you say Y here, the multicast router
          will also be able to take interfaces and packet marks into
          account and run multiple instances of userspace daemons
          simultaneously, each one handling a single table.

          If unsure, say N.

@catalinii
Copy link
Contributor Author

Hi,

firstly it was enabled on imx 4.4 kernel.

Secondly, it is a similar feature but for multicast, which could be used for media transport.

I was thinking over the last days and at some point someone might have a use for it in the future.

Thanks

@stefansaraev
Copy link
Contributor

nobody will ever use IP_MROUTE_MULTIPLE_TABLES on LE. that's not even enabled on stock ubuntu kernels. it is enabled on debian kernels but people usualy don't do multicast routing on linux at all. even if they do, they don't do multiple routing tables. you can trust me on that :)

@MilhouseVH
Copy link
Contributor

OK, let's leave CONFIG_IP_MROUTE_MULTIPLE_TABLES unset in all projects (including imx6/4.4), please. If it's not required, let's not add it.

@catalinii
Copy link
Contributor Author

Hi,

It's removed in the last commit.

Thanks

@MilhouseVH
Copy link
Contributor

Thanks. Let's get a few more days of testing under the belt with the latest configs (for RPi/RPi2/Generic, anyway) before proceeding.

@MilhouseVH MilhouseVH merged commit 7fd6ed6 into LibreELEC:master Mar 27, 2017
@catalinii
Copy link
Contributor Author

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants