♨️
パケット処理とは
L2ヘッダを張り替える行為
IPヘッダの宛先IPは書き換えない
各ホップでやっているのは宛先IPを見て FIBを引く
次ホップを決める
L2(Ethernet)ヘッダの宛先MACを書き換える
次ホップIPは
パケットに入らない
MACアドレス解決のために一瞬使われて消える情報
NICは受信した物理信号を 0/1 に復元し、
DMAを使って直接ホストのメモリ(RAM)に書き込む
CPUはコピー処理をしない
書き込み先は:
特別なハードではなく
普通のRAMの一部をOSが「DMA用」として指定した領域
(DMAバッファ / RXバッファ)
DMAは
メモリ領域ではなく
「デバイスがCPUを介さずRAMにアクセスする仕組み」
[ NIC ]
↓ 物理信号 → ビット列
↓ DMA
[ RAM(DMAバッファ) ]
↓
[ カーネル ]
- パケットとして解釈
- 宛先IPを見る
- FIBを引く
- 次ホップ決定
↓
L2ヘッダを書き換え
↓
[ NIC ] → 次ホップへ送信
Discussion