SYSTEM ARCHITECTURE COUNCIL Platform Software ARC --------------------------------- PSARC Regular Meeting time: Wednesdays 10:00-1:00pm in MPK17-3507.
08-05-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: no (on sabbatical) Sebastien Roy: Yes Glenn Skinner: Yes Bill Sommerfeld: no (on sabbatical) Gary Winiger: Yes (non participating) (on sabbatical) STAFF - Asa Romberger (PM): Yes ATTENDEES - Interns: Frank Che no James Falkner: no (on sabbatical) Daniel Hain: Yes Michael Haines: no Alan Hargreaves: no Phil Harman: no Wyllys Ingersoll: no Darren Reed: no Dean Roehrich Yes Ienup Sung: no Phi Tran Yes Brian Utterback: no James Walker no Mark Martin Yes (external) Don Cragun Yes (external) Guests: -- GUESTS -- Afshin Salek Yes Alan M Wright Yes Robert Thurlow Yes Tai Ngo Yes Pavan Mettu 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 --------------------------------------------------------------------------- Case Anchors: <br> <A HREF="#case1">Reparse Points and Referrals Umbrella Case (2009/399)</A> <br> <A HREF="#case2">Pathname Reparse Points (2009/387)</A> <br> <A HREF="#case2">Clearview IP Tunneling (2009/373)</A> <br> =========================================================================== Fast Tracks: ============ Case (Timeout) Exposure Title 2009/388 (08/05/09) open VRRP Update derail 2009/408 (07/29/09) open resync ssh-agent command with OpenSSH approved 2009/414 (07/31/09) open AST versions of fold, mktemp, pathchk, & tty waiting needs spec 2009/417 (08/05/09) open Deliver libgs.so shared library and Ghostscript header files more time 2009/418 (08/04/09) open Kerberos V5 PAC API approved Next Meeting: ============= 08/12/2009 10:00-10:10 Open ARC Business (use open dial in above) 10:10-10:55 Open Inception: S10C (2009/253) Submitter: Gerald Jelinek Owner: Rick Matthews Intern: Dean Roehrich Exposure: open 11:00-11:10 Closed ARC Business (use closed dial in above) =========================================================================== Case: 2009/410 Name: Datalink Administration from Non-Global Zones Submitter: Sebastien Roy Owner: Sebastien Roy Status: submitted Exposure: open SUMMARY ======= Datalink Administration from Non-Global Zones ISSUES ====== kb-01 /dev/dld included in /dev of which zones? shared or exclusive? kb-02 Note for the opinion: I think it is useful to make stress the fact that the scope of this case is the read/only operation (listing, getting properties) of the subset of datalinks alowed visibility by the global zone administrator. Any delegation of control beyond that will be defined on a per datalink type, in future cases. kb-03 The case soemhow extends the meaning of the zonecfg ip-type=exclusive to uses of datalinks beyond and even in absence of IP instances. One wouldn't need to plumb an interface in order to use the datalink from the zone (through bpf or RDS sockets). THE NEXT STEP ============= opinion to include recommendation for improvement on link classification nomenclature and RFE Approved =========================================================================== Case: 2009/387 Name: Pathname Reparse Points Submitter: Afshin Salek Owner: Glenn Skinner Intern: Mark Martin Exposure: open SUMMARY ======= There are situations where a mechanism is needed to reflect the concept that data is not present at a particular path, but can be found in some alternate location(s). Examples include "referrals" used to build unified name spaces in NFSv4.x and SMB, and data relocation in HSM systems. A "reparse point" is defined as the marker for a namespace redirection and a container for the metadata to specify where the target of this redirection is. Reparse points are intended to be a general mechanism for location redirection and as such the file system that contains them is not cognizant of the reparse point format or content. Services that use reparse points know how to interpret and use the stored data. ISSUES ====== Issues for inception review on 2009-08-05 mam-01 In the Interface table: "Note: There is no need to define a name in the file system to support a user space door service that is called from the kernel, and not defining a name avoids potential security concerns. Thus the door interface is private to the implementation and not mentioned in the interface table." Does this mean that the door name is randomly generated? A cursory source inspection will reveal the name, so what are the security concerns? It may not be customary to report door names, but I'm curious what the motivation is. Response: You can create a door name in var/run, which is a means for a door client to locate a door server. In the case of a kernel door client, it can lookup the door handle directly, it doesn't need any name in the file system. If you put a name in /var/run unnecessarily, that opens an avenue for a potential attack because people know what name to use to access the door server. It seems better to not provide a name in the file system, which ensures that user space applications have no means to access the door server. Amended Response: I've been reconsidering this discussion and I think we may want to have a door file in /var/run. As things are now, reparsed must pass the door fd to kernel modules, which means there is a specific relationship between reparsed and consumers of the reparse API: reparsed must open the device and issue an ioctl. Also, only kernel components can use the reparse API because user space applications can't find the door. I think it would be good to remove these dependencies and limitations, and I can't think of any security issues around applications asking reparsed to exchange the svc_data. It doesn't provide anything that the application couldn't have gotten by going directly to the backend referral service. The door file would be /var/run/reparse_door. mam-02 Reparse CLI consolidation private versus uncommitted? Does this unnecessarily lower usability expectations? Are we prepared not to give the user a well known way to manage these links from CLI? Response: There are no user space consumers outside of the project. Perhaps we should remove the test program description from the spec. Amended Response: I'd also like to remove the rp test program from the spec. It's not a deliverable and it shouldn't be documented in the case. dwc-1 reparse_20q.txt, Q1, 2nd bullet: Does saying "The exposure is OpenSolaris" mean that this project will not be integrated into Solaris next? Response: The intent is to deliver to Nevada, which should deliver into both SolarisNext and OpenSolaris. If that's not the case, PSARC guidance is welcome here. dwc-2 reparse_20q.txt, Q1, 3rd bullet: Is this project really suitable for a patch? It would seem that a project that alters the footprint of VOP_LOOKUP() would need a major release binding. Response: There is no plan to backport this change. I believe that this case should have minor binding but PSARC guidance is welcome. dwc-3 reparse_20q.txt, Q1, last bullet: I thought this question was asking how this case (PSARC/2009/387) relates to other arc cases (e.g., PSARC/2009/399); not what case number is assigned to this case??? Response: Nothing in this project should result in a misalignment with existing or proposed ARC cases. dwc-4 reparse_20q.txt, Q2, 1st bullet: I didn't find any documents named "section 4 and 5" in the case directory nor in the inception.materials directory in the case directory??? This is a recurring problem in this document. There are lots of files in the case directory and sub-directories, but this document seems to imply that all of the case materials are in a single, unnamed file. Response: The reference is to sections 4 and 5 of reparse_spec.txt, which appears in the inception.materials directory. Other than reparse_20q.txt, reparse_spec.txt is the only other document in the inception.materials directory. All such references in reparse_20q.txt are to inception.materials/reparse_spec.txt dwc-5 reparse_spec.txt, section 3, - list: Contray to what is stated here: - POSIX rules are broken. - If there is a file (whether it is a regular file, a directory, or anyother symlink doesn't matter) named "@{repa...@{a:b}}" and a symlink in the same directory is later created that points to that file, you say that the symlink will be created as a regular symlink. That matches POSIX requirements. If I create these files in the other order, you say that the symlink will be magically turned into a referral. That violates POSIX requirements. If I create an archive (cpio, tar, star, etc.) that contains both the file and the symlink pointing to it, the order in which they were stuck in the archive will determine whether extracting those files from the archive works or fails. That violates POSIX requirements. As stated in my email (dated Sat Jul 11 12:19:38 2009), you could file an interpretation request to try to get POSIX and the SUS to make the behavior of symlinks whose contents start with "@{" unspecified or implementation-defined. That would allow what you are proposing (as well as BSD magic links) without having to get the standards community to fully specify the behavior of referrals or magic links. Without an interpretation request, someone like Geoff would love to add a new test to the UNIX branding test suite to deny a brand for non-standard symlink behavior. Response: Regardless of whether or not XAT_REPARSE has been set, the object still appears as, and behaves exactly like, a symlink to all local applications. There is no way for them to distinguish it from any other symlink. The order of creation makes no difference to archivers (cpio, tar, star, etc.): they will work as they do today (they will not be using the proposed reparse API). Applications that use POSIX calls will not be affected: creating a symlink named "@{repa...@{a:b}}" that points to a file will succeed and behave like a symlink to all local POSIX applications. Although not applicable to this reparse points case, the team understands the potential for an application to see a different behaviour when run over NFS or SMB in the presence of a referral service. Can you provide guidance on how to go about submitting and pursuing a standards interpretation change request? dwc-6 reparse_spec.txt, section 4.1: The standards are clear that symlink() and readlink() are used to create and read the contents of symbolic links; not referrals or magic links. Response: The symlink()/readlink() behavior will not be affected by this case. Referrals are an interpretation of a symlink by non-POSIX services, such as NFS and SMB. dwc-7 reparse_spec.txt, section 4.3: The statement that reparse points will be handled correctly by existing applications is only true as long as a file with a name specified by the of the contents of the symlink does not exist when the the symlink is created and is never created after that. Response: We believe that reparse points will be handled as expected by existing local applications in all cases. dwc-8 reparse_spec.txt, section 4.3: Doesn't changing the footprint of VOP_LOOKUP mean that all existing code that uses that interface has to change at the same time as the putback for this project? How will this be coordinated with external filesystem projects when this is installed as a patch? Response: Yes, the changes will be pushed at the same time. We plan to handle it in the same way that it was handled previously, for example, PSARC 2007/218 and 2007/227. dwc-9 reparse_spec.txt, sections 5.1 and 5.2: What does "Functions returning int will return zero on success or a non-zero errno value on failure." mean? Is it: 1. 0 will be returned on success; -1 will be returned on error and the external variable errno will be set to indicate which error occurred, or 2. 0 will be returned on success; an error value from <sys/errno.h> will be returned on failure and the external variable errno will not be changed? Which error values will be used by these routines and under what conditions? Response: There is no mention of setting external variable errno. These functions will return 0 on success or they will return an error value from sys/errno.h on failure. Other than EOVERFLOW, which is documented, possible error values returned will most likely be EINVAL or ENOMEM. EINVAL will indicate an invalid parameter or reparse point format. ENOMEM will indicate that the API was unable to allocate memory required to complete the operation. dwc-10 reparse_spec.txt, section 5.1: Do work correctly, don't archivers have to be modified to use reparse_create() and reparse_delete() when moving file hierarchies and extracting file hierarchies from archives if archived symlinks were reparse points when they were archived? Response: No, existing applications must not be modified to use the reparse API. Making such a change would invalidate the assumptions and assertions on which this case is predicated. dwc-11 reparse_spec.txt, section 5.3: The amended response to issue mam-02 in the issues file says that you'd like to remove rp from the spec. Why is it still here? Response: The spec has not yet been updated to avoid potential confusion from receiving comments on multiple revisions of the case materials prior to the inception review. dwc-12 reparse_spec.txt, section 5.9: Why aren't auditing requirements for adding and removing reparse points similar to mount and unmount operations? Response: Reparse points provide a basic infrastructure on which usable services can be created - the reparse implementation will not interpret the content of a reparse point beyond basic format validation. It seemed more useful to implement auditing within the services built on reparse points, such as referrals, since those services will interpret the content. dwc-13 reparse_spec.txt, section 6: But, unlike symlinks, reparse points can redirect access to files on foreign hosts. Doesn't this affect the security model? Response: This question seems to apply to referrals rather than reparse points since nothing in the reparse point implementation will provide any redirection. As with symlinks, all security for referrals is handled at the destination. Referrals simply point at an alternate location and it is up to the client to select, go to and attempt access at an alternate location. The security or access control of the thing being referred to is not known or relevant to the local referral service. dwc-14 reparse_spec.txt, section 7: What is "Committed Private"? I thought Private classifications were one of "Contracted Private", "Project Private", and "Consolidation Private". Response: This should be: Committed, Consolidation Private. seb-01 The interface table in section 7 makes a reference to "reparse token syntax". This is the first reference to the tern "token". What is this? Is this the syntax of the reparse data displayed as the symbolic link target? seb-02 What is the reasoning behind making the reparse data format Committed Private rather than some form of Public? (assuming that "reparse token" means "reparse data"). seb-03 What does ls -L do with reparse point symlinks? ged-01 I'm concerned that the reparse points create a situation where different views of the filesystem are present in the local filesystem from what is exported via the NFS. It seems like the server should have a way for local users to access the data in the same fashion that remote users do. ged-02 Is there a way to specify that support for reparse/referrals will be used or not (maybe that's an issue for the NFSv4 and SMB cases.) ged-03 If we had "local" referrals, resolved by the kernel, then we could use referrals to solve other problems, such as the isaexec problem. Any thoughts on this? ged-04 On the referral syntax, how will the tags and values (and the semantics of them) be tracked? Individual PSARC cases? ged-99 The token syntax seems incredibly unwieldy. While I understand that we need to avoid collisions, making heads or tails of the syntax is going to be "difficult". THE NEXT STEP ============= spec update Minor binding refer to umbrella check with Rich Brown about contracts Reparse to be committed rather than committed private Change on name for reparse points Error returns clearer in documentation opinion dwc-5 posix future cases need to test auditing vote Glenn Skinner yes Kais Belgaied non participating Sebastien Roy yes Mark Carlson yes mark Martin yes Garrett D'Amore yes Rick Matthews yes Gary Winiger non participating approved =========================================================================== Case: 2009/373 Name: Clearview IP Tunneling Submitter: Sebastien Roy Owner: Sebastien Roy Exposure: open SUMMARY ======= This project is a redesign and reimplementation of the IP tunneling functionality in Solaris. It delivers a GLDv3 driver (iptun) that implements IP tunnel links atop which IP interfaces can be plumbed. Tunnel links are managed using new dladm(1M) subroutines (implemented using new libdladm functions), and IP interfaces above tunnel links are created using ifconfig(1M) as with any other type of IP interface. It replaces the old STREAMS-based IP tunneling implementation which depended on the ifconfig(1M) command to plumb tunneling modules (tun, atun, and 6to4tun) atop of /dev/ip or /dev/ip6. With this project, tunnel links gain functionality common to other links, including link vanity naming (introduced by Clearview in PSARC 2006/499), link-layer observability using traditional observability tools such as Wireshark and snoop(1M), and the assignment of tunnel links to exclusive stack non-global zones. ISSUES ======= kb-00 It seems to me that we've got two distinct cases here: (1) datalinks control from non global zones (2) Clearview IP Tunneling case (1) brings sufficiently complex architectural changes and is independant from (2) to warrant a separate case. Keeping these together also increases the risk of making (1)'s choices taylored to (2)'s needs. kb-01 How does information float from the lower IP to the upper one across the tun mac provider - support of LSO - MTU I'm thinking of the cases where MTU for example changes because the outer header for a tunnel get re-routed through an interface with a different MTU kb-02 For IPsec tunnels created from the non global zone. I am not clear on how the global zone sees the keys for encrypting and/or authenticating the payload. ged-01 ifconfig configuration and syntax. It seems to me that the need to preserve the legacy functionality might be overstated here. I understand that some customer confusion may occur, but given the "break" inherent in OpenSolaris vs. Solaris 10, maybe the legacy baggage can just be elided? At a minimum I'd like to see the legacy syntax marked Obsolete and planned for removal. (I'm thinking the things most likely to break are tools such as punchin.) ged-99 speaking of punchin, will it be modified to use the new dladm subcommands? VOTE ==== Approve - Sebastien Roy Glenn Skinner Kais Belgaied Mark Carlson Rick Matthews Garrett D'Amore Deny - Abstain - Not Participating (NP) - THE NEXT STEP ============= Approved