主要是2点:
1.l2fwd例子中,代码中网卡没有配置多队列,所以性能上有些局限性,
而l3fwd的例子中,网卡配置了多队列
这就是在网络转发调试过程中,很多场景下直接使用l2fwd进行转发测试,往往达不到最佳效果的根本原因
2.l2fwd中,报文转发流程相对简单,仅仅改了mac就发包了,无需过多判断
l3fwd中,需查询路由表,相对实现复杂些
这对初学者而言,有一点需要注意,那就是真实的l2fwd场景中,实际上大多都不会改mac,二层转发实际上是无需修改mac地址的,我们做网络安全的,通常会修改l2fwd,将其作为基本性能测试的根本,大概修改如下:
1.增加配置功能,使得cpu与网卡的绑定关系可以自定义,这样对于各种机型,都可以根据numa配置,给出最好的配置
2.将修改mac这个功能去掉
3.减少mbuf mempool的个数,这样做是为了提升cache利用率,这个根据实际测试场景定就行
4.测试仪配置时,将其改为不需要学习arp就能二层测试
这样做后,我们对任何一个产品开发后,每个机型的转发上限基本上就是l2fwd的吞吐,然后按照这个性能基础来优化自己的程序,使整体性能达到最优值