Tải bản đầy đủ (.docx) (54 trang)

ADVANCED ROUTING PROTOCOLS AND IPV6 ENDFRAGMENT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.27 MB, 54 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 736 949, Website: itf.ud.edu.vn, E-mail:

BÁO CÁO MÔN HỌC
MẠNG NÂNG CAO

NGÀNH KHOA HỌC MÁY TÍNH
ĐỀ TÀI:

ADVANCED ROUTING PROTOCOLS
AND IPv6 ENDFRAGMENT

Nhóm HV
Lớp Cao học KHMT Khóa 29 (2014 − 2016)

ĐÀ NẴNG, 07/2015

1


2


DANH MỤC HÌNH ẢNH

3



DANH MỤC BẢNG BIỂU

4


CHƯƠNG 1
IP ROUTING
1.1. Khái niệm

Định tuyến (Routing) là quá trình mà Router thực hiện chuyển một gói tin
(Packet) từ một địa chỉ nguồn (soucre) đến một địa chỉ đích (destination) trong
mạng. Trong quá trình này Router phải dựa vào những thông tin định tuyến để đưa
ra những quyết định nhằm chuyển gói tin đến những địa chỉ đích đã định trước.
Yêu cầu khi định tuyến: khi lựa chọn một giao thức định tuyến, ta phải cân
nhắc một số yếu tố:
-

Độ lớn của hệ thống mạng.
Băng thông các đường truyền.
Loại, phiên bản và khả năng của router.

1.2. Các kỹ thuật định tuyến

Có hai loại định tuyến cơ bản là định tuyến tĩnh (Static Route) và định tuyến
động (Dynamic Route).

Hình 1.: Tổng quan về các kỹ thuật định tuyến

1.2.1. Định tuyến tĩnh (Static Route)
Định tuyến tĩnh là 1 quá trình định tuyến mà để thực hiện phải cấu hình bằng

tay từng địa chỉ đích cụ thể cho Router. Một dạng mặc định của định tuyến tĩnh là
Default Routes, dạng này được sử dụng cho các mạng cụt (Stub Network).

5


Kỹ thuật này đơn giản, dễ thực hiện, ít hao tốn tài nguyên mạng và CPU xử lý
trên router (do không phải trao đổi thông tin định tuyến và không phải tính toán
định tuyến). Tuy nhiên kỹ thuật này không hội tụ với các thay đổi diễn ra trên mạng
và không thích hợp với những mạng có quy mô lớn (khi đó số lượng route quá lớn,
không thể khai báo tay được).
-

 Hoạt động:
Đầu tiên, người quản trị mạng cấu hình các đường cố định cho router.
Router cài đặt các đường đi này vào bảng định tuyến.
Gói dữ liệu được định tuyến theo các đường cố định này.
1.2.2. Định tuyến động (Dynamic Route)

Các router sẽ trao đổi thông tin định tuyến với nhau. Từ thông tin nhận được,
mỗi router sẽ thực hiện tính toán định tuyến từ đó xây dựng bảng định tuyến gồm
các đường đi tối ưu nhất đến mọi điểm trong hệ thống mạng. Với Dynamic route,
các router phải chạy các giao thức định tuyến (routing protocol).
-

 Đặc điểm:
Cập nhật về tất cả các đường, chọn đường tốt nhất đặt vào bảng định tuyến

-


và xoá đi khi đường đó không sử dụng được nữa.
Khi cấu trúc mạng có bất kỳ thay đổi nào như mở rộng thêm, cấu hình lại,

-

hay bị trục trặc thì router tự động cập nhật lai bảng định tuyến.
Thời gian để các router đồng bộ với nhau càng ngắn càng tốt vì khi các
router chưa đồng bộ với nhau về các thông tin trên mạng thì sẽ định tuyến
sai.
 Hoạt động: Hoạt động trên cơ sở các thuật toán định tuyến.
Định tuyến động tiếp tục chia thành 2 nhóm: các giao thức định tuyến ngoài-

Exterior Gateway Protocol (EGP) và các giao thức định tuyến trong-Interior
Gateway Protocol (IGP).
• Giao thức định tuyến ngoài: với giao thức tiêu biểu là BGP (Border Gateway
Protocol) là loại giao thức được dùng để chạy giữa các router thuộc các AS khác
nhau, phục vụ cho việc trao đổi thông tin định tuyến giữa các AS (AS –
Autonomous System – tạm dịch là Hệ tự trị là tập hợp các router thuộc cùng một sự
quản lý về kỹ thuật và sở hữu của một doanh nghiệp nào đó, cùng chịu chung một
chính sách về định tuyến. Các AS thường là các ISP). Như vậy định tuyến ngoài

6


thường được dùng cho mạng Internet toàn cầu, trao đổi số lượng thông tin định
tuyến rất lớn giữa các ISP với nhau và hình thức định tuyến mang nặng hình thức
chính sách (policy).
• Giao thức định tuyến trong: gồm các giao thức tiêu biểu như RIP, OSPF, EIGRP.
Trong đó, RIP và OSPF là các giao thức chuẩn quốc tế, còn EIGRP là giao thức của
Cisco, chỉ chạy trên thiết bị Cisco. IGP là loại giao thức định tuyến chạy giữa các

