MobileUNRKarmicConnman

  • Launchpad Entry: mobile-unr-karmic-connman

  • Created: 2009-04-27

  • Contributors: Paul Larson

  • Packages affected: connman, connman-gnome, network-manager, network-manager-gnome

Summary

This specification is to discuss the feasibility of moving to connman for UNR

Release Note

Connection Manager is now the default for managing network connections in Ubuntu Netbook Remix, replacing Network Manager.

Rationale

Connection manager (connman) has several advantages that make it preferable, especially in mobile environments, such as:

  • Low memory footprint
  • Quick startup
  • Light weight UI - all logic and all persistence (connection settings) is on the daemon side
  • Extensibility through plugin approach

User stories

  • Andrew would like a moblin compliant netbook version of Ubuntu to run on his Netbook
  • Matthew has a netbook, and would like the components to be fast and lightweight as possible

Assumptions

  • Upstream is stable enough to use as the default in a release
  • Connman has sufficient feature parity with network manager
  • Issues with connman with some wireless drivers (notable Broadcomm wl/b43) have been resolved with latest upstream versions

Design

  • Connman provides dbus interfaces to query/change its status. It also provides signal to notice status changes. The available method_call is in src/manager.c
  • If we want to add more NM compatible methods, we can also make changes to src/manager.c
  • Currently, NM compatible methods are only three: "wake", "sleep", and "state".

Implementation

  • Connman will replace NM on the seeds
  • connman's daemon should be set to run in compatibility mode allowing it to implement the NetworkManager dbus API, allowing programs that are coding to work against NetworkManager to work properly

    • For example, sometimes FAEs need to bind hot-keys to control wireless network enable or not. The following command is to disable the wireless:

Old version:
dbus-send --system --type=method_call \
 --dest=org.freedesktop.NetworkManager \
 /org/freedesktop/NetworkManager \
 org.freedesktop.NetworkManager.setWirelessEnabled \
 boolean:false

New version:
dbus-send --system --type=method_call \
 --dest=org.freedesktop.NetworkManager \
 /org/freedesktop/NetworkManager \
 org.freedesktop.DBus.Properties.Set \
 string:org.freedesktop.NetworkManager \
 string:WirelessEnabled variant:boolean:false
  • The backend daemon should be tied into the notification system demon

UI Changes

  • Connman should be modified to use similar systray icons compared to network manager (that is to say, the computer icon, bars for wireless and 3G strength, etc)

Code Changes

  • If necessary, connman should be tied into the notification system ala NetworkManager

Migration

  • We need a way to migrate custom network settings from Network Manager to connman

Test/Demo Plan

Testcases for network manager are currently at: http://testcases.qa.ubuntu.com/Applications/NetworkManager. Similar, and hopefully expanded testcases should be documented at http://testcases.qa.ubuntu.com/Applications/ConnectionManager. Basic coverage should include attaching to both wired, and wireless connections, and disconnecting.

In addition, Connman needs to be tested on more obsecure models of wireless cards, especially Broadcom cards due to known historical issues with these cards, which may or may not have been fixed.

Unresolved issues

BoF agenda and discussion

The notes below are from the general session on connman, not one that was specific to UNR. They are also covered in the spec on which this blueprint is dependent.

What is Connection Manager?

Connman is essentially created for moblin, but will also eventually be available for desktop installs; key characteristics are:

  • low memory footprint
  • quick startup
  • light weight UI; all logic and all persistence (connection settings) is on the daemon side
  • extensibility through plugin approach

In general, connman is still in development stage and lacks a lot of features currently available for the standard NetworkManager.

Abstraction for wireless support is also done through wpasupplicant.

New ideas that will eventually make it into connman are:

  • connman (will) provide(s) a dns proxy that allows parallel dns requests; plan is to enforce that localhost is always set in /etc/resolv.conf; another option evaluated, but dismissed was to implement a libc resolver; main problems was too much overhead (implementation wise) as well as problems with dns result persistency/caching over reboots.
  • connman will provide its own HTTP proxy mechanism
  • new mechanism to define device priorities through drag-and-drop and magic (more info, see slides referenced in the documents section)

Current Status of connection manager in ubuntu

  • recent connmand available in the archive
  • connman-gnome in archive, but didn't get much upstream attention; finally things
    • started to move again
  • carrick - connman UI for mutter (moblin2 ui framework) available in moblin PPA; soon to be in real archive.

Consider Connection manager to replace Network Manager at what point?

Compare Features in NM:

  • See: https://wiki.ubuntu.com/DesktopTeam/ConnectionManagerComparison

  • ethernet, wifi, pppoe (dsl), VPNs, mobile-broadband
    • vpn not a priority for connman
    • no wpa-enterprise support yet; not a priority
  • wifi
    • connman - keys, passphrases stored in clear...shared system wide
  • mobile-broadband detection through udev - soon: modemmanager
    • Connman will use modemmanager, but currently there is a problem
      • with ppp; hso cards and ericcsson might work. ofono will eventually replace modemmgr
  • multiple devices, but you cannot disable individual devices
    • connman managed multiple devices
    • enable all by default, but allows to disconnect it
    • advanced configuration mechanism to express preferences for
      • devices/ssids, etc.
  • no "disconnect" feature for ethernet and wifi
    • connman you can disconnect ethernet devices
  • killswitch support ( via Hal )
  • support for older and/or proprietary full MAC wifi drivers ( eg. madwifi, wl )
  • static IP configuration possible
    • not clear, but supported through command line and remembered might get a UI
  • system connections (keyfile, ifupdown)
    • connmn - all configuration data ( including profiles right now ) are system-wide,
      • and user data from dbus is not stored...
  • background scanning for roaming (considered harmful)
  • connection editor
    • connman - currently no UI for this
  • user feedback ( or lack thereof )
  • user control ( eg. 'disconnect', 'scan' buttons, disable individual devices)
  • connman dbus API - still not fully stable, may need a few more iterations...
  • connman API has an offline mode ( ie. airplane mode )
  • it also provides an offline/online status via the API
  • connman manages all devices, will monitor them, but it also has the concept
    • of ignoring a device
  • is the connection expensive ( eg. 3G vs. wi-fi ); it's do-able...

Online/Offline dbus API

  • we need a std dbus API for online/offline; all connection mgrs ( wvdial, connman,
    • network-mgr ) should implement it.
    • implementations need to publish & listen ( ie. proxy ) at the same time

      • -- cooperative status monitoring --
  • is there plans for counting bandwidth? No. It'd be nice to have...
  • connman tells the UI what it needs ( eg. username/pw, certificate, passphrase,
    • etc... ); the UI is simple...
  • what about discoverability for GSM? GSM scanning is expensive.
    • ofono - makes the decisions using simple alogorithm ( eg. us the SIM
    • card's preferred network ).

    How do we get testing data? Easy switching between NM & Connman?

We should standardize on an FD.o interface to signal:

  • offline / online status
  • expensive connection or not (relies on a series of 3 D-Bus calls atm, so might want to improve/evolve that)
  • the instance that manages the bus namespace also has to accept information and consolidate

Documents:


CategorySpec

Specs/MobileUNRKarmicConnman (last edited 2009-07-01 16:27:26 by 219-70-232-49)