veyron/runtimes/google/ipc/stream/proxy: Proxy protocol changes.

(1) "Servers" will be proxied only if they explicitly ask to.
    (The previous behavior was that any client connection would
    result in its routing id being added to the proxy's routing
    table).
(2) An explicit request<->response protocol is defined between
    the server wishing to be proxied and the proxy.

These changes pave the way for upcoming changes to the proxy:
(a) Servers will be able to ask the proxy to mount the proxied endpoint
    in a mounttable. This is required as the endpoint of the proxy as viewed by
    the server can be different from the endpoint of the proxy as accessible
    in a different network domain (the "externally accessible" endpoint).
    For example, consider a proxy running on the home router.
    Servers inside the home network would "export" themselves by
    "Listening" on say ("veyron", "@2@tcp@192.168.1.1...)
    however, their intent is to mount themselves with the external
    IP address of the proxy.
    The explicit request/response messages will be used to
    enable this.
(b) Multiple connections for the same routing id to the proxy:
    It is currently not possible for two network connections
    from the same routing id to be proxied. This may be useful
    if there are multiple network paths to the proxy (say
    multiple network protocols). One of the reasons this has
    been disallowed so far is to prevent denial of service (DoS)
    attacks, wherein a malicious process registers the routing id
    of a good server. However, with the changes in this commit,
    it should be easy to allow a server to proxy itself over
    multiple network connections as long as the identity of the
    server in all the network connections is the same.

Change-Id: Ied6ab99bf26e5a7d0b6bce16d13a006a64a75b5a
8 files changed
tree: c6df454292db5222fe911445d1dc3a8ff6cabdd0
  1. examples/
  2. lib/
  3. runtimes/
  4. security/
  5. services/
  6. tools/