【入門編】 802.1QフレームのPCP(Priority Code Point)フィールドの振る舞い – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

こんにちは!ネットワークの世界へようこそ。インフラエンジニアとして日夜パケットと向き合っていると、「どうすればこの大切なデータを、混雑しているネットワークでも一番優先して届けられるだろう?」と考える場面によく遭遇します。

会社や自宅でインターネットを使うとき、動画のストリーミングはサクサク動いてほしいですし、オンライン会議での音声や映像が途切れるのは絶対に避けたいですよね。でも、同じネットワークの裏側では、誰かが巨大なファイルをダウンロードしていたり、バックアップデータが流れていたりと、たくさんのデータが我先にと行き交っています。

こうした「データの渋滞」が起きたとき、ネットワークの世界でどのように交通整理が行われているのでしょうか?今回は、その主役の一つである、イーサネットフレームに隠されたPCP(Priority Code Point)という小さな、だけどものすごく頼もしい3ビットの仕組みについて、一緒に一歩ずつ優しく紐解いていきましょう!

—

1. 郵便配達に例えてみよう:普通の封筒と「速達」のスタンプ

ネットワークのスイッチやルーターは、いわば巨大な郵便局の仕分けセンターです。世界中から(あるいは社内のあちこちから)集まってきた手紙(データパケット)を、宛先に向かって次々と仕分けて送り出しています。

もし、仕分けセンターに普通の荷物が山のように積まれていて、その中に「今すぐ届けてほしいお医者さんの診断書」が混ざっていたとしたらどうでしょう? 山積みの荷物を上から順に処理していたのでは、診断書の到着が遅れて大変なことになってしまいますよね。

そこで現実世界では、封筒に「速達」や「書留」といった特別なスタンプを押します。郵便局のスタッフは、そのスタンプを見た瞬間に「これは他の荷物よりも先に処理しなきゃ!」と気づき、優先的にトラックへ積み込みます。

この現実世界の「速達スタンプ」と全く同じ役割を、L2(レイヤー2)のイーサネットの世界で担っているのが、今回主役として取り上げるPCP(Priority Code Point)なのです!

—

2. 802.1QとTCI、そしてPCPの正体

普段私たちが目にするイーサネットのフレームはシンプルですが、企業向けのネットワークなどでは、そのなかに「VLAN(Virtual LAN)」というグループ分けのタグ情報を挟み込むことがあります。これがIEEE 802.1Q規格に基づく「VLANタグ」です。

VLANタグは全体で4バイト(32ビット)の大きさを持っていますが、その前半部分(2バイト)には、タグ自体の目印や、今回注目する優先度の情報がギュッと詰まっています。これを専門用語でTCI(Tag Control Information)と呼びます。

TCIの先頭にある、たった3ビットの領域。それがPCP(Priority Code Point)です。

「たった3ビット? 3ビットなんて、表現できる数字は 0 から 7 までしかないじゃないか!」と思いましたか? その通りです。たった8段階(0〜7)のシンプルな階級しかありません。しかし、この8段階こそが、L2スイッチの世界でパケットをスムーズに交通整理するための黄金比なのです。

—

3. PCPが持つ「0から7まで」の8つの階級

では、PCPの 0 から 7 までの値が、具体的にどのような優先度を意味しているのかを見ていきましょう。IEEE 802.1pという規格で、以下のような標準的な割り当ての目安が定められています。

  • PCP = 1 (001):Background(背景・ベストエフォート以下の最低優先度)
  • PCP = 0 (000):Best Effort(通常のデータ。Web閲覧やメールなど、特に指定がないもの)
  • PCP = 2 (010):Excellent Effort(少しだけ優先したい通常のデータ)
  • PCP = 3 (011):Critical Applications(クリエイティブな業務データなど)
  • PCP = 4 (100):Video(動画ストリーミング。カクつきを防ぎたい!)
  • PCP = 5 (101):Voice(IP電話の音声。遅延や途切れが許されない最重要級)
  • PCP = 6 (110):Internetwork Control(ネットワーク機器同士の制御パケット)
  • PCP = 7 (111):Network Control(ルーティングプロトコルなどの最優先制御)

面白いことに、デフォルト(何も指定しない状態)は 0(Best Effort)ではなく、なぜか 1 の方が優先度が低い(Background)という少し変な割り当てになっています。これは実際の機器では、未指定の通常トラフィックを 0 に割り当てることが多いためです。

一番大切な音声(Voice)には 5 が割り当てられ、ネットワーク全体の命綱である機器の制御系には 6 や 7 が割り当てられていることが分かりますね。

—

4. L2スイッチはPCPを見てどう動くのか?

スイッチにパケットが到着したとき、ハードウェアレベル(ASICという専用チップ)で次のような一連の処理が行われます。

1. タグの読み取り:受信したイーサネットフレームから802.1Qタグを見つけ、TCIの先頭3ビット(PCP)を瞬時に読み取ります。
2. 内部クラス(CoS)へのマッピング:読み取ったPCPの値(0〜7)を、スイッチ内部で持っている複数のキュー(待ち行列)のどこに割り振るかを決めます。
3. 出力キューイングとスケジューリング:例えば、音声パケット(PCP=5)は「高優先キュー」へ、通常のWeb閲覧(PCP=0)は「低優先キュー(ベストエフォート)」へと入れられます。出口から送り出す際、高優先キューの中身が空になるまで、低優先キューのデータは少し待たされます。

これにより、回線がパンクしそうになっても、大切な音声や映像データだけは遅延なく相手に届くというわけです。

—

5. 実務で触れる設定例:Cisco Catalystスイッチの場合

「なるほど、理論は分かったけれど、実際の現場ではどうやって設定するの?」気になりますよね。
Cisco SystemsのCatalystスイッチを例に、QoS(Quality of Service)の現場でよく使われる設定の断片を見てみましょう。

ネットワーク機器では、受信したPCPの値をそのまま信頼して使う場合(Trust)と、スイッチ側で強制的に書き換える場合があります。ここでは、受信したPCPの値を信頼し、内部のキューイングに反映させる基本的な設定例をご紹介します。

! --- 1. グローバルモードでQoS機能を有効化します ---
Switch(config)# mls qos

! --- 2. 接続されてくる端末(IP電話やPCなど)からのQoSマーキングを信頼する設定 ---
! (これを有効にすると、端末側が送ってきたPCPやDSCPの値をスイッチがそのまま受け入れます)
Switch(config)# interface GigabitEthernet 0/1
Switch(config-if)# mls qos trust cos

! --- 3. 必要に応じて、特定のポートで受信したタグなしパケットに強制的にCoS(PCP)値を付与する ---
! (信頼できない古いPCなどの場合、一律でPCP=0を割り当てる)
Switch(config-if)# switchport priority default 0

このように、インフラエンジニアはスイッチのポートごとに「このポートから入ってくるパケットの優先度はどう扱おうか」を細かく設計・設定しています。

—

おわりに:パケットの「身分証」を愛そう

今回は、イーサネットフレームの隠し味であるPCP(Priority Code Point)について、郵便の速達スタンプに例えながら解説しました。

普段私たちが何気なく使っているインターネットや社内ネットワークも、こうして裏側でたった3ビットの「身分証(PCP)」を確認し合い、泥臭く交通整理を行っているエンジニアたちの工夫によって支えられています。

次にネットワークのトラブルシューティングや設計を行うときは、「お、このパケットはPCP=5だから、しっかり優先キューを通っているかな?」と、パケットたちの旅路にぜひ思いを馳せてみてくださいね。それではまた、次のマニアックなネットワークの世界でお会いしましょう!

コメント

タイトルとURLをコピーしました