robertdavidgraham / masscan

TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.
GNU Affero General Public License v3.0
23.26k stars 3.04k forks source link

can I use masscan with dpdk? #461

Open imfht opened 4 years ago

imfht commented 4 years ago

Hello: Look like masscan support dpdk.https://github.com/robertdavidgraham/masscan/blob/master/src/rte-ring.h I've googled for it but get no information. And no document told about it.
Could anyone have a look at this? Thanks!

StayPirate commented 4 years ago

Do you have any update about it?

I've been using PF_RING for a while. Since I moved to on-demand cloud servers, I have problems with the licensing of ZC driver because it is bounded to the NIC's MAC address, which is obviously a huge limitation if you spin and destroy a bare-metal server for each scan.

imfht commented 4 years ago

@StayPirate I didn't found a way to use masscan with dpdk. ;-( and dpdk is so complex for me so I gived up.

StayPirate commented 4 years ago

There is an old tweet from @robertdavidgraham

image

https://twitter.com/ErrataRob/status/1046504005885669378

But he doesn't confirm whether masscan works with DPDK or only with PF_RING. As I said before, I used PF_RING to perform scans in the past... But its licensing system doesn't work that good on the cloud. I hope one-day Ntop people will remove the licensing limitation and maybe find a different way to monetize their software.

StayPirate commented 4 years ago

According to what @robertdavidgraham wrote on POC||GTFO 15 (June, 2017): masscan doesn't support DPDK.

Intel has a system called DPDK, the Data-Plane Development kit. It contains not only a user-mode driver similar to PF_RING, but a whole toolkit to solve other problems, like multi-CPU synchronization and multi-socket NUMA memory handling. It’s a real awesome toolkit. However, it’s also an enormous dependency for code. That’s why Masscan uses PF_RING—it’s an optional feature that most users will never see. Had I used DPDK, I would’ve forced users into dependency hell trying to build a massive toolkit for my little application.

Even if the link you shared on the first post reports DPDK on it, doing a quick search for the same word on this repository makes it clear that there has not been any effort to support DPDK.

I'm wondering if @robertdavidgraham plans to support netmap in the future, it would be great to get free from the licensing stuff.

StayPirate commented 4 years ago

I found a workaround for the issue I was facing. Since the license is bound to the NIC's MAC address, I created a NIC on AWS and I bound the license with its physical address and every time I spin a new server I attach this NIC to it. So I can use the ixgbevf zero-copy driver with masscan on AWS. The downsides are which I have to pay attention to never delete the NIC, and this solution is not cloud-agnostic.