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 : 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
• Đị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ẽ 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 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 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)
- 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
• 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