6.14.2011

複雑なpolicy設定

またまた登場のこのトポロジで解説です。
今度は苦手な人も多いQoSに関する解説です。
すべてのルータからすべての表記IPアドレスにはreachableです。




さて、R4の172.16.24.3からR3へのLoopbackに対する通信のうち、
1000~1300byteのtrafficはIP precedence 4に設定します。
1000~1300byteのICMP trafficは無条件にdropします。
300~500byteのtrafficについてはcir 8000 bc 2000 be 1000で許可します。
exceedするものについてはdropします。
300~500byteのICMP trafficについては制限しませんが、DSCP値ad22に設定します。

うざいっすね。
条件が多い。
あーうざい。

僕はQoSをとても苦手としています。
何故なら設定する事多いしわかりにくいし、
verificationができない事も多いから!

とはいえ、設定しないわけにもいきませんので設定することにします。
pingとおるかな?

R4#ping 172.16.103.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.103.1, timeout is 2 seconds:
!!!!!
通りますね。



まず、QoSを設定するときにあるあるとしては、
条件、分類、class、policyの命名で混乱しがち。
せっかくなので、メモ帳をうまーく使って命名します。

今回は大きいパケットについてはlargeのLAを付ける事とします。
小さいパケットについてはsmallのSMを付ける事とします。
ICMPパケットについてはわかりやすくICMPを付けたいと思います。

さて、QoSを組み立てるにあたって、今回の条件を整理します。
処理しなければいけないパケットとしては4種類あることがわかります。

1000~1300byteのICMPパケット
1000~1300byteのIPパケット
300~500byteのICMPパケット
300~500byteのIPパケット

ですね。
こいつらの分類と命名をどうするかというと...


1000~1300byteのICMPパケット⇒無条件drop⇒LA-ICMP
1000~1300byteのIPパケット⇒precedence 4⇒LA
300~500byteのICMPパケット⇒AF22⇒SM-ICMP
300~500byteのIPパケット⇒police⇒SM


こんな風にすることにします。

QoSに引っ掛けてくイメージとしては、
必要であれば引っ掛けるアドレスをACLで書いて
クラスを書いて
ポリシーで条件指定して
インターフェースに適用、という流れが一般的だと思います。

今回はACLの適用が必要でしょうか。
トラフィックのタイプが2種類ありますね。
ICMPとICMP以外のトラフィックです。
それぞれにポリシーを適用する必要がありますので、
ICMPをACLで引っ掛けておきましょう。

ip access-list ext ICMP
 per icmp host 172.16.24.3 host 172.16.103.1 echo

24.3のアドレスから103.1宛のICMPを引っ掛ける事にします。
アドレスを引っ掛けたら今度はこいつをclassに引っ掛けていきましょう。

class-map match-all LA-ICMP
 match access-group name ICMP
 match packet length min 1000 max 1300
!
class-map match-all SM-ICMP
 match access-group name ICMP
 match packet len min 300 max 500
!
access-group ICMPに当てはまるアドレスで
パケット長300~500byteのものがclass SM-ICMPに定義します。
match packet length というような書き方をするんですね。
minが最小でmaxが最大で...
皆まで言うなという声が聞こえてきそうですね。
エンジニアの人は怖い人が多いので苦手です。
技術の話になると急にみんな真剣になって揚げ足を取り始めるので、
僕は技術の話をしないようにしています。
めんどくさいしうるさいからですね。
めんどくさいのでさっさと帰りますね。
難しい話は他の人におまかせおまかせ。

さて、大きく脱線しました。
QoSの設定です。
ICMPのclassを定義したので残りのtrafficについても定義します。
こっちは余裕です。

class-map LA
 match packet len min 1000 max 1300
!
class-map SM
 match packet len min 300 max 500
!
こんだけでいい訳ですね。
ICMP以外ですから、こんだけでおkですね。

最終的にclass-mapの見え方はこんな感じですね。

!
class-map match-all LA
  match packet length min 1000 max 1300
class-map match-all SM
  match packet length min 300 max 500
class-map match-all SM-ICMP
  match access-group name ICMP
  match packet length min 300 max 500
class-map match-all LA-ICMP
  match access-group name ICMP
  match packet length min 1000 max 1300
!
このclassをpolicyにぶち込んでいきます。
policyはLAとSMがあるのでLA-SMとします。

!
policy-map LA-SM
  class LA-ICMP
   drop
