Professional Documents
Culture Documents
Nhóm 9 BTL MMT
Nhóm 9 BTL MMT
Nhóm 9 BTL MMT
Định tuyến chỉ ra hướng, sự di chuyển của các gói (dữ liệu) được đánh địa chỉ
từ mạng nguồn của chúng, hướng đến đích cuối thông qua các node trung gian. Thiết
bị phần cứng chuyên dùng được gọi là router (bộ định tuyến). Tiến trình định tuyến
thường chỉ hướng đi dựa vào bảng định tuyến, đó là bảng chứa những lộ trình tốt nhất
đến các đích khác nhau trên mạng. Vì vậy việc xây dựng bảng định tuyến, được tổ
chức trong bộ nhớ của router, trở nên vô cùng quan trọng cho việc định tuyến hiệu
quả.
Routing khác với bridging (bắc cầu) ở chỗ trong nhiệm vụ của nó thì các cấu
trúc địa chỉ gợi nên sự gần gũi của các địa chỉ tương tự trong mạng, qua đó cho phép
nhập liệu một bảng định tuyến đơn để mô tả lộ trình đến một nhóm các địa chỉ. Vì thế,
routing làm việc tốt hơn bridging trong những mạng lớn, và nó trở thành dạng chiếm
ưu thế của việc tìm đường trên mạng internet.
Thuật toán này dùng thuật toán Bellman-Ford. Nó 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 đơ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, 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. Đến khi kết thúc, tất cả cá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 áp dụng các thuật toán trạng thái kết nối, mỗi node sử dụng cơ sở dữ liệu
của nó như là một bản đồ của mạng với dạng đồ thị. Để làm để 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 đượ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.
Các router sẽ trao đổi gói tin LSA với những router khác. Đây là những gói tin
nhỏ, chứa thông tin về các router. Mỗi router sẽ dựa vào LSAs này để tạo ra
topological database, sử dụng giải thuật SPF (Short Path First) để tìm ra đường đi. Mỗi
router đều xác định được chính xác topology của mạng. Chính vì vậy router sẽ đưa ra
quyết định để đưa packet đến đích tốt hơn. Mỗi router trong mạng sẽ báo cáo trạng thái
của nó, các link nối trực tiếp và trạng thái của mỗi link. Router sẽ nhân bản thông tin
này tới tất cả các router trên mạng. Cuối cùng tất cả các router trên mạng đều có cái
nhìn giống nhau về topology mạng.
Thuật toán làm theo cách này là thuật toán Dijkstra (thuật toán mà ta sẽ tìm hiểu
và ứng dụng), bằng cách xây dựng cấu trúc dữ liệu khác, dạng cây, trng đó 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ối ưu… để từ một node đến bất kì node khác trên mạng.
Thuật toán định tuyến bằng trạng thái kết nối phản ứng nhanh nhạy hơn, và
trong một khoảng thời gian có hạn, đối với sự thay đổi kết nối. Ngoài ra, những gói
được gửi qua mạng trong định tuyến bằng trạng thái kết nối thì nhỏ hơn những gói
dùng trong định tuyến bằng vector.
Modem, switch, hub, bridge, server, và printer cũng là các nút, cũng như các
thiết bị khác kết nối qua WiFi hoặc Ethernet. Ví dụ, một mạng kết nối ba máy tính và
một máy in, cùng với hai thiết bị không dây khác, có sáu nút tổng.
Các nút trong mạng máy tính phải có một số dạng nhận dạng nào đó, như địa
chỉ IP hoặc địa chỉ MAC, để nó được các thiết bị mạng khác nhận diện. Một nút không
có thông tin này hoặc một nút đã được thực hiện ngoại tuyến, không còn hoạt động
như một nút nữa.
Nút mạng thường là bất kỳ thiết bị nào nhận và sau đó truyền đạt thông tin qua
mạng, nhưng thay vào đó chỉ nhận và lưu trữ dữ liệu, chuyển tiếp thông tin ở nơi khác
hoặc tạo và gửi dữ liệu.
Ví dụ, một nút máy tính có thể sao lưu các tập tin trực tuyến hoặc gửi một
email, nhưng nó cũng có thể dòng video và tải về các tập tin khác. Máy in mạng có thể
nhận các yêu cầu in từ các thiết bị khác trên mạng trong khi máy quét có thể gửi ảnh
trở lại máy tính. Một bộ định tuyến sẽ xác định dữ liệu nào được cung cấp cho các
thiết bị yêu cầu tải tệp xuống trong mạng, nhưng cũng được sử dụng để gửi các yêu
cầu tới Internet công cộng.
Một ví dụ khác của một nút là một thiết bị cung cấp dịch vụ mạng thông minh
trong một mạng di động, như bộ điều khiển trạm gốc (BSC) hoặc Nút Hỗ trợ GPRS
của Cổng (GGSN). Nói cách khác, nút di động là những gì cung cấp phần mềm điều
khiển phía sau thiết bị di động, giống như cấu trúc với anten được sử dụng để truyền
tín hiệu đến tất cả các thiết bị trong mạng di động.
Siêu nút là một nút trong mạng ngang hàng không chỉ hoạt động như một nút
thông thường mà còn là máy chủ proxy và thiết bị chuyển tiếp thông tin cho những
người dùng khác trong mạng P2P. Bởi vì điều này, các siêu âm đòi hỏi nhiều CPU và
băng thông hơn các nút thông thường.
4.Switch
a. Khái niệm Switch.
Switch là một thiết bị chuyển mạch tối quan trọng trong mạng, dùng để kết nối
các đoạn mạng với nhau theo mô hình hình sao (Star). Trong mô hình này, switch
đóng vai trò trung tâm và tất cả các thiết bị vệ tinh khác kể cả máy tính đều được kết
nối về đây, từ đó định tuyến tạo đường nối tạm trung chuyển dữ liệu đi. Ngoài ra,
Switch được hỗ trợ công nghệ Full Duplex dùng để mở rộng băng thông của đường
truyền, điều mà các thiết bị khác không làm được.
Hình 1. Switch
Có thể hiểu đơn giản thiết bị chuyển mạch Switch giống như cảnh sát giao
thông phân luồng dữ liệu của một mạng cục bộ. Nó có khả năng chọn đường dẫn để
quyết định chuyển frame (đơn vị của tầng liên kết dữ liệu) nên mạng LAN hoạt động
hiệu quả hơn. Switch có khả năng nhận dạng máy được kết nối với nó nhờ cách đọc
địa chỉ MAC nguồn trong frame nó nhận được. Khi hai máy trong mạng liên lạc với
nhau, chính Switch sẽ tạo mạch ảo giữa hai cổng tương ứng mà không làm ảnh hưởng
đến lưu thông trên các cổng khác.
Switch hoạt động chủ yếu ở tầng liên kết dữ liệu Layer 2 hay còn gọi là Switch
Layer 2 trong mô hình tham chiếu OSI (mô hình lý giải một cách trừu tượng kỹ thuật
kết nối truyền thông giữa các máy vi tính và thiết kế giao thức mạng giữa chúng). Nó
có thể giới hạn lưu lượng truyền đi ở mức ngưỡng nào đó. Một Switch Layer 2 đi kèm
với các loại giao diện khác nhau như 10Mbps, 100Mbps, 1Gbps, 10Gbps… Tất nhiên
là nó cũng hỗ trợ giao tiếp Full-duplex trên mỗi cổng của nó.
Không chỉ có thế, mỗi Switch đều tạo điều kiện để mở rộng mạng và kết nối với
phần còn lại của mạng thông qua các cổng Uplink tốc độ cao, ở đây có thể kết nối với
các thiết bị chuyển mạch Switch Layer 2 khác hay các Switch Layer 3 định tuyến.
Tóm lại, một Switch hoạt động như một bộ điều khiển trung tâm, cho phép tất cả các
thiết bị kết nối đến nó giao tiếp hiệu quả. Thông qua việc chia sẻ thông tin và phân bổ
nguồn lực giúp tăng năng suất làm việc của nhân viên và tiết kiệm tiền bạc cho doanh
nghiệp.
Nhìn chung Switch có đặc điểm giống như các thiết bị tương tự khác như Hub
hay Router. Tuy nhiên Switch có hai đặc điểm riêng biệt:
Phân chia kết nối riêng biệt trên mỗi đoạn mạng: Switch chia nhỏ hệ thống
mạng thành những đơn vị cực nhỏ gọi là microsegment. Chính điều này cho phép
nhiều người dùng trên nhiều segment khác nhau có thể giao tiếp và gửi dữ liệu cùng
lúc mà không làm ảnh hưởng đến ai.
Cung cấp băng thông lớn hơn cho mỗi người dùng bằng cách tạo ra các miền
đụng độ nhỏ hơn. Switch chia nhỏ mạng LAN thành nhiều đoạn mạng nhỏ, tương ứng
là một kết nối riêng giống như một làn đường riêng.
5. Đường truyền
Đường truyền là hệ thống các thiết bị truyền dẫn có dây hay không dây dùng để
chuyển các tín hiệu điện tử từ máy tính này đến máy tính khác. Các tín hiệu điện tử đó
biểu thị các giá trị dữ liệu dưới dạng các xung nhị phân (On – Off). Tất cả các tín hiệu
được truyền giữa các máy tính đều thuộc một dạng sóng điện từ. Tùy theo tần số của
sóng điện từ có thể dùng các đường truyền vật lý khác nhau để truyền các tín hiệu. Ở
đây đường truyền được kết nối có thể là dây cáp đồng trục, cáp xoắn, cáp quang, dây
điện thoại, sóng vô tuyến … Các đường truyền dữ liệu tạo nên cấu trúc của mạng.
Tốc độ truyền dữ liệu trên đường truyền còn được gọi là thông lượng của
đường truyền – thường được tính bằng số lượng bit được truyền đi trong một giây
(Bps). Thông lượng còn được đo bằng đơn vị khác là Baud (lấy từ tên nhà bác học –
Emile Baudot). Baud biểu thị số lượng thay đổi tín hiệu trong một giây.
Một đơn vị đo tốc độ truyền dẫn dữ liệu khác là megabyte trên giây (MBps
hoặc MB\s), bằng:
II. MÔ TẢ ĐỀ BÀI.
1. Định tuyến đường dẫn ngắn nhất (Shortest Path Routing):
Bài toán tìm đường đi ngắn nhất là một bài toán khá quan trọng trong quá trình
thiết kế và phân tích mạng. Hầu hết các bài toán định tuyến có thể giải quyết như giải
quyết bài toán tìm đường đi ngắn nhất khi một “độ dài” thích hợp được gắn vào mỗi
cạnh (hoặc cung) trong mạng. Trong khi các thuật toán thiết kế thì cố gắng tìm kiếm
cách tạo ra các mạng thỏa mãn tiêu chẩn độ dài đường đi.
Bài toán đơn giản nhất của loại toán này là tìm đường đi ngắn nhất giữa hai nút
cho trước. Loại bài toán này có thể là bài toán tìm đường đi ngắn nhất từ một nút tới
tất cả các nút còn lại, tương đương bài toán tìm đường đi ngắn nhất từ tất cả các điểm
đến một điểm. Đôi khi đòi hỏi phải tìm đường đi ngắn nhất giữa tất cả các cặp nút.
Ta xét các graph hữu hướng và giả sử rằng đã biết độ dài của một cung giữa
mỗi cặp nút i và j là l. Các độ dài này không cần phải đối xứng. Khi một cung không
tồn tại thì độ dài l được giả sử là rất lớn (chẳng hạn lớn gấp n lần độ dài cung lớn nhất
trong mạng). Chú ý rằng có thể áp dụng quá trình này cho các mạng vô hướng bằng
cách thay mỗi cạnh bằng hai cung có cùng độ dài. Ban đầu giả sử rằng l là dương hoàn
toàn; sau đó giả thiết này có thể được thay đổi.
Phần lớn các mạng chuyển mạch gói sử dụng các thuật toán khác nhau của
phương pháp chọn tuyến đường ngắn nhất do lớp mạng thực hiện. Một số mạng chọn
tuyến theo cách thức tập trung, thiết lập đường dẫn giữa nút nguồn và nút đích ở trung
tâm điều hành mạng NMC (Network Management Center) hay trung tâm điều khiển
chọn tuyến RCC (Routing Control Center) rồi sau đó phân phối các thông tin chọn
tuyến đến tất cả các nút chuyển mạch trong mạng. Các nút mạng khác sử dụng cách
thức phi tập trung hay còn gọi là cách thức phân bố, từng nút trao đổi thông tin chọn
tuyến và giá thành với các nút khác trong mạng trên cơ sở tương tác cho đến khi các
bảng định tuyến đáp ứng được yêu cầu định tuyến ngắn nhất.
2.Thuật toán Dijkstra:
Tất cả các thuật toán tìm đường đi ngắn nhất đều dựa vào việc lồng nhau giữa
các đường đi ngắn nhất nghĩa là một nút k thuộc một đường đi ngắn nhất từ i tới j thì
đường đi ngắn nhất từ i tới j sẽ bằng đường đi ngắn nhất từ i tới k kết hợp với đường đi
ngắn nhất từ j tới k. Vì thế chúng ta có thể tìm đường đi ngắn nhất bằng công thức đệ
quy sau:
d = (d + d)
Dxy là độ dài của đường đi ngắn nhất từ x tới y. Khó khăn của cách tiếp cận
này là phải có một cách khởi động đệ quy nào đó vì chúng ta không thể khởi động với
các giá trị bất kỳ ở vế phải của phương trình trên.
Thuật toán Dijkstra phù hợp cho việc tìm đường đi ngắn nhất từ một nút i tới tất
cả các nút khác. Bắt đầu bằng cách thiết lập
d = 0 và d = i ≠ j
Sau đó tìm nút j có d là bé nhất. Tiếp đó lấy chính nút j vừa chọn để khai triển
các khoảng cách các nút khác, nghĩa là bằng cách thiết lập
d min (d, d + l)
Tại mỗi giai đoạn của quá trình, giá trị của d là giá trị ước lượng hiện có của
đường đi ngắn nhất từ i tới k, và thực ra là độ dài đường đi ngắn nhất đã được tìm cho
tới thời điểm đó. Xem d như là nhãn trên nút k. Quá trình sử dụng một nút để triển
khai các nhãn cho các nút khác gọi là quá trình quét nút.
Thực hiện tương tự, tiếp tục tìm các nút chưa được quét có nhãn bé nhất và quét
nó. Chú ý rằng, vì giả thiết tất cả các l đều dương do đó một nút không thể gán cho nút
khác một nhãn bé hơn chính nhãn của nút đó. Vì vậy, khi một nút được quét thì việc
quét lại nó nhất thiết không bao giờ xảy ra. Nếu nhãn trên một nút thay đổi, nút đó
phải được quét lại.
Ví dụ: xét mạng như hình sau, trên mỗi đường ghép nối có các trọng số tương
ứng với giá thành của từng đường, để đơn giản ta coi các trọng số này theo cả hai
chiều là như nhau, mặc dù trên thực tế chúng có thể khác nhau về giá trị. Để chọn
được đường dẫn ngắn nhất từ một nguồn tới tất cả các nút trong mạng, đòi hỏi phải có
kiến thức về cấu hình tổng thể của mạng (danh sách các nút và các ghép nối giữa
chúng) cũng như giá thành của từng đường nối. Điều đó dẫn tới việc tính toán tập
trung dựa trên thông tin đầy đủ lưu trong các cơ sở dữ liệu trung tâm (Central
Database).
1 {1,2} 2 3 3
2 {1,2,3} 2 3 4 5 3
3 {1,2,3,6} 2 3 4 5 3
4 {1,2,3,6,4} 2 3 4 5 3
5 {1,2,3,6,4,5} 2 3 4 5 3
Mô hình cây đường đi ngắn nhất nếu lấy nút 1 làm nút nguồn có thể mô tả như
hình vẽ sau:
2 2
3 3
4 4
5 5
6 3
Với thuật toán này ta có thể tính được các tuyến đường có đường dẫn ngắn nhất
cho từng nút, cụ thể ta coi nút đó là nút nguồn rồi thực hiện các bước giải thuật kể trên.
Trong trường hợp chọn tuyến theo phương thức tập trung, NMC sẽ gửi các bảng chọn
tuyến cho từng nút một sau khi đã thiết lập xong, còn nếu mạng sử dụng phương thức
phân bố thì từng nút phải tính lấy bảng định tuyến, cùng sử dụng các thông tin tổng thể
như trên (được cung cấp bởi các nút lân cận hoặc bởi NMC) và chọn ra cây đường dẫn
cho riêng nó.
III. Mô phỏng
1. Ý tưởng giả thuật
Dựa trên giải thuật Dijkstra, nhóm em sẽ mô phỏng lại cách hoạt động
của giải thuật bằng ngôn ngữ C++ thông qua các bước dưới đây:
Step 1: Khởi tạo khoảng cách của tất cả các đỉnh là vô hạn.
Step 2: Tạo một tập hợp trống. Mỗi mục của bộ là một cặp (trọng số, đỉnh).
Trọng số (hoặc khoảng cách) được sử dụng để so sánh hai cặp.
Step 3: Chèn đỉnh gốc vào tập hợp và tạo khoảng cách bằng 0.
a) Trích xuất khoảng cách tối thiểu của đỉnh. Cho đỉnh được trích xuất là
u.
b) Vòng qua tất cả các lân cận của u và làm như thế cho mọi đỉnh v.
(ii) Nếu v được đặt, cập nhật khoảng cách của nó bằng cách xóa nó
trước, sau đó chèn với khoảng cách mới
(iii) Nếu v không có trong bộ, thì chèn nó với khoảng cách mới
Step 5: In mảng khoảng cách dist [] để in tất cả các khoảng cách ngắn nhất
class Graph{
int V;
public:
};
Graph::Graph(int V){
this->V = V;
adj[u].push_back(make_pair(v, w));
adj[v].push_back(make_pair(u, w));
setds.insert(make_pair(0, src));
dist[src] = 0;
while (!setds.empty()){
setds.erase(setds.begin());
int u = tmp.second;
int v = (*i).first;
if (dist[v] != INF)
setds.erase(setds.find(make_pair(dist[v], v)));
setds.insert(make_pair(dist[v], v));
int main(){
int V = 9;
Graph g(V);
g.addEdge(0, 1, 4);
g.addEdge(0, 7, 8);
g.addEdge(1, 2, 8);
g.addEdge(1, 7, 11);
g.addEdge(2, 3, 7);
g.addEdge(2, 8, 2);
g.addEdge(2, 5, 4);
g.addEdge(3, 4, 9);
g.addEdge(3, 5, 14);
g.addEdge(4, 5, 10);
g.addEdge(5, 6, 2);
g.addEdge(6, 7, 1);
g.addEdge(6, 8, 6);
g.addEdge(7, 8, 7);
g.shortestPath(0);
return 0;