router nằm bên trong một AS.
Với các IGP, chúng lại tiếp tục được chia thành nhiều nhánh khác nhau:
o Nếu chia ba, các giao thức IGP có tổng cộng 03 loại: Distance – vector,
Link – state và Hybrid.
 Distance – vector: mỗi router sẽ gửi cho láng giềng của nó toàn bộ
bảng định tuyến theo định kỳ. Giao thức tiêu biểu của hình thức này
là giao thức RIP. Đặc thù của loại hình định tuyến này là có khả
năng bị loop nên cần một bộ các quy tắc chống loop khá phong
phú. Các quy tắc chống loop có thể làm chậm tốc độ hội tụ của giao
thức.
 Link – state: với loại giao thức này, môi router sẽ gửi bảng cơ sở dữ
liệu trạng thái đường link (LSDB – Link State Database) cho mọi
router cùng vùng (area). Việc tính toán định tuyến được thực hiện
bằng giải thuật Dijkstra.
 Hybrid: tiêu biểu là giao thức EIGRP của Cisco. Loại giao thức này
kết hợp các đặc điểm của hai loại trên. Tuy nhiên, thực chất thì
EIGRP vẫn là giao thức loại Distance – vector nhưng đã được cải
tiến thêm để tăng tốc độ hội tụ và quy mô hoạt động nên còn được
gọi là Advanced distance vector.
o Nếu chia hai, ta có thể chia các giao thức IGP thành hai loại:
 Các giao thức classful: router sẽ không gửi kèm theo subnet – mask
trong bản tin định tuyến của mình. Từ đó các giao thức classful
không hỗ trợ các sơ đồ VLSM và mạng gián đoạn (discontiguos
network). Giao thức tiêu biểu là RIPv1 (trước đây còn có thêm cả
IGRP nhưng hiện giờ giao thức này đã được gỡ bỏ trên các IOS
mới của Cisco).
7


 Các giao thức classless: ngược với classful, router có gửi kèm theo

subnet – mask trong bản tin định tuyến. Từ đó các giao thức
classless có hỗ trợ các sơ đồ VLSM và mạng gián đoạn
(discontiguos network). Các giao thức classless: RIPv2, OSPF,
EIGRP.
1.3. Các lớp thuật toán định tuyến cơ bản

1.3.1. Thuật toán Vector khoảng cách (Distance Vector)
Thuật toán này dùng thuật toán Bellman-Ford. Phương pháp này chỉ định một
con số, gọi là chi phí (hay trọng số), cho mỗi một liên kết giữa các node trong
mạng. Các node sẽ gửi thông tin từ điểm A đến điểm B qua đường đi mang lại tổng
chi phí thấp nhất (là tổng các chi phí của các kết nối giữa các node được dùng).
Thuật toán hoạt động với những hành động rất đơn giản. Khi một node khởi
động lần đầu, nó chỉ biết các node kề trực tiếp với nó, và chi phí trực tiếp để đi đến
đó (thông tin này, danh sách của các đích, tổng chi phí của từng node, và bước kế
tiếp để gửi dữ liệu đến đó tạo nên bảng định tuyến, hay bảng khoảng cách). Mỗi
node, trong một tiến trình, gửi đến từng "hàng xóm" tổng chi phí của nó để đi đến
các đích mà nó biết. Các node "hàng xóm" phân tích thông tin này, và so sánh với
những thông tin mà chúng đang "biết"; bất kỳ điều gì cải thiện được những thông
tin chúng đang có sẽ được đưa vào các bảng định tuyến của những "hàng xóm" này.
Đến khi kết thúc, tất cả node trên mạng sẽ tìm ra bước truyền kế tiếp tối ưu đến tất
cả mọi đích, và tổng chi phí tốt nhất.
Khi một trong các node gặp vấn đề, những node khác có sử dụng node hỏng
này trong lộ trình của mình sẽ loại bỏ những lộ trình đó, và tạo nên thông tin mới
của bảng định tuyến. Sau đó chúng chuyển thông tin này đến tất cả node gần kề và
lặp lại quá trình trên. Cuối cùng, tất cả node trên mạng nhận được thông tin cập
nhật, và sau đó sẽ tìm đường đi mới đến tất cả các đích mà chúng còn tới được.
1.3.2. Thuật toán trạng thái kết nối (Link State)
Khi áp dụng các thuật toán trạng thái kết nối, mỗi node sử dụng dữ liệu cơ sở
của nó như là một bản đồ của mạng với dạng một đồ thị. Để làm điều này, mỗi node
phát đi tới tổng thể mạng những thông tin về các node khác mà nó có thể kết nối

8


