- Sender adaptation; when an ACK message
acknowledges a number of data segments, one
could equate it to the same number of ACK
messages. Thus, the congestion window at
the sender side can grow correspondingly.
Making sure that the number of segments
acknowledged and not the number of ACK
messages is used would also be in line with
the situation on the forward direction. - Reconstructing ACK messages; in case sender
adaptation is not used, the original sender side
of the constrained link (forward direction) can
examine the ACK messages and reconstruct
any intermediate ACK messages not seen.
This could be done by generating the ACK
messages and putting them on the link evenly
distributed in time.
A more generic technique of the latter is to intro-
duce an ACK compaction and an ACK expan-
sion in the network, see Figure 14. The com-
paction would remove any “unnecessary” ACKs
and the expansion would reconstruct the same
ACKs, making it transparent for the end-sys-
tems. However, additional protocol mechanisms
have to be introduced to enable this.
6 Addressing and Routing
6.1 Addressing and Identifiers
A nameidentifies whatan object is, an add-
ressidentifies whereit is, a routetells howto
get there, a pathsays which sequence of steps
to traverse, and a linkwould be a stepin the
path.
Referring to the configuration depicted in Figure
15 a major issue is how the different port num-
bers are allocated. In principle there are two
ways this can be done; i) universal assignment;
and ii) dynamic binding. In the former, a cen-
tralised authority is typically used to assign port
numbers and publish the results to the hosts
(could well be done hierarchically). In the latter,
port numbers are assigned when needed. This
implies that each program that needs a port num-
ber is assigned one on demand. In order to know
the port number on a remote host, an enquiry has
to be sent to that host, which replies with the
proper port number to use.
Typically a combination of the two ways of
assigning port numbers has been chosen; some
numbers are fixed while others are used dynami-
cally. The ports refer to identifiers used on the
transport layer (TCP/UDP). The port identifiers
are included in the UDP/TCP headers.
Referring to identifiers used on the IP layer, a
Domain Name System (DNS) is used to translate
between more high-level names and IP add-
resses. For instance, the name viking.telenor.com
could translate into a 32 bit IP version 4 address
(and the other way around). Such a naming
scheme would then be used to assign names
throughout the IP-based networks. It also pro-
vides a large-scale example of the client-server
concept as a DNS server would be enquired in
order to make a translation between the name
and the address, see examples in Figure 16.
In principle, the resolution algorithm used for
the translation proceeds from the top (top-level
domain) and continuing down. There are two
ways of using the domain name system: i) by
asking the name servers one by one until the
resolution is complete; or ii) by asking a name
server to do the complete resolution (lower
Figure 14 Introducing ACK
compaction and expansion
nodes (note these might be the
receiver and the sender nodes,
respectively)
ACK expansion node ACK compaction node
sender receiver
ACK
data
ACK
data
ACK
data
ACK
data
ACK
data
ACK
data
constrained reverse link
e.g. A socket
A port identity
A IP address
Application
Transport
IP
Network
Interface
IP
routing/forwarding
Network Interface
Application
Transport
IP
Network
Interface
e.g. B socket
B port identity
B IP address
Host A Host B
User data Transport layer header IP packet header Link level header
Figure 15 Hierarchy of
functionality/protocols