0

着信パケットをユーザー空間アプリケーションに送信せずにキャプチャし、キャプチャされたパケットに変更を加えるモジュールを作成したいと考えています。次に、このモジュールはこのパケットを送信して NIC に送信します。

しかし、主な問題は、モジュールのサイズが非常に大きく、多くの処理も行うことです。したがって、この処理をカーネルモジュール内で行うのが良いでしょうか、それとも複雑さを避けるために処理のために情報とパケットをユーザー空間に渡す必要があります。

&イムは、パケット処理を非常に迅速に行うためだけにそれを行っています。
linux-kernelモジュールが割り当てることができるメモリの最大量。

4

1 に答える 1

1

ユーザー空間ではなくカーネル空間で実行すると、ネットワークパケットは常に高速になります。コストのかかる操作であるユーザー空間にコピーする必要があることに注意してください。ただし、すべてのバグがカーネル クラッシュの可能性があるため、システムが非常に不安定になるため、すべてをカーネル空間で実行する必要はありません。したがって、カーネルまたはユーザー空間を使用してアプリケーションをプログラムするかどうかは、仕様に大きく依存します。

対照的に、割り当てられるメモリの量はまったく問題になりません。Linuxモジュールで使用kmalloc()すると、システムで物理的に利用可能な限り多くのメモリを割り当てることができるので、問題ないはずです.

于 2012-11-07T13:18:02.557 に答える