Đồ án Chất lượng dịch vụ trên Linux

MỤC LỤC

 

CHƯƠNG I: TỔNG QUAN

I.1 Đặt vấn đề

I.2 Nhiệm vụ của đồ án

I.2.1 Bài toán

I.2.2 Vấn đề cần giải quyết

I.3 Cấu trúc đồ án

 

CHƯƠNG II: LÝ THUYẾT CHẤT LƯỢNG DỊCH VỤ (QoS)

II.1 Định nghĩa QoS

II.2 Các tiêu chí đánh giá QoS

II.3 Phân lớp lưu lượng

II.3.1 Phân lớp lưu lượng ở mức lớp mạng

II.3.2 Phân lớp lưu lượng ở mức liên kết dữ liệu

II.4 Giải pháp QoS

II.4.1 Mô hình dịch vụ cố gắng tối đa

II.4.2 Mô hình tích hợp dịch vụ

II.4.3 Mô hình phân biệt dịch vụ

II.5 Quản lý tắt nghẽn

II.5.1 Các khái niệm hàng đợi

II.5.2 Tránh nghẽn

II.5.3 Kiểm soát và định hướng

II.6 Phân biệt dịch vụ trong Linux

CHƯƠNG III: GIẢI QUYẾT BÀI TOÁN

III.1 Mô hình hệ thống

III.1.1 Giới thiệu

III.1.2 Chức năng từng thành phần

III.1.2.1 Máy chủ

III.1.2.2 Bộ định tuyến biên (Edge Router)

III.1.2.3 Bộ định tuyến nhân (Core Router)

III.1.2.4 Máy trạm

III.2 Các bước triển khai

III.2.1 Cấu hình định tuyến

III.2.2 Cấu hình các dịch vụ trên máy chủ

III.2.2.1 Cấu hình FTP Server

III.2.2.2 Cấu hình Web Server

III.2.3 Triển khai QoS

 

CHƯƠNG IV: KẾT QUẢ THỰC NGHIỆM

IV.1 Cách thức kiểm tra chất lượng dịch vụ trên Linux

IV.1.1 Kiểm tra giá trị trường DSCP

IV.1.2 Kiểm tra thông số chất lượng dịch vụ

IV.2 Kịch bản 1

IV.2.1 Nội dung

IV.2.2 Thực hiện

IV.2.3 Kiểm tra

IV.2.3.1 Trước khi đánh dấu gói tin

IV.2.3.2 Sau khi đánh dấu gói tin

IV.2.4 Kết luận

IV.3 Kịch bản 2

IV.3.1 Nội dung

IV.3.1.1 Băng thông của máy trạm 1

IV.3.1.2 Băng thông của máy trạm 2

IV.3.2 Thực hiện

IV.3.3 Kiểm tra

IV.3.3.1 Trước khi hạn chế băng thông

IV.3.3.2 Sau khi hạn chế băng thông

IV.3.4 Kết luận

IV.4 Kịch bản 3

IV.4.1 Nội dung

IV.4.2 Thực hiện

IV.4.3 Kiểm tra

IV.4.3.1 Nếu chỉ có một lưu lượng HTTP

IV.4.3.2 Nếu có đồng thời lưu lượng HTTP và FTP

IV.4.4 Kết luận

 

CHƯƠNG V: KẾT LUẬN

V.1 Tóm lược vấn đề

V.2 Phương pháp giải quyết

V.3 Kết quả đạt được

V.4 Điểm nổi bật

V.4.1 Hiện thực mô hình phân biệt dịch vụ

V.4.2 Tính linh động trong việc triển khai chất lượng dịch vụ

V.5 Hạn chế

V.6 Phương hướng mở rộng đề tài.

 

TÀI LIỆU THAM KHẢO

PHỤ LỤC

 

 