được, và từng node góp thông tin một cách độc lập vào bản đồ. Sử dụng bản đồ này,
mỗi router sau đó sẽ quyết định về tuyến đường tốt nhất từ nó đến mọi node khác.
Thuật toán đã làm theo cách này là Dijkstra, bằng cách xây dựng cấu trúc dữ
liệu khác, dạng cây, trong đó node hiện tại là gốc, và chứa mọi node khác trong
mạng. Bắt đầu với một cây ban đầu chỉ chứa chính nó. Sau đó lần lượt từ tập các
node chưa được thêm vào cây, nó sẽ thêm node có chi phí thấp nhất để đến một
node đã có trên cây. Tiếp tục quá trình đến khi mọi node đều được thêm.
Cây này sau đó phục vụ để xây dựng bảng định tuyến, đưa ra bước truyền kế
tiếp tốt ưu, … để từ một node đến bất kỳ node khác trên mạng.

9


CHƯƠNG 2
IP MULTICAST
2.1. Khái niệm

IP Multicast là công nghệ truyền thông dựa trên nền tảng IP. Nó khai thác hiệu
quả môi trường mạng bằng cách gửi các gói tin. Một gói tin có thể chia thành nhiều
gói tin gửi đến nhiều người nhận. Các nút mạng có trách nhiệm tái tạo và chuyển
tiếp hướng tới người nhận. Giao thức phổ biến được dùng ở mức thấp là UDP.
Nhưng UDP không có khả năng xác thực - gây lỗi hoặc gói tin bị mất mát. Giao
thức Reliable Multicast còn gọi là PGM (Pragmatic General Multicast) được phát
triển thêm vào đó cơ chế tự sửa lỗi và phát lại.
IP Multicast là công nghệ băng thông rộng nhằm làm giảm lưu lượng trong
việc phân phối dòng dữ liệu cho nhiều người. Các ứng dụng phổ biến là hội nghị
truyền hình, học từ xa, truyền thông…

Các gói tin Multicast được chuyển tiếp, phát lại trên mạng bởi các Router có
chức năng PIM (Protocol Independent Multicast) hoặc các giao thức hỗ trợ
multicast khác.

Hình 2.: Multicast truyền dẫn một gói tin tới tất cả người nhận dự định

Trong các ứng dụng cần băng thông rộng như MPEG Video thì chỉ có cách
duy nhất để gửi cho nhiều người một lúc là IP Multicast.
10


2.2. Địa chỉ Multicast

Một địa chỉ IP Multicast là một địa chỉ IP lớp mạng D trong phạm vi từ
224.0.0.0 đến 239.255.255.255.

Hình 2.: Mô hình địa chỉ lớp D

Một số địa chỉ dành riêng cho IP Multicast:

Hình 2.: Các địa chỉ dành riêng cho IP Multicast

2.3. Giao thức trong Multicast

2.3.1. Giao thức PIM
PIM (Protocol Independent Multicast) là giao thức hoạt động độc lập với giao
thức định tuyến IP Unicast. Nó sử dụng thông tin từ bảng định tuyến unicast để thực
hiện quá trình kiểm tra Reverse Path Forwarding (RPF) từ đó đưa ra quyết định gởi
dữ liệu. PIM có thể cấu hình để hoạt động theo hai cơ chế là dense mode và sparse
mode bao gồm các quá trình cơ bản như: tìm kiếm hàng xóm, cắt bỏ và ghép nhánh

trên cây phân phối multicast, cơ chế xác nhận.
2.3.2. Giao thức DVMRP
DVMRP (Distance Vector Multicast Routing Protocol) là giao thực định tuyến
multicast theo vector khoảng cách. Trong giao thức này, bộ định tuyến nhận gói
multicast sẽ xác định các mrouter được kết nối với nó cần nhận gói này hay không.
DVMRP gởi gói đến tất cả các bộ định tuyến được kết nối và đợi trả lời. Bộ định

11


tuyến có máy không là thành viên của nhóm sẽ trả về một thông điệp “xén bớt”, nhờ
đó tránh việc gởi các thông tin tiếp theo cho bộ định tuyến này.
Giao thức DVMRP xây dựng cây phân phối dựa trên giải thuật TRPB. Giao
thức bị hạn chế không phù hợp với mô hình mạng lớn vì trong giao thức có các quá
trình Flood và Prune.
2.3.3. Giao thức MOSPF
MOSPF (Multicast Open Shortest Path First) là giao thức xác định đường đi
ngắn nhất. Bộ định tuyến MOSPF xây dựng bản đồ của mô hình mạng, bao gồm vị
trí các nút, các đường đi và xác định đường đi tốt nhất để đến các mrouter khác.

12


CHƯƠNG 3
CACHECAST
Hệ thống CacheCast hoạt động trên tầng liên kết và mục tiêu của nó là loại bỏ
truyền tải các dữ liệu dư thừa trên các liên kết.
3.1. Ý tưởng của CacheCast

Ý tưởng cơ bản của CacheCast được trình bày trong Hình 3.1. Để minh họa

cho ý tưởng, chúng ta xét 2 gói mang cùng nội dung được truyền từ cùng một
nguồn, đi qua một vài bước trên đường dẫn thông dụng và thực hiện một số nội
dung giống nhau nhưng có điểm đến khác nhau.

Hình 3.: Ý tưởng cơ bản của cơ chế bộ đệm

