which mode will this routing protocol running on top of, is it mesh
mode, adhoc/ibss, or monitoring mode? does it work with 11n/HT(as the
website mentions MIMO)?

I recall meraki somehow is using monitoring mode for its mesh algorithm.

xxiao

On Wed, Aug 11, 2010 at 7:03 AM, Roberto Riggio
<roberto.rig...@create-net.org> wrote:
> The official website is
>
> http://www.wing-project.org
>
> The website contains several info about the routing protocol. An extended
> description of the wing package for openwrt can be found here:
>
> http://wing-project.org/openwrt:wing
>
> I've developed most of the code for the routing protocol and for
> the integration with openwrt, so i can probably answer to your
> questions.
>
> R.
>
> On 08/11/2010 01:37 PM, L. Aaron Kaplan wrote:
>
> is there any docu on WING?
>
>
> On Aug 11, 2010, at 11:55 AM, Roberto Riggio wrote:
>
>
>
> Hi,
>
> this patch adds support for WING a new routing protocol for wireless
> mesh networks. WING is an extension of the Roofnet routing protocol
> developed by MIT. The new features are: support for multiple radio
> interfaces, and link quality based routing using the WCETT metric.
>
> The source code is hosted at github.
>
> Upon install, this package will create a new entry in the network section:
>
> config 'interface' 'mesh'
>    option 'proto' 'wing'
>    option 'profile' 'bulk'
>    option 'rc' 'static'
>    option 'ls' 'fcfs'
>    option 'metric' 'wcett'
>    option 'prefix' '6'
>    option 'period' '36000'
>    option 'tau' '360000'
>    option 'debug' 'true'
>
> The only mandatory field is "proto". After running ifup mesh a new interface
> will be created. This interface is called wing-$(ifname) and uses
> multi-hopping.
>
> Here follows a short description for the other parameters:
>
> profile, profile to be used for building the configuration for the click
> router (at the moment only one profile is defined)
>
> rc, rate control algorithm (static, madwifi, autoratefallback)
>
> ls, outgoing link scheduling policy (fcfs, drr)
>
> metric, routing metric (etx, ett, wcett)
>
> period, tau, averaging period for network probes, smoothing window
>
> Signed-off-by: Roberto Riggio <roberto.rig...@create-net.org>
>
> --
>
> Index: net/wing/files/lib/network/wing.sh
> ===================================================================
> --- net/wing/files/lib/network/wing.sh        (revision 0)
> +++ net/wing/files/lib/network/wing.sh        (revision 0)
> @@ -0,0 +1,145 @@
> +
> +scan_wing() {
> +     config_set "$1" device "wing-$1"
> +}
> +
> +coldplug_interface_wing() {
> +        setup_interface_wing "wing-$1" "$1"
> +}
> +
> +stop_interface_wing() {
> +     local config="$1"
> +     local iface="wing-$config"
> +     env -i ACTION="ifdown" INTERFACE="$config" DEVICE="$iface" PROTO=wing
> /sbin/hotplug-call "iface"&
> +     [ -f "/var/run/$iface.pid" ]&&  {
> +             kill -9 $(cat /var/run/$iface.pid)
> +             rm /var/run/$iface.pid
> +     }
> +}
> +
> +setup_interface_wing() {
> +
> +        local iface="$1"
> +        local config="$2"
> +
> +     local hwmodes=""
> +     local freqs=""
> +     local ifnames=""
> +     local hwaddrs=""
> +
> +     config_load wireless
> +     config_foreach wing_list_interfaces wifi-iface
> +     
> +     # start click router
> +     if [ "$hwmodes" = "" -o "$freqs" = "" -o "$ifnames" = "" -o "$hwaddrs" =
> "" ]; then
> +             logger -t "$config" "No raw interfaces available. Exiting."
> +             exit 1
> +     fi
> +
> +     local profile rc ls prefix debug
> +
> +     config_get profile $config profile "bulk"
> +     config_get rc $config rc "static"
> +     config_get ls $config ls "fcfs"
> +     config_get metric $config metric "wcett"
> +     config_get prefix $config prefix "6"
> +     config_get period $config period "10000"
> +     config_get tau $config tau "100000"
> +     config_get_bool debug $config debug "False"
> +
> +     local hwaddr=$(echo $hwaddrs | sed 's/ .*//');
> +     local ipaddr=$(printf "$prefix.%d.%d.%d" $(echo $hwaddr | awk -F: 
> '{printf
> "0x%s 0x%s 0x%s",$4,$5,$6}'))
> +     local netmask=255.0.0.0
> +
> +     if ! wing_template_available "profile" "$profile" "bulk"; then
> +             logger -t "$config" "Unable to configure router. Exiting."
> +             exit 1
> +     fi
> +
> +     if ! wing_template_available "rc" "$rc" "static"; then
> +             logger -t "$config" "Unable to configure rate control. Exiting."
> +             exit 1
> +     fi
> +
> +     if ! wing_template_available "ls" "$ls" "radiotap"; then
> +             logger -t "$config" "Unable to configure link scheduler. 
> Exiting."
> +             exit 1
> +     fi
> +
> +     if [ "$profile" = "" -o "$rc" = "" ]; then
> +             logger -t "$config" "Unable to generate template. Exiting."
> +             exit 1
> +     fi
> +
> +     [ "$debug" == 0 ]&&  dbg="" || dbg="-d"
> +
> +     /usr/bin/click_config -p $profile -r $rc -s $ls -l $metric \
> +             -m "$hwmodes" -c "$freqs" -n "$ifnames" -a "$hwaddrs" $dbg \
> +             | sed -e "s/__XR_IFNAME__/$iface/g" \
> +             | sed -e "s/__XR_IP__/$ipaddr/g" \
> +             | sed -e "s/__XR_NM__/$netmask/g" \
> +             | sed -e "s/__XR_PERIOD__/$period/g" \
> +             | sed -e "s/__XR_TAU__/$tau/g">  /tmp/$iface.click
> +
> +     /usr/bin/click-align /tmp/$iface.click>  /tmp/$iface-aligned.click
> 2>/var/log/$iface.log
> +     [ ! -c /dev/net/tun ]&&  {
> +             mkdir -p /dev/net/
> +             mknod /dev/net/tun c 10 200
> +             if [ ! -c /dev/net/tun ]; then
> +                     logger -t "$config" "Device not available 
> (/dev/net/tun). Exiting."
> +                     exit 1
> +             fi
> +     }
> +
> +     # creating the tun interface below will trigger a net subsystem event
> +     # prevent it from touching iface by disabling .auto here
> +     uci_set_state network "$config" auto 0
> +
> +     (/usr/bin/click /tmp/$iface-aligned.click>>  /var/log/$iface.log 2>&1&)&
> +     sleep 2
> +     ps | grep /usr/bin/click | grep -q -v grep || {
> +             logger -t "$config" "Unable to start click. Exiting."
> +             exit 1
> +     }
> +
> +     ps | grep /usr/bin/click | grep -v grep | awk '{print $1}'>
> /var/run/$iface.pid
> +
> +     ifconfig "$iface" "$ipaddr" netmask "$netmask"
> +     uci_set_state network $config ipaddr "$ipaddr"
> +     uci_set_state network $config netmask "$netmask"
> +
> +     env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=wing
> /sbin/hotplug-call "iface"&
> +
> +}
> +
> +wing_template_available() { # prefix, template, default
> +     local template="/etc/wing/$1.$2.click"
> +     [ ! -f $template ]&&  {
> +             template="/etc/wing/$1.$3.click"
> +             [ ! -f $template ]&&  {
> +                     return 1
> +             }
> +     }
> +     return 0
> +}
> +
> +wing_list_interfaces() {
> +     local channel freq hwmode hwaddr ifname mode
> +     config_get ifname $1 ifname
> +     config_get mode $1 mode
> +     config_get device $1 device
> +     config_get_bool up $1 up
> +     [ "$up" = "1" -a "$mode" = "monitor" ] || return 0
> +     config_get hwmode $device hwmode "11b"
> +     config_get channel $device channel "1"
> +     freq=$(iwlist $ifname freq | sed -n "s/^.*Channel 0*$channel :
> \([0-9.]*\).*/\1/p" | awk '{print $1*1000}')
> +     hwaddr=$(/sbin/ifconfig $ifname 2>&1 | sed -n 's/^.*HWaddr
> \([0-9A-Za-z\-]*\).*/\1/p' | sed -e 's/\-/:/g' | cut -c1-17)
> +     freqs=${freqs:+"$freqs "}$freq
> +     hwmodes=${hwmodes:+"$hwmodes "}$hwmode
> +     hwaddrs=${hwaddrs:+"$hwaddrs "}$hwaddr
> +     ifnames=${ifnames:+"$ifnames "}$ifname
> +     /sbin/ifconfig $ifname mtu 1900
> +     /sbin/ifconfig $ifname txqueuelen 5
> +     /sbin/ifconfig $ifname up
> +}
> +
>
> Property changes on: net/wing/files/lib/network/wing.sh
> ___________________________________________________________________
> Added: svn:executable
>   + *
>
> Index: net/wing/files/etc/uci-defaults/wing
> ===================================================================
> --- net/wing/files/etc/uci-defaults/wing      (revision 0)
> +++ net/wing/files/etc/uci-defaults/wing      (revision 0)
> @@ -0,0 +1,26 @@
> +uci set network.mesh=interface
> +uci set network.mesh.proto=wing
> +uci set network.mesh.profile=bulk
> +uci set network.mesh.rc=static
> +uci set network.mesh.ls=fcfs
> +uci set network.mesh.metric=wcett
> +uci set network.mesh.prefix=6
> +uci set network.mesh.period=36000
> +uci set network.mesh.tau=360000
> +uci set network.mesh.debug=true
> +
> +cfg=$(uci add firewall zone)
> +uci set firewall.$cfg.name="mesh"
> +uci set firewall.$cfg.input="ACCEPT"
> +uci set firewall.$cfg.output="ACCEPT"
> +uci set firewall.$cfg.forward="REJECT"
> +uci set firewall.$cfg.masq="1"
> +
> +cfg=$(uci add firewall forwarding)
> +uci set firewall.$cfg.src="lan"
> +uci set firewall.$cfg.dest="mesh"
> +
> +cfg=$(uci add firewall forwarding)
> +uci set firewall.$cfg.src="mesh"
> +uci set firewall.$cfg.dest="wan"
> +
> Index: net/wing/Config.in
> ===================================================================
> --- net/wing/Config.in        (revision 0)
> +++ net/wing/Config.in        (revision 0)
> @@ -0,0 +1,17 @@
> +# Wing configuration
> +
> +choice
> +     prompt "Version"
> +     depends on PACKAGE_wing
> +     default WING_STABLE
> +     help
> +       This option allows you to select the version of Wing to be built.
> +     
> +config WING_STABLE
> +     bool "Use the stable version (multi-interface)"
> +     
> +config WING_TESTING
> +     bool "Use the unstable version (multi-interfaces w/ ITACA)"
> +
> +endchoice
> +
> Index: net/wing/Makefile
> ===================================================================
> --- net/wing/Makefile (revision 0)
> +++ net/wing/Makefile (revision 0)
> @@ -0,0 +1,112 @@
> +#
> +# Copyright (C) 2006-2009 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=wing
> +
> +ifneq ($(CONFIG_WING_STABLE),)
> +  PKG_VERSION:=20100805
> +  PKG_RELEASE:=1
> +  PKG_REV:=21aae2ae5bea85426aded47b055b4fe62c2cea2e
> +else
> +  PKG_VERSION:=$(shell date +%Y%m%d)
> +  PKG_RELEASE:=1
> +  PKG_REV:=HEAD
> +endif
> +
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
> +PKG_SOURCE_URL:=http://github.com/create-net/click-wing.git
> +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
> +PKG_SOURCE_VERSION:=$(PKG_REV)
> +PKG_SOURCE_PROTO:=git
> +
> +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +define Package/wing
> +  TITLE:=Wireless mesh networking toolkit
> +  SECTION:=net
> +  CATEGORY:=Network
> +  MAINTAINER:=Roberto Riggio (roberto.rig...@create-net.org)
> +  DEPENDS:=+kmod-tun
> +  URL:=http://www.wing-project.org/
> +endef
> +
> +define Package/wing/Description
> +     Wing is a wireless mesh routing software. The routing protocol
> +     is derived from Roofnet. It supports multiple radio interfaces and
> +     link quality routing using the ETX, ETT, and WCETT metrics.
> +endef
> +
> +define Package/wing/config
> +     source "$(SOURCE)/Config.in"
> +endef
> +
> +define Build/Configure
> +     (cd $(PKG_BUILD_DIR); \
> +             rm -rf config.{cache,status}; \
> +              ./configure \
> +                     --prefix=/usr \
> +                     --enable-userlevel \
> +                     --enable-wifi \
> +                     --enable-wing \
> +                     --disable-linuxmodule \
> +     );
> +     $(MAKE) -C $(PKG_BUILD_DIR) tools elementmap.xml
> +     (cd $(PKG_BUILD_DIR)/userlevel; \
> +             ../tools/click-mkmindriver/click-mkmindriver -p $(PKG_NAME) -C 
> .. \
> +             -f $(PKG_BUILD_DIR)/conf/wing/sample.click \
> +             -A --all -E Discard -E Print -E Null \
> +             -E InfiniteSource -E RatedSource -E EtherEncap -E UDPIPEncap \
> +             -E AthdescEncap -E AthdescDecap -E RadiotapDecap -E 
> RadiotapEncap \
> +             -E ProbeTXRate -E MadwifiRate -E AutoRateFallback \
> +             -E RoundRobinSched -E DRRSched; \
> +     )
> +     (cd $(PKG_BUILD_DIR); \
> +             rm -rf config.{cache,status} ; \
> +             $(TARGET_CONFIGURE_OPTS) \
> +             CXXFLAGS="-static -O2 -MD" CFLAGS="-static -MD" \
> +             CPPFLAGS="-I$(STAGING_DIR)/usr/include 
> -I$(STAGING_DIR)/include" \
> +             LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
> +             ./configure \
> +                     --prefix=/usr \
> +                     --target=$(GNU_TARGET_NAME) \
> +                     --host=$(GNU_TARGET_NAME) \
> +                     --build=$(GNU_HOST_NAME) \
> +                     --enable-tools=mixed \
> +                     --enable-userlevel \
> +                     --enable-wifi \
> +                     --enable-wing \
> +                     --disable-linuxmodule \
> +     );
> +endef
> +
> +define Build/Compile
> +     $(MAKE) -C $(PKG_BUILD_DIR) \
> +             MINDRIVER=$(PKG_NAME) \
> +             DESTDIR="$(PKG_INSTALL_DIR)" \
> +             all install
> +endef
> +
> +define Package/wing/install
> +     $(INSTALL_DIR) $(1)/usr/bin
> +     $(INSTALL_DIR) $(1)/etc/wing
> +     $(INSTALL_DIR) $(1)/usr/share/click
> +     $(CP) ./files/* $(1)/
> +     $(CP) $(PKG_BUILD_DIR)/conf/wing/click_config $(1)/usr/bin/
> +     $(CP) $(PKG_BUILD_DIR)/conf/wing/write_handler $(1)/usr/bin/
> +     $(CP) $(PKG_BUILD_DIR)/conf/wing/read_handler $(1)/usr/bin/
> +     $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME)click $(1)/usr/bin/click
> +     $(CP) $(PKG_INSTALL_DIR)/usr/bin/click-align $(1)/usr/bin/click-align
> +     $(CP) $(PKG_BUILD_DIR)/conf/wing/*click $(1)/etc/wing/
> +     $(CP) $(PKG_INSTALL_DIR)/usr/share/click/elementmap.xml
> $(1)/usr/share/click/elementmap.xml
> +endef
> +
> +$(eval $(call BuildPackage,wing))
> +
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
>
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to