home *** CD-ROM | disk | FTP | other *** search
- Submitted-by: daveb@ingres.com (Dave Brower, DBMS hack, [510] 748-3418)
-
- Dear Miss Standards,
-
- I've been balloting the 1003.4 RT stuff, and been participating off
- and on in UI working groups. The UI TPWG actually accepted my request,
- but then it got lost in the shuffle. 1003.4 has been even less amendable
- to our needs.
-
- Let me try to explain here to see if I'm nuts, and what you think I
- should do.
-
- We write a server program that gets requests from many other
- processes, and sends back responses. It would be great to have a very
- high-performance way of sending messages back and forth between the
- two, and we've wanted to use a system provided "Message" facility to
- do this for a long time.
-
- The missing piece for us is determining the identity of the client
- process, so we know what of our own permissions/privileges etc. to
- invoke during processing of the request.
-
- The way we'd like to get it is to have the system put the effective
- uid of the message sender in the header that comes when we receive the
- message. We think that this would take a whopping uid_t worth of
- space in the header, and maybe 10 extra instructions in the system to
- fill in field and copy it out to user space. This would provide us
- with trustworthy accreditation, and we can proceed easily from there.
-
- People misunderstanding the problem have suggested a number of things
- that don't work:
-
- (1) Have the sender put it's id in the message. This doesn't work
- because we can't trust the sender to tell us the truth.
-
- (2) Rely on access permissions on the message queue. That only affects
- whether we accept the message or not; it doesn't give us any ability
- to treat requests from different users differently.
-
- (3) Set up a message queue for each client. This doesn't scale well,
- and defeats the entire purpose of multiplexing requests into a
- single queue.
-
- I turned in a "NO" vote to 1003.4 because it didn't do what we needed.
- I was asked to withdraw my objection in the last recirculation
- because "the message model is all different now" and because "we
- punted it to the network API group."
-
- The current position is rationalized more or less as
-
- (a) we're only doing what is "fast";
- (b) we're only doing what is has prior art;
- (c) we're only doing what is needed for "real time"
- (d) we're punting this to the network API folks...
- (e) it's too hard to do over a network.
-
- Let me try to puncture these balloons one by one.
-
- (a) It shouldn't cost hardly anything to put the euid of the sender
- into the header. I'd appreciate hearing how it would be expensive.
-
- (b) VMS mailboxes do provide authenticated sender id, so there is
- well-established prior art.
-
- (c) The Posix Real-time work was clearly intended to carry on the
- work of the /usr/group database/ transaction processing group. A
- fast local IPC mechanism usable for database was something that
- has been on the request list since at latest 1984. Claiming this
- isn't within the charter/scope is hard to swallow.
-
- (d) The networking APIs can only provide interfaces to facilities
- provided by the lower level transport mechanisms. If the lower
- level doesn't support reliable sender ID, then the API isn't going
- to be able to conjure it up very easily. So, if the IPC
- mechanism (messages) doesn't provide sender id, then you'll never
- get it.
-
- (e) First, message queues aren't network objects so this is a false
- issue; Second, it's the same problem that a remote file service
- has in determining the owner of newly created file; that is, uid
- mapping is going to have to be solved anyway.
-
- So, Miss Standards, is what I want really unreasonable? Is my
- explanation incomprehensible? What do you think I should do?
-
- thanks,
-
- - a frustrated SQL server writer
-
- --
- "If it were easy to understand, we wouldn't call it 'code'"
- David Brower: {amdahl, cpsc6a, mtxinu, sun}!rtech!daveb daveb@ingres.com
-
-
- Volume-Number: Volume 26, Number 42
-
-