Gói có địa chỉ đến A đi qua các đường dẫn từng bước, mỗi bước lưu trữ các
payload của gói và ghi lại các liên kết đầu ra cho các gói dữ liệu (bước 1 và 2). Khi

13


gói có địa chỉ đến B đi vào đường dẫn, bước đầu tiên xác định các liên kết đầu ra
cho các gói dữ liệu (bước 3 và 4). Nó nhận ra rằng nó đã gởi gói tin đầu tiên qua có
liên kết đầu ra tương tự về phần payload, tức là phần payload đã có trong bộ nhớ
đệm của các bước tiếp theo. Vì vậy, nó chỉ gởi các phần đầu cho đến bước cuối
cùng của đường dẫn chung là đạt.
Bước cuối cùng xác định các liên kết đầu ra cho gói đến B và thấy gói này sẽ
đi một đường dẫn khác so với gói đến A. Vì vậy nó sẽ gắn phần payload từ bộ nhớ
đệm vào phần đầu của gói đến B, và gởi toàn bộ gói dữ liệu và ghi lại các liên kết
đầu ra.
3.2. Yêu cầu của CacheCast

Yêu cầu CachCast phát sinh từ 3 khía cạnh:
-

CacheCast như một hệ thống trung gian hỗ trợ đơn nguồn chuyển dữ liệu tới
nhiều điểm đến, về nguyên tắc phải giữ mối quan hệ end to end giữa các máy

-


giao tiếp.
CacheCast như một hệ thống tạo ra bộ xử lý gói tin, cần phải đáng tin cậy và

-

nhanh chóng.
CachCast như một hệ thống để giảm chi phí truyền tải, chính nó phải có chi
phí tối thiểu trong việc tiêu thụ tài nguyên và đầu tư ban đầu.
3.2.1. CacheCast như một hệ thống trung gian
Các giao tiếp máy chủ trên mạng Internet được dựa trên nguyên tắc end-to-

end, tức là 2 máy giao tiếp với nhau có tất cả thông tin về các kết nối được lưu trữ
cục bộ và không có thông tin được lưu trữ trên mạng. Giao thức vận chuyển như
TCP hoặc DCCP (cung cấp độ tin cậy hoặc kiểm soát tắc nghẽn) được dựa trên
nguyên tắc này. Ngoài ra, mối quan hệ end-to-end giữa các máy chủ làm đơn giản
hóa việc kiểm tra an ninh, vì không có bên thứ ba tham gia.
Vì vậy, CachCast như một hệ thống trung gian phải giữ mối quan hệ end-toend. IP Multicast là một ví dụ về một hệ thống phá vỡ các nguyên tắc end-to-end, vì
nó đòi hỏi một bộ giao thức mới được thiết kế để làm việc với một hệ thống trung
gian.

14


3.2.2. CacheCast như một hệ thống xử lý gói tin
CacheCast là một hệ thống lớp liên kết thực hiện một xử lý gói tin. Vì cơ chế
của bộ nhớ đệm hoạt động trên cách gói tin cá nhân, một bộ nhớ đệm đơn phải đủ
mạnh để xử lý tất cả các gói tin đi đến với tốc độ tối đa. Nếu không thì cơ chế này
sẽ trở thành một nút cổ chai gây tắc nghẽn.
CachCast phải đáng tin cậy. Một gói tin đơn đi qua một mạng theo từng bước

có thể đã nhiều lần vào cơ chế bộ nhớ đệm, để các gói dữ liệu được gởi thành công
thì trên tất cả các bộ nhớ đệm phải thực hiện một cách chính xác, hoàn toàn tin cậy.
3.2.3. CacheCast như một hệ thống để giảm chi phí
Mục đích của CacheCast là giảm chi phí của đơn nguồn chuyển dữ liệu tới
nhiều điểm đến, vì vậy phải giảm thiểu cả đầu tư và chi phí hoạt động. Để giảm
thiểu chi phí đầu tư ban đầu, cần phải từng bước triển khai và tạo động lực để đầu tư
thêm. Các chi phí hoạt động phụ thuộc chủ yếu vào số lượng không gian lưu trữ bộ
nhớ đệm và chi phí tính toán. Do đó, để giảm thiểu các chi phí hoạt động, CachCast
phải sử dụng không gian lưu trữ tối thiểu trên mỗi bước và sử dụng một thuật toán
bộ nhớ đệm đơn giản.
3.3. Vấn đề cơ bản

Hai vấn đề thiết kế cơ bản cho bộ nhớ đệm payload: Nơi đặt phần tử bộ nhớ
đệm và liệu một nguồn cần phải biết hoặc không về bộ nhớ đệm.
3.3.1. Vị trí của phần tử bộ nhớ đệm
Theo giả định, khả năng liên kết bị giới hạn tốc độ truyền bit không phụ thuộc
vào kích thước gói tin. Do đó, cơ chế bộ nhớ đệm được đặt thêm trên các cạnh của
các thực thể liên kết phần mở rộng như Hình 3.2.

Hình 3.: Phần mở rộng của liên kết trực tiếp

