Skip to content

Commit

Permalink
srcr v. 2
Browse files Browse the repository at this point in the history
  • Loading branch information
jbicket committed Feb 17, 2006
1 parent 93f35e3 commit b9eaa7c
Show file tree
Hide file tree
Showing 2 changed files with 198 additions and 71 deletions.
120 changes: 72 additions & 48 deletions conf/wifi/gen_config_roofnet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,32 @@ GATEWAY="false"
if [ -f /tmp/is_gateway ]; then
GATEWAY="true"
fi
WIRELESS_MAC=`/home/roofnet/scripts/dev_to_mac ath0`
SUFFIX=`/home/roofnet/scripts/mac_to_ip $WIRELESS_MAC`


mac=$(/sbin/ifconfig ath0 | sed -n 's/^.*HWaddr \([0-9A-Za-z:]*\).*/\1/p')
# extract the bottom three octects to use as IP

hi_hex=$(echo $mac | sed -n 's/.*:.*:.*:\([0-9A-Za-z:]*\):.*:.*.*/\1/p')
mid_hex=$(echo $mac | sed -n 's/.*:.*:.*:.*:\([0-9A-Za-z:]*\):.*.*/\1/p')
lo_hex=$(echo $mac | sed -n 's/.*:.*:.*:.*:.*:\([0-9A-Za-z:]*\).*/\1/p')

hi="0x$hi_hex";
mid="0x$mid_hex";
lo="0x$lo_hex";

SUFFIX=$(printf "%d.%d.%d" $hi $mid $lo)
WIRELESS_MAC=$mac
SRCR_IP="5.$SUFFIX"
SRCR_NM="255.0.0.0"
SRCR_NET="5.0.0.0"
SRCR_BCAST="5.255.255.255"
SRCR2_IP="6.$SUFFIX"
SRCR2_NM="255.0.0.0"
SRCR2_NET="6.0.0.0"
SRCR2_BCAST="5.255.255.255"

/usr/sbin/wlanconfig ath1 destroy > /dev/null
/usr/sbin/wlanconfig ath1 create wlandev wifi0 wlanmode monitor > /dev/null

