Truyền thông trong mạng là liên tục, đa dạng, phức tạp và luôn biến động. Có nhiều nguyên nhân gây ra tắc nghẽn và được phân thành bốn loại sau [3][10]:
Do thời gian chờ xử lý và xếp hàng trong hàng đợi quá lớn: Khi luồng các gói tin đột ngột đến từ nhiều cổng vào và tất cả đều cần ra cùng một cổng ra thì hàng đợi tại đây sẽ có chiều hướng tăng. Nếu khả năng xử lý của các nút mạng chậm thì sẽ dẫn đến tắc nghẽn. Do đó, cần có các cơ chế điều khiển hoạt động hiệu quả tại nút mạng để tránh hiện tượng tắc nghẽn do hàng đợi đầy.
Do chiều dài hàng đợi nhỏ: Nếu chiều dài hàng đợi không đủ dung lượng để lưu các gói tin đến thì xảy ra hiện tượng mất gói. Việc tăng chiều dài hàng đợi lên sẽ hạn chế sự mất gói, nhưng đây không phải là giải pháp tốt vì khi tăng chiều dài hàng đợi thì đồng nghĩa với việc tạo ra trễ lớn tại hàng đợi, làm ảnh hưởng đến hiệu năng mạng. Vì vậy, cần có cơ chế quản lý hàng đợi tích cực tại nút mạng để giữ cho số lượng gói tin trong hàng đợi duy trì dưới mức cho phép, không vượt quá các ngưỡng nhằm tránh tắc nghẽn hoặc loại bỏ tắc nghẽn khi nó có nguy cơ xảy ra.
Do hạn chế của giao thức TCP: TCP kiểm soát tắc nghẽn theo cơ chế thụ động ở phía đầu cuối, nên sẽ có độ trễ lớn từ khi xảy ra hiện tượng mất gói cho đến khi TCP nhận biết tắc nghẽn. Hơn nữa, TCP không có khả năng phân biệt giữa mất gói do đường truyền hay mất gói do tắc nghẽn. Mỗi khi xảy ra các hiện tượng tắc nghẽn thì TCP giảm tốc độ truyền, nên hiệu năng đường truyền sẽ bị hạ thấp.
Do tính không đồng nhất giữa các mạng liên kết với nhau: Tốc độ truyền trên kênh di động thấp hơn nhiều so với kênh cố định. Vì vậy, phần truy cập vô tuyến sẽ
14
luôn là chỗ nghẽn cổ chai đối với một kết nối giữa thuê bao di động với đầu cuối ở mạng cố định. Hoặc trong trường hợp có sự chênh lệch lớn về tốc độ truyền của hai mạng liền kề nhau gây ra hiệu ứng băng thông không đối xứng, làm tác động lớn đến truy cập mạng, hệ thống dễ dàng xảy ra tắc nghẽn.