Trong phần mở rộng này gồm có 2 phần: Các đơn vị quản lý bộ nhớ đệm
(CMU) nằm tại nơi liên kết loại bỏ dữ liệu dư thừa từ các gói tin khi nó bước vào
15


một liên kết, do đó tăng thông lượng. Các đơn vị lưu trữ bộ nhớ đệm (CSU) nằm ở
nơi liên kết tái cấu trúc các gói tin trước khi bước vào một router. Cơ chế bộ nhớ
đệm là trong suốt đối với router, kể từ khi router xử lý gói tin theo tiêu chuẩn.


Hình 3.: Liên kết bộ nhớ đệm và bộ định tuyến

Một bộ nhớ đệm liên kết đơn không cần hợp tác với bộ nhớ đệm nào khác,
thông tin duy nhất bộ nhớ đệm đòi hỏi là phải được tiến hành bởi một gói có khả
năng lưu nhớ (Cacheable packet). Tất cả các gói cacheable được truyền đi mà
không có payload trên liên kết được tái tạo lại trong bộ nhớ chia sẻ và sau đó chúng
được xử lý bởi router. Trước khi gói cacheable được chuyển đến đầu ra, nó một lần
nữa thực hiện cơ chế bộ nhớ đệm và kích thước của nó có thể giảm xuống (Hình
3.3).
3.3.2. Nguồn nhận biết bộ nhớ đệm
Một nguồn nhận biết bộ nhớ đệm hợp tác với hệ thống mạng, nó có thể đảm
bảo các gói tin mang payload tương tự nhau được truyền đi trong thời gian tối thiểu.
Ngoài ra, một nguồn nhận biết bộ nhớ đệm có thể cung cấp ba thông tin quan trọng
để các hệ thống mạng đơn giản hóa bộ nhớ đệm:
-

Một nguồn nhận biết bộ nhớ đệm đánh dấu gói tin mang payload tương tự
như các gói cacheable. Các gói tin mà không mang theo payload trùng khớp
thì nó không được đánh dấu và không được coi như bộ nhớ đệm trong hệ
thống mạng. Giúp tăng hiệu quả của bộ nhớ đệm, vì tính độc đáo của

-

payload là không cần chiếm không gian bộ nhớ đệm.
Phần payload của một gói tin có kích thước biến đổi. Nguồn có thể dễ dàng
cung cấp thông tin về kích thước payload. Như vậy, bộ nhớ đệm liên kết biết
ngay đó là một phần của một gói tin đến bộ nhớ đệm.
16



-

Nguồn có thể tạo ra một định danh cho mỗi payload, trong đó kết hợp với địa
chỉ nguồn, là duy nhất trên mạng internet. Như vậy, chỉ cần so sánh ID của
payload thay vì so sánh toàn bộ payload.
Vì vậy, nguồn nhận biết bộ nhớ đệm là yếu tố cơ bản của thiết kế CacheCast

mà chúng ta giải quyết các yêu cầu của việc xử lý gói nhanh và tin cậy, tiêu thụ tài
nguyên tối thiểu được nêu ở phần 3.2.
3.4. Link Cache

CacheCast đã được phát triển trên cơ sở nền tảng các quyết định thiết kế. Nó
bao gồm 2 phần: Hỗ trợ máy chủ (Server Support) và bộ nhớ đệm liên kết (Link
Cache).
Trong phần Link Cache sẽ mô tả chức năng của Link Cache và một số vấn đề
liên quan đến kích thước, cấu hình của Link Cache.
3.4.1. CacheCast header
CacheCast header là một phần mở rộng của gói tin. Các gói tin mang theo một
CacheCast header là một gói có khả năng lưu nhớ (cacheable packet). CacheCast
chỉ làm việc các gói cacheable.
Các header được tạo ra từ nguồn và có 3 trường: Chỉ số bộ nhớ đệm (INDEX),
payload ID (P_ID), kích thước payload (P_SIZE). Chỉ số bộ nhớ đệm là một trường
quản lý cho các cơ chế bộ nhớ đệm và nó trỏ đến vị trí của các payload trong các
đơn vị lưu trữ bộ nhớ đệm CSU. Payload ID xác định gói payload duy nhất tại
nguồn và khi được kết hợp với địa chỉ nguồn, nó trở thành một gói duy nhất trên
internet.

Hình 3.: Gói tin IPv4 với CacheCast header

Dựa vào giao thức MPLS, xác định vị trí các CacheCast giữa lớp liên kết

header (L2) và IP header (L3). Tạo các CSU chịu trách nhiệm loại bỏ các
CacheCast header khi gói cacheable vào router và CMU chịu trách nhiệm chèn

17


CacheCast header trước khi gói tin vào lại bộ nhớ đệm liên kết. Vì vậy phải duy trì
các payload ID và payload size khi gói cacheable được xử lý bởi router, chúng ta di
chuyển chúng đến các gói metadata mô tả gói trạng thái trên router.
3.4.2. Cơ chế bộ nhớ đệm liên kết
CMU có một bảng lưu trữ các Payload ID của Payload được lưu trữ trong
CSU.

Hình 3.: Mối quan hệ giữa bảng CMU và CSU

