packetdrill 深入理解内核网络协议栈的工具集

packetdrill是一个用于测试和理解内核网络协议栈的工具,支持TCP、UDP、ICMP及QUIC协议。它通过自定义脚本模拟和验证网络包,提供了一种深入研究内核网络协议栈的方法。用户可以利用packetdrill的脚本语言定义注入和验证包,以及使用系统调用、shell命令和python命令来操控测试场景。此外,packetdrill支持IPv4、IPv6和Path MTU Discovery等协议特性。

packetdrill 将大事化小

本文是学习和研究内核网络协议栈的一个文笔记录,主要围绕的是一款能帮助大家深入理解内核网络协议栈的工具——packetdrill。packetdrill工具并不能真实的将复杂的内核系统变得更简单,它所做的是让使用者将对象聚焦于一点。换句话说,它构建了一个定量研究某个特定事物的方法。在其他特性保持一致的状态下,不一致的因素成为全局影响因素的导火索。可以说,packetdrill通过另一种形式将大事化小。

深入packetdrill

packetdrill 现支持TCP、UDP、ICMP协议的网络协议栈测试,虽然不多,但已经足够!

QUIC 也可以用packetdrill来测试了。QUIC-mapped-packetdrill

packetdrill 模拟包和验证包

packetdrill是一个测试工具

简洁明了的说,packetdrill工具是通过自定义脚本的形式,探测网络中包传输的实际过程。这里的网络中包传输实际过程指的是真实网络场景下,在内核协议有变化的前提收到的真实包的信息。而用户自定义脚本的意义在于,使用者管控不同的内核网络协议栈状态的变化,任意注入不同格式的数据包和对应预期接收的数据包信息。

这些是深入理解内核网络协议栈的利器。

使用者可以学习和验证内核网络协议栈的某个模块对网络传输的意义。并且深入研究和优化内核网络协议栈的爱好者可以利用packetdrill测试自己的成果是否accept,和对已有的内核网络协议栈bugfix。

packetdrill不算简单,但掌握绝对有意义。

packetdrill 设计

这里并不是必要内容,跳过也不影响本文的阅读和对packetdrill的使用。 但如果你有时间,我希望你能学习一下这个章节,在这里你能得到packetdrill的一些内幕,这对你使用packetdrill绝对是一笔划算的买卖。

网上对packetdrill引擎描述的图很多,我就不贴了!

  1. 执行模块
    这个模块是对自定义脚本的执行,关联的分析器和解释器会将packetdrill格式的脚本变成计算机可读的机器码。
  2. 本地和远端测试
    本地模块是测试在本机网卡和本机构建的一个虚拟网卡之间的交互。本地不是涉及到网络中链路等因素的影响。
    远端模块是测试在两台物理存在的计算机间的交互。packetdrill能测试真实网络中,内核网络协议栈变化的结果。
  3. 时间模块
    脚本是按照时间顺序进行的,每一行脚本语句都会打上时间戳,以被执行模块的解释器翻译成真实时间下的执行动作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值