đề tài mô phỏng hoạt động của giao thức rip

9 1.2K 18
đề tài  mô phỏng hoạt động của giao thức rip

Đang tải... (xem toàn văn)

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO BÀI TẬP MÔN: THỰC HÀNH LẬP TRÌNH MẠNG ĐỀ TÀI : phỏng hoạt động của giao thức RIP GIẢNG VIÊN HƯỚNG DẪN : BÙI TRỌNG TÙNG Mục lục I. TỔNG QUAN VỀ ĐỀ TÀI 1. Giới thiệu chung • Định tuyến là quá trình tìm đường đi cho gói tin,để chuyển nó từ mạng này sang mạng khác. Định tuyến là một chức năng không thể thiếu được của mạng viễn thông trong quá trình thực hiện kết nối các cuộc gọi trong mạng, và nó cũng được coi là phần trung tâm của kiến trúc mạng, thiết kế mạng và điều hành quản trị mạng. Mạng hiện đại hiện nay có xu hướng hội tụ các dịch vụ mạng, yêu cầu đặt ra từ phía người sử dụng là rất đa dạng và phức tạp, một trong những giải pháp cần thiết cho mạng viễn thông hiện đại là các phương pháp định tuyến phù hợp để nâng cao hiệu năng mạng. Đề tài này sẽ phỏng hoạt động của giao thức định tuyến RIP – một giao thức định truyền thống cơ bản của mạng máy tính 2. Mục đích của đề tài • Cài đặt chương trình phỏng được các chức năng cơ bản của giao thức RIP 3. Kiến thức cơ bản • Định nghĩa o RIP là 1 giao thức định tuyến miền trong (Interior Gateway Routing Protocol) sử dụng thuật toán vector khoảng cách được sử dụng cho các hệ tự trị (Autonomous System ). • Đặc điểm  RIP chọn đường theo thuật toán vector khoảng cách.RIP o Trao đổi bảng chọn đường. o Trao đổi theo chu kì - Các vector khoảng cách được trao đổi định kỳ mỗi 30s - Mỗi thông điệp chứa tối đa 25 mục o Cập nhật bảng định tuyến - Gửi thông điệp cho nút hàng xóm mỗi khi có thay đổi - Nút hàng xóm sẽ cập nhật bảng chọn đường của nó. o Các bộ đếm thời gian của RIP: - Update timer:  Dùng để trao đổi thông tin cứ sau 30s - Invalid thimer  Khởi tạo lại mỗi khi nhận được thông tin chọn đường  Nếu sau 180s mà không nhận được thông tin thì chuyển sang trạng thái Hold Down - Hold down timer  Giữ lại trạng thái Hold Down trong 180s  Chuyển sang trạng thái Down - Flush timer  Khởi tạo lại mỗi khi nhận được thông tin chọn đường  Sau 120s xóa mục tương ứng trong bảng chọn đường  RIP chạy trên nền UDP – port 520.  RIPv2 là một giao thức classless còn RIPv1 lại là một giao thức classful.  Cách hoạt động của RIP có thể dẫn đến loop nên một số quy tắc chống loop và một số timer được đưa ra. Các quy tắc và các timer này có thể làm giảm tốc độ hội tụ của RIP. • Thuật toán vector khoảng cách o Là 1 thuật toán định tuyến tính con đường ngắn nhất giữa các cặp nút trong mạng dựa trên thuật toán Bellman-Ford.Các nút mạng thực hiện quá trình trao đổi thông tin trên cơ sở địa chỉ đích nút kế tiếp và con đường ngắn nhất đến đích o Thuật toán gồm các bước sau : - Mỗi nút tính khoảng cách giữa nó và tất cả các nút khác trong hệ thống và lưu trữ thông tin này trong 1 bảng - Mỗi nút gửi bảng thông tin của mình cho tất cả các nút lân cận - Khi 1 nút nhận được các bảng thông tin từ các nút lân cận nó tính toán tuyến đường ngắn nhất tới tất cả các nút khác và cập nhật bảng thông tin của mình II. KỊCH BẢN CHƯƠNG TRÌNH Tất cả router có vai trò ngang nhau và đều lần lượt thực hiện các công việc • Mỗi router mở 1 socket và thiết lập các thông số ban đầu cho socket đó Khởi tạo bộ đếm thời gian • Router khởi tạo danh sách hàng xóm từ file đầu vào • Router chờ tin nhắn trên cổng mà lúc khởi tạo đã mở. • Tùy thuộc loại tin nhắn đến ta sẽ xử lí theo cách khác nhau. o Tin nhắn phản hồi (RESPONSE) - Kiểm tra tin nhắn hợp lệ - Reset lại bộ đếm thời gian cho router vừa gửi tin - Tách phần tiêu đề của gói tin đến và đọc phần thân của gói tin để lấy thông tin bảng định tuyến của router hàng xóm - Đối với mỗi thông tin đọc được lần lượt xét các trường hợp :  Nếu chưa có trong bảng định tuyến và khoảng cách hợp lệ(<16) thì : + thêm vào bảng định tuyến + bắt đầu bộ đếm thời gian + gắn cờ đánh dấu thay đổi  Nếu đã có trong bảng định tuyến và khoảng cách = 16 thì + xóa router trong bảng + gọi hàm khởi tạo ngay lập tức send_update(TRIGUPDATE) o Tin nhắn yêu cầu(REQUEST) - Gọi hàm construct_regular_update và đóng gói toàn bộ thông tin bảng định tuyến của - Gửi thông tin vừa đóng gói cho router yêu cầu  Nếu router có địa chỉ router tiếp theo là router vừa gửi tin response thì reset lại bộ đếm thời gian cho nó. + Nếu thông tin về khoảng cách thay đổi thì gán lại thông tin về khoảng cách  Nếu router có địa chỉ router tiếp theo không phải là router vừa gửi tin response nhưng có khoảng cách mới ngắn hơn thì cũng gán lại thông tin khoảng cách • Bắt đầu bộ đếm thời gian định kì cho tất cả các router hàng xóm • Sau 1 khoảng thời gian định kì UPDATE_TIME (5 giây) thì chương trình sẽ gọi hàm construct_regular_update và đóng gói toàn bộ thông tin bảng định tuyến của nó • Gửi thông tin vừa đóng gói cho tất cả router trong danh sách hàng xóm • Từ lúc bắt đầu bộ đếm thời gian thứ 1 sau một khoảng thời gian TIME_OUT (10 giây) nếu các router không có tin phản hồi (RESPONSE) router sẽ gọi hàm time_out - Đánh dấu khoảng cách lên 16 - Gọi hàm cập nhật ngay lập tức send_update(TRIGUPDATE) - Bắt đầu bộ đếm thứ 2 - Từ lúc bắt đầu bộ đếm thứ 2 sau một khoảng thời gian GARBAGE (20 giây) nếu router hàng xóm vẫn không có tin phản hồi thì xóa router ra khỏi bảng định tuyến • Menu cho phép người dùng 1 số công việc - Thêm 1 router hàng xóm: - Xóa 1 router : - Hiển thị thông tin bảng định tuyến - Thoát III.CẤU TRÚC CHƯƠNG TRÌNH 1.Cấu trúc dữ liệu Chương trình sử dụng danh sách liên kết để lưu trữ thông tin các router hàng xóm và thông tin bảng định tuyến • Kiểu dữ liệu list node tạo ra danh sách liên kết Gồm 1 trường : - struct listnode *next : Con trỏ đến node tiếp theo • Kiểu dữ liệu phần tử của bảng định tuyến: Gồm 7 trường : - listnode *lnode - struct in_addr destination : Địa chỉ đích - uint32_t metric : Khoảng cách ngắn nhất đến router đích - struct in_addr nexthop : Địa chỉ Router tiếp theo để đến đích - byte routechanged : Cờ để xác định xem phần tử này có thay đổi khi cập nhật không - void *timeout_tmr : Hàm sẽ được gọi sau khi bộ đếm thứ nhất kết thúc - void *garbage_tmr : Hàm sẽ được gọi sau khi bộ đếm thứ hai kết thúc Khuôn dạng gói tin RIP • Kiểu dữ liệu phần tiêu đề của gói tin Gồm 3 trường : - byte command : Mã lệnh 1 = REQUEST, 2 = RESPONSE - byte version : Phiên bản địa chỉ IP - short int _zero : Mặc định bằng 0 • Kiểu dữ liệu phần thân của gói tin Gồm 6 trường : - short int addrfamily : Địa chỉ router tiếp theo - short int _zero : Mặc định bằng 0 - struct in_addr destination : Địa chỉ router đích - uint32_t _zero1 : Mặc định bằng 0 - uint32_t _zero2 : Mặc định bằng 0 - uint32_t metric : Khoảng cách ngắn nhất đến router đích • Kiểu neighbour lưu trữ thông tin cho mỗi router hàng xóm Gồm 2 trường : - listnode *lnode - struct in_addr addr : Địa chỉ của router • Con trỏ đến đầu danh sách các router hàng xóm - struct neighbour *neighbours; • Con trỏ đến đầu bảng định tuyến - struct route_entry *route_table; • File Log - Các hàm sử dụng khi chạy được lưu trong file InstructionLog.txt - Ghi lại 1 số kết quả khi có cập nhật hoặc thay đổi bảng định tuyến ở file ResultLog.txt và log.txt 2.Các hàm chính o init(argv[1]) • Router mở file chứa danh sách các hàng xóm (là tham số argv[1] truyền vào chương trình) • Đọc và tạo danh sách liên kết neighbours lưu trữ thông tin về hàng xóm • Gửi tin yêu cầu cập nhật cho tất cả các router hàng xóm nó vừa đọc được • Gửi thông tin của chính nó cho tất cả router hàng xóm(loại tin phản hồi) • bắt đầu bộ đếm thời gian cho mỗi router hàng xóm o void input() • Chờ tin nhắn gửi đến qua socket • Kiểm tra kiểu tin nhắn là yêu cầu hay trả lời và xử lí o int send_update(int updatetype) • Nếu cập nhật định kì (REGULAR_UPDATE) thì gửi thông tin toàn bộ bảng cho tất cả các router hàng xóm • Nếu cập nhật lập tức (TRIGGER_UPDATE) thì chỉ gửi thông tin có sự thay đổi o void *start_timer(timer_time_t duration, fnptr handler, void *arg1, void *arg2,char recursion) • Hàm start sẽ gọi hàm handler sau 1 khoảng thời gian duration với 2 tham số của hàm là arg1 và arg2. o timer_info_ptr_t reset_timer (timer_info_ptr_t handle) • Hàm reset_timer sẽ khởi tạo lại bộ đếm cho hàm handle đã được gọi hàm start_timer từ trước đó o void cli() Hiển thị menu và cho phép thực hiện các chức năng thêm xóa ,xem thông tin và thoát IV. KẾT LUẬN ĐÁNH GIÁ 1.Chính xác • Chương trình hoạt động chính xác ở hầu hết các trường hợp đơn giản không quá phức tạp,thông tin được cập nhật đầy đủ và chính xác • Tuy nhiên 1 số trường hợp vòng lặp thì 1 bảng định tuyến có thể xuất hiện 1 router 2 lần nhưng sau 1 khoảng thời gian sẽ bị xóa do được cập nhật 2 .Hiệu năng • Chương trình chạy không được nhanh do phải xử lí nhiều hàm ghi nhật kí,và sẽ chạy chậm nếu số lượng router trong mạng lớn do khối lượng tính toán tăng lên . năng mạng. • Đề tài này sẽ mô phỏng hoạt động của giao thức định tuyến RIP – một giao thức định truyền thống cơ bản của mạng máy tính 2. Mục đích của đề tài • Cài đặt chương trình mô phỏng được. TRUYỀN THÔNG BÁO CÁO BÀI TẬP MÔN: THỰC HÀNH LẬP TRÌNH MẠNG ĐỀ TÀI : Mô phỏng hoạt động của giao thức RIP GIẢNG VIÊN HƯỚNG DẪN : BÙI TRỌNG TÙNG Mục lục I. TỔNG QUAN VỀ ĐỀ TÀI 1. Giới thiệu chung •. tương ứng trong bảng chọn đường  RIP chạy trên nền UDP – port 520.  RIPv2 là một giao thức classless còn RIPv1 lại là một giao thức classful.  Cách hoạt động của RIP có thể dẫn đến loop nên một

Ngày đăng: 09/04/2014, 13:11

Từ khóa liên quan

Mục lục

  • I. TỔNG QUAN VỀ ĐỀ TÀI

    • 1. Giới thiệu chung

    • 2. Mục đích của đề tài

    • 3. Kiến thức cơ bản

    • II. KỊCH BẢN CHƯƠNG TRÌNH

    • III.CẤU TRÚC CHƯƠNG TRÌNH

      • 1.Cấu trúc dữ liệu

      • 2.Các hàm chính

      • IV. KẾT LUẬN ĐÁNH GIÁ

        • 1.Chính xác

        • 2 .Hiệu năng

Tài liệu cùng người dùng

Tài liệu liên quan