doc100 trang | Chia sẻ: netpro | Lượt xem: 2087 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Chất lượng dịch vụ trên Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng. Bộ định tuyến mềm có các thuận lợi như sau: giá thành thấp, dễ dàng thay đổi hơn, và ngày càng phổ biến hơn. Hệ điều hành được sử dụng cho bộ định tuyến mềm là Linux vì Linux là hệ điều hành mã nguồn mở với nhiều chức năng nổi bật. Nhân Linux cho phép mở rộng đa dạng chức năng điều khiển lưu lượng. Điều khiển lưu lượng là một mã cứng (hard-coded) có thể được tải trong lúc biên dịch nhân hoặc có thể được tải động sau khi hệ thống bắt đầu trong thời gian chạy. Các thành phần mới như bộ giám sát (shaper), bộ đánh dấu (marker), bộ đếm (meter), bộ hủy ( dropper) có thể được thêm hoặc xóa bỏ thông qua dòng lệnh. Điều khiển lưu lượng có thể biên dịch một nhân cho một nút, nó cũng có thể cấu hình phân biệt dịch vụ ở bộ định tuyến biên, bộ định tuyến lõi. Chất lượng dịch vụ được cài đặt bằng cách cấu hình mô đun điều khiển lưu lượng để nó điều khiển các luồng lưu lượng, qua đó cung cấp các dịch vụ chuyển tiếp khác nhau cho các lưu lượng khác nhau. Mô đun điều khiển lưu lượng thường được cấu hình bằng tiện ích TC trong phần mềm iproute2. Mô đun điều khiển lưu lượng bao gồm 4 thành phần chính có quan hệ chặt chẽ với nhau là cơ chế hàng đợi (Queueing discipline), bộ lọc (filter), lớp (class) và kiểm soát (policy). Mỗi thiết bị mạng có một cơ chế hàng đợi, cơ chế hàng đợi quyết định cách xử lý gói tin, nó sử dụng bộ lọc để phân gói tin vào các lớp, các gói tin trong một lớp có thể được phân vào các lớp nhỏ hơn là con của lớp này, một lớp không có lớp con là lớp lá (leaf class), mỗi lớp lá dùng một cơ chế hàng đợi để quản lý các gói tin được phân vào nó. Các gói tin trong một lớp sẽ được cơ chế hàng đợi đối xử như nhau và các gói tin thuộc các lớp khác nhau sẽ được đối xử khác nhau tùy vào mức ưu tiên của chúng. Cơ chế hàng đợi (Queueing discipline): điều khiển gói tin nào được sắp xếp trên thiết bị xem xét. Ở mỗi cơ chế hàng đợi có thể là 1 hàng đợi FIFO của 16 gói tin. Các loại cơ chế hàng đợi được hỗ trợ trong Linux: Class Based Queue (CBQ). Token Bucket Flow (TBF). First in First out (FIFO). Asynchronous Transfer Mode (ATM). Random Early Detection (RED). Generalized RED (GRED). DiffServ Marked (DS_MARK). Bộ lọc (Filter): Dùng cơ chế hàng đợi để gán các gói nhận được tới lớp của nó. Bộ lọc sử dụng sự khác nhau của đặc tính khác nhau của gói tin như địa chỉ nguồn, địa chỉ đích, số cổng và byte To Strong phần đầu của IP header như là tham số của sự phân lớp. Trong Linux có vài kiểu phân lớp như: FW_dựa trên FireWall để đánh dấu gói tin, U32_dựa trên trường header của gói tin để đánh dấu gói tin. Lớp (Class): Sử dụng cơ chế hàng đợi để lưu trữ gói tin trong chúng. Một cơ chế hàng đợi dùng các lớp để xem xét các lớp lưu lượng trong các hướng khác nhau. Thông thường mỗi lớp chỉ dành riêng cho một hàng đợi, nhưng 1 hàng đợi có thể được chia sẽ cho nhiều lớp. Hinh 2.18: Cơ chế hàng đợi với nhiều lớp Kiểm soát (Policy): kiểm soát tác động đến tất cả các hoạt động điều khiển lưu lượng dựa trên một vài giá trị của lưu lượng. Nó đảm bảo chăc chăn lưu lượng không vượt quá ranh giới nào đó như ranh giới độ trễ, ranh giới băng thông. Cơ chế hàng đợi DS_MARK: DS_MARK có trách nhiệm hoạt động trên các gói tin được sắp xếp như sau: Rút và lưu trữ trường DSCP vào trong trường bộ đệm lưu trữ “skb -> tc_index". Skb -> tc_index là một trường mới trong bộ đệm gói tin mô tả cấu trúc sk_buff. Xác định lớp thuộc về trường DSCP đó. Đánh dấu lại và thay đổi trường DSCP của các gói tin đã được sắp xếp. Hinh 2.19: Hàng đợi DSMARK Cơ chế hàng đợi GRED: là một thực thi mở rộng của RED (Random Early Detection), cung cấp khả năng đánh rớt cần thiết cho thực thi quyền ưu tiên đánh rớt của AF PHB. GRED cung cấp khả năng sử dụng nhiều hàng đợi RED, tạo hơn một hàng đợi RED trong hàng đợi vật lý. Mỗi hàng đợi RED được gọi là hàng đợi ảo và hoạt động như hàng đợi RED chuẩn. Mỗi hàng đợi ảo được lựa chọn dựa trên độ ưu tiên của tham số cấu hình quyết định bởi người quản trị và được lưu trữ trong bộ đệm lưu trữ skb -> tcindex. Bộ phân lớp Tcindex: Phân loại Tcindex dùng thông tin DSCP được lưu trữ trong skb -> tc_index để chọn lớp. Được dùng để thẩm tra và tìm kiếm dữ liệu từ skb -> tc_index lớp ID của các lớp tương ứng để thỏa mãn DSCP được lưu trữ. CHƯƠNG III GIẢI QUYẾT BÀI TOÁN III.1 Mô hình hệ thống Từ nhu cầu của công ty TNHH NetNam được trình bày ở mục I.2.1, đồ án cần triển khai chất lượng dịch vụ như sau: Chỉnh sửa trường DSCP để hệ thống có độ ưu tiên xử lý khác nhau đối với từng loại dịch vụ. Ví dụ Tại thời điểm nghẽn mạch, các gói tin FTP sẽ được hệ thống ưu tiên xử lý trước các gói tin HTTP. Giới hạn băng thông cho từng loại dịch vụ của từng chi nhánh. Tùy thuộc vào quy mô mà mỗi chi nhánh sẽ có nhu cầu về tổng băng thông khác nhau. Ngoài ra, tại mỗi chi nhánh cũng có nhu cầu băng thông cho từng loại dịch vụ cũng khác nhau. Ví dụ Chi nhánh 1 cần băng thông là 3MB/s và có nhu cầu dữ liệu FTP bằng 40% tổng băng thông của chi nhánh 1. Trong khi đó, chi nhánh 2 có quy mô lớn hơn, cần băng thông 5MB/s và nhu cầu FTP bằng 30% tổng băng thông của chi nhánh 2. Sau khi triển khai chất lượng dịch vụ thành công thì tại thời điểm nghẽn mạng, các lưu lượng sẽ có thứ tự ưu tiên xử lý khác nhau và các dịch vụ mạng luôn đảm bảo là có thể truy xuất được (vì đã khắc phục hiện tượng các dịch vụ chiếm băng thông của nhau). Vì mô hình hệ thống mạng của công ty TNHH NetNam gồm rất nhiều máy tính, do vậy để thuận tiện trong việc demo, đồ án đã vẽ mô hình thực nghiệm đơn giản hơn nhưng cũng bao gồm các thành phần cơ bản của hệ thống mạng công ty TNHH NetNam. Mô hình thực nghiệm này gồm 5 máy tính đó là: 1 máy chủ, 2 bộ định tuyến và 2 máy trạm. Hình 3.1: Mô hình hệ thống Có 2 vấn đề mà mô hình thực nghiệm có hơi khác so với mô hình hệ thống mạng công ty TNHH NetNam đó là: Mô hình thực nghiệm chỉ xây dựng Web Server và FTP Server ( không xây dựng Mail Server) trên máy chủ. Lý do là chỉ cần 2 dịch vụ mạng tại máy chủ là đủ để demo việc chỉnh sửa trường DSCP và giới hạn băng thông cho từng loại dịch vụ. Băng thông được giới hạn rất nhỏ so với nhu cầu thực tế. Lý do là mô hình thực nghiệm được demo qua hệ thống các máy ảo. Do đó, băng thông giữa các máy là rất lớn. Nếu giới hạn băng thông sao cho giống với thực tế thì trước và sau khi giới hạn băng thông, các gói tin đều có thời gian truy xuất dữ liệu rất nhanh (vì lượng truy xuất chưa đủ nhiều kết hợp với băng thông rất lớn nên hiện tượng nghẽn mạch, cạn kiệt băng thông rất khó xảy ra). Do đó, để thấy rõ sự khác biệt giữa trước và sau khi giới hạn băng thông, mô hình thực nghiệm đã giới hạn băng thông rất nhỏ (bằng 1024 kilobit/s). III.1.1 Giới thiệu Mô hình hệ thống bao gồm 5 máy tính chạy hệ điều hành Linux, được thiết kế để làm nổi bật chức năng chất lượng dịch vụ (QoS). Gồm các thành phần sau: 1 máy chủ : triển khai các dịch vụ FTP, HTTP. 1 bộ định tuyến biên (Edge Router): phân lọai các luồng dữ liệu vào một lớp xác định dựa vào các trường trong IP header. Sau đó, đánh dấu gói tin trong trường DSCP. 1 bộ định tuyến nhân (Core Router): dựa theo các giá trị DSCP đã được đánh dấu ở bộ định tuyến biên mà có các chính sách khác nhau trong việc chuyển tiếp các gói tin đến hai máy trạm. Các chính sách có thể là: giới hạn băng thông khác nhau cho mỗi loại lưu lượng (FTP, HTTP,…), cho phép mượn băng thông khi loại lưu lượng khác không sử dụng hết băng thông tối thiểu đã được cấp,… 2 máy trạm: tạo lưu lượng FTP và HTTP đến máy chủ. Các lưu lượng này sẽ đi qua bộ định tuyến biên và bộ định tuyến nhân. Do đó, sẽ được 2 bộ định tuyến này có các chính sách khác nhau về vấn đề chất lượng dịch vụ. III.1.2 Chức năng từng thành phần Các thành phần trong mô hình hệ thống đều thể hiện những chức năng chính của mô hình phân biệt dịch vụ (DiffServ). Cụ thể như sau: III.1.2.1 Máy chủ (Server) Đảm nhận chức năng làm FTP Server và Web Server. Mục đích để tạo lưu lượng FTP và HTTP giữa máy chủ và các máy trạm. Vai trò máy chủ trong mô hình là để tạo ra các dịch vụ khác nhau. Mỗi loại dịch vụ được tạo ra sẽ có chính sách chất lượng dịch vụ khác nhau. III.1.2.2 Bộ định tuyến biên (Edge Router) Gồm 2 chức năng chính: Phân lớp (classification): phân lọai các luồng dữ liệu vào một lớp xác định dựa vào các trường trong IP header như : địa chỉ nguồn, địa chỉ đích, port number… hoặc là giá trị DSCP đã được gán trước đó. Trong mô hình hệ thống đã trình bày ở trên, bộ định tuyến biên chỉ phân lớp dựa vào port nguồn của gói tin. Cụ thể, nếu các gói tin xuất phát từ máy chủ là gói tin FTP, tức có địa chỉ port nguồn là 20 và 21; thì sẽ được phân loại vào lớp dịch vụ (class of service) riêng biệt. Tương tự như vậy, nếu gói tin xuất phát từ máy chủ là gói tin HTTP (có port nguồn là 80), thì cũng sẽ được phân loại vào lớp dịch vụ riêng biệt khác với lớp dịch vụ đã phân loại cho gói tin FTP. Như đã giới thiệu ở chương 2, trình phân lớp u32 (classifier u32) hay còn gọi là bộ lọc u32 (filter u32) là một công cụ hiệu quả để phân lớp các gói tin dựa vào bất kì trường nào thuộc IP header. Do đó, trong mô hình hệ thống này, bộ định tuyến biên sẽ sử dụng bộ lọc u32 để phân lớp cho các gói tin. Dưới đây là các dòng lệnh thực hiện quá trình phân lớp: tc filter add dev eth1 parent 1:0 protocol ip prio 1 handle 1:0 u32 divisor 1 tc filter add dev eth1 parent 1:0 prio 1 u32 match ip sport 21 0xffff flowid 1:1 tc filter add dev eth1 parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:2 tc filter add dev eth1 parent 1:0 prio 1 u32 match ip src 0/0 flowid 1:3 Hình 3.2: Lưu đồ minh họa việc phân lớp gói tin Nhìn vào 3 lệnh trên có thể thấy ngay rằng đối với các gói tin có port nguồn là 21 (match ip sport 21 0xffff) sẽ được phân loại vào lớp 1:1 (flowid 1:1). Tương tự như vậy đối với gói tin có port nguồn là 80 (match ip sport 80 0xffff) sẽ được phân loại vào lớp 1:2 (flowid 1:2). Các gói tin không thuộc 2 trường hợp trên sẽ được phân loại vào lớp 1:3 (flowid 1:3). Ý nghĩa của từng tham số lệnh sẽ được nói rõ hơn ở chương 4. Đánh dấu gói tin (Marking): các lớp dịch vụ sẽ có các chính sách khác nhau đối với việc đánh dấu vào trường DSCP. Mặc định nếu không được đánh dấu thì trường DSCP của các gói tin sẽ mang giá trị là 0x00. Cơ chế hàng đợi dsmark (dsmark queuing discipline) sẽ được áp dụng cho mô hình hệ thống. Cụ thể, sau khi gói tin các gói tin đã được phân lớp với lệnh “tc filter”, thì mỗi lớp sẽ dùng cơ chế hàng đợi dsmark để đánh dấu giá trị thích hợp vào trường DSCP của từng gói tin. Các dòng lệnh thực hiện quá trình đánh dấu gói tin được áp dụng cho mô hình hệ thống như sau: tc qdisc add dev eth1 handle 1 root dsmark indices 64 tc class change dev eth1 classid 1:1 dsmark mask 0x3 value 0x26 tc class change dev eth1 classid 1:2 dsmark mask 0x3 value 0x14 tc class change dev eth1 classid 1:3 dsmark mask 0x3 value 0x00 Hình 3.3: Minh họa quá trình đánh dấu gói tin Từ 3 lệnh trên ta có nhận xét sau: các gói tin thuộc lớp 1:1 (classid 1:1) sẽ được đánh dấu trong trường DSCP là 0x26. Tương tự, đối với lớp 1:2 (classid 1:2) sẽ được đánh dấu là 0x14 và các trường hợp còn lại sẽ đánh dấu là 0x00. Như đã phân lớp ở trên thì các gói tin FTP được phân loại vào lớp 1:1, gói tin HTTP được phân vào lớp 1:2 và các trường hợp còn lại được phân vào lớp 1:3. Do đó, sau khi trải qua giai đoạn đánh dấu gói tin, trường DSCP trong các gói tin FTP sẽ giá trị là 0x26. Trong khi đó, trường DSCP trong các gói tin HTTP sẽ có giá trị là 0x14 và các gói tin không thuộc 2 loại trên sẽ được đánh dấu là 0x00. Các tham số khác của lệnh sẽ được nói rõ hơn ở chương 4. III.1.2.3 Bộ định tuyến nhân (Core Router) Thực hiện nhiệm vụ quan trọng nhất trong việc triển khai chất lượng dịch vụ. Bộ định tuyến nhân sẽ đảm nhận 2 chức năng sau: Phân lớp (classification): khi bộ định tuyến nhân nhận được một gói tin, nó sẽ đọc giá trị trong trường DSCP rồi phân loại vào từng lớp dịch vụ tương ứng. Việc phân loại gói tin có rất nhiều trình phân lớp (classifier) có thể đảm nhiệm như: u32 (phân lớp dựa vào bất kì trường nào nằm trong IP header), tcindex (thường sử dụng để phân lớp dựa vào trường tos)…Trong mô hình hệ thống này sẽ sử dụng u32 làm trình phân lớp. Các dòng lệnh được sử dụng để phân lớp là: tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip tos 0x26 0xff flowid 1:21 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip tos 0x14 0xff flowid 1:22 tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 0/0 flowid 1:23 Hình 3.4: lưu đồ minh họa việc phân lớp gói tin Nhìn vào 2 dòng lệnh trên có thể nhận thấy ngay cách xử lý của trình phân lớp u32 như sau: nếu gói tin nhận được có trường DSCP mang giá trị 0x26 (tức gói tin FTP) thì gói tin sẽ được đẩy vào lớp 1:21; còn nếu trường DSCP mang giá trị 0x14 (tức gói tin HTTP) thì gói tin sẽ được đẩy vào lớp 1:22. Trường hợp còn lại sẽ được đẩy vào lớp 1:23. Thực hiện chính sách chất lượng dịch vụ tương ứng đối với từng lớp dịch vụ. Mỗi lớp dịch vụ sẽ được đảm bảo chất lượng dịch vụ khác nhau. Có rất nhiều cơ chế hàng đợi có thể thực hiện nhiệm vụ quan trọng này như: SFQ, HTB,…Trong số đó, cơ chế hàng đợi HTB (HTB queuing discipline) là thường được sử dụng nhất. Cơ chế hàng đợi HTB có rất nhiều tính năng hay, nhưng trong mô hình hệ thống này đã lựa ra 2 tính năng điển hình nhất để làm rõ chức năng bảo đảm chất lượng dịch vụ trên hệ thống mạng. Đó là 2 chức năng sau: Hạn chế băng thông, không cho phép mượn băng thông của các lớp dịch vụ khác. Hạn chế băng thông, cho phép mượn băng thông của các lớp dịch vụ khác. Nghĩa là, nếu có lớp dịch vụ đang thiếu băng thông (VD: lưu lượng FTP được cấp phát băng thông 200 kilobit/giây nhưng vẫn chưa đủ nhanh) thì nó sẽ mượn băng thông của lớp dịch vụ khác đang không sử dụng hết băng thông của nó (VD: tại thời điểm tải dữ liệu FTP mà băng thông dành cho lưu lượng HTTP không sử dụng hết 100 kilobit/giây thì băng thông của lưu lượng FTP được tăng lên nhờ việc mượn băng thông của lưu lượng HTTP). Cụ thể, bộ định tuyến nhân trong mô hình hệ thống này đã sử dụng nguyên lý hàng đợi HTB. Trong chương 4 sẽ demo đủ cả 2 tính năng trên của HTB. Dưới đây là các dòng lệnh thực hiện chức năng thứ nhất: tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1024kbit tc class add dev eth1 parent 1:1 classid 1:2 htb rate 717kbit tc class add dev eth1 parent 1:1 classid 1:3 htb rate 307kbit Hình 3.5: Minh họa việc giới hạn băng thông cho gói tin Nhiệm vụ của từng lớp dịch vụ là giới hạn băng thông cho các gói tin. Cụ thể lớp dịch vụ 1:1 giới hạn băng thông là 1024 kilobit/s, lớp 1:2 là 717 kilobit/s và lớp 1:3 là 307 kilobit/s. Chi tiết ý nghĩa từng dòng lệnh sẽ được nói rõ hơn ở chương 4. III.1.2.4 Máy trạm Mục đích để tạo lưu lượng khác nhau giữa máy chủ và máy trạm. Cụ thể trong mô hình hệ thống, các máy trạm sẽ tải dữ liệu từ FTP Server xuống để tạo lưu lượng FTP, và sẽ truy cập vào trang web của Web Server để tạo lưu lượng HTTP. III.2 Các bước triển khai Các hệ thống linux sử dụng kernel 2.6 đều đã hỗ trợ đầy đủ các module về chất lượng dịch vụ. Lệnh cho biết loại kernel mà hệ thống đang dùng: #uname –r Nếu kết quả lệnh bắt đầu là 2.6, điều đó có nghĩa là không cần phải biên dịch lại kernel vì đã có đủ module cần thiết để triển khai chất lượng dịch vụ cho mô hình hệ thống. Vì hiện nay hầu hết các hệ thống linux đều dùng kernel 2.6, nên trong mục này sẽ không hướng dẫn cách biên dịch nhân linux. III.2.1 Cấu hình định tuyến Trong mô hình hệ thống gồm 5 máy tính, và 3 địa chỉ mạng. Kết quả mong đợi sau khi cấu hình định tuyến xong chính là 5 máy tính này thông mạng với nhau. Sử dụng lệnh ping để kiểm tra việc thông mạng. Bước 1: Cấu hình địa chỉ IP và Subnet Mask Chỉnh sửa nội dung file /etc/sysconfig/network-scripts/ifconfig/cfg-eth DEVICE= BOOTPROTO=static IPADDR= NETMASK=255.255.255.0 ONBOOT=yes Khởi động lại dịch vụ network để hệ thống nhận địa chỉ IP vừa cấu hình: #/etc/init.d/network restart Bước 2: Cấu hình để máy tính bình thường trở thành thiết bị định tuyến (router) Bước này chỉ thực hiện trên bộ định tuyến nhân và bộ định tuyến biên. Chỉnh sửa nội dung file /etc/sysctl.conf net.ipv4.ip_forward = 1 Yêu cầu hệ thống đọc lại file /etc/sysctl.conf #sysctl -p Bước 3: Cấu hình định tuyến Sử dụng static route để định tuyến. Đây là cách nhanh nhất và đơn giản nhất để định tuyến. Mỗi máy tính chỉ cần thêm vào bảng định tuyến (routing table) các đường mạng không gắn trực tiếp với nó. Sử dụng lệnh: #route add –net netmask gw Từ mô hình hệ thống, ta có bảng sau: Thiết bị Đường mạng không gắn trực tiếp với thiết bị Máy chủ 201.0.0.0/24 ; 202.0.0.0/24 Bộ định tuyến biên 202.0.0.0/24 Bộ định tuyến nhân 200.0.0.0/24 Máy trạm 200.0.0.0/24 ; 201.0.0.0/24 Ví dụ Máy chủ (server) không nối trực tiếp với đường mạng 201.0.0.0/24 và đường mạng 202.0.0.0/24, nên máy chủ cần thêm 2 đường mạng này vào bảng định tuyến của mình bằng 2 dòng lệnh sau: #route add –net 201.0.0.0 netmask 255.255.255.0 gw 200.0.0.1 eth0 #route add –net 202.0.0.0 netmask 255.255.255.0 gw 200.0.0.1 eth0 III.2.2 Cấu hình dịch vụ trên máy chủ III.2.2.1 Cấu hình FTP server Tại máy chủ FTP là dịch vụ trao đổi tập tin qua mạng thông qua giao thức tcp. Có rất nhiều chương trình FTP được hỗ trợ trên linux như: vsftpd, proftpd, pureftpd,…Trong mô hình hệ thống sẽ sử dụng chương trình vsftpd. Bước 1: Kiểm tra hệ thống đã cài đặt hay chưa: #rpm --qa | grep vsftpd Nếu không có kết quả nếu trả về, nghĩa là vsftpd chưa được cài đặt. #yum install vsftpd Bước 2: Cần mở port 20,21 trên firewall hoặc tắt firewall: #/etc/init.d/iptables stop Start dịch vụ vsftpd #/etc/init.d/vsftpd start Kiểm tra hệ thống có đang lắng nghe ở port 20,21 hay không #netstat –nptl | grep vsftpd Bước 3: Yêu cầu hệ thống tự động start dịch vụ vsftpd mỗi khi khởi động Nếu hệ thống dùng command line: #chkconfig --level 3 vsftpd on Nếu hệ thống dùng giao diện đồ họa: #chkconfig --level 5 vsftpd on Khi đó tên truy cập vào FTP Server chính là tên đăng nhập của các người dùng trong hệ thống, và thư mục mặc định chính là homedir của các người dùng. Có thể đăng nhập bằng tên “anonymous” và mật khẩu để trống. Tại máy trạm Tạo kết nối FTP đến máy chủ #ftp Sau đó nhập username và password. Dùng lệnh ? để xem các lệnh có thể sử dụng. #? III.2.2.2 Cấu hình Web server Tại máy chủ Trong mô hình hệ thống sẽ sử dụng chương trình apache để dựng web server. Bước 1: Kiểm tra hệ thống đã cài đặt hay chưa #rpm --qa | grep httpd Nếu không có kết quả nếu trả về, nghĩa là vsftpd chưa được cài đặt. #yum install httpd Bước 2: Tạo trang web index.htm trong /etc/www/html/index.html #vi /etc/www/html/index.html Nội dung: “Welcome to my web” Start dịch vụ httpd #/etc/init.d/httpd start Kiểm tra hệ thống có đang lắng nghe ở port 80 hay không #netstat –nptl | grep httpd Bước 3: Yêu cầu hệ thống tự động start dịch vụ vsftpd mỗi khi khởi động Nếu hệ thống dùng command line: #chkconfig --level 3 httpd on Nếu hệ thống dùng giao diện đồ họa: #chkconfig --level 5 httpd on Tại máy trạm Nếu hệ thống dùng command line: #wget Nếu hệ thống dùng giao diện đồ họa: Mở trình duyệt web rồi nhập lên thanh địa chỉ. III.2.3 Triển khai QoS Để triển khai chất lượng dịch vụ trên linux, yêu cầu máy tính phải cài đặt gói iproute2. Trong gói này có tiện ích “tc” (traffic control) dùng để điểu khiển tất cả lưu lượng qua lại trên hệ thống. Đây tiện ích dạng dòng lệnh (command line). Đối với hệ thống đang sử dụng kernel 2.6 thì gói iproute2 mặc định đã được tích hợp. Cách sử dụng lệnh được trình bày rất chi tiết trong trang hướng dẫn (manpage) của lệnh: #man tc Ở đây sẽ trình bày các lệnh cơ bản nhất trong tiện ích tc. Thêm một cơ chế hàng đợi (queuing discipline) #tc qdisc add Ví dụ # tc qdisc add dev eth1 root handle 1:0 htb Thêm một cơ chế hàng đợi (tc qdisc add) vào interface eth1 (dev eth1). Chỉ định đây là hàng đợi cha của tất cả hàng đợi trong interface eth1 (root) và có chỉ số là 1:0 (handle 1:0). Loại cơ chế hàng đợi là HTB. Thêm một lớp dịch vụ (class of service) #tc class add Ví dụ # tc class add dev eth1 parent 1:1 classid 1:2 htb rate 717kbit ceil 1024kbit Thêm một lớp dịch vụ (tc class add) vào interface eth1 (dev eth1). Lớp dịch vụ này có chỉ số là 1:2 (classid 1:2), lớp dịch vụ cha của nó là lớp 1:1 (parent 1:1). Loại lớp dịch vụ là HTB (htb). Lớp dịch vụ này dùng để giới hạn băng thông ở tốc độ 717 kilobit/s (rate 717kbit). Đây là băng thông được lớp dịch vụ cha 1:1 cấp riêng cho lớp dịch vụ 1:2. Các lưu lượng khi vào lớp dịch vụ này đều được đảm bảo có băng thông tối thiểu là 717 kilobit/s. Nếu lớp dịch vụ cha 1:1 còn dư băng thông, thì lớp dịch vụ 1:2 được phép mượn thêm băng thông của lớp dịch vụ cha. Tuy nhiên, băng thông tổng cộng sau khi mượn không được vượt quá giá trị băng thông tối đa là 1024 kilobit/s (ceil 1024kbit). Thêm một bộ lọc (filter) #tc filter add Ví dụ # tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip dst 202.0.0.2/24 match ip tos 0x26 0xff flowid 1:21 Thêm một bộ lọc (tc filter add) vào interface eth1 (dev eth1). Vị trí bộ lọc: nằm ngay dưới bộ lọc gốc (parent 1:0), tức các gói tin phải qua bộ lọc này trước tiên rồi mới qua các bộ lọc con khác (nếu có). Bộ lọc này dùng để lọc các gói tin ip (protocol ip), thứ tự ưu tiên xử lý của bộ lọc khi có nhiều bộ lọc cùng cấp là đầu tiên (prio 1). Bộ lọc sử dụng bộ phân lớp u32 (u32) để phân lớp dịch vụ cho các gói tin. Bộ phân lớp u32 là bộ phân lớp sử dụng các trường trong IP header của gói tin để phân lớp. Cách lọc gói tin như sau: nếu gói tin có địa chỉ IP đích là 202.0.0.2/24 (match ip dst 202.0.0.2/24) và có trường tos là 0x26 (tos 0x26 0xff) thì các gói tin này sẽ được đẩy vào lớp dịch vụ có chỉ số 1:21 (flowid 1:21). Xóa cấu hình chất lượng dịch vụ của một hàng đợi #tc qdisc del Ví dụ #tc qdisc del dev eth1 root Lệnh trên xóa tất cả cấu hình tc của hàng đợi gốc (root) nằm trên interface eth1 (dev eth1). Xem trạng thái hiện tại của các lớp dịch vụ đã cấu hình ở interface #tc –s class ls dev Ví dụ #tc –s class ls dev eth1 class htb 1:22 parent 1:2 leaf 220: prio 0 rate 215000bit ceil 215000bit burst 1625b cburst 1625b Sent 5600426 bytes 3701 pkt (dropped 63, overlimits 0 requeues 0) rate 214968bit 17pps backlog 0b 8p requeues 0 lended: 3693 borrowed: 0 giants: 0 tokens: -111556 ctokens: -111556 Trạng thái của lớp dịch vụ 1:22 như sau: lớp dịch vụ cha là 1:2 (parent 1:2). Đây là lớp dịch vụ cuối cùng với hàng đợi tương ứng có chỉ số là 220: (leaf 220). Thứ tự ưu tiên của lớp dịch vụ này là 0, băng thông giới hạn là 215000bit/s ( rate 215000bit ceil 215000bit). Số gói tin mà lớp dịch vụ đã gởi đi là 3701 gói tin (3701 pkt) với tổng dung lượng tương ứng là 5600426 bytes (Sent 5600426). Băng thông hiện hành là 214968 bit/s 17 packets/s (rate 214968bit 17pps). CHƯƠNG IV KẾT QUẢ THỰC NGHIỆM Ở chương III đã giới thiệu sơ lược mô hình hệ thống. Trong chương này sẽ trình bày chi tiết hơn về cách cấu hình chất lượng dịch vụ, cũng như cách kiểm tra việc thực hiện chất lượng dịch vụ đã thực hiện thành công hay chưa. Quá trình triển khai chất lượng dịch vụ gồm hai vấn đề chính đó là: chỉnh sửa trường DSCP của gói tin và hạn chế băng thông. Để thấy rõ kết quả của việc thực hiện chất lượng dịch vụ, mô hình hệ thống sẽ được xem xét ở các kịch bản khác nhau. Cụ thể: Kịch bản 1: Sửa trường DSCP cho các gói tin (quá trình này diễn ra ở bộ định tuyến biên). Kịch bản 2: Hạn chế băng thông – không cho phép mượn băng thông (quá trình này diễn ra ở bộ định tuyến nhân). Kịch bản 3: Hạn chế băng thông – cho phép mượn băng thông (quá trình này diễn ra ở bộ định tuyến nhân). Với mỗi kịch bản sẽ được chia thành 2 lần kiểm tra: trước và sau khi triển khai. Trước khi trình bày nội dung chi tiết từng kịch bản, mục IV.1 sẽ giới thiệu sơ lược các cách thức kiểm tra kết quả của việc triển khai chất lượng dịch vụ. IV.1 Cách thức kiểm tra chất lượng dịch vụ trên linux IV.1.1 Kiểm tra giá trị trường DSCP Đối với tất cả hệ thống linux đều hỗ trợ sẵn công cụ tcpdump. Đây là một công cụ bắt gói tin phổ biến, dạng dòng lệnh (command-line). Để kiểm tra giá trị trường DSCP cho các gói tin HTTP xuất phát từ máy có địa chỉ ip là , chỉ cần gõ lệnh: #tcpdump –vi eth0 src and tcp port 80 Ý nghĩa -v : Hiển thị nhiều thông tin (mục đích để xem trường tos của gói tin). Nếu không có tùy chọn này, thông tin các gói tin chỉ bao gồm các trường cơ bản nhất, không bao gồm trường tos đang cần. -i : Chỉ bắt các gói tin ra vào interface được chỉ định. src : Chỉ hiển thị các gói tin có địa chỉ IP nguồn là . tcp port 80 : Chỉ hiển thị các gói tin ftp. Ví dụ #tcpdump –vi eth0 src 200.0.0.2 and tcp port 80 Kết quả xuất ra trên màn hình 04:03:05.617757 IP (tos 0x0, ttl 64, id 20277, offset 0, flags [DF], proto: TCP (6), length: 52) 200.0.0.2.http > 200.0.0.1.40500: F, cksum 0xe962 (correct), 268:268(0) ack 117 win 91 Giải thích 04:03:05.617757 : Thời gian bắt gói tin (vào lúc 4 giờ 3 phút…). tos 0x0 : Giá trị trường tos của gói tin là 0x00. 200.0.0.2.http : Địa chỉ IP nguồn là 200.0.0.2 và địa chỉ port là http (port 80). IV.1.2 Kiểm tra thô

Các file đính kèm theo tài liệu này:

  • docNoi Dung.doc
  • docBIA LOT.doc
  • docbia_NGOAI.doc
  • docLỜI CẢM ƠN.doc
  • docMuc Luc.doc
  • docNX_GVHD_7_5_bm.doc
  • docNX_GVPB_7_6_bm.doc
  • docnhiemvu_3_7_7_bm.doc
Tài liệu liên quan