[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Thoughts about layering multi-addressing
Iljitsch van Beijnum wrote:
Well, for outgoing packets that shouldn't be a problem. If the FTP
application wants to use the cheap high bandwidth link while the VoIP
application wants to use the lower bandwidth, more expensive but
bounded-delay link, the shim can just insert the right addresses and
send the packets toward the right next hop and everything will work fine.
Yep.
Another approach would be for the application on our side to ask the
transport and for the transport to ask the shim for a certain behavior,
such as "make incoming traffic for this FTP app come in at address X if
possible", and the shim communicates this request to the shim layer at
the correspondent, which then takes the appropriate action.
It isn't clear for me what the motivation is for such an approach. It
seems quite odd for the application on A to say something about which
path B is using to send packets. If this was really a need, wouldn't we
already see requests for the ability to the application on A to tell B
whether to send over the "eth0" vs. "eth1" network interface?
So I'm questioning whether we need this complexity.
Note that there is no real reason to do a full "fork" of the shim
state: the most important thing the shim has to do is allow for the
rewriting and demux of packets. The rewriting is impacted, but not the
demux. In fork terminology: rather than fork off a new process, we're
starting a new thread within the same process, which isn't nearly as
heavy an operation. I think all of this can happen based on transport
demux info (i.e., port numbers).
I think I agree. The sender can use any locator pair - and use different
pairs for different traffic and the receiver just rewrites it to use the
ULID. So we don't need different shim6 contexts.
And *if* it turns out that we need the ability for the app on A to
affect how B sends it packets, then this can be viewed as a locator pair
preference mechanism which is layered on top of the shim proper. There
isn't a need to have different contexts to do this, and it doesn't help
because the granularity would be finer than the ULID pair.
It's interesting to note that by now we have several types of
communication happening at several levels of granularity:
- service differentiation information that is ULP session specific
- rewriting, which happens based on ULID (or more than just ULID if we
for the ULID state??? what would be the secondary differentiator?)
Could this be something passed down from the ULP (prefer a given locator
pair) for ULPs that are aware of multiple locators? Or a "locator pair
preference sub-layer" for other ULPs?
One can envision simple examples of such a sublayer in the multihomed
host case - e.g. a table which indicates that the VoIP port numbers
should prefer the GPRS interface over the WLAN interface i.e.
preferences on the local locators.
- demuxing, which is mostly specific to ULIDs but needs help from
something else (flow label, tag, locator set)
- reachability detection, which happens address pair to address pair
- reachability acks, which happen from host to host
Erik