0% found this document useful (0 votes)
2 views

Computer Networks Unit 2

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Computer Networks Unit 2

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 72

Multiple Access Control (MAC)

Protocols

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2000


2004
Multiple Access
 Broadcast link used in LAN consists of multiple sending and receiving
nodes connected to or use a single shared link

Broadcast links Examples

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Figure 12.1 Data link layer divided into two functionality-oriented sublayers

Responsible for error


and flow control

Link Layer Control (LLC)

Control
MAC

Responsible framing
and MAC address and
Multiple Access Control

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Multiple Access
 Problem: When two or more nodes transmit at the same time, their
frames will collide and the link bandwidth is wasted during collision
 How to coordinate the access of multiple sending/receiving nodes to
the shared link???
Solution: We need a protocol to coordinate the transmission of the
active nodes
These protocols are called Medium or Multiple Access Control
(MAC) Protocols belong to a sublayer of the data link layer called
MAC (Medium Access Control)
What is expected from Multiple Access Protocols:
Main task is to minimize collisions in order to utilize the bandwidth by:
Determining when a station can use the link (medium)
what a station should do when the link is busy
what the station should do when it is involved in collision

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Terms
• Throughput: is the amount of data moved successfully
from one place to another in a given time period.
• propagation delay: is the amount of time it takes for
the head of the signal to travel from the sender to the
receiver.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


For wireless

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Random Access

Random Access (or contention) Protocols:


No station is superior to another station and none is assigned the
control over another.
A station with a frame to be transmitted can use the link directly
based on a procedure defined by the protocol to make a decision on
whether or not to send.
All station have same priority.
Any station can send data depending on medium’s state(idle or busy)
It has two features:
i) There is no fixed time for sending data
ii) There is no fixed sequence of stations sending data

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


ALOHA

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


ALOHA Random Access Scheme
• It was developed at the University of Hawaii in the early 1970s
to connect computers situated on different Hawaiian islands.
The computers of the ALOHA network transmit on the same
radio channel whenever they have a packet to transmit.
• From time-to-time packet transmission will collide, but these
can be treated as transmission errors, and recovery can take
place by retransmission. When traffic is very light, the
probability of collision is very small, and so retransmissions
need to be carried out infrequently.
• ALOHA scheme requires stations to use a random
retransmission time. (This randomization is intended to spread
out the retransmission and reduces the likelihood of additional
collisions between stations. )
• ALOHA is the father of multiple access protocols.

9
McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
1 Pure ALOHA
• All frames from any station are of fixed length (L bits)
• Stations transmit at equal transmission time (all stations produce frames
with equal frame lengths).
• A station that has data can transmit at any time
• After transmitting a frame, the sender waits for an acknowledgment for an
amount of time (time out) equal to the maximum round-trip propagation
delay
• Time out= 2* tprop
• If no ACK was received, sender assumes that the frame or ACK has been
destroyed and resends that frame after it waits for a random amount of
time
• If station fails to receive an ACK after repeated transmissions, it gives up.
• Channel utilization or efficiency or Throughput is the percentage of the
transmitted frames that arrive successfully (without collisions)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Maximum Propagation Delay
• Maximum propagation delay(tprop): time it takes for a bit of a frame to
travel between the two most widely separated stations.

The farthest
station

Station B
receives the
first bit of
the frame at
time t= tprop

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Critical time for pure ALOHA protocol

Tfr= Frame
Transmission time

If the frame transmission time is Tfr, then the vulnerable time is =


2 Tfr.
This means no station should send during the Tfr before this
station starts transmission and no station should start sending
during the T-sec period that the current station is sending.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Pure ALOHA
In pure ALOHA, frames are transmitted at completely random times.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


2 Slotted ALOHA
• Time is divided into slots equal to a frame transmission time (Tfr)
• A station can transmit at the beginning of a slot only.
• If a station misses the beginning of a slot, it has to wait until the
beginning of the next time slot.
• A central clock or station informs all stations about the start of a
each slot

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


In danger time for slotted ALOHA protocol

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Random Access – Slotted ALOHA

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


