Update the readme
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4311 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
112
README
112
README
@@ -1,55 +1,77 @@
|
|||||||
THEORY OF OPERATION:
|
Networking that Just Works
|
||||||
|
--------------------------
|
||||||
|
|
||||||
NetworkManager attempts to keep an active network connection available at all
|
NetworkManager attempts to keep an active network connection available at all
|
||||||
times. The point of NetworkManager is to make networking configuration and
|
times. The point of NetworkManager is to make networking configuration and
|
||||||
setup as painless and automatic as possible. If using DHCP, NetworkManager is
|
setup as painless and automatic as possible. NetworkManager is intended to
|
||||||
_intended_ to replace default routes, obtain IP addresses from a DHCP server,
|
replace default route, replace other routes, set IP addresses, and in general
|
||||||
and change nameservers whenever it sees fit. In effect, the goal of
|
configure networking as NM sees fit (with the possibility of manual override as
|
||||||
NetworkManager is to make networking Just Work. If you have special needs,
|
necessary). In effect, the goal of NetworkManager is to make networking Just
|
||||||
we'd like to hear about them, but understand that NetworkManager is not
|
Work with a minimum of user hassle, but still allow customization and a high
|
||||||
intended to serve the needs of all users.
|
level of manual network control. If you have special needs, we'd like to hear
|
||||||
|
about them, but understand that NetworkManager is not intended for every
|
||||||
|
use-case.
|
||||||
|
|
||||||
|
NetworkManager will attempt to keep every network device in the system up and
|
||||||
|
active, as long as the device is available for use (has a cable plugged in,
|
||||||
|
the killswitch isn't turned on, etc). Network connections can be set to
|
||||||
|
'autoconnect', meaning that NetworkManager will make that connection active
|
||||||
|
whenever it and the hardware is available.
|
||||||
|
|
||||||
|
"Settings services" store lists of user- or administrator-defined "connections",
|
||||||
|
which contain all the settings and parameters required to connect to a specific
|
||||||
|
network. NetworkManager will _never_ activate a connection that is not in this
|
||||||
|
list, or that the user has not directed NetworkManager to connect to.
|
||||||
|
|
||||||
|
|
||||||
From a list of all adapters currently installed on the system, NetworkManager
|
How it works:
|
||||||
will first try a wired and then a wireless adapter. Wireless adapters that
|
|
||||||
support wireless scanning are preferred over ones that cannot. NetworkManager
|
|
||||||
does not try to keep a connection up as long as possible, meaning that plugging
|
|
||||||
into a wired network will switch the connection to the wired network away from
|
|
||||||
the wireless one.
|
|
||||||
|
|
||||||
For wireless networking support, NetworkManager keeps a list of wireless
|
The NetworkManager daemon runs as a privileged service (since it must access
|
||||||
networks, the preferred list. Preferred Networks are wireless networks that
|
and control hardware), but provides a D-Bus interface on the system bus to
|
||||||
the user has explicitly made NetworkManager associate with at some previous
|
allow for fine-grained control of networking. NetworkManager does not store
|
||||||
time. So if the user walks into a Starbucks and explicitly asks NetworkManager
|
connections or settings, it is only the mechanism by which those connections
|
||||||
to associate with that Starbucks network, NetworkManager will remember the
|
are selected and activated.
|
||||||
Starbucks network information from that point on. Upon returning to that
|
|
||||||
Starbucks, NetworkManager will attempt to associate _automatically_ with the
|
To store pre-defined network connections, two separate services, the "system
|
||||||
Starbucks network since it is now in the Preferred Networks list. The point of
|
settings service" and the "user settings service" store connection information
|
||||||
this is to ensure that only the user can determine which wireless networks to
|
and provide these to NetworkManager, also via D-Bus. Each settings service
|
||||||
associate with, and that the user is aware which networks are security risks
|
can determine how and where it persistently stores the connection information;
|
||||||
and which are not.
|
for example, the GNOME applet stores its configuration in GConf, and the system
|
||||||
|
settings service stores it's config in distro-specific formats, or in a distro-
|
||||||
|
agnostic format, depending on user/administrator preference.
|
||||||
|
|
||||||
|
A variety of other system services are used by NetworkManager to provide
|
||||||
|
network functionality: wpa_supplicant for wireless connections and 802.1x
|
||||||
|
wired connections, pppd for PPP and mobile broadband connections, DHCP clients
|
||||||
|
for dynamic IP addressing, dnsmasq for proxy nameserver and DHCP server
|
||||||
|
functionality for internet connection sharing, and avahi-autoipd for IPv4
|
||||||
|
link-local addresses. Most communication with these daemons occurs, again,
|
||||||
|
via D-Bus.
|
||||||
|
|
||||||
|
|
||||||
STRUCTURE:
|
Why doesn't my network Just Work?
|
||||||
|
|
||||||
|
Driver problems are the #1 cause of why NetworkManager sometimes fails to
|
||||||
|
connect to wireless networks. Often, the driver simply doesn't behave in a
|
||||||
|
consistent manner, or is just plain buggy. NetworkManager supports _only_
|
||||||
|
those drivers that are shipped with the upstream Linux kernel, because only
|
||||||
|
those drivers can be easily fixed and debugged. ndiswrapper, vendor binary
|
||||||
|
drivers, or other out-of-tree drivers may or may not work well with
|
||||||
|
NetworkManager, precisely because they have not been vetted and improved by the
|
||||||
|
open-source community, and becuase problems in these drivers usually cannot
|
||||||
|
be fixed.
|
||||||
|
|
||||||
|
Sometimes, command-line tools like 'iwconfig' will work, but NetworkManager will
|
||||||
|
fail. This is again often due to buggy drivers, becuase these drivers simply
|
||||||
|
aren't expecting the dynamic requests that NetworkManager and wpa_supplicant
|
||||||
|
make. Driver bugs should be filed in the bug tracker of the distribution being
|
||||||
|
run, since often distributions customize their kernel and drivers.
|
||||||
|
|
||||||
|
Sometimes, it really is NetworkManager's fault. If you think that's the case,
|
||||||
|
please file a bug at http://bugzilla.gnome.org and choose the NetworkManager
|
||||||
|
component. Attaching the output of /var/log/messages or /var/log/daemon.log
|
||||||
|
(wherever your distribution directs syslog's 'daemon' facility output) is often
|
||||||
|
very helpful, and (if you can get) a working wpa_supplicant config file helps
|
||||||
|
enormously.
|
||||||
|
|
||||||
NetworkManager runs as a root-user system level daemon, since it
|
|
||||||
must manipulate hardware directly. It communicates over DBUS with a
|
|
||||||
desktop-level per-user process, nm-applet. Since Preferred Networks are
|
|
||||||
user-specific, there must be some mechanism of getting this information
|
|
||||||
per-user. NetworkManager cannot store that information as it is user-specific,
|
|
||||||
and therefore communicates over DBUS to the user daemon which provides those
|
|
||||||
lists. NetworkManager also provides an API over DBUS for any DBUS-aware
|
|
||||||
application to determine the current state of the network, including available
|
|
||||||
wireless networks the computer is aware of and specific details about those
|
|
||||||
networks. This API also provides the means for forcing NetworkManager to
|
|
||||||
associate with a specific wireless network. Use of DBUS allows separation of
|
|
||||||
NetworkManager, which requires no user-interface, and the parts of the user
|
|
||||||
interface which might be desktop environment specific.
|
|
||||||
|
|
||||||
The nm-applet provides a DBUS service called NetworkManagerInfo, which should
|
|
||||||
provide to NetworkManager the Preferred Networks lists upon request. It also
|
|
||||||
should be able to display a dialog to retrieve a WEP/WPA key or passphrase from
|
|
||||||
the user when NetworkManager requests it. The GNOME version of
|
|
||||||
NetworkManagerInfo, for example, stores Preferred Networks in GConf and
|
|
||||||
WEP/WPA keys in gnome-keyring, and proxies that information to NetworkManager
|
|
||||||
upon request.
|
|
||||||
|
Reference in New Issue
Block a user