zhanglong_vc
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2004-07-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:826回复:0

关于在linux下分片的问题

楼主#
更多 发布于:2004-02-26 23:25
 用IPSec在linux下进行开发(VPN网关型),因为封包和完整型检验的信息而使原始IP包增加了
50字节左右,起初解决的发法是发送不可分片ICMP报文,但后来和某些设备试配时,发现有些设备不会在接到ICMP请求后自动把包分片改小。所以分片才是最终的解决的办法。
因为考虑不过多影响网关效率,现在考虑只做分片而重组的过程在网关后面的目的主机上重组。
平台LINUX 2.2.14 基于IPCHAINS三个HOOK iput ,output ,forward进行包的处理,
系统的分片处理在output后,if (skb->len > mtu )分片,这样重组就会在网关上进行,现在设想能不能在input 点截到IP包后,判断IP包的长度,如果大于1450(设定值)分成两片,然后分别对这两个IP包处理,现在这两个IP包在INPUT 怎么发出去,有直接的方法通过网卡发出去吗?这可能还有路由的问题。
另一种思路是,因为LINUX有一个维护网络数据的skb_buff链表,这样,在INPUT中,
分成两片IP01,IP02,这样将IP02的sk_buff插入到IP01 sk_buff后,原想IP02会在处理完IP01后,再进入iput点,但进行这样的操作,系统就会崩溃,不知道是什么原因?
不知道如过只在网关上做分片,有什么更好的解决方案??
游客

返回顶部