ALOHA
 Advantage of ALOHA protocols
 A node that has frames to be transmitted can transmit
continuously at the full rate of channel (R bps) if it is the only
node with frames
 Simple to be implemented
 No master station is needed to control the medium

 Disadvantage
 If (M) nodes want to transmit, many collisions can occur and
the rate allocated for each node will not be on average R/M
bps
 This causes low channel utilization

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


BASIS FOR COMPARISON Pure ALOHA Slotted ALOHA

Frame Transmission The user can transmit the The user has to wait till
data frame whenever the the next time slot start, to
station has the data to be transmit the data frame.
transmitted.

Time In Pure ALOHA the time is In Slotted ALOHA the time


continuous. is discrete.

Throughput The maximum throughput The maximum throughput


occurs at G = 1/2 which is occurs at G = 1 which is
18% 37%.

Danger Time = 2 Tfr = Tfr

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Random Access – Carrier
Sense Multiple Access (CSMA)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Random Access – Carrier Sense Multiple Access
(CSMA)
A user wishing to transmit first listens to the medium to see if
another transmission is in progress (carrier sense)
Based on the fact that in LAN propagation time is very small
 If a frame was sent by a station, All stations knows
immediately so they can wait before start sending
 A station with frames to be sent, should sense the medium for the
presence of another transmission (carrier) before it starts its own
transmission
This can reduce the possibility of collision but it cannot
eliminate it.
Collision can only happen when more than one station begin
transmitting within a short time (the propagation time period)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Random Access – Carrier Sense Multiple Access (CSMA)
 Vulnerable time for CSMA is the maximum
propagation time
 The longer the propagation delay, the worse the
performance of the protocol because of the above
case.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Types of CSMA Protocols
Different CSMA protocols that determine:
 What a station should do when the medium is idle?
 What a station should do when the medium is busy?

1. Non-Persistent CSMA
2. 1-Persistent CSMA
3. p-Persistent CSMA

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


1) Non-persistent CSMA
A station with frames to be sent, should sense the medium:
1.If medium is idle, transmit; otherwise, go to 2
2.If medium is busy, (backoff) wait a random amount of time and
repeat 1
Performance:
Random delays reduces probability of collisions because two stations
with data to be transmitted will wait for different amount of times.
Bandwidth is wasted if waiting time (backoff) is large because medium
will remain idle following end of transmission even if one or more
stations have frames to send

Random Waiting
times

Wasted time

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


2) 1-persistent CSMA
 To avoid idle channel time, 1-persistent protocol used
 Station wishing to transmit listens to the medium:
1. If medium idle, transmit immediately;
2. If medium busy, continuously listen until medium becomes idle;
then transmit immediately with probability 1
 Performance
 1-persistent stations are selfish
 If two or more stations becomes ready at the same time, collision
guaranteed

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


3) P-persistent CSMA
 Time is divided to slots where each Time unit (slot) typically
equals maximum propagation delay
 Station wishing to transmit listens to the medium:

1. If medium idle,
 transmit with probability (p), OR
 wait one time unit (slot) with probability (1 – p), then repeat 1.
2. If medium busy, continuously listen until idle and repeat step 1
3. Performance
 Reduces the possibility of collisions like non-persistent
 Reduces channel idle time like 1-persistent

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


3) P-persistent CSMA

• the time slot is usually set to the maximum propagation delay.


• as p decreases, stations wait longer to transmit but the number of
collisions decreases
• Considerations for the choice of p:
• (n x p) must be < 1 for stability, where n is maximum number of
stations, i.e.,
p < 1/n

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


CSMA/CD (Collision Detection)

 CSMA (all previous methods) has an inefficiency:


 If a collision has occurred, the channel is unstable until
colliding packets have been fully transmitted
 CSMA/CD (Carrier Sense Multiple Access with Collision
Detection) overcomes this as follows:
 While transmitting, the sender is listening to medium for
collisions.
 Sender stops transmission if collision has occurred reducing

channel wastage .
CSMA/CD is Widely used for bus topology LANs (IEEE 802.3,
Ethernet).

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


