SYSTEM ARCHITECTURE COUNCIL
                           Platform Software ARC
                     ---------------------------------
PSARC Regular Meeting time: Wednesdays 10:00-1:00pm in MPK17-3507.

                           07-08-2009 MEETING MINUTES
============================================================================
Send CORRECTIONS, additions, deletions to psarc-coord at sun.com.
Minutes are archived in sac.Eng:/sac/export/sac/Minutes/PSARC.

Co-Chair(s):
         Garrett D'Amore:        Yes
         Tim Marsland:           no

ATTENDEES - Members: (6 active members)
         Kais Belgaied:          Yes
         Mark Carlson:           Yes
         Richard Matthews:       Yes
         Darren Moffat:          Yes  (on sabbatical)
         Sebastien Roy:          Yes
         Glenn Skinner:          Yes
         Bill Sommerfeld:        no  (on sabbatical)
         Gary Winiger:           no  (on sabbatical)

STAFF -
         Asa Romberger (PM):     Yes

ATTENDEES - Interns:
         Frank Che               no
         Charles Debardeleben:   no
         James Falkner:          no (on sabbatical)
         Daniel Hain:            Yes
         Michael Haines:         no
         Alan Hargreaves:        no
         Phil Harman:            no
         Cecilia Hu:             no
         Wyllys Ingersoll:       no
         Alec Muffett:           no (on sabbatical)
         Darren Reed:            no
         Dean Roehrich           no
         Ienup Sung:             no
         Phi Tran                Yes
         Brian Utterback:        no
         James Walker            Yes

         Mark Martin             Yes (external)
         Don Cragun              Yes (external)
Guests:

-- GUESTS --
         Sangeeta Misra          Yes
         Sharon Liu              Yes
         Michael Schuster        Yes

Not all names are captured. Please send email to Asa.Romberger at Sun.com, if
you attended the meeting and your name is missing from the list.

---------------------------------------------------------------------------

MEETING SUMMARY:
================

AGENDA

         10:00-10:10     Open ARC Business (use open dial in above)
         10:10-10:55     Open Commitment: ILB: Integrated L3/L4 Load 
balancer
                         (2008/575)
                         Submitter: Sangeeta Misra
                         Owner: Sebastien Roy
                         Intern: Mark Martin
                         Exposure: open
         11:00-11:10     Closed ARC Business (use closed dial in above)
                         -if needed

---------------------------------------------------------------------------
Case Anchors: <br>
<A HREF="#case1">ILB: Integrated L3/L4 Load balancer (2008/575)</A> <br>
===========================================================================

Fast Tracks:
============

      Case     (Timeout)  Exposure Title
      2005/425 (07/08/09) unknown  EOF /usr/ucb/cc & /usr/ucb/lint
         approved
      2009/374 (07/08/09) open     libxmlsec
         extend to 07/15/09
      2009/377 (07/10/09) open     In-kernel pfexec implementation.
         approved
      2009/378 (07/10/09) open     Basic File Privileges
         approved
      2009/380 (07/13/09) open     STREAMS and Character Device Coexistence
         let run
      2009/381 (07/13/09) open     Support off-line files on SAM-QFS for 
Samba in Solaris
         let run


---------------------------------------------------------------------------
ILB: Integrated L3/L4 Load (2008/575)
IAM
====
Name:           ILB: Integrated L3/L4 Load balancer
Submitter:      Sangeeta Misra
Owner:          Sebastien Roy
Intern:         Mark Martin
Exposure:       open

SUMMARY
=======
         ILB project will deliver the basic features needed for
         Solaris to be used as a L3/L4 load balancing solution on SPARC
         and X86 platforms. This solution can also be used by third party
         load balancing solutions.


ISSUES
=======
djr-00  Why does load balancing need to be a part of a core part of IP?
         This is a non-essential and non-compulsory function and should
         only need to be present on systems where it is configured to run.
         Having this inside of IP adds bloat to IP and the base kernel size.
         Architecturally, there should be no reason why it needs to be a 
part
         of IP. If it does then it suggests that there are deeper faults in
         the project's use of interfaces and architecture. Further, if this
         module needs access to "internal" data structures and functions 
