こんにちは、プロトコルスタックの深淵からパケットの鼓動を聞き取るネットワークアーキテクト、そして当メディア主筆の「パケットの旅路」案内人です。
ネットワークの世界に足を踏み入れたばかりの皆さん、スイッチやルーターの中を流れる「データ(パケット)」が、混雑した道路でどのように交通整理されているか、想像したことはありますか?
今日は、VLAN(仮想LAN)を実現するための規格「IEEE 802.1Q」という大きな封筒の中に隠された、わずか 1ビット の小さな、しかし極めて重要なフラグ 「DEI(Drop Eligible Indicator)」 についてお話しします。
「1ビットなんて、誤差みたいなものでしょ?」と思うかもしれません。しかし、この1ビットが、ネットワークがパンクしそうな緊急事態において「誰を助け、誰を諦めるか」を決める運命の分かれ道になるのです。
それでは、郵便配達の仕組みに例えながら、一歩ずつ紐解いていきましょう!
—
1. ネットワークの「渋滞」と、1枚の付箋
想像してみてください。あなたは巨大な郵便局の仕分け担当者です。
毎日、膨大な量の荷物が届きますが、ある日、大雪でトラックが半分しか動かせなくなってしまいました。郵便局の中は荷物で溢れかえり、このままでは全ての配送が止まってしまいます。
この時、もし荷物の伝票に 「もしどうしても運べない時は、この荷物は捨ててもいいですよ(後で送り直しますから)」 という小さなチェック欄(付箋)があったらどうでしょう?
あなたは迷わず、そのチェックがついた荷物を脇に除け、代わりに「絶対に今日中に届けなければならない心臓の薬」や「大切な速達」を優先してトラックに積み込みますよね。
この「もしもの時は捨てていいよ」というチェック欄こそが、VLANタグの中に書き込まれる DEI(Drop Eligible Indicator) なのです。
DEIの正体:TCIの中にある1ビットの正体
VLANを通るパケットには、目印として「802.1Qタグ」という4バイトの情報が付与されます。その中にある「TCI(Tag Control Information)」という16ビットの領域をさらに細かく見ると、こうなっています。
- PCP (Priority Code Point):3ビット(優先順位。0〜7の8段階)
- DEI (Drop Eligible Indicator):1ビット(今回の主役!)
- VID (VLAN Identifier):12ビット(VLAN番号)
昔(古い教科書など)では、このDEIの場所はCFI(Canonical Format Indicator)と呼ばれていました。昔の古いネットワーク方式(Token Ringなど)の名残だったのですが、現代のEthernet全盛期において、その役割を「混雑時の破棄フラグ」として再定義したのがDEIなのです。
—
2. なぜ「捨てる準備」が必要なのか?
「パケットを捨てるなんて、エンジニアとして失格じゃないか!」
初学者の頃、私はそう思っていました。しかし、ネットワークの現場はもっと泥臭いものです。
物理的な回線の太さ(帯域)には限界があります。
例えば、1Gbpsの回線に、一時的に1.5Gbps分のデータが押し寄せたとしましょう。この時、スイッチは魔法を使ってデータを圧縮することはできません。溢れた0.5Gbps分は、どこかで「破棄」するしかないのです。
この時、無差別にパケットを捨ててしまうと、大事な音声通話が途切れたり、重要な業務システムの通信が切断されたりします。
そこで、「この通信は、帯域が余っている時だけ通してほしい『おまけ』のデータです。混んできたら私のことは気にせず捨ててください」 という意思表示をパケットに持たせておく。これが、DEIを活用した輻輳(ふくそう)制御の知恵なのです。
—
3. 実務でどう使う? 設定のイメージ
では、実際にネットワーク機器(例えばCiscoのスイッチなど)で、このDEIをどう扱うのか、設定のイメージを見てみましょう。
通常、ネットワークの入り口(ポリシングと言います)で、「契約以上の通信が来た場合に、即座に捨てるのではなく、とりあえずDEIビットを立てて(1にして)通してあげる」という設定をします。
設定例:混雑時に「捨てられやすく」マークする
以下の例は、ある特定の通信が規定の速度を超えた場合に、DEIビットを 1 に書き換える(マークする)設定のイメージです。
! --- クラスマップ:対象となるトラフィックを定義 ---
class-map match-all BULK_DATA_TRAFFIC
match access-group name MY_APP_LIST
! --- ポリシーマップ:振る舞いを決める ---
policy-map QOS_POLICY_IN
class BULK_DATA_TRAFFIC
! 10Mbpsまでは普通に通す
! それを超えたら(Exceed)、DEIビットを「1」にセットして通す
police 10000000 conform-action transmit exceed-action set-dei-transmit 1
! --- インターフェースに適用 ---
interface GigabitEthernet0/1
service-policy input QOS_POLICY_IN
このように設定しておくと、ネットワークが空いている時は10Mbpsを超えてもデータは届きますが、どこかのルーターで渋滞が発生した瞬間、このDEI=1のパケットたちが「身代わり」となって真っ先に破棄され、他の重要な通信を守ってくれるようになります。
—
4. トラブルシューティングの現場から:DEIの落とし穴
ここで、ベテランエンジニアからのちょっとしたアドバイスです。
DEIは便利な仕組みですが、実務では 「ネットワーク経路上の全てのスイッチがDEIを正しく理解できるか」 を必ず確認してください。
- 古いスイッチの場合:
DEIを無視して、ただのCFIとして扱うことがあります。 - 設定ミス: 途中のスイッチでVLANタグを付け替えたり(タグスタッキングなど)する際に、
DEIの情報が消えてしまう(0に戻ってしまう)ことがあります。
パケットキャプチャ(Wiresharkなど)で確認した時に、意図した場所でDEIが 1(Drop Eligible)になっているかを見るのが、プロの仕事です。
—
5. まとめ:1ビットに込められた優しさ
DEI(Drop Eligible Indicator)は、ネットワークという限られたリソースを、みんなで賢く分け合うための「譲り合いの精神」を形にしたビットです。
1. DEI = 0:普通のパケット(なるべく捨てないで!)
2. DEI = 1:捨てても良いパケット(混んでるなら、私は後回しでOK!)
この仕組みがあるおかげで、私たちはYouTubeを見ながら、同時に大事なWeb会議を途切れることなく続けることができているのです。
インフラエンジニアの仕事は、こうした「たった1ビット」の挙動をコントロールして、世界中のパケットが迷子になったり、渋滞で全滅したりしないように道を作ること。
少し地味かもしれませんが、とても奥が深くてワクワクする世界だと思いませんか?
次にVLANの設定を見る時は、ぜひその中にある小さなDEIビットの存在を思い出してみてください。一歩ずつ、こうしてプロトコルの深淵へ近づいていきましょう!
—
主筆ライターより:
今回の解説はいかがでしたでしょうか?「もっとこの部分を詳しく知りたい!」「このコマンドの意味は?」など、疑問があればいつでも投げかけてくださいね。皆さんのエンジニアライフが、パケットのようにスムーズに流れることを願っています!
コメント