of its own
signal, it means collision occurred

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


CSMA/CD Protocol

• Use one of the CSMA persistence algorithm


(non-persistent, 1-persistent, p-persistent) for transmission
• If a collision is detected by a station during its transmission then it
should do the following:
• Abort transmission and
• Transmit a jam signal to notify other stations of collision so that they will
discard the transmitted frame also to make sure that the collision signal will
stay until detected by the furthest station
• After sending the jam signal, backoff (wait) for a random amount of time,
then
• Transmit the frame again

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


CSMA/CD
• Question: How long does it take to detect a collision?
• Answer: In the worst case, twice the maximum propagation delay of
the medium
Note: a = maximum propagation delay

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


CSMA/CD
 Restrictions of CSMA / CD:
 Packet transmission time should be at least as long as the time
needed to detect a collision (2 * maximum propagation delay + jam
sequence transmission time)
 Otherwise, CSMA/CD does not have an advantage over CSMA

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Controlled Access or
Scheduling

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Controlled Access or Scheduling
• Provides in order access to shared medium so that every
station has chance to transfer (fair protocol)

• Eliminates collision completely


• Three methods for controlled access:
• Reservation
• Polling
• Token Passing

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


1-Reservation Access Method
 Stations take turns transmitting a single frame at a full rate ( R ) bps
 Transmissions are organized into variable length cycles
 Each cycle begins with a reservation interval that consists of (N) minislots. One
minislot for each of the N stations
When a station needs to send a data frame, it makes a reservation in its own
minislot.
By listening to the reservation interval, every station knows which stations will
transfer frames, and in which order.
The stations that made reservations can send their data frames after the
reservation frame.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


2- Polling
 Stations take turns accessing the medium
 Two models: Centralized and distributed polling
 Centralized polling
 One device is assigned as primary station and the others as secondary
stations
 All data exchanges are done through the primary
 When the primary has a frame to send it sends a select frame that includes
the address of the intended secondary
 When the primary is ready to receive data it send a Poll frame for each
device to ask if it has data to send or not. If yes, data will be transmitted
otherwise NAK is sent.
 Polling can be done in order (Round-Robin) or based on predetermined order
 Distributed polling
 No primary and secondary
 Stations have a known polling order list which is made based on some
protocol
station with the highest priority will have the access right first, then it passes
the access right to the next station

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Select and poll functions in polling access method

Primary is sending to
Secondary Secondary is sending to
Primary

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


3- Token-Passing network

Station Interface is in two states:


Listen state: Listen to the arriving bits and check the destination address to
see if it is its own address. If yes the frame is copied to the station otherwise
it is passed through the output port to the next station.
Transmit state: station captures a special frame called free token and
transmits its frames. Sending station is responsible for reinserting the free
token into the ring medium and for removing the transmitted frame from the
medium.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Channelization

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Channelization

Channelization is a multiple-access method in which the available


bandwidth of a link is shared in time, frequency, or through code,
between different stations. In this section, we discuss three
channelization protocols.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Frequency-division multiple access (FDMA)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


• FDMA: Frequency Division Multiple Access:
• Transmission medium is divided into M separate frequency bands
• Each station transmits continuously on the assigned band
• A node is limited to an average rate even when it is the only node
with frame to be sent

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Time-division multiple access (TDMA)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


TDMA: Time Division Multiple Access

• TDMA: Time Division Multiple Access


• The entire bandwidth capacity is a single channel with its capacity shared in
time between M stations
• A node must always wait for its turn until its slot time arrives even when it is
the only node with frames to send

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


CDMA: Code Division Multiple Access

 CDMA: Code Division Multiple Access


 In CDMA, one channel carries all transmissions simultaneously
 Each station codes its data signal by a specific codes before transmission
 The stations receivers use these codes to recover the data for the desired
station

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


DATA LINK LAYER PROTOCOLS

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
Simplex Protocol
1. The Simplex protocol is hypothetical protocol designed for
unidirectional data transmission over an ideal channel, i.e.
a channel through which transmission can never go
wrong.
2. It has distinct procedures for sender and receiver.

3. The sender simply sends all its data available onto the
channel as soon as they are available its buffer.

4. The receiver is assumed to process all incoming data


instantly.

5. It is hypothetical since it does not handle flow control or


error control.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Primitives of Stop and Wait Protocol
Sender’s Side

Rule 1: The sender sends one data packet at a time.

Rule 2: The sender only sends the subsequent packet after getting the
preceding packet’s acknowledgement.

Therefore, the concept behind the stop and wait protocol on the sender’s end
is relatively straightforward:
Send one packet at a time and refrain from sending any additional packets
until you have received an acknowledgement.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Primitives of Stop and Wait Protocol
Receiver’s Side

Rule 1: Receive the data packet, then consume it.

Rule 2: The receiver provides the sender with an acknowledgement after


consuming the data packet.

As a result, the stop and wait protocol’s basic tenet on the receiver’s end is
similarly extremely straightforward: Ingest the packet, and after it has been
consumed, send the acknowledgement.
This is a mechanism for flow control.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Working of Stop and Wait Protocol

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Disadvantages of Stop and Wait Protocol
1. Problems arise because of lost data

In this instance, there are two problems:

•The sender waits an endless length of time for a response.


•The receiver waits indefinitely for data.
•The receiver does not send an acknowledgement because it does not receive the
data.
•The sender won’t send the subsequent packet because it has not received any
acknowledgement. The lost data is the root cause of this issue.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


2. Problems arise as a result of the lost acknowledgement

 The receiver transmits the acknowledgement after receiving the packet.


 In this instance, there is no chance for the sender to get the acknowledgement because
the acknowledgement is lost in a network.
 Additionally, there is no chance for a sender to send the subsequent packet because,
according to the stop and wait protocol, this cannot happen until the previous packet’s
acknowledgement has been received.
 One issue arises in this situation:
 The sender waits an endless time for an acknowledgement.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


3. Problem resulting from delayed data or acknowledgement

 The acknowledgement is then sent by the recipient, but it is not received until
the timeout period has passed on the sender’s end.

 Due to the acknowledgement being received after this, it can be mistaken for
acknowledging the receipt of another data packet.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Stop and Wait for ARQ (Automatic
Repeat Request)

The above 3 problems are resolved by Stop and Wait for


ARQ (Automatic Repeat Request) that does both error
control and flow control.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


1. Time Out
Timeout refers to the duration for which the sender waits for an acknowledgment
(ACK) from the receiver after transmitting a data packet. If the sender does not receive
an ACK within this timeout period, it assumes that the frame was lost or corrupted and
retransmits the frame.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


2. Sequence Number (Data)
In Stop-and-Wait ARQ, the sender assigns sequence numbers to each data frame it sends.
This allows the receiver to identify and acknowledge each frame individually, ensuring
reliable delivery of data packets. After sending a frame, the sender waits for an
acknowledgment before sending the next frame.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


3. Sequence Number(Acknowledgement)

 Similarly, sequence numbers are also used in acknowledgments (ACKs) sent by the
receiver to acknowledge received data frames.

 When the receiver successfully receives a data frame, it sends an ACK back to the
sender, indicating the sequence number of the next expected frame.

 The sender uses this ACK to determine whether the transmission was successful and
whether it can proceed to send the next frame.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Working of Stop and Wait for ARQ
 Sender A sends a data frame or packet with sequence number 0.
 Receiver B, after receiving the data frame, sends an
acknowledgement with sequence number 1 (the sequence
number of the next expected data frame or packet)

There is only a one-bit sequence number that implies that both
sender and receiver have a buffer for one frame or packet only.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
Go Back N (GBN) Protocol
1. Sender Window Size (WR)

It is N itself. If we say the protocol is GB10, then Ws = 10.

2. Receiver Window Size (WR)

WR is always 1 in GBN.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


1. Now what exactly happens in GBN, we will explain with a help of example.
Consider the diagram given below. We have sender window size of 4.

2. Assume that we have lots of sequence numbers just for the sake of
explanation. Now the sender has sent the packets 0, 1, 2 and 3.

3. After acknowledging the packets 0 and 1, receiver is now expecting packet 2


and sender window has also slided to further transmit the packets 4 and 5.

4. Now suppose the packet 2 is lost in the network, Receiver will discard all the
packets which sender has transmitted after packet 2 as it is expecting sequence
number of 2.

5. On the sender side for every packet send there is a time out timer which will
expire for packet number 2.

6. Now from the last transmitted packet 5 sender will go back to the packet
number 2 in the current window and transmit all the packets till packet number
5.
7. That’s why it is called Go Back N.

8. Go back means sender has to go back N places from the last transmitted packet
in the unacknowledged window and not from the point where the packet is
lost.
McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
Selective Repeat ARQ
It is also known as Sliding Window Protocol and used for error detection and control
in the data link layer.

In the selective repeat, the sender sends several frames specified by a window size
even without the need to wait for individual acknowledgement from the receiver as
in Go-Back-N ARQ. In selective repeat protocol, the retransmitted frame is received
out of sequence.

In Selective Repeat ARQ only the lost or error frames are retransmitted, whereas
correct frames are received and buffered.

The receiver while keeping track of sequence numbers buffers the frames in
memory and sends NACK for only frames which are missing or damaged. The
sender will send/retransmit a packet for which NACK is received.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004
Explanation
Step 1 − Frame 0 sends from sender to receiver and set timer.
Step 2 − Without waiting for acknowledgement from the receiver another frame, Frame1 is
sent by sender by setting the timer for it.
Step 3 − In the same way frame2 is also sent to the receiver by setting the timer without
waiting for previous acknowledgement.
Step 4 − Whenever sender receives the ACK0 from receiver, within the frame 0 timer then it
is closed and sent to the next frame, frame 3.
Step 5 − whenever the sender receives the ACK1 from the receiver, within the frame 1 timer
then it is closed and sent to the next frame, frame 4.
Step 6 − If the sender doesn’t receive the ACK2 from the receiver within the time slot, it
declares timeout for frame 2 and resends the frame 2 again, because it thought the frame2
may be lost or damaged.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Error Detection in Computer Networks
Types of Errors

Single-Bit Error
A single-bit error refers to a type of data transmission error that occurs when
one bit (i.e., a single binary digit) of a transmitted data unit is altered during
transmission, resulting in an incorrect or corrupted data unit.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Multiple-Bit Error
A multiple-bit error is an error type that arises when more than one bit in a
data transmission is affected. Although multiple-bit errors are relatively rare
when compared to single-bit errors, they can still occur, particularly in high-
noise or high-interference digital environments.

Multiple-Bit Error

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Burst Error
When several consecutive bits are flipped mistakenly in digital transmission, it
creates a burst error. This error causes a sequence of consecutive incorrect
values.

Burst Error

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Error Detection Methods
To detect errors, a common technique is to introduce redundancy bits that
provide additional information. Various techniques for error detection include:

•Simple Parity Check


•Two-Dimensional Parity Check
•Checksum
•Cyclic Redundancy Check (CRC)

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Simple Parity Check
Simple-bit parity is a simple error detection method that involves adding an extra bit
to a data transmission. It works as:
•1 is added to the block if it contains an odd number of 1’s, and
•0 is added if it contains an even number of 1’s
This scheme makes the total number of 1’s even, that is why it is called even
parity checking.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Cyclic Redundancy Check (CRC)

CRC Working
We have given dataword of length n and divisor of length k.
Step 1: Append (k-1) zero’s to the original message
Step 2: Perform modulo 2 division
Step 3: Remainder of division = CRC
Step 4: Code word = Data with append k-1 zero’s + CRC
Note:
•CRC must be k-1 bits
•Length of Code word = n+k-1 bits

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004


Example: Let’s data to be send is 1010000 and divisor in the form of polynomial is
x3+1. CRC method discussed below.

McGraw-Hill ©The McGraw-Hill Companies, Inc., 2004

You might also like