/sbin/ifconfig $DEV txqueuelen 5
ifconfig $DEV up
Expand Down Expand Up @@ -106,82 +126,86 @@ data_q :: FullNoteQueue(10)
ALT_RATE true,
RT rates,
ACTIVE true)
-> data_arf_rate :: AutoRateFallback(OFFSET 4,
STEPUP 25,
RT rates,
ACTIVE false)
-> data_probe_rate :: ProbeTXRate(OFFSET 4,
WINDOW 5000,
RT rates,
ACTIVE false)
-> [1] sched;
Idle -> [1] data_probe_rate;
Idle -> [1] data_madwifi_rate;
Idle -> [1] data_arf_rate;
srcr :: srcr_ett($SRCR_IP, $SRCR_NM, $WIRELESS_MAC, $GATEWAY,
route_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> route_q;
data_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> data_q;
srcr1 :: srcr_ett($SRCR_IP, $SRCR_NM, $WIRELESS_MAC, $GATEWAY,
\"$PROBES\");
// make sure this is listed first so it gets tap0
srcr_host :: LinuxIPHost(srcr, $SRCR_IP, $SRCR_NM)
-> srcr_cl :: IPClassifier(dst net 10.0.0.0/8, -);
srcr1_host :: LinuxIPHost(srcr1, $SRCR_IP, $SRCR_NM)
-> srcr1_cl :: IPClassifier(dst net 10.0.0.0/8, -);
ap_to_srcr :: SRDestCache();
ap_to_srcr1 :: SRDestCache();
srcr_cl [0] -> [0] ap_to_srcr [0] -> [1] srcr;
srcr_cl [1] -> [1] srcr;
srcr1_cl [0] -> [0] ap_to_srcr1 [0] -> [1] srcr1;
srcr1_cl [1] -> [1] srcr1;
route_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> route_q;
data_encap :: WifiEncap(0x0, 00:00:00:00:00:00)
-> data_q;
srcr1 [0] -> route_encap; // queries, replies
srcr1 [1] -> route_encap; // bcast_stats
srcr1 [2] -> data_encap; // data
srcr1 [3] -> srcr1_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to me
srcr1_cl2 [0] -> [1] ap_to_srcr1 [1] -> srcr1_host;
srcr1_cl2 [1] -> srcr1_host; // data to me
srcr2 :: sr2($SRCR2_IP, $SRCR2_NM, $WIRELESS_MAC, $GATEWAY,
\"$PROBES\");
srcr2_host :: LinuxIPHost(srcr2, $SRCR2_IP, $SRCR2_NM)
-> srcr2_cl :: IPClassifier(dst net 10.0.0.0/8, -);
ap_to_srcr2 :: SRDestCache();
srcr2_cl [0] -> [0] ap_to_srcr2 [0] -> [1] srcr2;
srcr2_cl [1] -> [1] srcr2;
srcr2 [0] -> route_encap; // queries, replies
srcr2 [1] -> route_encap; // bcast_stats
srcr2 [2] -> data_encap; // data
srcr2 [3] -> srcr2_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to me
srcr2_cl2 [0] -> [1] ap_to_srcr2 [1] -> srcr2_host;
srcr2_cl2 [1] -> srcr2_host; // data to me
srcr [0] -> route_encap; // queries, replies
srcr [1] -> route_encap; // bcast_stats
srcr [2] -> data_encap; // data
srcr [3] -> srcr_cl2 :: IPClassifier(src net 10.0.0.0/8, -); //data to me
srcr_cl2 [0] -> [1] ap_to_srcr [1] -> srcr_host;
srcr_cl2 [1] -> srcr_host; // data to me
sniff_dev
-> athdesc_decap :: AthdescDecap()
-> phyerr_filter :: FilterPhyErr()
//-> PrintWifi(fromdev)
-> beacon_cl :: Classifier(0/80, //beacons
-)
-> bs :: BeaconScanner(RT rates)
-> Discard;
beacon_cl [1]
-> Classifier(0/08%0c) //data
-> tx_filter :: FilterTX()
-> dupe :: WifiDupeFilter()
-> WifiDecap()
-> HostEtherFilter($WIRELESS_MAC, DROP_OTHER true, DROP_OWN true)
-> rxstats :: RXStats()
-> ncl :: Classifier(12/09??, -);
ncl [0] -> srcr;
ncl[1] -> Discard;
-> ncl :: Classifier(12/09??, 12/06??);
tx_filter [1]
//-> PrintWifi(txf)
-> txf_t2 :: Tee(3);
txf_t2 [0] -> [1] data_arf_rate;
txf_t2 [1] -> [1] data_madwifi_rate;
txf_t2 [2] -> [1] data_probe_rate;
ncl[0] -> srcr1;
ncl[1] -> srcr2;
tx_filter [1] -> [1] data_madwifi_rate;
";

149 changes: 126 additions & 23 deletions conf/wifi/srcr.click
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,6 @@ querier :: SRQuerier(ETH $wireless_mac,
DEBUG true);


tracker_forwarder :: MetricFlood(ETHTYPE 0x092e,
IP $srcr_ip,
ETH $wireless_mac,
LT lt,
ARP arp,
DEBUG false);

TimedSource(600, "")
-> SetIPAddress(255.255.255.255)
-> [1] tracker_forwarder
-> SetSRChecksum -> [0] output;

tracker_forwarder [1] -> Discard;

query_forwarder :: MetricFlood(ETHTYPE 0x0944,
IP $srcr_ip,
ETH $wireless_mac,
Expand All @@ -86,8 +72,6 @@ query_forwarder [1] -> query_responder;
data_ck :: SetSRChecksum()

input [1]
-> SetTimestamp()
-> counter_incoming :: IPAddressCounter(USE_DST true)
-> host_cl :: IPClassifier(dst net $srcr_ip mask $srcr_nm,
-)
-> querier
Expand All @@ -110,15 +94,14 @@ dt[1]

// queries
querier [1] -> [1] query_forwarder;
es -> SetTimestamp() -> [1] output;
es -> [1] output;


forwarder[1] //ip packets to me
-> StripSRHeader()
-> CheckIPHeader()
-> from_gw_cl :: IPClassifier(src net $srcr_ip mask $srcr_nm,
-)
-> counter_outgoing :: IPAddressCounter(USE_SRC true)
-> [3] output;

from_gw_cl [1] -> [1] set_gw [1] -> [3] output;
Expand All @@ -130,7 +113,6 @@ from_gw_cl [1] -> [1] set_gw [1] -> [3] output;
12/0945 , //replies
12/0941 , //srcr_es
12/092c , //srcr_gw
12/092e , //srcr_tracker
);


Expand All @@ -139,11 +121,132 @@ from_gw_cl [1] -> [1] set_gw [1] -> [3] output;
ncl[2] -> CheckSRHeader() -> query_responder;
ncl[3] -> es;
ncl[4] -> CheckSRHeader() -> gw;
ncl[5] -> CheckSRHeader()
-> tracker :: FloodTracker()
-> tracker_forwarder;

}



elementclass sr2 {
$sr2_ip, $sr2_nm, $wireless_mac, $gateway, $probes|


arp :: ARPTable();
lt :: LinkTable(IP $sr2_ip);


gw :: SR2GatewaySelector(ETHTYPE 0x062c,
IP $sr2_ip,
ETH $wireless_mac,
LT lt,
ARP arp,
PERIOD 15,
GW $gateway);


gw -> SR2SetChecksum -> [0] output;

set_gw :: SR2SetGateway(SEL gw);


es :: SR2ETTStat(ETHTYPE 0x0641,
ETH $wireless_mac,
IP $sr2_ip,
PERIOD 30000,
TAU 300000,
ARP arp,
PROBES $probes,
ETT metric,
RT rates);


metric :: SR2ETTMetric(LT lt);


forwarder :: SR2Forwarder(ETHTYPE 0x0643,
IP $sr2_ip,
ETH $wireless_mac,
ARP arp,
LT lt);


querier :: SR2Querier(ETH $wireless_mac,
SR forwarder,
LT lt,
ROUTE_DAMPENING true,
TIME_BEFORE_SWITCH 5,
DEBUG true);


query_forwarder :: SR2MetricFlood(ETHTYPE 0x0644,
IP $sr2_ip,
ETH $wireless_mac,
LT lt,
ARP arp,
DEBUG false);

query_responder :: SR2QueryResponder(ETHTYPE 0x0645,
IP $sr2_ip,
ETH $wireless_mac,
LT lt,
ARP arp,
DEBUG true);


query_responder -> SR2SetChecksum -> [0] output;
query_forwarder -> SR2SetChecksum -> SR2Print(forwarding) -> [0] output;
query_forwarder [1] -> query_responder;

data_ck :: SR2SetChecksum()

input [1]
-> host_cl :: IPClassifier(dst net $sr2_ip mask $sr2_nm,
-)
-> querier
-> data_ck;


host_cl [1] -> [0] set_gw [0] -> querier;

forwarder[0]
-> dt ::DecIPTTL
-> data_ck
-> [2] output;


dt[1]
-> Print(ttl-error)
-> ICMPError($sr2_ip, timeexceeded, 0)
-> querier;


// queries
querier [1] -> [1] query_forwarder;
es -> SetTimestamp() -> [1] output;


forwarder[1] //ip packets to me
-> SR2StripHeader()
-> CheckIPHeader()
-> from_gw_cl :: IPClassifier(src net $sr2_ip mask $sr2_nm,
-)
-> [3] output;

from_gw_cl [1] -> [1] set_gw [1] -> [3] output;

input [0]
-> ncl :: Classifier(
12/0643 , //sr2_forwarder
12/0644 , //sr2
12/0645 , //replies
12/0641 , //sr2_es
12/062c , //sr2_gw
);


ncl[0] -> SR2CheckHeader() -> [0] forwarder;
ncl[1] -> SR2CheckHeader() -> PrintSR(query) -> query_forwarder
ncl[2] -> SR2CheckHeader() -> query_responder;
ncl[3] -> es;
ncl[4] -> SR2CheckHeader() -> gw;

}

0 comments on commit b9eaa7c

Please sign in to comment.