⇒LA-ICMPは無条件にdropなのでdrop actionですね。
  class SM-ICMP
   set dscp af22
⇒SM-ICMPにはAF22を設定するんでしたね。
  class LA
   set ip precedence 4
⇒LAはip precedenceを4にします。
  class SM
   police cir 8000 bc 2000 be 1000
     conform-action transmit 
     exceed-action transmit 
     violate-action drop 
⇒cirといえばpolicingですね。
!


と、ここまで設定したら、満足する人が多いようです。
ていうか、僕ですね。

忘れずにインターフェースに適用しておきましょう。
!
interface f0/1
 service-policy input LA-SM
!

これで設定は完了です。

あとはverificationですね。
showコマンドで設定を確認します。

R2#show policy-map
  Policy Map LA-SM
    Class LA-ICMP
      drop
    Class SM-ICMP
      set dscp af22
    Class LA
      set ip precedence 4
    Class SM
     police cir 8000 bc 2000 be 1000
       conform-action transmit
       exceed-action transmit
       violate-action drop

設定されているようですね。


R2#show  class-map
 Class Map match-all LA (id 3)
   Match packet length min 1000 max 1300

 Class Map match-all SM (id 4)
   Match packet length min 300 max 500

 Class Map match-all SM-ICMP (id 2)
   Match access-group name ICMP
   Match packet length min 300 max 500

 Class Map match-any class-default (id 0)
   Match any

 Class Map match-all LA-ICMP (id 1)
   Match access-group name ICMP
   Match packet length min 1000 max 1300

class mapも設定されているようですね。
よかったよかった。

それでは、R4からpingを打ってみましょう。

R4#ping 172.16.103.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.103.1, timeout is 2 seconds:
!!!!!

ノーマルPingには影響ないですね。



policy-map intもみておきましょう。

R2#show policy-map interface 
 FastEthernet0/1 

  Service-policy input: LA-SM

    Class-map: LA-ICMP (match-all)
      25 packets, 31350 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name ICMP
      Match: packet length min 1000 max 1300
      drop

    Class-map: SM-ICMP (match-all)
      26020 packets, 11974333 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name ICMP
      Match: packet length min 300 max 500
      QoS Set
        dscp af22
          Packets marked 26020

    Class-map: LA (match-all)
      20 packets, 26280 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: packet length min 1000 max 1300
      QoS Set
        precedence 4
          Packets marked 20

    Class-map: SM (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: packet length min 300 max 500
      police:
          cir 8000 bps, bc 2000 bytes, be 1000 bytes
        conformed 0 packets, 0 bytes; actions:
          transmit 
        exceeded 0 packets, 0 bytes; actions:
          transmit 
        violated 0 packets, 0 bytes; actions:
          drop 
        conformed 0 bps, exceed 0 bps, violate 0 bps

    Class-map: class-default (match-any)
      1091 packets, 94340 bytes
      5 minute offered rate 2000 bps, drop rate 0 bps
      Match: any 



じゃあ無条件ドロップのpingを打ってみましょう。

R4#ping 172.16.103.1 size 1300

Type escape sequence to abort.
Sending 5, 1300-byte ICMP Echos to 172.16.103.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R4#
ドロップしましたね。
policy-map上でLA-ICMPがカウントアップしているはずです。

    Class-map: LA-ICMP (match-all)
      30 packets, 37920 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name ICMP
      Match: packet length min 1000 max 1300
      drop

カウントアップしとりますなあ。

SM-ICMPのほうを打ってみましょう。
こっちはAF22がカウントアップするはずですね。

  Class-map: SM-ICMP (match-all)
      26020 packets, 11974333 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: access-group name ICMP
      Match: packet length min 300 max 500
      QoS Set
        dscp af22
          Packets marked 26020
R4#ping 172.16.103.1 size 400 

Type escape sequence to abort.
Sending 5, 400-byte ICMP Echos to 172.16.103.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/20/48 ms
R4#

問題なく飛びますね。
マップマップと。。。

 Class-map: SM-ICMP (match-all)
      26025 packets, 11976403 bytes
      5 minute offered rate 1000 bps, drop rate 0 bps
      Match: access-group name ICMP
      Match: packet length min 300 max 500
      QoS Set
        dscp af22
          Packets marked 26025

うん、カウントアップしてますね。
オッケ。
ぐっじょぶ。
疲れますね。QoS。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...