Show
Ignore:
Timestamp:
06/08/09 18:29:43 (3 years ago)
Author:
Neutron Soutmun <neo.neutron@…>
Children:
5987af1b79b0c1fbd4aa9d30a53ec6879853ece3
Parents:
03dc5e370ef4fbf66e34cbe5bc5b878ed764149c
git-committer:
Neutron Soutmun <neo.neutron@…> (06/08/09 18:29:43)
Message:

Implement IFB to replace the IMQ

  • IFB (Intermediate Functional Block) is more clearly work in the SMP.
  • Implement IFB on config, bandwidth task and support scripts.
  • IMQ is now deprecated. (not support).
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • tools/bandwidth.sh.in

    r9679928 r2f0141c  
    99TC=/sbin/tc 
    1010IP=/sbin/ip 
     11IFCONFIG=/sbin/ifconfig 
    1112 
    1213INIT=@sysconfdir@/default/rahunas 
     
    1617INTERFACE_SPEED=102400 
    1718 
    18 SHAPING_DOWN_INF=imq0 
    19 SHAPING_UP_INF=imq1 
    20  
    2119INTERFACE_ID=9999 
    2220BITTORRENT_ID=9998 
     
    2927test "$RUN_DAEMON" = "yes" || exit 0 
    3028test -f $RAHUNAS_CONFIG || exit 1 
     29 
     30SHAPING_DOWN_INF="" 
     31SHAPING_UP_INF="" 
    3132 
    3233set -e 
     
    5657 
    5758      # Interface Uplink 
     59      $IFCONFIG $SHAPING_UP_INF up 
    5860      $TC qdisc add dev $SHAPING_UP_INF root handle 2: htb \ 
    5961        default ${INTERFACE_ID}  
    6062      $TC class add dev $SHAPING_UP_INF parent 2: classid 2:${INTERFACE_ID} \ 
    6163        htb rate ${INTERFACE_SPEED}Kbit 
     64 
     65      # Redirect incoming traffic to IFB 
     66      $TC qdisc add dev $SHAPING_DOWN_INF ingress 
     67      $TC filter add dev $SHAPING_DOWN_INF parent ffff: protocol ip prio 2 u32 \ 
     68        match u32 0 0 flowid 1:${INTERFACE_ID} \ 
     69        action mirred egress redirect dev $SHAPING_UP_INF 
    6270      ;; 
    6371  stop) 
     72      # Redirect incoming traffic to IFB 
     73      $TC filter del dev $SHAPING_DOWN_INF parent ffff: protocol ip prio 2 u32 \ 
     74        match u32 0 0 flowid 1:${INTERFACE_ID} \ 
     75        action mirred egress redirect dev $SHAPING_UP_INF 
     76      $TC qdisc del dev $SHAPING_DOWN_INF ingress 
     77 
    6478      # Interface Downlink 
    6579      $TC qdisc del dev $SHAPING_DOWN_INF root 
     
    6781      # Interface Uplink 
    6882      $TC qdisc del dev $SHAPING_UP_INF root 
     83 
     84      $IFCONFIG $SHAPING_UP_INF down 
    6985      ;; 
    7086  esac 
     
    114130 
    115131usage_add() { 
    116   echo "Usage: $1 add ID IP DOWNSPEED UPSPEED" 
     132  echo "Usage: $1 add ID IP DOWNSPEED UPSPEED DOWN_IF UP_IF" 
    117133  echo "         ID - ID number from 1 to 9900" 
    118134  echo "         IP - IPv4 Address" 
    119135  echo "  DOWNSPEED - Download speed (bits/s)" 
    120136  echo "    UPSPEED - Upload speed (bits/s)" 
     137  echo "    DOWN_IF - Downstream interface (eth0, eth1, vlan1, ...)" 
     138  echo "      UP_IF - Upstream interface (ifb0, ifb1, ...)" 
    121139} 
    122140 
    123141usage_del() { 
    124   echo "Usage: $1 del ID" 
     142  echo "Usage: $1 del ID DOWN_IF UP_IF" 
    125143  echo "         ID - ID number from 1 to 9900" 
     144  echo "    DOWN_IF - Downstream interface (eth0, eth1, vlan1, ...)" 
     145  echo "      UP_IF - Upstream interface (ifb0, ifb1, ...)" 
    126146} 
    127147 
     
    175195case "$1" in 
    176196  start) 
    177     start || true  
     197    if [ -z "$2" ] || [ -z "$3" ]; then 
     198      MESSAGE="NOT COMPLETED"   
     199    else 
     200      SHAPING_DOWN_INF=$2 
     201      SHAPING_UP_INF=$3 
     202      RUN=${RUN}-${SHAPING_DOWN_INF}-${SHAPING_UP_INF} 
     203      start || true  
     204    fi 
     205 
    178206    test -n "$MESSAGE" || MESSAGE="NOT COMPLETED" 
    179207    echo $MESSAGE 
    180208    ;; 
    181209  stop) 
    182     stop || true 
     210    if [ -z "$2" ] || [ -z "$3" ]; then 
     211      MESSAGE="NOT COMPLETED"   
     212    else 
     213      SHAPING_DOWN_INF=$2 
     214      SHAPING_UP_INF=$3 
     215      RUN=${RUN}-${SHAPING_DOWN_INF}-${SHAPING_UP_INF} 
     216      stop || true 
     217    fi 
     218 
    183219    test -n "$MESSAGE" || MESSAGE="NOT COMPLETED" 
    184220    echo $MESSAGE 
     
    186222    ;; 
    187223  restart) 
    188     stop || true 
    189     test -n "$MESSAGE" || MESSAGE="NOT COMPLETED" 
    190     echo $MESSAGE 
    191  
    192     start || true 
     224    if [ -z "$2" ] || [ -z "$3" ]; then 
     225      MESSAGE="NOT COMPLETED"   
     226    else 
     227      SHAPING_DOWN_INF=$2 
     228      SHAPING_UP_INF=$3 
     229      RUN=${RUN}-${SHAPING_DOWN_INF}-${SHAPING_UP_INF} 
     230      stop || true 
     231      start || true 
     232    fi 
     233 
    193234    test -n "$MESSAGE" || MESSAGE="NOT COMPLETED" 
    194235    echo $MESSAGE 
     
    201242    fi 
    202243 
    203     if [ $# != 5 ]; then 
     244    if [ $# != 7 ]; then 
    204245      echo "Error: too few arguments" 
    205246      usage_add $N 
     
    207248    fi 
    208249 
    209     bw_add $2 $3 $4 $5 || true 
     250    if [ -z "$6" ] || [ -z "$7" ]; then 
     251      MESSAGE="NOT COMPLETED"   
     252    else 
     253      SHAPING_DOWN_INF=$6 
     254      SHAPING_UP_INF=$7 
     255      RUN=${RUN}-${SHAPING_DOWN_INF}-${SHAPING_UP_INF} 
     256      bw_add $2 $3 $4 $5 || true 
     257    fi 
    210258    echo $MESSAGE 
    211259    ;; 
     
    216264    fi 
    217265 
    218     if [ $# != 2 ]; then 
     266    if [ $# != 4 ]; then 
    219267      echo "Error: too few arguments" 
    220268      usage_del $N 
    221269      exit 1 
    222270    fi 
    223  
    224     bw_del $2 || true 
     271    if [ -z "$3" ] || [ -z "$4" ]; then 
     272      MESSAGE="NOT COMPLETED"   
     273    else 
     274      SHAPING_DOWN_INF=$3 
     275      SHAPING_UP_INF=$4 
     276      RUN=${RUN}-${SHAPING_DOWN_INF}-${SHAPING_UP_INF} 
     277      bw_del $2 || true 
     278    fi 
    225279    echo $MESSAGE 
    226280    ;;