then
         documenting those as an external module helps us to understand what
         functionality we need to export from IP to support developers that
         wish to develop kernel level modules that provide value added
         functionality in appliances.

  Response:
  Nothing that prevents ilb from being in a seperate module than IP, we
  simply chose to do it this way as it fits well with the forwarding
  code. We are planning to deliver ILB kernel and userland component as
  s seperate package from the core stack The project includes kernel and
  userland components with the following names.( see ans to Q1 of 20 q)
      SUNWilbr    ILB kernel component
      SUNWilb     components delivered in /usr which are:
                   o ilbadm
                   o libilb
                   o ilbd

  djr-01 Is there an architectural reason why you cannot support correct
         load balancing of IP fragments or is it just an implementation
         issue? If it is architecture, doesn't this suggest the project
         needs to rethink its solution? If it is implementation, why
         should the project be let off the hook for partial interoperability
         with IP?

  Response:
  There is no architectural reasons but we have decided to consider this
  item as a "good to have" instead of "must have" because it is not
  considered critical item by the interested customers that we have
  spoken to. While itlimit the ILB phase 1 UDP use cases somewhat, it
  will in no way prevent deployment- so there is no harm in pushing out
  as a post Phase 1 RFE.  If we can addresss all the other items on the
  must do list in ample time in Phase 1 we will consider implementing
  this

  djr-02 Are standard sockets being used or will a ilb-specific socket be
         used and thus a new sockmod delivered? If it is the former, details
         on what type of sockets (AF_INET,SOCK_RAW), etc, would be useful.
         If it is the latter, details on the new sockmod are required.

  Response:
  Yes standard sockets

  djr-03 Why is this project implementing yet another private hook inside
         of IP's forwarding path rather than implementing and using a public
         hook using PSARC/2005/334 and PSARC/2008/219? Whilst the exisiting
         forwarding hook may not export the correct data for load balancing,
         if this project were to publish a new packet event, even if it were
         uncommited, it would encourage external projects/developers to use
         it and hopefully contribute to building community involvement.

  Response:
  We have chosen this design instead of extending IP FIlter hooks to
  ensure that the order of ILB processing and that of IP Filter is
  correct. Furthermore, should we in the future need an ILB hook on the
  transmit side, that hook wouldn't belong where pfhooks sits on the
  transmit side; we'd need the transmit hook to be before IRE lookup and
  fragmentation, instead of at the bottom of the IP output code(where
  pfhook transmit is).

  djr-04 When a process writes out the RTT to stdout, what should the RTT
         be measured in? Further, is it a decimal number or an Integer?
         Further, is a range of 1-254 sufficiently large enough for the
         user process to provide adequate coverage of the acceptable
         RTT values? One suggestion is for the RTT emitted by a user
         task to be in nano-seconds (ping already reports these) and
         to use -1 and 0 as "special values" and to support reading in
         an RTT of [1,MAXINT] as "normal."

  Response:
  in millisec  ( but we will consider the suggestion on nanosec)

  djr-05 To elaborate further on 10.3, the use of ILB NAT with IPFilter will
         not interoperate well with stateful filtering. Current stateful
         filtering on a system that routes packets only requires one state
         entry per "flow" (i.e. TCP connection) even though IPFilter's NAT
         may be used on either side because IPFilter is able to match up
         packet details in its NAT table. The use of an external NAT, such
         as ILB's, will require 2 state table entries per connection because
         IPFilter is unable to map the changed headers back.

  Response:
  Not sure what question is.  I think he is a possible complication in
  IP FIlter ILB NAT interaction here. We will have to work with him
  offline on this.

  djr-06 In 9, I'm guessing a typo at the end of the paragraph, unless
         PSARC is 1800+ years old (PSARC/200/517)

  djr-07 An interface table is required.

  Response:
  Agreed will be provided for PSARC committment.

  Commitment Issues
  =================
djr-08  See djr-07 from inception. Unless I'm blind (quite possible), I 
don't
         see an interface table in this design document. Are you 
deliverying no
         interfaces at all?

Response:
The interface table is the answer to the questionnaire question #3.

djr-09  ILB-design.txt (1) - the filenames by themselves aren't enough.
         Full pathnames and an interface table are required.

Response:
Will update the design doc.

djr-10  Where does the unix socket for ilbd live?

Response:
The document states, "The /var/run/daemon directory  will hold the 
AF_UNIX rendezvous file".  So it will be /var/run/daemon/ilb_sock.

ged-01  Committed.  The rationale in the 20q states that 3rd party apps 
might
         need to be supported.  Can you provide more detail?  Would 
Uncommitted
         be adequate to this?  Committed interfaces are night impossible to
         change, so I'd prefer to see new APIs take conservative approaches
         in their use, at least until some implementation experience is 
gained.

Response:
It is unclear if making these API Uncommitted will deter folks from  safely
using these APIs.  We plan on bumping up a library version and shipping
multiple versions to ensure backward compatibility.

ged-02  persist=<netmask>.  I don't understand why a netmask would be useful
         with this feature.  It seems like you either want session 
persistence,
         or you don't, regardless of the originating network.  What am I
         missing?

Response:
ILB provides stickiness per load balancing rule (a rule represents a virtual
service) . A user just specifies whether a rule is sticky or not and what
netmask to use. After a persistent mapping is created, subsequent
requests/packets to this virtual service with a matching source IP address
of the client (after the persistent netmask is applied) will
be forwarded to the same back end server

ged-03  Port range collapsing.  What's the use case for this feature?

Response:
This is a feature that was requested by one of the interested customers.
According to them, there are protocols out there, like RMI that
make an initial connection over a specific port but then set up a port
in a particular range.  Handling this with their particular LB  software,
would involve the creation of a large number virtual servers, one for each
of the ports that may be used.

ged-04  Health check.  Will the implementation any sample or default health
         check helper programs?

Response:
By default ILB will not run any health checks. The user has to specify a
health check object and specify one of these health check types:
ping, tcp probe, udp probe, or user supplied test
and associate it to a rule during rule creation. ILB provides built-in ping,
tcp probe, udp probes.

ged-05  Performance concerns.  It sounds like ILB adds another "if" branch
         on the per-packet hot code path.  This can have quite detrimental
         effects to per-packet overhead, and seriously impact the maximum
         packets-per-second that can be processed (e.g. for IP forwarding).
         There are benchmarks that test for this, and packet-per-second 
numbers
         are important to certain market segments.  How will the ILB project
         ensure this component of performance is not negatively impacted?

Response:
We plan to test forwarding performance (with ILB disabled which is its
default state) with Ixia and make sure there no severe regression in
forwarding perf against onnv.  Forwarding performance with ILB enabled,
should be around 90% of the  plain forwarding performance
kb-01   IPFilter offers NAT. This project also uses / offers NAT.
         Any thoughts on the expected behavior when both IPFilter's NAT and
         this project are active on a the same system?
         Can inadvertant activating of both lead to unintended results?
         Both are SMF based services, so can some dependency be 
expressed here?


VOTE
====
Approve - 5
Deny -
Abstain -
Not Participating (NP) -



THE NEXT STEP
=============
         Approved

Reply via email to