TIPS/LinuxKernel/ip_fragment

Last-modified: 2007-09-08 (土) 15:02:15

自局パケットもFWパケットもip_finish_output()とip_finish_output2()の間で
mtuとの比較でフラグメント必要と判断されると、ip_fragment()関数が挟まれる

自局送信のフラグメント

  • 自局送信は既にsocketでデータだけskbに分けてコピーされており
    shared_infoのflag_listにlistされる
  • ip_fragment()で、すでにわかれているskbの各データに
    ipヘッダだけ作成して1つ(1パケット)ずつip_finish_output2()で送信する

FWパケットの送信

  • fwパケットは、skbがわかれていないため、
    1パケットずつskbをallocしてそこにデータをコピーし、
    ipヘッダを作成して送信関数(ip_finish_output2()で)送信されていく
  • 最後に、もともとのskbはfreeされる