a) Cache hit
Một payload ID của một gói tin vào liên kết được tìm thấy trong bảng CMU
thì được gọi là cache hit. Có nghĩa là gói payload đã có lưu trữ ở bộ nhớ đệm CSU
và không cần truyền đi lần nữa. Do đó, CMU đặt chỉ số định payload vào trường
INDEX của CacheCast header. Tiếp theo loại bỏ các payload và chỉ truyền phần
header của gói tin. Khi header đến lối ra của liên kết, payload với INDEX trong
CSU sẽ được gắn vào nó. Sau đó toàn bộ gói tin được truyền đến router tiếp theo.
b) Cache miss
Một payload ID của một gói tin vào liên kết không được tìm thấy trong bảng
CMU thì được gọi là cache miss. Có nghĩa là gói payload chưa có trong bộ nhớ đệm
CSU. CMU sẽ loại bỏ một mục trong bảng, chèn thay vào đó là payload ID của gói
tin. Sau đó nó chèn chỉ mục mà payload ID được đưa vào bảng CMU vào trường
INDEX của CacheCast header. Cuối cùng, các gói dữ liệu được truyền qua liên kết.
Khi đến lối ra liên kết, payload được lưu giữ lại tại vị trí được chỉ đến bởi INDEX.
3.4.3. Kích thước bộ nhớ đệm liên kết

Trên Internet rất khó khăn để cung cấp kích thước gần đúng cho bộ nhớ cache.
Nói chung, cache lớn hơn là hiệu quả hơn, nhưng họ cũng đòi hỏi khả năng xử lý
18


nhiều hơn và không gian lưu trữ nhiều hơn. Giả sử quy mô tất cả bộ nhớ cache dùng
cho bộ nhớ cache liên kết có dung lượng là C.
Hệ số tỉ lệ T là thời gian cache giữ và đó là thời gian tối thiểu một bộ nhớ
cache sẽ có thể giữ gói payload ngẫu nhiên. Do đó, kích thước bộ nhớ cache S được
tính: S = CT.
Chúng ta sử dụng các quan sát dưới đây để ước tính hệ số tỉ lệ T của kích
thước bộ nhớ đệm mong muốn. Chúng ta xem xét một nguồn gửi các đoạn dữ liệu
giống nhau tới nhiều điểm đến trong hệ thống mạng CacheCast. Trước khi các gói
mang đoạn dữ liệu nhập vào liên kết đầu tiên thì nó phải đi qua CMU. Như vậy, chỉ
có các gói đầu tiên mang payload trên các liên kết trong khi các gói còn lại là không
có payload. Chúng ta gọi các chuỗi gói kết quả - packet train. Một ví dụ về một
packet train được biểu diễn như trong Hình 3.6.

Hình 3.: Khoảng thời gian của một packet train

Xét cấu trúc packet train, chúng ta thấy rằng nó là thời gian đủ để tạo cache
mà có thể giữ một payload mang theo trong gói đầu tiên cho đến khi header cuối
cùng của một packet train đến. Do đó, thời gian cache giữ một payload phụ thuộc
vào khoảng thời gian gói tin. Điều này, phụ thuộc vào tốc độ uplink của nguồn và số
lượng các điểm đến.
Source uplink speed

Packet train time
2ms


10ms

50ms

512Kbps

2

8

40

1Mbps

4

16

79

10Mbps

32

157

781

100Mbps


313

1561

7802

Bảng 3.: Số header trong packet train được truyền trong thời gian giữ gói
của bộ nhớ cache

19


Bảng 3.1 trình bày các kết quả tính toán được thực hiện trên bốn tốc độ uplink
nguồn khác nhau và trong ba cửa sổ thời gian khác nhau. Các con số trong bảng đại
diện cho số lượng header gói tin có thể được truyền bởi một nguồn đưa ra trong một
cửa sổ thời gian nhất định. Do đó, các con số tương ứng với các kích thước packet
train. Các kích thước header gói tin vào một liên kết khác nhau tùy thuộc vào các
công nghệ liên kết. Trong tính toán trên, giả định các khung Ethernet tối thiểu cho
một header gói tin là 84 byte bao gồm cả khoảng trống giữa các khung cho tất cả
các tốc độ uplink.
Trong tính toán, đo khoảng thời gian của packet train như sự chênh lệch giữa
thời gian khi gói đầu tiên và gói tin cuối cùng được truyền bởi nguồn. Vì chỉ có gói
đầu tiên mang payload, khoảng thời gian của packet train bằng (N - 1) tS trong đó N
là số điểm nhận và tS là thời gian để sắp đặt một header gói tin.
Xem xét những con số được đưa ra trong Bảng 3.1, tức là số lượng header gói
tin có thể được chèn vào mạng có tốc độ uplink khác nhau, người ta cho rằng thời
gian cache giữ T = 10ms là thích hợp.
3.4.4. Sử dụng bộ nhớ của bộ nhớ đệm liên kết
Theo mô tả được đưa ra trong cơ chế của bộ nhớ đệm liên kết, bộ nhớ CSU
được chia thành các khe và kích thước mỗi khe tương ứng với kích thước của các

