Following up on past discussions about extending Brussels
for the TCP/IP layer-

An earlier proposal was:

                    ipadm
                      |
  ifconfig----------. | .- newer CLI's 
                    V V V
     .-------------> libipadm  <-----> smf repository
     |                 ^               ^
   ndd                 |               |
                       |               |               user
         --------------|---------------|-------------------------
                       |               |               kernel
                       |               |
                       V               V
                  get/set tunable     restore settings.


where legacy invocations via ifconfig and ndd would not 
modify the smf repository (i.e., no persistence) whereas using
ipadm and any newer CLI's would update the smf repository.

One important difference from dladm is that since IP is never
unloaded, we have different design constraints on restoring the 
saved settings.

Some open questions here:

- Let's say that we have some tool /sbin/ipadm which follows the
  invocation model of dladm. /sbin/dladm operates on links. 
  What object do we want ipadm to operate on? One proposal is
  something like

    /sbin/ipadm <verb>-<noun>  <name>=<val> [<link>:]<proto>

  where bge0:tcp or bge0:ip would indicate tcp/ip plumbed over bge0,
  and the absence of a link specification implies "all links".

  other alternative suggestions are welcome, since I realize that CVUV
  adds several degrees of freedom to link names- maybe the link should
  be specified with a -l parameter, i.e., 

    /sbin/ipadm <verb>-<noun> [-l <link>] <name>=<val> <proto>

  with the absence of the -l arg implying "all links".

  I'm not sure if it makes sense to customize every protocol parameter
  per link (e.g., it doesn't make sense to talk about
  tcp_smallest_anon_port on a per-link basis). For these parameters,
  ipadm would have to enforce that the implied link was "all links". 

- Restoring the values: although we have some simplicity compared
  to the dladm-driver interaction because IP is never unloaded, there
  is still the complexity of *when* to set parameters. In the rc*.d
  model, this was trivially determined by where the ndd/ifconfig/etc.
  invocation was placed in the rc*d sequence, but the smf model is
  not as straight-forward. There are some parameters such as 
  tcp_smallest_anon_port whose effect can vary widely depending on
  when the saved setting is restored. Much water has gone under this
  bridge; see:
    http://www.opensolaris.org/jive/thread.jspa?messageID=24434&;

  So if we divide the parameters into:
   1. global parameters that apply to all modules, 
   2. datalink specific parameters to be applied before the link starts
      (addressed by dladm/dlmgmtd)
   3. datalink specific parameters to be applied after the interface is up
      and Layer 3 services are plumbed

  One proposal is  to apply parameters under #1 as part of a
  network/physical:default service, and those under #3 as part of a
  network/ip:<link> service.

  As Jim Carlson pointed out, one flaw in this approach is that the
  networking module (e.g., ip) is loaded into the kernel well before
  the service starts, and is running without the customizations that
  will be applied by the service. So, for example, the network/physical
  service my try to set tcp_smallest_anon_port to 40000, but some
  daemon started earlier (by some service that runs before
  network/physical) may already have grabbed port 38000, making the
  tcp_smallest_anon_port meaningless.

  Ideally we would be able to read the relevant smf settings from
  ip_ddi_init() itself, but as has already been encountered in Brussels 
  in the past, there are no Interfaces to push smf settings into the
  kernel. Using a daemon in this case is full of its own problems-
  ip_ddi_init is called before any daemons are spawned (before init is
  started). So at least at this time, we have to settle for the next
  best approximation of associating smf-parameter settings with the
  start of smf network services.

Thoughts? Comments?

--Sowmini
 




 





Reply via email to