0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

久しぶりにGNS3(その16:QoS Part1)

Posted at

QoS

帯域制御にトライ。

環境

topology.png
上図のように、GNS3上で2つのVM(xubuntuとLubuntu)をルーターR1を介して通信させ、ルーターR1のf0/1インターフェース外側のトラフィックをQoSによりコントロールする。両側のVMで、iperf(xubuntuからLubuntuへの通信)を同時に複数実行させることにより、帯域制御の効果を検証する。

準備

QoS制御未実施時の帯域

まずは、QoS制御がないときのEnd-to-Endの帯域をおおよそ把握する。

$ iperf -u -c 192.168.2.11 -b 10m

[ ID] Interval       Transfer     Bandwidth
....
[  3]  0.0-10.0 sec  11.9 MBytes  10.0 Mbits/sec   1.908 ms    0/ 8504 (0%)

上記の「10m」(送信時の指定帯域:10Mbit/s)を変化させたときの実行速度とパケットドロップ率は下記のとおり。

UDP 10M 14M 15M 16M 20M
実行速度(Mbps) 10.0 14.0 15.0 14.8 15.1
drop(%) 0 0 0 5.4 24

本環境のEnd-to-Endの帯域は、約15Mbpsと判断。なお、TCPでも実施したが、ほぼ同じような結果が得られている。

ルーターR1の設定

共通

関連するところのみ記載。

ip dhcp excluded-address 192.168.1.1 192.168.1.10
ip dhcp excluded-address 192.168.2.1 192.168.2.10
!
ip dhcp pool P1
 network 192.168.1.0 255.255.255.0
 default-router 192.168.1.1 
!
ip dhcp pool P2
 network 192.168.2.0 255.255.255.0
 default-router 192.168.2.1 

interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0

access-list 101 permit udp any any eq 2000
access-list 102 permit tcp any any eq 3000
  • xubuntuおよびLubuntuがDHCPによりIPアドレスを取得
  • インターフェースf0/0へのIPアドレスアサイン
  • QoS対象とするUDP通信のポート番号指定(2000)
  • QoS対象とするTCP通信のポート番号指定(3000)

ケース1:CBWFQ(Class Based Weighted Fair Queue) - %指定

CBWFQはよく使われるものらしい。ポリシーマップ内にQoS対象(アクセスリストで指定)を記述し、適用するインターフェースを指定するもの。次のサイトを参考にした。

ケース1では、帯域を%で指定。

class-map match-all cm-udp
 match access-group 101
class-map match-all cm-tcp
 match access-group 102
!
policy-map pm-list
 class cm-udp
  bandwidth percent 50 
 class cm-tcp
  bandwidth percent 30 
policy-map pm-cbwfq
 class class-default
  shape average 10000000
   service-policy pm-list
!
interface FastEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 service-policy output pm-cbwfq
  • アクセスリスト101(UDPポート2000)の帯域50%
  • アクセスリスト102(TDPポート3000)の帯域30%
  • あえて、最大帯域(shape average)を10Mbit/s
  • インターフェースf0/1へのIPアドレスアサイン
  • インターフェースf0/1へポリシーマップpm-cbwfqの適用

ケース2:CBWFQ(Class Based Weighted Fair Queue) - 数値指定

ケース2では、帯域に具体的な数値を指定。

class-map match-all cm-udp
 match access-group 101
class-map match-all cm-tcp
 match access-group 102
!
policy-map pm-list2
 class cm-udp
  bandwidth 6000
 class cm-tcp
  bandwidth 5000
policy-map pm-cbwfq2
 class class-default
  shape average 15000000
   service-policy pm-list2
!
interface FastEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 service-policy output pm-cbwfq2
  • アクセスリスト101(UDPポート2000)の帯域6Mbit/s
  • アクセスリスト102(TDPポート3000)の帯域5Mbit/s
  • 最大帯域(shape average)を15Mbit/s
  • インターフェースf0/1へのIPアドレスアサイン
  • インターフェースf0/1へポリシーマップpm-cbwfq2の適用

ケース3:CAR(Committed Access Rate)

CARは、物理インターフェースに直接的に制約を設けるようなものらしい。次のサイトを参考にした。

interface FastEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 rate-limit output access-group 101 6000000 1125000 2250000 conform-action transmit exceed-action drop
 rate-limit output access-group 102 5000000 937500 1875000 conform-action transmit exceed-action drop
  • インターフェースf0/1へのIPアドレスアサイン
  • アクセスリスト101(UDPポート2000)の帯域6Mbit/s
  • アクセスリスト102(TCPポート3000)の帯域5Mbit/s

検証

iperfサーバー側(Lubuntu)で、下記コマンドを実行。

iperf -s -u -p 2000 >> ./2000.log &
iperf -s -p 3000 >> ./3000tcp.log &
iperf -s -u -p 1245 >> ./1245.log &
iperf -s -p 8821 >> ./8821tcp.log &

iperfクライアント側(xubuntu)で、下記コマンドを実行。

iperf -p 2000 -u -c 192.168.2.11 -b 10m >> ./2000m_udp.log &
iperf -p 3000 -c 192.168.2.11 -b 10m >> ./3000m_tcp.log &
iperf -p 1245 -u -c 192.168.2.11 -b 10m >> ./1245m_udp.log &
iperf -p 8821 -c 192.168.2.11 -b 10m >> ./8821m_tcp.log &

ケース1(CBWFQ:%指定、全体10Mpbs、UDPポート2000:50%、TCPポート3000:30%)

期待値的には下記となる。

UDPポート2000 TCPポート3000 UDPポート1245およびTCPポート8821
帯域(Mbps) 5 3 2

10回実施した平均値は下記である。

UDPポート2000 TCPポート3000 UDPポート1245 TCPポート8821
帯域(Mbps) 5.025 3.083 2.011 0.2253

ほぼ期待どおりの結果となっている。また、UDPポート1245およびTCPポート8821の結果から、トラフィックが大きいときに、UDP dominantな状況が発生していることがわかる。

ケース2(CBWFQ:数値指定、全体15Mpbs、UDPポート2000:6Mbps、TCPポート3000:5Mbps)

期待値的には下記となる。

UDPポート2000 TCPポート3000 UDPポート1245およびTCPポート8821
帯域(Mbps) 6 5 4

10回実施した平均値は下記である。

UDPポート2000 TCPポート3000 UDPポート1245 TCPポート8821
帯域(Mbps) 5.933 4.926 3.918 0.2394

こちらも、ほぼ期待どおりの結果。UDP dominantについても同様。

ケース3(CAR、全体15Mpbs、UDPポート2000:6Mbps、TCPポート3000:5Mbps)

UDPポート2000 TCPポート3000 UDPポート1245およびTCPポート8821
帯域(Mbps) 6 5 4

10回実施した平均値は下記である。

UDPポート2000 TCPポート3000 UDPポート1245 TCPポート8821
帯域(Mbps) 5.76 0.7455 8.26 0.7149

CAR(rate-limit)では、TCPの帯域確保が適切に行われていない。理由は不明。(設定が不適切??)

おわりに

一部ではあるが、Qos設定が機能していることを理解。QoSは奥が深いようだ。Part2にトライしたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?