liên kết MTU. Tuy nhiên, các gói tin mang payload có kích thước khác nhau, do đó,
các khe CSU không được sử dụng hết. Để tăng việc sử dụng bộ nhớ CSU, kích
thước khe nên nhỏ hơn kích thước tối đa của payload và payload phải được lưu trữ
trong số khe tùy biến.
3.4.5. Cấu hình cho bộ nhớ đệm liên kết
Trước khi bộ nhớ đệm liên kết bắt đầu hoạt động, CMU và CSU phải thỏa
thuận về số lượng các khe payload và kích thước của mỗi khe. Việc này có thể làm
thủ công hoặc tự động. Trong khi cấu hình thủ công cho một bộ nhớ đệm liên kết là
đơn giản, nó tạo ra một nguồn mới các lỗi có thể và nó phải được tránh.
Cấu hình tự động dựa trên trao đổi thông tin giữa CMU và CSU trong quá
trình bộ nhớ đệm liên kết khởi tạo không thể được thực hiện, kể từ khi một số liên
kết là đơn hướng và không thể hổ trợ giao tiếp 2 hướng. Vì vậy, hoặc là CMU phải
20


cấu hình CSU hoặc cả 2 được cấu hình theo các thông số nhất định nào đó bên
ngoài. Chúng ta quyết định để cấu hình các thông số theo khả năng của liên kết.
Tổng dung lượng lưu trữ bộ nhớ đệm là tương đương với khả năng liên kết và
khoảng thời gian 10ms. Không gian lưu trữ bộ nhớ đệm được chia thành các khe có
cùng kích thước nhằm xác định số lượng các khe và CMU và CSU được cấu hình
với giá trị này.
3.5. Hỗ trợ máy chủ

Ở phần 3.3.2 nêu khái quát về việc CacheCast yêu cầu Hỗ trợ máy chủ. Sự hỗ
trợ này bao gồm 2 phần:
-

Một loạt máy chủ yêu cầu cho cùng dữ liệu giống nhau được truyền trong

-


một khoảng thời gian tối thiểu.
Việc tạo ra CacheCast header cho mỗi gói cacheable.
Nhiệm vụ đầu tiên của hỗ trợ máy chủ được thực hiện bởi một ứng dụng

truyền dữ liệu đến nhiều đích, vì nó phải lên lịch chuyển cùng một dữ liệu cùng một
lúc, và bằng một hệ điều hành (OS), từ đó nó phải xử lý các yêu cầu truyền tải đúng
cách. Nhiệm vụ thứ 2 của hỗ trợ máy chủ liên quan đến sửa đổi gói tin mức thấp và
nó hoàn toàn được thực hiện bởi OS.
Theo nhiệm vụ đầu tiên thì một ứng dụng nên yêu cầu hàng loạt cho cùng một
dữ liệu và gởi cùng một lúc. Vì mỗi kết nối end-to-end được xử lý bởi một socket
khác nhau, các thủ tục gởi yêu cầu trình tự của hệ thống gọi send() để truyền dữ liệu
cho tất cả các máy khách. Điều này không dẫn đến packet train chặt chẽ về cấp độ
mạng. Trình tự của hệ thống gọi có thể bị gián đoạn bởi các ứng dụng khác truyền
phát ở cùng một thời điểm, truyền gói tin đến một số đích có thể bị trị hoãn. Để
ngăn chặn hành vi không mong muốn này, hệ điều hành phải kiểm soát các thủ tục
gởi bắt đầu từ các ứng dụng gởi yêu cầu cho việc truyền tải gói tin đến một card
mạng.
3.5.1. Hệ thống gọi
Chúng ta sẽ thiết kế một hệ thống gọi mới thực hiện nhiều yêu cầu từ một ứng
dụng có kiểm soát. Hệ thống gọi là điểm duy nhất để vào nhân của OS. Trong đó có
đối số là một con trỏ đến đoạn dữ liệu được gởi và một bộ xử lý socket. Khi một

21


ứng dụng yêu cầu hệ thống gọi, điều khiển được truyền cho OS có thể giám sát quá
trình truyền dữ liệu. Các nhiệm vụ của hệ thống gọi là:
-


Hệ thống gọi sẽ gởi các dữ liệu ứng dụng cho mỗi socket từ tập các socket

-

được cung cấp bởi ứng dụng.
Nó nắm bắt các gói tin được tạo ra bởi giao thức ngăn xếp, gắn thêm
CacheCast header cho mỗi gói tin, và xếp vào hàng đợi các gói dữ liệu cho

-

truyền dẫn sau này.
Nếu một socket cấm truyền dữ liệu để kiểm soát tắc nghẽn hoặc quá trình lắp

-

dữ liệu, Hệ thống gọi thực hiện gởi các yêu cầu cho socket này.
Khi các dữ liệu ứng dụng đã được gởi đến tất cả các socket, hệ thống gọi sẽ
gởi trước hàng đợi của các gói tin đến một trình điều khiển thiết bị. Tuy
nhiên, chỉ có các gói tin đầu tiên cho mỗi liên kết mang dữ liệu ứng dụng,
các gói còn lại được cắt ngắn.
Như kết quả của hệ thống gọi, một packet train chặt chẽ cho mỗi liên kết được

