Báo Cáo Kiểm tra thuật toán điều khiển luồng dùng TCP

Thảo luận trong 'Điện - Điện Tử' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    170
    Điểm thành tích:
    0
    Xu:
    0Xu
    LỜI MỞ ĐẦU

    Hiện nay, với sự phát triển mạnh mẽ của các giải pháp công nghệ hạ tầng mạng truyền thông, hàng loạt các yêu cầu mới được đặt ra đối với các vấn đề khai thác và triển khai hệ thống trong môi trường mạng thực tiễn. Bài toán quản lý mạng viễn thông luôn là mối quan tâm hàng đầu và quan trọng cần giải quyết của các nhà khai thác viễn thông.
    Cùng với sự phát triển của công nghệ đã đáp ứng được phần nào yêu cầu phần cứng của hệ thống, tuy nhiên các thuật toán nhằm đạt được sự tối ưu luôn là một bài toán khó, đòi hỏi phải có sự nghiên cứu chuyên sâu và hiểu biết sâu sắc các vấn đề liên quan hệ thống mạng.
    Khi mạng viễn thông ngày càng phát triển rộng lớn, dịch vụ mới càng gia tăng, nhu cầu sử dụng cao, thì yêu cầu điều khiển luồng và chống tắc nghẽn trở nên là một vấn đề khó khăn và ngày càng phức tạp. Bài toán về điều khiển luồng và chống tắc nghẽn trong viễn thông trở nên được quan tâm.
    TCP (Transmission Control Protocol) là giao thức cho phép truyền dữ liệu một cách tin cậy giữa 2 máy tính bất kỳ. TCP dựa vào phương pháp điều khiển luồng theo cửa
    sổ trượt. Mặt khác, UDP là giao thức không đưa ra các cơ chế truyền tin một cách tin
    cậy, tuy nhiên UDP lại có đặc điểm là đơn giản, trễ truyền dữ liệu nhỏ, hiệu suất
    truyền lớn nên thích hợp cho các ứng dụng thời gian thực. Một câu hỏi đặt ra là khi
    truyền cả TCP và UDP trên mạng Internet thì 2 giao thức trên chia sẻ băng thông như
    thế nào, hoạt động của chúng ra sao trong trường hợp mạng xảy ra tắc nghẽn
    Do vậy với đề tài: “ Kiểm tra thuật toán điều khiển luồng sử dụng TCP”, em hi vọng mình có thêm những kiến thức hữu ích về vấn đề điều khiển luồng trong mạng viễn thông, từ đó có cái nhìn tổng quan hơn về mạng thông tin.
    Em xin cảm ơn sự giúp đỡ của thầy Nguyễn Hữu Thanh, đã giúp em hoàn thành bài tập lớn này. Nhưng do thời gian tìm hiểu có hạn và tầm hiểu biết còn hạn chế nên có thể không tránh khỏi những thiếu sót. Rất mong sự góp ý của thầy.





















    ĐỀ TÀI

    Kiểm tra thuật toán điều khiển luồng sử dụng TCP
    · Tạo ra một mạng cần mô phỏng sử dụng NS-2 giống như trên hình vẽ. Tạo ra
    2 kết nối TCP và UDP sử dụng nguồn/đích TCP và nguồn/đích UDP. Nguồn
    của TCP sử dụng TCP Reno (TCP Reno là một phiên bản của TCP đã được hỗ
    trợ trong NS-2).
    · Thiết lập cửa sổ chống tắc nghẽn tối đa (maximal congestion window size) của
    luồng TCP là 32 gói.
    · Kích thước các gói UDP và TCP là 512 bytes.
    · Chạy mô phỏng trong 200s.
    · Các nguồn UDP và TCP đều phát gói liên tục. Luồng UDP có tốc độ phát là
    512kbit/s (sử dụng nguồn CBR)

    [​IMG]

    8.1. Chạy mô phỏng và đo băng thông trung bình của luồng TCP (băng thông trung
    bình được tính bằng: Số byte được truyền đi của luồng TCP/thời gian mô phỏng)
    8.2. Lặp lại thí nghiệm 7.1. trong trường hợp tốc độ phát của luồn UDP là 1 Mbit/s, 2
    Mbit/s, 3 Mbit/s và 4Mbit/s.
    8.3. Vẽ đồ thị thể hiện băng thông của TCP so sánh với băng thông của UDP.
    8.4. Trong trường hợp tốc độ của luồng UDP là 500kbit/s và 4Mbit/s, vẽ kích thước
    cửa sổ trượt “congestion window” của TCP (trục tung: kích thước cửa sổ, trục hoành:
    thời gian).
    8.5. Có kết luận gì về kích thước của Congestion Window và băng thông của luồng
    TCP trong các trường hợp tải UDP đã xét.




    CƠ SỞ LÝ THUYẾT

    1. Vấn đề điều khiển luồng và chống tắc nghẽn trong viễn thông

    Thực trạng hiện nay cho thấy yêu cầu trao đổi thông tin ở mọi lúc, mọi nơi là rất lớn, trong khi đó tài nguyên mạng chỉ ở mức độ giới hạn, do đó việc gây ra tắc nghẽn là điều không tránh khỏi. Vì vậy cần phải có biện pháp để chống tắc nghẽn xảy ra.​ Điều khiển luồng là phương pháp kiểm soát thông tin giữa hai thiết bị đầu cuối cụ thể, nó là một trong những biện pháp giúp cho lưu thông lưu lượng giữa các thiết bị thu và phát, đảm bảo việc truyền tin của phía phát không vượt quá khả năng xử lý của phía thu. Cơ chế điều khiển luồng được thiết kế để điều khiền luồng dữ liệu giữa giữa người nhận và người gửi sao cho vùng đệm của người nhận không bị tràn. Nếu bị tràn, các khung hoặc gói dữ liệu bị mất. Điều khiển luồng được dùng trong tầng liên kết dữ liệu để điều khiển các liên kết điểm – điểm và trong tầng chuyển tải để điều khiển luồng end-to-end trên mạng có định tuyến. ​ Cơ chế điều khiển luồng và điều khiển tắc nghẽn theo phương pháp cửa sổ được hoạt động tương tự như các cơ chế phát lại ARQ( Automatic Repeat Request - yêu cầu lặp lại tự động). Cơ chế phát lại này được chia làm 3 loại với những đặc điểm và hoạt động khác nhau.​ 1.1. Điều khiển luồng kết hợp ARQ – Stop-and-wait(dừng và đợi)​ 1.2. Phương pháp điều khiển luồng Go back – N​ 1.3. Điều khiển luồng kết hợp ARQ – Selective repeat ​ 2. Giao thức TCP/IP và UDP
    Để các máy máy tính có thể liên lạc với nhau qua mạng, chúng phải sử dụng cùng 1 ngôn ngữ hay còn gọi là 1 giao thức (Protocol). Giao thức là 1 hệ luật và chuẩn cho phép các máy tính trong mạng liên lạc với nhau. TCP/IP là được dùng cho hầu hết mọi giao thức trên mạng hiện nay
    -TCP/IP là viết tắt của Transmission Control Protocol (Giao thức Điều Khiển Truyền Thông) / Internet Protocol (Giao thức Internet).
    -TCP/IP không chỉ gồm 2 giao thức mà thực tế nó là tập hợp của nhiều giao thức. Chúng ta gọi đó là 1 Hệ Giao Thức hay Bộ Giao Thức (Suite Of Protocols) ​
    2.1. Tổng quát về TCP/IP
    -Để cho các máy tính trao đổi dữ liệu với nhau TCP/IP sử dụng mô hình truyền thông 4 tầng hay còn gọi là Mô Hình DoD (Mô hình của Bộ Quốc Phòng Mỹ). Các tầng trong mô hình này là (Theo thứ tự từ trên xuống):
    + Tầng Ứng Dụng (Application Layer) [​IMG]
    + Tầng Giao Vận (Transport Layer)
    + Tầng Liên Mạng (Internet Layer)
    + Tầng Giao Diện Mạng (Network Interface Layer)
    - Mỗi giao thức của Họ TCP/IP đều thuộc 1 trong các tầng này. Ta sẽ cùng tìm hiểu từng tầng .
    a.Tầng Giao Diện Mạng (Network Interface Layer):
    - Tầng Giao Diện Mạng có trách nhiệm đưa dữ liệu tới và nhận dữ liệu từ phương tiện truyền dẫn. Tầng này gồm các thiết bị phần cứng vật lí chẳng hạn như Card Mạng và Cáp Mạng.
    - 1 Card Mạng chẳng hạn card Ethernet chứa 1 số HEX 12 kí tự (00-18-37-03-C0-F4) được gọi là Địa Chỉ MAC (Media Access Control) hay Địa Chỉ Truy Nhập Phương Tiện . MAC đóng vai trò quan trọng trong việc gán địa chỉ và truyền dữ liệu.
    - 1 số giao thức tiêu biểu thuộc tầng này gồm :
    + ATM (Asynchronous Transfer Mode)
    + Ethernet
    + Token Ring
    + FDDI (Fiber Distributed Data Interface)
    + Frame Relay
    b.Tầng Liên Mạng (Internet Layer):
    - Nằm bên trên tầng giao diện mạng. Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu. 4 giao thức quan trọng nhất trong tầng này gồm:
    + IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.
    + ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC.
    + ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng.
    + IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast)
    c.Tầng Giao Vận (Transport Layer):
    - Có trách nhiệm thiết lập phiên truyền thông giữa các máy tính và quy định cách truyền dữ liệu. 2 giao thức chính trong tầng này gồm:
    + UDP (User Datagram Protocol): Còn gọi là Giao Thức Gói Người Dùng. UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu 1 cách tin cậy. Các ứng dụng dùng UDP thường chỉ truyền những gói có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng
    + TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu 1 cách tin cậy. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận.
    d.Tầng Ứng Dụng (Application Layer):
    - Gồm nhiều giao thức cung cấp cho các ứng dụng người dùng. Được sử dụng để định dạng và trao đổi thông tin người dùng. 1 số giao thức thông dụng trong tầng này là:
    + DHCP (Dynamic Host Configuration Protocol): Giao Thức Cấu Hình Trạm Động
    + DNS (Domain Name System): Hệ Thống Tên Miền
    + SNMP (Simple Network Management Protocol): Giao Thức Quản Lý Mạng Đơn Giản
    + FTP (File Transfer Protocol): Giao Thức Truyền Tập Tin
    + TFTP (Trivial File Transfer Protocol): Giao Thức Truyền Tập Tin Bình Thường
    + SMTP (Simple Mail Transfer Protocol): Giao Thức Truyền Thư Đơn Giản
    + TELNET
    ***Bảng sau mô tả khái quát về Bộ Giao Thức TCP/IP:[​IMG]
    TCP - Transmission Control ProtocolGiao thức điều khiển vận chuyển, nằm ở lớp Transport trong mô hình OSI và là một trong những giao thức cốt lõi của bộ giao thức TCP/IP, nhằm kết nối các máy tính trên mạng với nhau, chia sẻ và trao đổi dữ liệu.
    Hỗ trợ nhiều giao thức ứng dụng phổ biến trên Internet như HTTP, FTP, SMTP Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa Internet Protocol (IP) bên dưới và tầng ứng dụng bên trên, là giao thức truyền dữ liệu chính xác, tin cậy TCP đòi hỏi phải thiết lập kết nối trước khi truyền dữ liệu. Đó là quá trình bắt tay 3 bước(3-way handshake).
    [​IMG]
    Quy trình


    Client yêu cầu mở cổng cho một dịch vụ( vd: web port 80) bằng cách gửi gói tin SYN(gói tin TCP yêu cầu đồng bộ) tới server( máy chủ chứa dịch vụ web), trong gói tin thì số sequence number được gán một giá trị ngẫu nhiên X.
    Server sẽ trả về cho Client gói tin SYN – ACK chấp nhận cho thiết lập kết nối, tham số acknowledgment được gán giá trị bằng X+1, tham số sequence number được gán một giá trị ngẫu nhiên Y.
    Để hoàn tất quá trình thiết lập kết nối( 3 – way handshark) thì Client phải gửi cho Server thêm một gói tin là ACK tới Server, với số sequence number được gán là X+1, số acknowledgment được gán là Y+1(số Y nhận của Server) nhằm cho Server biết là đã thiết lập kêt nối với Client hợp lệ.
    Quá trình kết thúc truyền dữ liệu có 4 bước
    [​IMG]
    Các kết nối sử dụng TCP có 3 giai đoạn kết nối
    1. thiết lập kết nối.
    2. truyền dữ liệu.
    3. kết thúc kết nối.
    TCP giải quyết nhiều vấn đề nhằm cung cấp một dòng dữ liệu đáng tin cậy như:


    Dữ liệu đến đích đúng thứ tự.
    Sửa lỗi dữ liệu ở mức tối thiểu( thật ra là truyền lại).
    Dữ liệu trùng lặp bị loại bỏ.
    Các gói tin thất lạc/loại bỏ được gửi lại.
    Kiểm soát tắc nghẽn giao thông trong việc truyền/nhận dữ liệu.
    2.2. UDP (User Datagram Protocol)
    Một trong những giao thức cốt lõi của bộ giao thức TCP/IP. UDP không cung cấp sự tin cậy và thứ tự truyền nhận, các gói dữ liệu có thể đến không đúng thứ tự hay bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các ứng dụng truyền những file kích thước nhỏ và yêu cầu khắt khe về thời gian. Do bản chất không trạng thái nên UDP hữu dụng trong việc trả lời các truy vấn nhỏ cho số lượng lớn người yêu cầu. Được hỗ trợ bởi nhiều dịch vụ phổ biến như DNS, streaming media, VoiIP, TFTP
    UDP không thực hiện quá trình bắt tay khi gửi và nhận thông tin, do đó được gọi là connectionless( truyền không đảm bảo).
    UDP không đảm bảo cho các tầng phía trên rằng thông điệp đã được gửi và người gửi cũng không có trạng thái thông điệp UDP một khi gói tin đã được gửi.
    [​IMG]​ Cấu trúc gói tin UDP​ UDP thích hợp với rất nhiều ứng dụng dựa vào một số đặc điểm như sau
    - No connection establishment: TCP đòi hỏi quá trình bắt tay 3 bước trước khi thiết lập một kết nối, trong khi đó thì UDP không yêu cầu quá trình thiết lập này, do đó nó không làm chậm quá trình kết nối của mạng. Đó là lý do tại sao DNS lại chạy nhanh hơn khi sử dụng UDP( DNS chạy cả trên TCP lẫn UDP).
    - No connectin state: TCP lưu giữ trạng thái kết nối( thông số gửi và nhận gói tin, ACK, sequence number, ) trong buffer do đó làm tốn tài nguyên hệ thống. Trong khi đó UDP không hề lưu giữ thông số nào về gói tin đã gửi đi so đó làm tốn ít tài nguyên hệ thống hơn, giúp server có thể phục vụ nhiều client truy cập hơn.
    - Small segment header overhead: trong khi header của TCP chứa 20 bytes dữ liệu thì header của UDP chỉ có 8 bytes giúp UDP truyền đi nhanh hơn.
    - Unragulated send rate: TCP có cơ chế điều tiết tốc tộ truyền khi gặp những link hỏng hay khi mạng bắt đầu bị đụng độ, cơ chế này phục vụ cho những ứng dụng thời gian thực (có thể có những packet hỏng nhưng thời gian truyền lại packet đó sẽ ngắn). Bên cạnh đó, UDP chỉ phụ thuộc vào tốc độ của ứng dụng phục vụ việc truyền gói tin( như tốc độ CPU, clock-rate ) chứ không phụ thuộc vào mạng có bị đụng độ(congestion ) hay không.
    2.3. So sánh TCP & UDP
    Giống nhau:


    Đều là nền tảng trong việc truyền thông tin trên mạng IP, hỗ trợ nhiều ứng dụng.
    Có cơ chế checksum( 16 bits).
    Không hỗ trợ truyền dữ liệu theo dòng(stream).
    Không hỗ trợ Multi-homing.
    Khác nhau:


    TCP yêu cầu Length field trong header còn UDP thì không.
    Kích thước gói tin khác nhau(gói TCP Header 20 bytes, UDP chỉ có 8 bytes).
    Truyền dữ liệu không lỗi(do cơ chế sửa lỗi/ truyền lại).
    Truyền dữ liệu theo đúng thứ tự( dựa vào số sequence numbers).
    Truyền lại các gói dữ liệu bị mất trên đường truyền.
    Loại bỏ các gói dữ liệu trùng lặp.
    Có cơ chế tránh tắc nghẽn đường truyền.







    LỜI MỞ ĐẦU

    Hiện nay, với sự phát triển mạnh mẽ của các giải pháp công nghệ hạ tầng mạng truyền thông, hàng loạt các yêu cầu mới được đặt ra đối với các vấn đề khai thác và triển khai hệ thống trong môi trường mạng thực tiễn. Bài toán quản lý mạng viễn thông luôn là mối quan tâm hàng đầu và quan trọng cần giải quyết của các nhà khai thác viễn thông.
    Cùng với sự phát triển của công nghệ đã đáp ứng được phần nào yêu cầu phần cứng của hệ thống, tuy nhiên các thuật toán nhằm đạt được sự tối ưu luôn là một bài toán khó, đòi hỏi phải có sự nghiên cứu chuyên sâu và hiểu biết sâu sắc các vấn đề liên quan hệ thống mạng.
    Khi mạng viễn thông ngày càng phát triển rộng lớn, dịch vụ mới càng gia tăng, nhu cầu sử dụng cao, thì yêu cầu điều khiển luồng và chống tắc nghẽn trở nên là một vấn đề khó khăn và ngày càng phức tạp. Bài toán về điều khiển luồng và chống tắc nghẽn trong viễn thông trở nên được quan tâm.
    TCP (Transmission Control Protocol) là giao thức cho phép truyền dữ liệu một cách tin cậy giữa 2 máy tính bất kỳ. TCP dựa vào phương pháp điều khiển luồng theo cửa
    sổ trượt. Mặt khác, UDP là giao thức không đưa ra các cơ chế truyền tin một cách tin
    cậy, tuy nhiên UDP lại có đặc điểm là đơn giản, trễ truyền dữ liệu nhỏ, hiệu suất
    truyền lớn nên thích hợp cho các ứng dụng thời gian thực. Một câu hỏi đặt ra là khi
    truyền cả TCP và UDP trên mạng Internet thì 2 giao thức trên chia sẻ băng thông như
    thế nào, hoạt động của chúng ra sao trong trường hợp mạng xảy ra tắc nghẽn
    Do vậy với đề tài: “ Kiểm tra thuật toán điều khiển luồng sử dụng TCP”, em hi vọng mình có thêm những kiến thức hữu ích về vấn đề điều khiển luồng trong mạng viễn thông, từ đó có cái nhìn tổng quan hơn về mạng thông tin.
    Em xin cảm ơn sự giúp đỡ của thầy Nguyễn Hữu Thanh, đã giúp em hoàn thành bài tập lớn này. Nhưng do thời gian tìm hiểu có hạn và tầm hiểu biết còn hạn chế nên có thể không tránh khỏi những thiếu sót. Rất mong sự góp ý của thầy.





















    ĐỀ TÀI

    Kiểm tra thuật toán điều khiển luồng sử dụng TCP
    · Tạo ra một mạng cần mô phỏng sử dụng NS-2 giống như trên hình vẽ. Tạo ra
    2 kết nối TCP và UDP sử dụng nguồn/đích TCP và nguồn/đích UDP. Nguồn
    của TCP sử dụng TCP Reno (TCP Reno là một phiên bản của TCP đã được hỗ
    trợ trong NS-2).
    · Thiết lập cửa sổ chống tắc nghẽn tối đa (maximal congestion window size) của
    luồng TCP là 32 gói.
    · Kích thước các gói UDP và TCP là 512 bytes.
    · Chạy mô phỏng trong 200s.
    · Các nguồn UDP và TCP đều phát gói liên tục. Luồng UDP có tốc độ phát là
    512kbit/s (sử dụng nguồn CBR)

    [​IMG]

    8.1. Chạy mô phỏng và đo băng thông trung bình của luồng TCP (băng thông trung
    bình được tính bằng: Số byte được truyền đi của luồng TCP/thời gian mô phỏng)
    8.2. Lặp lại thí nghiệm 7.1. trong trường hợp tốc độ phát của luồn UDP là 1 Mbit/s, 2
    Mbit/s, 3 Mbit/s và 4Mbit/s.
    8.3. Vẽ đồ thị thể hiện băng thông của TCP so sánh với băng thông của UDP.
    8.4. Trong trường hợp tốc độ của luồng UDP là 500kbit/s và 4Mbit/s, vẽ kích thước
    cửa sổ trượt “congestion window” của TCP (trục tung: kích thước cửa sổ, trục hoành:
    thời gian).
    8.5. Có kết luận gì về kích thước của Congestion Window và băng thông của luồng
    TCP trong các trường hợp tải UDP đã xét.




    CƠ SỞ LÝ THUYẾT

    1.Vấn đề điều khiển luồng và chống tắc nghẽn trong viễn thông

    Thực trạng hiện nay cho thấy yêu cầu trao đổi thông tin ở mọi lúc, mọi nơi là rất lớn, trong khi đó tài nguyên mạng chỉ ở mức độ giới hạn, do đó việc gây ra tắc nghẽn là điều không tránh khỏi. Vì vậy cần phải có biện pháp để chống tắc nghẽn xảy ra.
    Điều khiển luồng là phương pháp kiểm soát thông tin giữa hai thiết bị đầu cuối cụ thể, nó là một trong những biện pháp giúp cho lưu thông lưu lượng giữa các thiết bị thu và phát, đảm bảo việc truyền tin của phía phát không vượt quá khả năng xử lý của phía thu. Cơ chế điều khiển luồng được thiết kế để điều khiền luồng dữ liệu giữa giữa người nhận và người gửi sao cho vùng đệm của người nhận không bị tràn. Nếu bị tràn, các khung hoặc gói dữ liệu bị mất. Điều khiển luồng được dùng trong tầng liên kết dữ liệu để điều khiển các liên kết điểm – điểm và trong tầng chuyển tải để điều khiển luồng end-to-end trên mạng có định tuyến.
    Cơ chế điều khiển luồng và điều khiển tắc nghẽn theo phương pháp cửa sổ được hoạt động tương tự như các cơ chế phát lại ARQ( Automatic Repeat Request - yêu cầu lặp lại tự động). Cơ chế phát lại này được chia làm 3 loại với những đặc điểm và hoạt động khác nhau.
     

    Các file đính kèm:

Đang tải...