home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / iproute / examples / diffserv / Edge2 < prev    next >
Encoding:
Text File  |  2004-04-15  |  2.9 KB  |  88 lines

  1. #! /bin/sh -x
  2. #
  3. # sample script on using the ingress capabilities
  4. # This script tags the fwmark on the ingress interface using IPchains
  5. # the result is used first for policing on the Ingress interface then
  6. # for fast classification and re-marking
  7. # on the egress interface
  8. #
  9. #path to various utilities;
  10. #change to reflect yours.
  11. #
  12. IPROUTE=/root/DS-6-beta/iproute2-990530-dsing
  13. TC=$IPROUTE/tc/tc
  14. IP=$IPROUTE/ip/ip
  15. IPCHAINS=/root/DS-6-beta/ipchains-1.3.9/ipchains
  16. INDEV=eth2
  17. EGDEV="dev eth1"
  18. #
  19. # tag all incoming packets from host 10.2.0.24 to value 1
  20. # tag all incoming packets from host 10.2.0.3 to value 2
  21. # tag the rest of incoming packets from subnet 10.2.0.0/24 to value 3
  22. #These values are used in the egress
  23. ############################################################ 
  24. $IPCHAINS -A input -s 10.2.0.0/24 -m 3
  25. $IPCHAINS -A input -i $INDEV -s 10.2.0.24 -m 1
  26. $IPCHAINS -A input -i $INDEV -s 10.2.0.3 -m 2
  27. ############################################################ 
  28. #
  29. # install the ingress qdisc on the ingress interface
  30. ############################################################ 
  31. $TC qdisc add dev $INDEV handle ffff: ingress
  32. ############################################################ 
  33.  
  34. #
  35. # attach a fw classifier to the ingress which polices anything marked
  36. # by ipchains to tag value 3 (The rest of the subnet packets -- not
  37. # tag 1 or 2) to not go beyond 1.5Mbps
  38. # Allow up to at least 60 packets to burst (assuming maximum packet 
  39. # size of # 1.5 KB) in the long run and upto about 6 packets in the
  40. # shot run
  41.  
  42. ############################################################ 
  43. $TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 3 fw \
  44. police rate 1500kbit burst 90k mtu 9k drop flowid :1
  45. ############################################################ 
  46.  
  47. ######################## Egress side ########################
  48.  
  49.  
  50. # attach a dsmarker
  51. #
  52. $TC qdisc add $EGDEV handle 1:0 root dsmark indices 64
  53. #
  54. # values of the DSCP to change depending on the class
  55. #
  56. $TC class change $EGDEV classid 1:1 dsmark mask 0x3 \
  57.        value 0xb8
  58. $TC class change $EGDEV classid 1:2 dsmark mask 0x3 \
  59.        value 0x28
  60. $TC class change $EGDEV classid 1:3 dsmark mask 0x3 \
  61.        value 0x48
  62. #
  63. #
  64. # The class mapping
  65. #
  66. $TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 1 fw classid 1:1
  67. $TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 2 fw classid 1:2
  68. $TC filter add $EGDEV parent 1:0 protocol ip prio 4 handle 3 fw classid 1:3
  69. #
  70.  
  71. #
  72. echo "---- qdisc parameters Ingress  ----------"
  73. $TC qdisc ls dev $INDEV
  74. echo "---- Class parameters Ingress  ----------"
  75. $TC class ls dev $INDEV
  76. echo "---- filter parameters Ingress ----------"
  77. $TC filter ls dev $INDEV parent ffff:
  78.  
  79. echo "---- qdisc parameters Egress  ----------"
  80. $TC qdisc ls $EGDEV
  81. echo "---- Class parameters Egress  ----------"
  82. $TC class ls $EGDEV
  83. echo "---- filter parameters Egress ----------"
  84. $TC filter ls $EGDEV parent 1:0
  85. #
  86. #deleting the ingress qdisc
  87. #$TC qdisc del $DEV ingress
  88.