ルーターが制限付きおよびダイレクトブロードキャストを処理する方法
質問に答えるために最初に理解することは、限られたブロードキャストフレームがルーティングされないことです。デフォルトでは、ルーターがレイヤー2またはレイヤー3でブロードキャストされる宛先アドレスを持つフレームを受信すると、ルーターは単にフレームをドロップします。これが、ルーターがブロードキャストドメインの境界であると言われている理由です。
これらのいくつかの例は次のとおりです。
ff-ff-ff-ff-ff-ff
(レイヤー2ブロードキャスト)
255.255.255.255
(レイヤー3限定放送)
それについて考えると、これは理にかなっています。ルーターがブロードキャストを転送すると、1つのarp要求がインターネット上のすべての到達可能なホストに到達しますが、これはひどく非効率的であり、ばかげています。
一方、ダイレクトブロードキャストはルーティングされる場合があります。(IE 192.168.1.255/24
)通常、この機能はデフォルトで無効になっていますがip directed-broadcast
、ルーターでコマンドを発行することで有効にできます。これにより、通常のパケットであるかのように、ルーティングテーブルに従ってダイレクトブロードキャストを転送できます。ただし、これにより、ルーターは限定されたブロードキャストを転送できません。これらはデフォルトでブロックされます。これは、元の質問に関しても少しトピックから外れています。詳細については、このcisco formsページを参照してください。
レイヤー3ブロードキャストレイヤー2ではない?
2番目の質問に答えるには、レイヤー2ブロードキャストアドレスなしでレイヤー3ブロードキャストアドレスを持つフレームを持つことは意味がありません。これは、ブロードキャストフレームであるという目的全体を無効にし、完全に機能するわけではありません。ユニキャストレイヤー2宛先アドレスを持つことは、ルーターがレイヤー3で決定を行うため、ルーターの動作をまったく変更しません255.255.255.255
。
これが重要なのは、レイヤー3アドレスをまったく気にしないスイッチの場合です。スイッチはユニキャストレイヤ2アドレスのみを参照します。同じVLAN上のすべてのインターフェイスにパケットを送信する代わりに、他のユニキャスト宛先アドレスと同様に、送信元アドレステーブル(SAT)を使用します。実際には、ユニキャストレイヤー2アドレスを割り当てることにより255.255.255.255
、レイヤー3にアドレスがあるにもかかわらず、フレームはブロードキャストフレームではなくなります。
DHCPリレーの実際の動作方法
最後の質問については、DHCPリレーは、ブロードキャストパケットを転送しないというルールを回避するルーターの方法です。DHCP Discoverパケットを見てみましょう。
- ソースMAC:[ソースのユニキャストMAC]
- 宛先MAC:
ff-ff-ff-ff-ff-ff
- 送信元IP:
0.0.0.0
- 宛先IP:
255.255.255.255
- 送信元ポート:UDP 68
- 宛先ポート:UDP 67
ルータは、ip helper-address
コマンドが設定されたインターフェイスにパケットが到着したことを確認すると、デフォルトで「支援」されているかglobal ip forward-protocol
コマンドで設定されているプロトコルのいずれかに一致するかどうかを確認します。この場合、ルーターはDHCPであるため、ルーターは宛先ポートがUDP 67と一致していることを認識し、パケットを「支援」することができます。次に、ルーターは、宛先IPアドレスをからコマンドで255.255.255.255
構成されたIPアドレスにip helper-address
変更し、ソースアドレスをパケットが到着したルーターインターフェイスのアドレスに変更し、残りのルーティングロジックにパケットを渡します。
パケットにはユニキャスト宛先アドレスが設定されているため、ルーターはそれを他のパケットと同様に扱います。宛先IPアドレス(現在はそのヘルパーアドレス)をarpしてから、適切なインターフェイスにパケットを送信する前にレイヤー2アドレスを置き換えます。
再び取り戻す
ルーターは、クライアントに送り返されるDHCPオファーに対して本質的に同じプロセスを逆に使用します。DHCPサーバーは、DHCP検出パケットで送信元アドレスとして指定されたIPアドレスにオファーを送信します。したがって、DHCPサーバーを出るパケットは次のようになります。
- ソースMAC:DHCPサーバーのユニキャストMAC
- 宛先MAC:ルーターまたは DHCPサーバーのデフォルトゲートウェイのMACアドレス
- 送信元IP:DHCPサーバーのユニキャストIPアドレス
- 宛先IP:DHCP検出パケットが到達した最初のルーターインターフェイスのIPアドレス
- 送信元ポート:UDP 67
- 宛先ポート:UDP 68
このパケットにはユニキャストレイヤー3宛先アドレスがあるため、ルーターは、パケットの宛先IPと一致するIPアドレスを持つインターフェイスを持つルーターに到達するまで、パケットを正常に転送します。以前から、このルーターにはip helper-address
そのインターフェースの設定が残っていることを思い出してください。ルーターは、パケットがDHCPオファーであるかどうかをチェックし、パケットを書き換えてブロードキャストパケットにし、DHCPクライアントがそのネットワークセグメントのどこかにあることを認識して、そのインターフェイスに送り返します。これで、ルーターを出るパケットは次のようになります。
- 送信元MAC:ルーターインターフェイスのユニキャストMAC
- 宛先MAC:
ff-ff-ff-ff-ff-ff
- 送信元IP:DHCPサーバーのユニキャストIPアドレス
- 宛先IP:
255.255.255.255
- 送信元ポート:UDP 67
- 宛先ポート:UDP 68
TL:DR; ip helper-address
インターフェイスサブコマンドを使用するDHCPリレーは、ルーティングの前にパケットの宛先IPアドレスをDHCPサーバーのユニキャストIPアドレスに変更することにより、ルーターが制限されたブロードキャストを転送できないというルールを「チート」します。これにより、すべてのルーターがパケットをDHCPサーバーに適切にルーティングできます。DHCPサーバーが応答すると、DHCP Discoverパケット(ip helper-interface
コマンドを含むパケット)を最初に受信したルーターインターフェイスのユニキャストIPアドレスにパケットを送り返します。ルータはオファーを受信すると、ブロードキャストパケットに変換して戻し、ブロードキャストドメイン内のクライアントとのインターフェイスに送信します。