[Click] madwifi roofnet config problem

Bob Keyes bob at sinister.com
Fri Jul 16 15:20:35 EDT 2004


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?
-------------- next part --------------


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;



More information about the click mailing list