tạo ra, được mô tả như trong hình 3.7. Các hệ thống gọi thực hiện các nhiệm vụ
CMU có liên quan cho các máy chủ và nó chỉ hỗ trợ một máy chủ yêu cầu để được
hưởng lợi từ CacheCast.

Hình 3.: Máy chủ S gởi các gói dữ liệu giống nhau tới máy C, D, E

Hệ thống gọi trả về một trạng thái của yêu cầu gởi. Nếu một số socket từ các
thiết lập được cung cấp bởi ứng dụng không thể được viết thành công, ứng dụng sẽ

thông báo. Vì vậy, ứng dụng có quyết định riêng của mình làm thế nào để xử lý
những trường hợp này.

22


3.5.2. Nắm bắt và đặt vào hàng đợi các gói tin
Nhiệm vụ thứ 2 của hệ thống gọi là nắm bắt các gói tin được tạo ra bởi các
giao thức ngăn xếp, thêm CacheCast header và thêm vào hàng đợi cho truyền dẫn
sau. Tạo một module để thực hiện nhiệm vụ này, các module được chèn vào trong
giao thức ngăn xếp và được điều khiển bởi hệ thống gọi. Ví dụ sau giải thích các
hoạt động của module.
Hình 3.8 mô tả ứng dụng chạy trên một máy chủ S giao tiếp với các tiến trình
trên máy C, D và E. Mỗi kết nối được xử lý bởi một socket.

Hình 3.: Ứng dụng trên máy chủ S giao tiếp với quá trình trên máy C, D, E

Kể từ khi một đường dẫn đến máy D và một đường dẫn đến máy E chia sẽ
cùng một liên kết của bước đầu tiên, các socket xử lý các kết nối đến các máy chia
sẽ cùng giao thức liên kết. Vì vậy, khi các ứng dụng gởi dữ liệu giống nhau cho tất
cả các socket, các gói tin được tạo ra bởi socket S-D và S-E được xử lý bởi giao
thức liên kết của S-B.
23


Để nắm bắt, xử lý và sắp hàng các gói tin trên mỗi cơ sở liên kết, các module
CacheCast phải được cài đặt hoặc tại mục đến một giao thức liên kết hoặc ở lối ra.
Ví dụ module được đặt tại mục đến một giao thức liên kết như hình 3.8. Ở giai đoạn
này các gói tin có sự vận chuyển và các header mạng, do đó đễ dàng mở rộng các
CacheCast header. Nếu module được cài đặt ở lối ra, thì các gói tin nắm bắt được

gói gọn trong header của lớp liên kết sẽ bị yêu cầu thay đổi để chèn CacheCast
header.
3.5.3. Mỗi packet train liên kết
Sau khi hệ thống gọi đã gởi dữ liệu ứng dụng cho tất cả socket, nó kích hoạt
việc truyền các gói tin trong hàng đợi trước đó một cách tuần tự từ tất cả các
module CacheCast. Các thủ tục kích hoạt được bảo vệ bằng một khóa glocal, trong
đó nghiêm cấm các ứng dụng khác truyền gói trong hàng đợi cùng một lúc. Do đó,
packet train được tạo ra bởi các ứng dụng khác nhau được tuần tự vào một liên kết.
Một module CacheCast đơn truyền một gói tin với dữ liệu ứng dụng. Các gói
còn lại xếp hàng trong module này được cắt ngắn, do đó, một module CacheCast
đơn tạo ra một packet train chặt chẽ. Khi truyền gói tin từ các module CacheCast
một cách tuần tự, các packet train kết quả được gởi tới thiết bị điều khiển một cách
tuần tự, đảm bảo tận dụng thời gian tối thiểu của packet train.
3.5.4. CacheCast header
Các CacheCast header được tạo bởi các module CacheCast gắn liền với bước
liên kết đầu tiên của gói. Do module CacheCast được sắp từng hàng các packet train
vào một liên kết, nên CSU nằm trên lối ra của liên kết chỉ có một khe cho một
payload. Vì vậy, giá trị của chỉ số lưu trữ trong CacheCast header có thể được gán
bằng 0 cho tất cả các gói được đánh dấu là khe đơn. Các trường kích thước payload
được thiết lập kích thước của dữ liệu ứng dụng được mang bởi các gói tin.
Payload ID phải được lựa chọn cẩn thận, dựa trên các cân nhắc để xem xét.
Thứ nhất, nó phải được thiết lập cùng giá trị cho tất cả các gói mang dữ liệu ứng
dụng giống nhau. Thứ hai, payload ID không thể được tạo ra tuần tự. Nó nên được
lấy từ nguồn cụ thể tạo ngẫu nhiên theo yêu cầu về bảo mật. Thứ 3, giá trị payload

24


ID không thể được tái sử dụng cho đến khi payload có giá trị payload ID này bị hủy
trên tất cả các bộ nhớ đệm liên kết.


25


×