[Click] madwifi roofnet config problem
John Bicket
jbicket at amsterdam.lcs.mit.edu
Fri Jul 16 15:33:41 EDT 2004
Hi Bob,
That script hadn't quite caught up with the rest of the elements.
I just checked changes in,and it should propagate to anon cvs soon.
--john
Bob Keyes [bob at sinister.com] wrote:
>
>Hi again,
>My dwl-ag520 finally came in today, yay! so I've build the
>madwifi/click/roofnet as described in
>http://www.pdos.lcs.mit.edu/~jbicket/madwifi.stripped/
>
>But there are problems:
>
>merlin:/click# cat /click/errors
>line 165: While configuring 'srcr_es :: ETTStat':
> bad keyword(s) SIZE
> (valid keywords are ETHTYPE, IP, WINDOW, ETH, PERIOD, TAU, ETT, ARP,
>PROBES, RT)
>line 174: While configuring 'srcr_ett :: ETTMetric':
> bad keyword(s) 2WAY_METRICS, 2_WEIGHT, 4_WEIGHT, 11_WEIGHT, 22_WEIGHT
> (valid keywords are ETT, IP, LT)
>line 192: 'srcr :: SRCR' output 1 unused
>Router could not be initialized!
>
>
>See attached config file, generated with the gen_config_roofnet.pl script
>
>
>Any ideas?
>
>
>rates :: AvailableRates(DEFAULT 2 4 11 22);
>
>elementclass APDevice {
> $device, $mac, $promsic|
>
> beacon_source :: BeaconSource(INTERVAL 1000,
> CHANNEL 3,
> SSID "madwifi",
> BSSID $mac,
> RT rates,
> )
> -> output;
>
> ar :: AssociationResponder(INTERVAL 1000,
> SSID "madwifi",
> BSSID $mac,
> RT rates,
> )
> -> output;
>
> pr :: ProbeResponder(INTERVAL 1000,
> SSID "madwifi",
> BSSID $mac,
> CHANNEL 3,
> RT rates,
> )
> -> output;
>
> auth :: OpenAuthResponder(BSSID $mac) ->output;
>
>
> wifi_cl :: Classifier(0/00%0c, //mgt
> 0/08%0c); //data
>
> // management
> wifi_cl [0] -> management_cl :: Classifier(0/00%f0, //assoc req
> 0/10%f0, //assoc resp
> 0/40%f0, //probe req
> 0/50%f0, //probe resp
> 0/80%f0, //beacon
> 0/a0%f0, //disassoc
> 0/b0%f0, //disassoc
> );
>
>
>
> management_cl [0] -> Print ("assoc_req") -> ar;
> management_cl [1] -> Print ("assoc_resp") -> Discard;
> management_cl [2] -> pr;
> management_cl [3] -> Print ("probe_req",200) ->bs :: BeaconScanner(RT rates) -> Discard;
> management_cl [4] -> bs;
> management_cl [5] -> Print ("disassoc") -> Discard;
> management_cl [6] -> Print ("auth") -> auth;
>
> //data
> wifi_cl [1]
> -> bssid_cl :: Classifier(16/000000000000,
> -);
>
> bssid_cl [0]
> -> WifiDecap()
> -> sniff_safe_t :: Tee()
> -> SetPacketType(HOST)
> -> [1] output;
>
> bssid_cl [1]
> -> WifiDecap()
> -> sniff_ap_t :: Tee()
> -> SetPacketType(HOST)
> -> [2] output;
>
> sniff_safe_t [1] -> ToHostSniffers(safe);
> sniff_ap_t [1] -> ToHostSniffers(ap);
>
> from_dev :: FromDevice($device);
> from_dev -> wifi_cl;
>
> input [0] -> ToDevice($device);
>
>
>}
>
>// has one input and one output
>// takes and spits out ip packets
>elementclass LinuxIPHost {
> $dev, $ip, $nm |
>
> input -> CheckIPHeader()
> -> EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2)
> -> SetPacketType(HOST)
> -> CycleCountAccum
> -> to_host :: ToHost($dev);
>
>
> from_host :: FromHost($dev, $ip/$nm)
> -> SetCycleCount
> -> fromhost_cl :: Classifier(12/0806, 12/0800);
>
>
> // arp packets
> fromhost_cl[0]
> -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1)
> -> SetPacketType(HOST)
> -> ToHost();
>
> // IP packets
> fromhost_cl[1]
> -> Strip(14)
> -> CheckIPHeader
> -> GetIPAddress(16)
> -> MarkIPHeader(0)
> -> output;
>
>}
>
>
>
>
>elementclass SniffDevice {
> $device, $promisc|
> from_dev :: FromDevice($device, PROMISC $promisc)
> -> output;
>
> input
> -> to_dev :: ToDevice($device);
>}
>
>sniff_dev :: APDevice(ath0, 00:05:5D:9F:7C:1F, false);
>sched :: PrioSched()
>-> sniff_dev;
>
>route_q :: NotifierQueue(50)
>-> WifiEncap(0x00, 00:00:00:00:00:00)
>-> SetTXRate(RATE 2)
>-> [0] sched;
>
>ecn_q :: ECNQueue(LENGTH 100, DEBUG false)
> -> srcr_rate :: SetTXRate(ETHTYPE 0x092a,
> RATE 11,
> ETT srcr_ett)
>
>-> WifiEncap(0x00, 00:00:00:00:00:00)
>
>-> [1] sched;
>
>
>Idle -> ap_control_q :: NotifierQueue(50)
>-> [2] sched;
>Idle -> ap_data_q :: NotifierQueue(50)
>
>-> WifiEncap(0x02, 00:05:5D:9F:7C:1F)
>
>-> SetTXRate(RATE 2)
>-> [3] sched;
>
>// make sure this is listed first so it gets tap0
>srcr_host :: LinuxIPHost(srcr, 5.159.124.31, 255.0.0.0);
>
>srcr_arp :: ARPTable();
>srcr_lt :: LinkTable(IP 5.159.124.31);
>
>
>srcr_es :: ETTStat(ETHTYPE 0x0932,
> ETH 00:05:5D:9F:7C:1F,
> IP 5.159.124.31,
> PERIOD 10000,
> TAU 180000,
> SIZE 1500,
> ARP srcr_arp,
> ETT srcr_ett);
>
>srcr_ett :: ETTMetric(ETT srcr_es,
> IP 5.159.124.31,
> LT srcr_lt,
> 2WAY_METRICS true,
> 2_WEIGHT 14,
> 4_WEIGHT 28,
> 11_WEIGHT 63,
> 22_WEIGHT 100);
>
>
>srcr_forwarder :: SRForwarder(ETHTYPE 0x092a,
> IP 5.159.124.31,
> ETH 00:05:5D:9F:7C:1F,
> ARP srcr_arp,
> SRCR srcr,
> LM srcr_ett,
> LT srcr_lt);
>
>srcr :: SRCR(ETHTYPE 0x092b,
> IP 5.159.124.31,
> ETH 00:05:5D:9F:7C:1F,
> SR srcr_forwarder,
> LT srcr_lt,
> ARP srcr_arp,
> LM srcr_ett,
> ROUTE_DAMPENING true,
> TIME_BEFORE_SWITCH 5,
> DEBUG false);
>
>srcr_gw :: GatewaySelector(ETHTYPE 0x092c,
> IP 5.159.124.31,
> ETH 00:05:5D:9F:7C:1F,
> LT srcr_lt,
> ARP srcr_arp,
> PERIOD 15,
> GW false,
> LM srcr_ett);
>
>srcr_set_gw :: SetGateway(SEL srcr_gw);
>
>srcr_flood :: CounterFlood(ETHTYPE 0x0941,
> IP 5.159.124.31,
> ETH 00:05:5D:9F:7C:1F,
> BCAST_IP 5.255.255.255,
> COUNT 0,
> MAX_DELAY_MS 750,
> DEBUG false,
> HISTORY 1000);
>
>srcr_ratemon :: IPRateMonitor(BYTES, 1, 0);
>srcr_host -> srcr_host_cl :: IPClassifier(dst host 5.255.255.255,
> dst net 5.159.124.31 mask 255.0.0.0,
> -);
>
>
>srcr_data_ck :: SetSRChecksum()
>srcr_forwarder[1] -> srcr_data_ck;
>srcr_forwarder[0]
> -> srcr_dt ::DecIPTTL
> -> srcr_data_ck
> -> srcr_data_t:: Tee(2)
> -> ecn_q;
>srcr_dt[1] -> ICMPError(5.159.124.31, timeexceeded, 0) -> srcr_host_cl;
>
>// SRCR handles data source-routing packets
>srcr_data_t[1] -> [1] srcr; //data packets (for link error replies)
>srcr_host_cl[0] -> [1] srcr_flood; //local broadcast packets
>srcr_host_cl[1] -> [1] srcr_ratemon; //ip packets for the wireless network
>srcr_host_cl[2]
> -> [0] srcr_set_gw [0]
> -> [1] srcr_ratemon; //ip packets for the gatewa
>
>srcr_flood [0] -> ecn_q;
>srcr_flood [1]
> -> StripSRHeader()
> -> CheckIPHeader()
> -> srcr_host;
>
>srcr_ratemon [1] ->
>gw_incoming_cl :: IPClassifier(src host 5.159.124.31,
> -);
>gw_incoming_cl [0] -> [2] srcr;
>gw_incoming_cl [1]
> -> gw_counter_incoming :: IPAddressCounter(USE_DST true)
> -> [2] srcr; //ip packets for the wireless network
>
>srcr[0] -> SetSRChecksum -> route_q;
>srcr_es -> route_q;
>
>srcr_gw -> SetSRChecksum -> route_q;
>
>srcr_io_q :: InOrderQueue(LENGTH 100, PACKET_TIMEOUT 500, DEBUG false)
>
>srcr_forwarder[2] //ip packets to me
> -> srcr_io_q
> -> StripSRHeader()
> -> CheckIPHeader()
> -> from_gw_cl :: IPClassifier(src net 5.0.0.0 mask 255.0.0.0,
> -);
>from_gw_cl[0]
> -> srcr_ratemon
> -> srcr_host;
>
>from_gw_cl[1]
>-> [1] srcr_set_gw [1]
>-> srcr_ratemon;
>txf :: WifiTXFeedback()
>
>txf [0] -> Discard;
>txf [1] -> Print ("failure") -> Discard;
>// both successes and failures go to the LinkFailureDetection
>
>Idle
>-> failure_cl :: Classifier(12/092a) //srcr_forwarder
>-> srcr_fail_filter :: FilterFailures(MAX_FAILURES 15, ALLOW_SUCCESS false)
>-> ecn_q;
>
>
>
>sniff_dev [0] -> SetTXRate(RATE 2) -> ap_control_q;
>
>sniff_dev [2] -> ToHost(ap);/* ap */
>FromHost(ap, 12.159.124.31/8, ETHER 00:05:5D:9F:7C:1F) -> ap_data_q;
>
>
>sniff_dev [1] /* safe */
>-> HostEtherFilter(00:05:5D:9F:7C:1F, DROP_OTHER true, DROP_OWN true)
>-> rxstats :: RXStats()
>
>
>-> ncl :: Classifier(
> 12/092a, //srcr_forwarder
> 12/092b, //srcr
> 12/092c, //srcr_gw
> 12/0941, //srcr_flood
> 12/0932, //srcr_es
> -);
>
>
>// ethernet packets
>ncl[0] -> CheckSRHeader() -> srcr_dupe :: DupeFilter(WINDOW 100) -> [0] srcr_forwarder;
>ncl[1] -> CheckSRHeader() -> [0] srcr;
>ncl[2] -> CheckSRHeader() -> srcr_gw;
>ncl[3] -> srcr_flood;
>ncl[4] -> srcr_es;
>ncl[5]
>-> ToHost(safe);
>
>FromHost(safe, 6.159.124.31/8, ETHER 00:05:5D:9F:7C:1F)
>-> WifiEncap(0x0, 00:00:00:00:00:00)
>-> ap_control_q;
>
>_______________________________________________
>click mailing list
>click at amsterdam.lcs.mit.edu
>https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list