VyOS で DNS や NTP のような制御系通信を扱う場合、単に通すだけでなく、どの通信を優先的に扱うかを考えたくなることがあります。特にルーター自身や内部ネットワークの制御通信は、トラブル時の切り分けにも影響します。
この記事では、VyOS 1.5 を前提に、QoS / DSCP を DNS / NTP などの制御通信をどう扱うかという観点で整理します。
QoS は帯域を増やす機能ではない
QoS は、回線帯域そのものを増やす機能ではありません。混雑時に、どの通信をどう扱うかを決めるための仕組みです。重要な通信を優先する一方で、何を優先するかを誤ると、逆に運用が分かりにくくなります。
家庭や小規模環境では大掛かりな QoS は不要なことも多いですが、DNS、NTP、ルーティング制御、VPN などの制御通信を識別できるようにしておくと、設計意図を表現しやすくなります。
DSCP で制御通信に印を付ける
DSCP は IP ヘッダ内で通信の扱いを示すための値です。VyOS では Firewall の raw table などで、特定の通信に DSCP を設定できます。
DNS / NTP に DSCP を付ける例
set firewall ipv4 prerouting raw rule 2000 action 'accept'
set firewall ipv4 prerouting raw rule 2000 destination port '53'
set firewall ipv4 prerouting raw rule 2000 protocol 'tcp_udp'
set firewall ipv4 prerouting raw rule 2000 set dscp '10'
set firewall ipv4 prerouting raw rule 2010 action 'accept'
set firewall ipv4 prerouting raw rule 2010 destination port '123'
set firewall ipv4 prerouting raw rule 2010 protocol 'udp'
set firewall ipv4 prerouting raw rule 2010 set dscp '10'ここでは例として DSCP 10 を使っています。値そのものより、どの通信にどの印を付けるかを環境内で一貫させることが重要です。
IPv6 側も同じ思想で扱う
デュアルスタック環境では、IPv4 側だけに DSCP を設定しても、IPv6 側の制御通信は別扱いになります。IPv6 でも同じ思想で設定を用意します。
set firewall ipv6 prerouting raw rule 2000 action 'accept'
set firewall ipv6 prerouting raw rule 2000 destination port '53'
set firewall ipv6 prerouting raw rule 2000 protocol 'tcp_udp'
set firewall ipv6 prerouting raw rule 2000 set dscp '10'
set firewall ipv6 prerouting raw rule 2010 action 'accept'
set firewall ipv6 prerouting raw rule 2010 destination port '123'
set firewall ipv6 prerouting raw rule 2010 protocol 'udp'
set firewall ipv6 prerouting raw rule 2010 set dscp '10'IPv4 と IPv6 で完全に同じ設定になるとは限りませんが、制御通信をどう扱うかという設計思想は揃えておく方が運用しやすくなります。
QoS policy で扱いを決める
DSCP で印を付けた通信は、QoS policy 側で扱いを決めます。たとえば、特定の DSCP を持つ通信を priority queue の特定クラスへ入れる構成です。
set qos traffic-match-group qos-af11 match af11 ip dscp '10'
set qos policy priority-queue qos class 3 match-group 'qos-af11'
set qos policy priority-queue qos class 3 queue-type 'fq-codel'
set qos policy priority-queue qos class 3 queue-limit '1000'
set qos policy priority-queue qos default queue-type 'fq-codel'
set qos policy priority-queue qos default queue-limit '1000'QoS は設定を入れれば常に良くなるものではありません。どの通信を優先するか、どのインターフェイスに適用するか、通常時と混雑時でどのように効くかを確認する必要があります。
インターフェイスへ適用する
QoS policy は定義しただけでは効果がありません。対象インターフェイスに適用します。
set qos interface eth1 egress 'qos'
set qos interface tun1000 egress 'qos'どのインターフェイスに egress QoS を適用するかは、通信の流れによって変わります。トンネル、LAN、WAN のどこで整形・優先制御するかを誤ると、期待した場所で効きません。
確認コマンド
show configuration commands | match 'qos'
show configuration commands | match 'set dscp'
show interfacesQoS は効いているかが見えにくい設定です。まず、どの通信に DSCP を付けているか、どの QoS policy が定義されているか、どのインターフェイスへ適用しているかを確認します。
まとめ
VyOS の QoS / DSCP は、通信を魔法のように速くするものではありません。DNS、NTP、ルーティング、VPN などの制御通信をどう識別し、混雑時にどう扱うかを設計として表現するための仕組みです。
重要なのは、DSCP を付ける場所、QoS policy の分類、インターフェイスへの適用を分けて考えることです。設定を増やす前に、どの通信をなぜ優先したいのかを明確にしておく必要があります。
関連する記事
- VyOS 監視・ログ・LLDP – 運用確認の入口を整える
制御通信やログ確認の入口を整理した記事です。 - VyOS tunnel interface – GRE などのトンネルを経路設計に組み込む
QoS を適用する対象になり得るトンネル設計の記事です。 - VyOS ネットワーク設定ガイド
VyOS 1.5 の設定記事をまとめたハブページです。
次に進む
- VyOS ネットワーク設定ガイドへ戻る
VyOS 1.5 の設定記事へ進む場合はハブページから確認できます。
参考書籍
ルーティング、トンネル、QoS などネットワーク設計の前提を体系的に確認したい場合の参考書籍です。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

