ルーティング時のパケット破棄の原因

(レイヤー3レベルで)パケットが破棄されるのは、以下のような場合があります。

1. ルーティングテーブルにルートが無い場合

ルーティングテーブルに宛先IPのルートが無い場合、どこに送ればよいか分からなくなるため、そのNW機器でパケットが破棄されます。 破棄されるタイミングでNW機器からICMPのDestination Unreachable(Network Unreachable)が送信元IPアドレス宛に通知されます。ただし、大抵ルーティングテーブルにはデフォルトルートが入っているため、このケースは稀です。

2. ルーティングテーブル上に存在するNullルートに合致した

あるNW機器上で『この宛先の通信は破棄したい』というとき、ACLで書くこともできますが、Nullルートを設定することでパケットを破棄できます。

例えば192.168.1.0/24宛の通信を破棄したい場合は、『192.168.1.0/24宛のパケットのネクストホップはNullインタフェース』というNullルートを設定すれば良いのです。

ip route 192.168.1.0 255.255.255.0 interface null

このNullルートは、OSPFやEIGRPで集約ルートを設定する際に生成されます。ルーティング・ループを回避するためです。この理由の詳細についてはこちらを参照下さい

3. IPヘッダのdfビットが立っているのに、MTU値を超えるパケットサイズの場合

MTU値を超えるパケットサイズを転送しようとしたとき、ルータはフラグメンテーションを試みます。ただし、dfビットが立っている場合は、 フラグメンテーション禁止のため、そのNW機器でパケットが破棄されます。破棄されるタイミングでNW機器からICMPのDestination Unreachable (Need Fragmentation but Can't Fragment)が送信元IPアドレス宛に通知されます。その際、送信元に適切なMTU値を知らせることができます。

しかし、もしこのICMPがアクセスリスト等で拒否されている場合、適切なMTU値を知ることができず、また、宛先に届いたかどうかすら分からないため、タイムアウトまで待ち続けることになります。

4. TTLが0になった場合

ルーティングをする際にはIPヘッダのTTLフィールドの値を1つ減らします。ルータにTTL=1のパケットが入ってきたとき、さらにルーティングが必要になる場合(宛先IPアドレスがそのNW機器にConnectedのNWアドレスではない場合)、 TTL=0となり、そのNW機器でパケットが破棄されます。破棄されるタイミングでNW機器からICMPのTime Exceededが 送信元IPアドレス宛に通知されます。

コマンドプロンプトでpingを打ち、"転送中にTTLが期限切れになりました"、もしくは、"TTL expired in transit"と出てくるのは、このICMPを受け取ったためです。この場合の原因はたいてい、どこかでルーティングループが起こっています。『経由するNW機器が多過ぎる』という可能性もありますが、現在では、あり得ないと考えても良いレベルです。

きちんと確認したい場合は、tracert を使って調査します

5. NW機器の転送能力のキャパシティを超えたとき

これは当たり前ですが、機器の性能以上のパケットが入ってきたときは、一部のパケットは破棄されます。

関係する性能指標としては、bpsやpps、CPU使用率やメモリ使用率などがあります。

bpsやppsはいわゆるパケットの流量です。詳細はこちらを参照下さい

CPU使用率は、ハードウェア処理のルーティング、スイッチングには関係ないだろと思う方もいるかもしれませんが、パケットを受信NICから取り出すときや、ヘッダ書き換え処理をしたパケットを送信NICへセットする際には、僅かながらCPUを利用します。なので、CPUが100%稼働していると影響はあります。

また、メモリ使用率についてですが、受信パケットを保存するメモリ領域としては、具体的にはring-bufferと呼ばれるメモリのheap領域を使います。受信バッファをrx-ring送信バッファをtx-ringと呼びます。

これらの値を変更したい場合は以下コマンドを使います。大きくすれば、パケットロスの可能性は低くなります。

(config-if)# rx-ring-limit 128
(config-if)# tx-ring-limit 128

ただし、これらの設定は大きくし過ぎるとパケットロスは減るものの、遅延が大きくなりますのでチューニングの際には注意が必要です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする