cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
787
Views
10
Helpful
3
Replies
Iluvnetwork
Beginner

What exactly is the congestion?

Can anyone explain to me what congestion exactly is? I am really confused because some people call it as buffer overflow.

PCA -- SW1 -- R1 -- R2 -- SW2 -- PCB -> In this case, how congestion could happen for TCP communication? If PCA has to send data to PCB, PCA will send min(cwnd, rwnd) data. So, I am guessing that buffer overflow cannot happen in both PCA and PCB, but it could happen between SW1 and SW2 if either SW1, R1, R2 or SW2 has smaller buffer size than min(cwnd, rwnd). Plus, just curious how to troubleshoot if PCA keep sending data to PCB using UDP communication and either SW1, R1, R2, or SW2 has smaller buffer size.   

1 ACCEPTED SOLUTION

Accepted Solutions
Joseph W. Doherty
Hall of Fame Expert

I define congestion as anytime a frame/packet needs to be queued (and wait to be serviced). (NB: a drop would be the extreme delay, as it's infinite.)

Congestion is quite common and is not always adverse to the network application. Whether congestion is adverse or not, depends on the nature of the network application and how severe is the congestion.

BTW, congestion is typical on the sending host as multiple frames/packets can only be sent at the NIC's bandwidth capacity. (A host might also have multiple flows being sourced, which also compete for NIC bandwidth.) However, from a networking perspective, we normally only concern ourselves with congestion within the path between two hosts. Any time the transit network can not guarantee host NIC bandwidth, end-to-end, transit congestion is possible.

As to troubleshooting the impact of transit UDP congestion end-to-end, i.e. from host to host, you would need someway to measure what's sent with what's received. UDP itself, won't help you there, but sometimes applications using it, have stats that will reveal end-to-end issues.

View solution in original post

3 REPLIES 3
Joseph W. Doherty
Hall of Fame Expert

I define congestion as anytime a frame/packet needs to be queued (and wait to be serviced). (NB: a drop would be the extreme delay, as it's infinite.)

Congestion is quite common and is not always adverse to the network application. Whether congestion is adverse or not, depends on the nature of the network application and how severe is the congestion.

BTW, congestion is typical on the sending host as multiple frames/packets can only be sent at the NIC's bandwidth capacity. (A host might also have multiple flows being sourced, which also compete for NIC bandwidth.) However, from a networking perspective, we normally only concern ourselves with congestion within the path between two hosts. Any time the transit network can not guarantee host NIC bandwidth, end-to-end, transit congestion is possible.

As to troubleshooting the impact of transit UDP congestion end-to-end, i.e. from host to host, you would need someway to measure what's sent with what's received. UDP itself, won't help you there, but sometimes applications using it, have stats that will reveal end-to-end issues.

Thank you very much :) Learned a lot from your comments. Just curious, nowadays, NIC's bandwidth capacity is about which Mbps?

Copper Ethernet hosts NICs, on user devices would typically support gig.  Server host NICs, might support gig or 10g.