Hi Cathy,
It looks good. I have a few comments, plus a few minor spelling
corrections. Comments are in-line.
Cathy Zhou wrote:
> ------------------------------------------------------------------------
>
>
> 1. What specifically is the proposal that we are reviewing?
>
> This project aims to provide a consistent model to administrative
^^^^^^^^^^^^^^
Should be "administer".
> all network interfaces (Nemo unification). In addition, it will
> allow all network interfaces to be given administratively-chose
^^^^^
Should be "chosen".
> names (vanity naming).
>
> - What is the technical content of the project?
>
> See section 4.1 of one pager document.
>
> This project will focus on the support of DL_ETHER interfaces (including
> wireless interfaces). Providing GLDv3 support for interfaces of DL_IB
> type and other media types is out of the scope of this project (see
> more in question 4).
>
> - Is this a new product, or a change to a pre-existing one? If it is
> a change, would you consider it a "major", "minor", or "micro" change?
>
> This project will make some changes to the existing administrative
> command: dladm(1M). Further, while it will keep the current network
> devices nodes under /dev, it will introduce a /dev/net namespace to
> hold all vanity-named nodes for network interfaces.
>
> This project is targeted on minor release.
>
Should be "This project is targeted for a minor release."
> - If your project is an evolution of a previous project, what
> changed from one version to another?
>
> This project is based on the GLDv3 framework (Nemo). It will enhance
> GLDv3 to provide the vanity naming support for network interfaces,
> and it will make all legacy devices managed by GLDv3.
>
> - What is the motivation for it, in general as well as specific terms?
>
> * Nemo unification
>
> While GLDv3 provides a new network driver framework with enhanced
> features such as link aggregation, it also introduces a confusing
> administrative model, since only GLDv3-based devices can be managed
> by dladm(1M). Further, legacy devices can not make use of the
> performance enhancement or fancy features GLDv3 provides, such as
> the DL_CAPAB_POLL and DL_CAPAB_SOFT_RING capabilities.
>
> This project will "unify" all the legacy devices into GLDv3, hence
> provide a consistent administrative model and feature sets to all
> network devices. Other than the existing feature sets GLDv3 current
> has, there are other ongoing projects aim to make further enhancement
> to GLDv3 (for example, the Crossbow project which is going to support
> virtualization and resource management of network devices). With Nemo
> unification, those enhancement can work for non-GLDv3 network devices
^^^^^^^^^^^
Should be "enhancements". I think the sentence would be clearer if it
ended as "can also potentially work for non-GLDv3 network devices".
> potentially.
>
> * Vanity naming
>
> Today, the network names are tied to the underlying network hardware
> (e.g., bge0, ce0). Because configuring the system always requires
> network interface names to be stored in a wide range of configuration
> files, being able to give a meaningful and consistent vanity name to
> network interfaces will make network administration much easier. More
> importantly, vanity naming will prove especially useful for machine
> migration and Dynamic Reconfiguration.
>
I wonder if there is a better way to word this paragraph. When I read
it the first time, I thought "How would giving an interface a meaningful
vanity help with interface names scattered through a wide variety of
files? Wouldn't we have to keep track of each instance in each file?".
After thinking about it, I could see how having a vanity name would
help (i.e. indirection). It feels like you're missing a step in
explaining how vanity naming would be helpful.
> - What are the expected benefits for Sun?
>
> The customer will have the more consistent and flexible model to
> administrate network interfaces. Specifically, customer will have the
^^^^^^^^^^^^
Should be "administer".
> ability to configure aggregations and VLANs on all Ethernet devices,
> and configure vanity names to all network interfaces.
>
> - By what criteria will you judge its success?
>
> The project will be complete once the following requirements have been met:
>
> * Must provide a consistent model for network interface administration:
>
> - All network interfaces are administrated by the same set of commands.
>
Even third party interfaces like Syskonnect?
> - All network interfaces support all features that specific hardware
> can support.
>
Same as above, even third party interfaces?
> * Must be able to configure a vanity name for any network interface:
>
> - The administrator are able to name network interfaces, and also are
> able to administrate the interfaces based on their vanity names.
>
> - There is a vanity-name DLPI device node for each network interface,
> allowing applications to interact with interfaces by their vanity
> names.
>
> 2. Describe how your project changes the user experience, upon
> installation and during normal operation.
>
> There will be no changes to installation. In the future, some follow
> up work can be made to make configuring network interface names to be
^^^^ ^^^
"made" should be "done", and you should remove "to be".
> part of the installation (optionally), therefore allowing network
> vanity naming to be used by default.
>
> Under normal operation, administrators will be able to:
>
> * administrate network interfaces using the same set of administrative
^^^^^^^^^^^^
Should be "administer".
> interfaces.
>
> * create aggregations/VLANs on all Ethernet interfaces.
>
> * (re)name network interfaces. With administrative-chosen names,
> network configurations will not be tied to the driver names. This
> will easy the network administration and sometimes make former
> impossible operation become possible (for example, replace an
> interface with one of another driver using dynamic configuration).
> See details in the design document.
>
> - What does the user perceive when the system is upgraded from a
> previous release?
>
> None.
>
> 3. What is its plan?
>
> - What is its current status? Has a design review been done? Are there
> multiple delivery phases?
>
> It is currently in developing phase. The Nemo unification support is
> mostly done, and we just started the vanity naming support.
>
> A design review was conducted on opensolaris.org in the networking
> community.
>
> We will integrate both the Nemo unification and vanity naming components
> at the same time.
>
> 4. Are there related projects in Sun?
>
> * devname (PSARC/2003/246)
>
> The /dev/net namespace will be managed using a new general-purpose
> filesystem mechanism (Filesystem Driven Device Naming, devname).
> The devname project team is aware of this project and recognize
> the /dev/net FS as a potential user of the devname framework.
>
> * libdlpi (PSARC/2006/436)
>
> The libdlpi library is a public library which will be used by
> all DLPI applications. Therefore, the details of accessing DLPI nodes
> under /dev/net will be hide from applications.
>
> Same as the project, the libdlpi project is also part of Clearview and
> both are under the same umbrella case PSARC/2005/132 (Clearview, Network
> Interface Coherence).
>
> * VLAN Observability Enhancement (PSARC/2006/358)
>
> The project depends on the correct behavior proposed by PSARC/2006/358
> to receive all tagged packets when binding to ETHERTYPE_VLAN sap.
> We are changing GLDv2 and GLDv3 to comply to PSARC/2006/358, and the
> SSG person are aware of the issue and agreed to change the Cassini
> driver.
>
> * Sun Trunking
>
> After Nemo unification, all Ethernet devices will be able to be
> aggregated using dladm create-aggr. Therefore, we proposed to
> obsolete Sun Trunking, which provides the same functionality
> as dladm create-aggr, but only works on particular drivers. A
> discussion is underway with the SSG group about the potential
> possibility of obsoleting Sun Trunking. We agreed that a
> configuration conversion tool to convert Sun Trunking configuration
> to dladm configuration needs to be provided in order to make the
> transition smoother.
>
> Note that obsolete of Sun Trunking and the configuration conversion
> tool does not fall into the scope of this project.
>
> * GLDv3 IPoIB (IP over InfiniBand) driver
>
> Currently, the IPoIB driver (ibd) is written in GLDv2. Because of the
> specialties of ibd (in particular, packets are not passed upstream
> fully formatted even in raw mode), we decided that it is too much
> effort to work around all of its peculiarities to make it work with
> Nemo unification, so the alternative is to port the ibd driver to
> GLDv3 directly.
>
> Note that the IPoIB driver is not the driver for the InfiniBand host
> adapters, it is a service driver which talks to the underlying adapter
> using the IBTF (InfiniBand Transport Framework) interfaces. Therefore
> only one IPoIB driver is required, so that the porting work is limited.
>
> We already prototyped the GLDv3 IPoIB driver and the DL_IB MAC type
> plugin and proved this alternative should work.
>
> While the vanity naming support should work with the new GLDv3 IPoIB
> driver, the work to have a GLDv3 IPoIB driver does not fall into the
> scope of this project.
>
> * GLDv3 MAC plugins for other media types
>
> GLDv3 MAC type plugins are required for devices of other media types
> (such as FDDI and Token Ring) to work with Nemo unification.
> Implementing such plugins can be done as part of follow-up work
> provided that hardware required by the development and testing work
> become available.
>
> * Crossbow
>
> Crossbow is a network virtualization project which allows effective
> sharing of physical networking resources among multiple user. It
> allows administrator to create multiple data devices (VNICs) to map
> to a single physical MAC instance.
>
> Although Crossbow can be implemented independently from this project,
> with Nemo unification, Crossbow will be able to support VNICs on
> non-GLDv3 devices. Further, the design of the project will allow the
> vanity naming support for VNICs as well.
>
> 5. How is the project delivered into the system?
>
> - Identify packages, directories, libraries, databases, etc.
>
> * softmac
>
> SUNWckr (Core Solaris Kernel (Root))
> kernel/drv/$ARCH/softmac
>
> * net_dacf
>
> SUNWckr (Core Solaris Kernel (Root))
> kernel/dacf/$ARCH/net_dacf
>
> 6. Describe the project's hardware platform dependencies.
>
> None.
>
> 7. System administration
>
> - How will the project's deliverables be installed and (re)configured?
>
> The deliverables from this project will be installed using the standard
> Solaris package utilities.
>
> - How will the project's deliverables be uninstalled?
>
> The deliverables are part of the base system and cannot be uninstalled.
>
> - Does it use inetd to start itself?
>
> No.
>
> - Does it need installation within any global system tables?
>
> No.
>
> - Does it use a naming service such as NIS, NIS+ or LDAP?
>
> No.
>
> - What are its on-going maintenance requirements (e.g. Keeping global
> tables up to date, trimming files)?
>
> None.
>
> - How does this project's administrative mechanisms fit into Sun's system
> administration strategies? E.g., how does it fit under the Solaris
> Management Console (SMC) and Web-Based Enterprise Management (WBEM), how
> does it make use of roles, authorizations and rights profiles?
> Additionally, how does it provide for administrative audit in support of
> the Solaris BSM configuration?
>
> N/A
>
> - What tunable parameters are exported? Can they be changed without
> rebooting the system? Examples include, but are not limited to,
> entries in /etc/system and ndd(8) parameters. What ranges are
> appropriate for each tunable? What are the commitment levels
> associated with each tunable (these are interfaces)?
>
> None.
>
> 8. Reliability, Availability, Serviceability (RAS)
>
> - Does the project make any material improvement to RAS?
>
> No.
>
Since more interfaces can be configured as aggregations, wouldn't we be
improving Solaris's RAS?
> - How can users/administrators diagnose failures or determine
> operational state? (For example, how could a user tell the
> difference between a failure and very slow performance?)
>
> The normal network tools (such as netstat, kstat, snoop, traceroute,
> ping) can be used to analyze the network problem.
>
> - What are the project's effects on boot time requirements?
>
> TBD
>
> - How does the project handle dynamic reconfiguration (DR) events?
>
> Before this project, although network interfaces can be removed and
> reinstalled using DR, an interfaces being reinstalled must be of the
> same driver because its names is tied to its driver name. After this
> project, there will not be such restriction: an interfaces of a
> different driver can be installed and inherit all the configuration
> of the interface being formerly removed using DR.
>
> - What mechanisms are provided for continuous availability of service?
>
> N/A
>
> - Does the project call panic()? Explain why these panics
> cannot be avoided.
>
> No.
>
> - How are significant administrative or error conditions
> transmitted? SNMP traps? Email notification?
>
> Errors detected by dladm are reported, the same as before.
>
> - How does the project deal with failure and recovery?
>
> N/A
>
> - Does it ever require reboot? If so, explain why this situation
> cannot be avoided.
>
> No.
>
> - How does your project deal with network failures (including
> partition and re- integration)? How do you handle the failure
> of hardware that your project depends on?
>
> N/A
>
> - Can it save/restore or checkpoint and recover?
>
> N/A
>
> - Can its files be corrupted by failures? Does it clean up any
> locks /files after crashes?
>
> The file (/etc/datalink.conf) which keeps all dladm configuration
> (including vanity naming configuration) will be automatically
> updated and must not be directly edited. This file should not be
> corrupted by failures but in case it does get corrupted, the system
> and all network devices on the system should still work, under
> the expectation that some dladm configuration might get lost.
>
> 9. Observability
>
> - Does the project export status, either via observable output
> (e.g., netstat) or via internal data structures (kstats)?
>
> The kstats of each interface will be observed using the name of
> "net/ifname", or the "dladm show-link -s" subcommand.
>
> The interface name of the interface and its associated device can be
> seen from the output of various "dladm show-XXX" subcommands.
>
> - How would a user or administrator tell that this subsystem
> is or is not behaving as anticipated?
>
> Traditional network interface tools (kstats, netstat, ping, snoop,
> etc.) can be used.
>
> - What statistics does the subsystem export, and by what mechanism?
>
> None.
>
> - What state information is logged?
>
> None.
>
> - In principle, would it be possible for a program to tune the
> activity of your project?
>
> None.
>
> 10. What are the security implications of this project?
>
> - What security issues do you address in your project?
>
> None.
>
> - The Solaris BSM configuration carries a Common Criteria (CC) Controlled
> Access Protection Profile (CAPP) -- Orange Book C2 -- and a Role Based
> Access Control Protection Profile (RBAC) -- rating, does the addition
> of your project effect this rating? E.g., does it introduce interfaces
> that make access or privilege decisions that are not audited, does it
> introduce removable media support that is not managed by the allocate
> subsystem, does it provide administration mechanisms that are not audited?
>
> No.
>
> - Is system or subsystem security compromised in any way if your
> project's configuration files are corrupt or missing?
>
> No.
>
What if someone hand edits /etc/datalink.conf to change some
configuration information? I can't think of any potential exploits off
the top of my head, but if there's a potential exploit there, someone
will find it.
> - Please justify the introduction of any (all) new setuid executables.
>
> N/A
>
> - Include a thorough description of the security assumptions,
> capabilities and any potential risks (possible attack points) being
> introduced by your project. A separate Security Questionnaire
> http://sac.sfbay/cgi-bin/bp.cgi?NAME=Security.bp
> is provided for more detailed guidance on the necessary information.
> Cases are encouraged to fill out and include the Security
> questionnaire (leveraging references to existing documentation) in the
> case materials.
>
> Projects must highlight information for the following important areas:
> - What features are newly visible on the network and how are they
> protected from exploitation (e.g. unauthorized access, eavesdropping)
> - If the project makes decisions about which users, hosts, services, ...
> are allowed to access resources it manages, how is the requestor's
> identity determined and what data is used to determine if the access
> granted. Also how this data is protected from tampering.
> - What privileges beyond what a common user (e.g. 'noaccess') can
> perform does this project require and why those are necessary.
> - What parts of the project are active upon default install and how it
> can be turned off.
>
> TBD.
>
> 11. What is its UNIX operational environment:
>
> - Which Solaris release(s) does it run on?
>
> Solaris Nevada
>
> - Environment variables? Exit status? Signals issued?
> Signals caught? (See signal(3HEAD).)
>
> N/A
>
> - Device drivers directly used (e.g. /dev/audio)?
> .rc/defaults or other resource/configuration files or databases?
>
> None.
>
> - Does it use any "hidden" (filename begins with ".") or temp files?
>
> No.
>
> - Does it use any locking files?
>
> No.
>
> - Command line or calling syntax:
> What options are supported? (please include man pages if available)
>
> This project will introduce several new subcommands and options to
> dladm(1M). See details in section 4.5.1 in the one pager.
>
> Does it conform to getopt() parsing requirements?
>
> Yes.
>
> - Is there support for standard forms, e.g. "-display" for X programs?
> Are these propagated to sub-environments?
>
> N/A
>
> - What shared libraries does it use? (Hint: if you have code use "ldd"
> and "dump -Lv")?
>
> Other than libdladm, liblaadm, libkstat and libdlpi, no new libraries
> dladm will depend on. libdladm will be updated to support vanity naming.
>
> - Identify and justify the requirement for any static libraries.
>
> No.
>
> - Does it depend on kernel features not provided in your packages and
> not in the default kernel (e.g. Berkeley compatibility package,
> /usr/ccs, /usr/ucblib, optional kernel loadable modules)?
>
> No.
>
> - Is your project 64-bit clean/ready? If not, are there any
> architectural reasons why it would not work in a 64-bit environment?
> Does it interoperate with 64-bit versions?
>
> Yes.
>
> - Does the project depend on particular versions of supporting software
> (especially Java virtual machines)? If so, do you deliver a private
> copy? What happens if a conflicting or incompatible version is
> already or subsequently installed on the system?
>
> No.
>
> - Is the project internationalized and localized?
>
> N/A
>
What happens if a user wants to name an interface using characters that
aren't in 7-bit US-ASCII? Is that even possible? A few examples:
- a Chinese user naming an interface using a Chinese character set
(like Big5)
- Spanish users typing names that include tildas or accent marks in a
UTF-8 environment
- Russian users wanting to use names with Cyrillic characters?
> - Is the project compatible with IPV6 interfaces and addresses?
>
> Yes.
>
> 12. What is its window/desktop operational environment?
>
> N/A -- no graphical components are provided by this project.
>
> 13. What interfaces does your project import and export?
>
> Interfaces Imported
> Interface Classification Comments
> ----------------
> libdlpi Public/Committed PSARC/2006/436
> --------------------
> GLDv3 MAC interfaces Consolidation Private PSARC/2006/249
> -------------------
> devname APIs (TBD) Consolidation Private PSARC/2003/246
>
> Interfaces Exported
> Interface Classification Comments
> ---------------
> mac_open()
> mac_close() Consolidation Private
> ----------------
> MAC capabilities
> - MAC_CAPAB_NOZCOPY
> - MAC_CAPAB_TX_LOOPBACK
> - MAC_CAPAB_NOVLAN
> - MAC_CAPAB_PUTNEXT_TX
> - MAC_CAPAB_MDT
> - MAC_CAPAB_IPSEC Consolidation Private
> -----------------
> net_postattach
> net_predetach Consolidation Private
> -------------------
> softmac_create
> softmac_destroy Consolidation Private
> ---------
> libdladm Consolidation Private
> ---------------
> dacf_get_dev() Consolidation Private
> ---------------
> DL_IOC_VLAN_CAPAB Consolidation Private
>
>
> - Administrative Interfaces
> ------------------
> new subcommands of
> dladm(1M) Public/Uncommitted
> ---------------
> dladm show-dev Obsolete
> ------------------
> the "key" argument
> in various dladm
> aggr subcommands Obsolete
> -------------------
> the -d <dev> option
> in various dladm
> subcommands Obsolete
>
> - Other interfaces
> The /dev/net namespace Stable
>
> - What other applications should it interoperate with? How will it do so?
>
> N/A
>
> - Is it "pipeable"? How does it use stdin, stdout, stderr?
>
> dladm(1M) will behave the same as today.
>
> - Explain the significant file formats, names, syntax, and semantics.
>
> N/A
>
> - Is there a public namespace? (Can third parties create names in your
> namespace?) How is this administered?
>
> Yes, the /dev/net namespace. It will be used to keep all of the
> available interfaces on the system. Each interface will have a DLPI
> style-1 /dev/net node with the same name as its interface name.
>
> Interface names will be administered using dladm(1M) utility.
>
> - Are the externally visible interfaces documented clearly enough for a
> non-Sun client to use them successfully?
>
> The dladm(1M) manpage will be updated to include all the changes made
> to dladm. Further, we will add a vanity naming chapter to the sysadmin
> guide document, explaining the use model, the best practice surrounded
^^^^^^^^
Should be "surrounding".
> vanity naming.
>
> 14. What are its other significant internal interfaces
> inter-subsystem and inter-invocation)?
>
> - Protocols (public or private)
>
> DLPI
>
> - Private ToolTalk usage
>
> N/A
>
> - Files
>
> N/A
>
> - Other
>
> N/A
>
> - Are the interfaces re-entrant?
>
> Yes.
>
> 15. Is the interface extensible? How will the interface evolve?
>
> - How is versioning handled?
> - What was the commitment level of the previous version?
> - Can this version co-exist with existing standards and with earlier
> and later versions or with alternative implementations (perhaps by
> other vendors)?
> - What are the clients over which a change should be managed?
> - How is transition to a new version to be accomplished? What are the
> consequences to ISV's and their customers?
>
> TBD.
>
> 16. How do the interfaces adapt to a changing world?
>
> TBD.
>
> 17. Interoperability
>
> - If applicable, explain your project's interoperability with the
> other major implementations in the industry. In particular, does
> it interoperate with Microsoft's implementation, if one exists?
>
> N/A
>
> - What would be different about installing your project in a
> heterogeneous site instead of a homogeneous one (such as Sun)?
>
> None.
>
> - Does your project assume that a Solaris-based system must be in
> control of the primary administrative node?
>
> No.
>
> 18. Performance
>
> - How will the project contribute (positively or negatively) to
> "system load" and "perceived performance"?
>
> The project aims to no degrade of network performance on GLDv3 devices
> and on the fast data-path of non-GLDv3 devices.
>
> - What are the performance goals of the project? How were they
> evaluated? What is the test or reference platform?
>
> See answer to above question.
>
> We will run benchmark tests such as libmicro, netperf and specweb99 to
> make sure we meet this requirement. The test platforms will include
> SPARC, x86 and x64.
>
> - Does the application pause for significant amounts of time?
> Can the user interact with the application while it is performing
> long-duration tasks?
>
> No.
>
> - What is your project's MT model? How does it use threads internally?
> How does it expect its client to use threads? If it uses callbacks,
> can the called entity create a thread and recursively call back?
>
> The project will be fully MT.
>
> - What is the impact on overall system performance? What is the
> average working set of this component? How much of this is
> shared/sharable by other apps?
>
> N/A
>
> - Does this application "wake up" periodically? How often and under
> what conditions? What is the working set associated with this behavior?
>
> N/A
>
> - Will it require large files/databases (for example, new fonts)?
>
> No.
>
> - Do files, databases or heap space tend to grow with time/load? What
> mechanisms does the user have to use to control this? What happens to
> performance/system load?
>
> No.
>
> 19. Please identify any issues that you would like the ARC to address.
>
> - Interface classification, deviations from standards, architectural
> conflicts, release constraints...
> - Are there issues or related projects that the ARC should advise the
> appropriate steering committees?
>
> None.
>
> 20. Appendices to include
>
> - One pager.
> - The design specification: uv-design.pdf
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> clearview-discuss mailing list
> clearview-discuss at opensolaris.org
> http://opensolaris.org/mailman/listinfo/clearview-discuss