kohler / click

The Click modular router: fast modular packet processing and analysis
Other
735 stars 322 forks source link

Add support for WiFi standard 11n (frame tx/rx) #446

Closed rriggio closed 4 years ago

rriggio commented 4 years ago

This patch add support for 11n frame injection across the entire click router.

pallas commented 4 years ago

you may want to coördinate with @peterhurley or someone else at @meraki since it's likely they've done this work already

rriggio commented 4 years ago

I have not found anything on his GitHub click repo. If they did not release anything on this so far I doubt they will do not. Not quite sure if my patch given its volume can be even merged. It is working with recent kernels that support frame injection at arbitrary HT rates.

tbarbette commented 4 years ago

Maybe an overall picture would help reusability. A configuration maybe ? Do you did this as part of some academic task ?

pallas commented 4 years ago

That's why I'm suggesting you reach out. With no current knowledge of their version of click, I suspect they may have done this work but might need a push to fulfill their license requirements.

pallas commented 4 years ago

Also: IANAL, YMMV

rriggio commented 4 years ago

Maybe an overall picture would help reusability. A configuration maybe ? Do you did this as part of some academic task ?

Yes, it is part of this:

https://github.com/5g-empower/empower-lvap-agent

This commit allows you to do frame injection, for example:

RatedSource(\<9999>, RATE 1, LIMIT 100) -> EtherEncap(0x06BB, 00:15:6D:84:13:5D, FF:FF:FF:FF:FF:FF) -> WifiEncap(0x00, 0:0:0:0:0:0) -> SetTXRateHT(MCS 0, TRIES 1) -> RadiotapEncap() -> Print() -> ToDevice (moni0)

This assumes that moni0 is in monitor mode on a supported driver. You can also receive frames:

FromDevice(moni0, PROMISC false, OUTBOUND true, SNIFFER false) ->RadiotapDecap() ->FilterPhyErr() ->WifiDupeFilter() ->ToDump(/tmp/tmp.pcap, ENCAP 802_11, SNAPLEN 0)

Any tap header different from RadioTap does not make much sense nowadays on Linux but I assume it does not hurt anybody the keep them.

If relevant I can re-open the pull request. I forgot to add an implementation of Minstrel for click as well.