1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

WAN to LAN performance on RT-AC66U (AsusMerlin vs Tomato-Shibby)

Discussion in 'Tomato Firmware' started by MadBeggar, Nov 14, 2017.

  1. MadBeggar

    MadBeggar New Member Member

    Good day everyone,

    I am trying to get to the bottom of the difference in performance between AsusMerlin and Shibby's Tomato on the RT-AC66U router.

    In particular, I am trying to find out the proper use of the CTF module and why I am unable to get it to work on Tomato.

    The router is connected to an FTTH connection using a CAT6 cable.
    The connection is configured by the ISP as 1Gbps DOWN / 100Mbps UP.

    Initial test :

    I'm using the ISP's speed test tool to test the download and upload speed.

    Test 1 - Running AsusMerlin - RT-AC66U_380.68

    [​IMG]

    Test 2 - Running Shibby's Tomato - RT-AC66U_AT-RT-AC6x-3.4-140-AIO-64K

    [​IMG]

    Further testing using several other tools confirm the above results.


    Modules :


    On AsusMerlin​

    ASUSWRT-Merlin RT-AC66U 380.68-4 Wed Oct 4 19:01:30 UTC 2017
    Linux RT-AC66U-8D20 2.6.22.19 #1 Wed Oct 4 15:02:20 EDT 2017 mips ASUSWRT-Merlin

    Module Size Used by Tainted: P
    wl 3774816 0
    nf_nat_sip 3968 0
    nf_conntrack_sip 7552 1 nf_nat_sip
    nf_nat_h323 6656 0
    nf_conntrack_h323 39584 1 nf_nat_h323
    nf_nat_rtsp 4720 0
    nf_conntrack_rtsp 5792 1 nf_nat_rtsp
    nf_nat_ftp 2240 0
    nf_conntrack_ftp 6976 1 nf_nat_ftp
    ip6table_mangle 1504 0
    sr_mod 15376 0
    cdrom 38688 1 sr_mod
    cdc_mbim 5408 0
    qmi_wwan 7488 0
    cdc_wdm 11040 2 cdc_mbim,qmi_wwan
    cdc_ncm 11888 1 cdc_mbim
    rndis_host 5952 0
    cdc_ether 4480 1 rndis_host
    asix 14944 0
    usbnet 16208 6 cdc_mbim,qmi_wwan,cdc_ncm,rndis_host,cdc_ether,asix
    usblp 14704 0
    ohci_hcd 19568 0
    ehci_hcd 40736 0
    ufsd 350192 0
    vfat 11008 0
    fat 52176 1 vfat
    ext2 66272 0
    ext3 130688 1
    jbd 56320 1 ext3
    mbcache 5744 2 ext2,ext3
    usb_storage 35936 1
    sg 28544 0
    sd_mod 25632 2
    scsi_wait_scan 672 0
    scsi_mod 88928 5 sr_mod,usb_storage,sg,sd_mod,scsi_wait_scan
    usbcore 132240 13 cdc_mbim,qmi_wwan,cdc_wdm,cdc_ncm,rndis_host,cdc_ether,asix,usbnet,usblp,ohci_hcd,ehci_hcd,usb_storage
    ip6t_LOG 7168 0
    ip6table_filter 1312 1
    jffs2 118672 1
    zlib_inflate 14208 1 jffs2
    zlib_deflate 20176 1 jffs2
    nf_nat_pptp 2080 0
    nf_conntrack_pptp 5008 1 nf_nat_pptp
    nf_nat_proto_gre 1712 1 nf_nat_pptp
    nf_conntrack_proto_gre 3360 1 nf_conntrack_pptp
    igs 17808 1 wl
    emf 21152 2 wl,igs
    bcm57xx 167552 0
    et 56320 0
    ctf 21648 0


    On Shibby's Tomato​

    Tomato v1.28.0000 MIPSR2-3.4-140 K26AC USB AIO-64K
    Linux unknown 2.6.22.19 #2 Mon May 8 23:53:27 CEST 2017 mips GNU/Linux

    Module Size Used by Tainted: P
    ebtable_filter 896 0
    ebtables 17856 1 ebtable_filter
    ip6table_mangle 1024 0
    ip6table_filter 736 0
    xt_recent 6912 2
    xt_DSCP 1024 1
    xt_IMQ 736 0
    imq 2320 0
    ehci_hcd 37152 0
    ufsd 312720 0
    vfat 9248 0
    fat 46192 1 vfat
    ext2 56224 0
    ext3 114592 1
    jbd 48448 1 ext3
    mbcache 4560 2 ext2,ext3
    usb_storage 32032 1
    sd_mod 21440 2
    scsi_wait_scan 384 0
    scsi_mod 75104 3 usb_storage,sd_mod,scsi_wait_scan
    nf_nat_pptp 1440 0
    nf_conntrack_pptp 3792 1 nf_nat_pptp
    nf_nat_proto_gre 1104 1 nf_nat_pptp
    nf_conntrack_proto_gre 2496 1 nf_conntrack_pptp
    nf_nat_ftp 1568 0
    nf_conntrack_ftp 5792 1 nf_nat_ftp
    nf_nat_sip 3200 0
    nf_conntrack_sip 6272 1 nf_nat_sip
    nf_nat_h323 5504 0
    nf_conntrack_h323 37536 1 nf_nat_h323
    wl 3479584 0
    dnsmq 2032 1 wl
    et 46080 0
    igs 14928 1 wl
    emf 19040 2 wl,igs




    Obviously there are quite a few differences. But the noteworthy one here is CTF which is present in AsusMerlin and not Tomato.

    I've tried adding the extra modules to the tomato install.

    With ctf_disabled=1 in the nvram, ctf.ko loads properly but has no impact on performance (seems unused).

    With ctf_disabled=0 in the nvram, ctf.ko crashes the router and sends it into a reboot.

    The other missing module that might matter is bcm57xx but it might just be compiled into the kernel.


    A side by side comparison of the config_base files on the kernel source directories shows the following (differences only):
    Code:
    AsusMerlin                                                                Tomato
    # CONFIG_SIBYTE_PTSWARM is not set                            <
    # CONFIG_CPU_MIPS32_R1 is not set                             | CONFIG_CPU_MIPS32_R1=y
    CONFIG_CPU_MIPS32_R2=y                                        | # CONFIG_CPU_MIPS32_R2 is not set
    # CONFIG_SPARSEMEM_MANUAL is not set                          | CONFIG_SPARSEMEM_MANUAL=y
    # CONFIG_SPARSEMEM is not set                                 | CONFIG_SPARSEMEM=y
    # CONFIG_HAVE_MEMORY_PRESENT is not set                       | CONFIG_HAVE_MEMORY_PRESENT=y
    # CONFIG_SPARSEMEM_EXTREME is not set                         | CONFIG_SPARSEMEM_EXTREME=y
    CONFIG_FLATMEM=y                                              | # CONFIG_FLATMEM is not set
    CONFIG_FLAT_NODE_MEM_MAP=y                                    | # CONFIG_FLAT_NODE_MEM_MAP is not set
    # CONFIG_PREEMPT_BKL is not set                               | CONFIG_PREEMPT_BKL=y
    #CONFIG_LOCKDEP_SUPPORT is not set                            | CONFIG_LOCKDEP_SUPPORT=y
    #CONFIG_STACKTRACE_SUPPORT is not set                         | CONFIG_STACKTRACE_SUPPORT=y
    CONFIG_KALLSYMS=y                                             | # CONFIG_KALLSYMS is not set
    # CONFIG_PACKET_MMAP is not set                               | CONFIG_PACKET_MMAP=y
    # CONFIG_NET_KEY is not set                                   | CONFIG_XFRM=y
                                                                  > CONFIG_XFRM_USER=m
                                                                  > # CONFIG_XFRM_SUB_POLICY is not set
                                                                  > # CONFIG_XFRM_MIGRATE is not set
                                                                  > CONFIG_NET_KEY=m
                                                                  > # CONFIG_NET_KEY_MIGRATE is not set
    # CONFIG_INET_AH is not set                                   | CONFIG_INET_AH=m
    # CONFIG_INET_ESP is not set                                  | CONFIG_INET_ESP=m
    # CONFIG_INET_IPCOMP is not set                               | CONFIG_INET_IPCOMP=m
    # CONFIG_INET_XFRM_TUNNEL is not set                          | CONFIG_INET_XFRM_TUNNEL=m
    # CONFIG_INET_TUNNEL is not set                               | CONFIG_INET_TUNNEL=m
    # CONFIG_INET_XFRM_MODE_TRANSPORT is not set                  | CONFIG_INET_XFRM_MODE_TRANSPORT=m
    # CONFIG_INET_XFRM_MODE_TUNNEL is not set                     | CONFIG_INET_XFRM_MODE_TUNNEL=m
    # CONFIG_INET_XFRM_MODE_BEET is not set                       | CONFIG_INET_XFRM_MODE_BEET=m
    CONFIG_IPV6_SIT=m                                             | # CONFIG_IPV6_SIT is not set
    CONFIG_IPV6_SIT_6RD=y                                         | # CONFIG_IPV6_SIT_6RD is not set
    CONFIG_INET_GRO=y                                             | # CONFIG_INET_GRO is not set
    CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y                         | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
                                                                  > CONFIG_NETFILTER_XT_MATCH_POLICY=m
    CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y                         | # CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
    CONFIG_NETFILTER_XT_MATCH_HL=m                                | # CONFIG_NETFILTER_XT_MATCH_HL is not set
    CONFIG_NETFILTER_XT_MATCH_RECENT=y                            | CONFIG_NETFILTER_XT_MATCH_RECENT=m
    CONFIG_IP_NF_MATCH_ACCOUNT=y                                  <
    # CONFIG_IP_NF_MATCH_ACCOUNT_DEBUG is not set                 <
    CONFIG_NETFILTER_XT_MATCH_TIME=y                              | # CONFIG_NETFILTER_XT_MATCH_TIME is not set
    CONFIG_NETFILTER_XT_MATCH_STRING=y                            | CONFIG_NETFILTER_XT_MATCH_STRING=m
    CONFIG_NETFILTER_XT_MATCH_WEBSTR=y                            | # CONFIG_NETFILTER_XT_MATCH_WEBSTR is not set
                                                                  > # CONFIG_NETFILTER_XT_MATCH_WEB is not set
                                                                  > CONFIG_NETFILTER_XT_MATCH_WEBMON=m
    CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y                           <
    CONFIG_IP_NF_TARGET_SKIPLOG=y                                 <
    # CONFIG_IP_NF_DNSMQ is not set                               | CONFIG_IP_NF_MATCH_ACCOUNT=y
                                                                  > CONFIG_IP_NF_DNSMQ=m
    CONFIG_IP_NF_MATCH_ACCOUNT=y                                  <
    # CONFIG_IP6_NF_TARGET_SKIPLOG is not set                     <
    CONFIG_BT=m                                                   | # CONFIG_BT is not set
    CONFIG_BLK_DEV_SR=m                                           | # CONFIG_BLK_DEV_SR is not set
    CONFIG_CHR_DEV_SG=m                                           | # CONFIG_CHR_DEV_SG is not set
    # CONFIG_MD is not set                                        | CONFIG_MD=y
                                                                  > CONFIG_BLK_DEV_MD=m
                                                                  > # CONFIG_MD_LINEAR is not set
                                                                  > CONFIG_MD_RAID0=m
                                                                  > CONFIG_MD_RAID1=m
                                                                  > # CONFIG_MD_RAID10 is not set
                                                                  > # CONFIG_MD_RAID456 is not set
                                                                  > # CONFIG_MD_MULTIPATH is not set
                                                                  > # CONFIG_MD_FAULTY is not set
                                                                  > # CONFIG_BLK_DEV_DM is not set
    # CONFIG_PROXYARP is not set                                  <
    CONFIG_BCM57XX=m                                              | # CONFIG_BCM57XX is not set
    # CONFIG_WL_USE_HIGH is not set                               <
    # CONFIG_WL_USBAP is not set                                  <
    CONFIG_WL_APSTA="wlconfig_lx_router_apsta"                    <
    CONFIG_BONDING=m                                              | # CONFIG_BONDING is not set
    CONFIG_IMQ_NUM_DEVS=8                                         | CONFIG_IMQ_NUM_DEVS=2
    CONFIG_MII=y                                                  | CONFIG_MII=m
    CONFIG_USB_USBNET_MII=m                                       | # CONFIG_USB_USBNET_MII is not set
    CONFIG_USB_NET_AX8817X=m                                      | # CONFIG_USB_NET_AX8817X is not set
                                                                  > CONFIG_USB_NET_HUAWEIETHER=m
                                                                  > CONFIG_USB_NET_CDC_NCM=m
    CONFIG_USB_NET_CDC_NCM=m                                      | # CONFIG_USB_ALI_M5632 is not set
    # CONFIG_USB_NET_ZAURUS is not set                            | # CONFIG_USB_AN2720 is not set
                                                                  > # CONFIG_USB_BELKIN is not set
                                                                  > # CONFIG_USB_ARMLINUX is not set
                                                                  > # CONFIG_USB_EPSON2888 is not set
                                                                  > # CONFIG_USB_KC2190 is not set
    CONFIG_USB_NET_CDC_MBIM=m                                     | # CONFIG_USB_NET_ZAURUS is not set
    # CONFIG_PPP_MULTILINK is not set                             | CONFIG_PPP_MULTILINK=y
    CONFIG_SERIAL_8250_RUNTIME_UARTS=4                            | CONFIG_SERIAL_8250_RUNTIME_UARTS=2
    # CONFIG_USB_PWC is not set                                   | CONFIG_USB_PWC=m
                                                                  > # CONFIG_USB_PWC_DEBUG is not set
    CONFIG_USB_EHCI_SPLIT_ISO=y                                   <
                                                                  <
    #                                                             <
    # USB modem driver of Beceem                                  <
    #                                                             <
    # CONFIG_USB_SERIAL_FTDI_SIO is not set                       | CONFIG_USB_SERIAL_FTDI_SIO=m
    # CONFIG_USB_SERIAL_PL2303 is not set                         | CONFIG_USB_SERIAL_PL2303=m
    # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set                 | CONFIG_USB_SERIAL_SIERRAWIRELESS=m
    # CONFIG_USB_BERRY_CHARGE is not set                          <
    CONFIG_MMC=y                                                  | CONFIG_MMC=m
    CONFIG_MMC_BLOCK=y                                            | CONFIG_MMC_BLOCK=m
    CONFIG_MMC_SDHCI=y                                            | CONFIG_MMC_SDHCI=m
    # CONFIG_NEW_LEDS is not set                                  | CONFIG_NEW_LEDS=y
                                                                  > CONFIG_LEDS_CLASS=m
                                                                  > CONFIG_LEDS_USBGPIO=m
                                                                  > CONFIG_LEDS_TRIGGERS=y
                                                                  > # CONFIG_LEDS_TRIGGER_TIMER is not set
                                                                  > # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
                                                                  > CONFIG_LEDS_TRIGGER_USBDEV=m
    # CONFIG_JFS_FS is not set                                    | CONFIG_JFS_FS=m
                                                                  > # CONFIG_JFS_POSIX_ACL is not set
                                                                  > # CONFIG_JFS_SECURITY is not set
                                                                  > # CONFIG_JFS_DEBUG is not set
                                                                  > CONFIG_JFS_STATISTICS=y
    CONFIG_PROC_KCORE=y                                           | # CONFIG_PROC_KCORE is not set
    # CONFIG_HFS_FS is not set                                    | CONFIG_HFS_FS=m
    # CONFIG_HFSPLUS_FS is not set                                | CONFIG_HFSPLUS_FS=m
                                                                  > # CONFIG_JFFS2_FS_POSIX_ACL is not set
    CONFIG_RPCSEC_GSS_KRB5=m                                      | # CONFIG_RPCSEC_GSS_KRB5 is not set
    # CONFIG_CRYPTO_NULL is not set                               | CONFIG_CRYPTO_NULL=m
    # CONFIG_CRYPTO_MD4 is not set                                | CONFIG_CRYPTO_MD4=m
    # CONFIG_CRYPTO_BLOWFISH is not set                           | CONFIG_CRYPTO_BLOWFISH=m
    # CONFIG_CRYPTO_TWOFISH is not set                            | CONFIG_CRYPTO_TWOFISH=m
    # CONFIG_CRYPTO_SERPENT is not set                            | CONFIG_CRYPTO_SERPENT=m
    # CONFIG_CRYPTO_CAST5 is not set                              | CONFIG_CRYPTO_CAST5=m
    # CONFIG_CRYPTO_CAST6 is not set                              | CONFIG_CRYPTO_CAST6=m
    # CONFIG_CRYPTO_TEA is not set                                | CONFIG_CRYPTO_TEA=m
    # CONFIG_NVRAM_64K is not set                                 <
    # CONFIG_CFE_NVRAM_CHK is not set                             <
    # CONFIG_DUMP_PREV_OOPS_MSG is not set                        <
                                                                  <
    CONFIG_BT_L2CAP=m                                             <
    CONFIG_BT_SCO=m                                               <
    CONFIG_BT_RFCOMM=m                                            <
    CONFIG_BT_RFCOMM_TTY=y                                        <
    CONFIG_BT_BNEP=m                                              <
    CONFIG_BT_BNEP_MC_FILTER=y                                    <
    CONFIG_BT_BNEP_PROTO_FILTER=y                                 <
    CONFIG_BT_CMTP=m                                              <
    CONFIG_BT_HIDP=m                                              <
                                                                  <
    #                                                             <
    # Bluetooth device drivers                                    <
    #                                                             <
    CONFIG_BT_HCIUSB=m                                            <
    CONFIG_BT_HCIUSB_SCO=y                                        <
    CONFIG_BT_HCIUART=m                                           <
    CONFIG_BT_HCIUART_H4=y                                        <
    CONFIG_BT_HCIUART_BCSP=y                                      <
    CONFIG_BT_HCIBCM203X=m                                        <
    CONFIG_BT_HCIBPA10X=m                                         <
    CONFIG_BT_HCIBFUSB=m                                          <
    CONFIG_BT_HCIDTL1=m                                           <
    CONFIG_BT_HCIBT3C=m                                           <
    CONFIG_BT_HCIBLUECARD=m                                       <
    CONFIG_BT_HCIBTUART=m                                         <
    CONFIG_BT_HCIVHCI=m                                           <
    CONFIG_AF_RXRPC=m                                             <
    # CONFIG_AF_RXRPC_DEBUG is not set                            <
    CONFIG_RXKAD=m                                                <
    
    My question is : should I try to recompile Tomato with the same kernel config as AsusMerlin ? Or is there something else I havent looked at ?

    Any hints or comments will be greatly appreciated.
     
  2. pomidor1

    pomidor1 Serious Server Member

    Last edited: Nov 14, 2017
  3. MadBeggar

    MadBeggar New Member Member

    Hi Pomidor1,

    Thanks for the feedback. I wonder : What is the difference between bcm_nat and ctf ?
    I understand that "hardware acceleration" is achieved in 2 levels :

    level 1 - CTF
    level 2 - CTF + FA

    does bcm_nat replace ctf ?
     
  4. pomidor1

    pomidor1 Serious Server Member

    mipsel = bcm_nat
    arm =ctf
    rt-ac (mipsel but ..) ?
    It's just my guess
     
  5. MadBeggar

    MadBeggar New Member Member

    Ah... that might be a good hint. That being said, AsusMerlin does load a module called "ctf" and has no "bcm_nat".
    In both cases, I think the feature is really a sort of programable switch functionality block within the Broadcom chip (be it ARM or MIPS) and CTF is a module that allows you to configure NAT type functions so that they happen at the hardware level.

    It looks like the ctf module comes precompiled from broadcom (I could only find ctf.o and ctf_ksyms.sh in the source tree).

    I've downloaded the latest source for the AC66U from the Asus website and it looks like Broadcom always supplies the module precompiled.

    Does anyone know if there is some source out there for either ctf or bcm_nat ?

    Also, if Shibby is reading, are you planning to move the kernel to Linux 3.x in the next builds ?
     
  6. bjlockie

    bjlockie LI Guru Member

    I heard that moving to a new kernel is unlikely since the broadcom driver tomato uses is only binary and heavily relies on a specific kernel.
    There have been unsuccessful attempts to get it to work on newer kernels.
     

Share This Page