Professional Documents
Culture Documents
Đề Cương Tóm Tắt Đồ Án Tốt Nghiệp Cử Nhân
Đề Cương Tóm Tắt Đồ Án Tốt Nghiệp Cử Nhân
TRƯỜNG ĐIỆN-DIỆN TỬ
Khóa: 63
MSSV: 20182930
1
Nhận xét khác (về thái độ và tinh thần làm việc của sinh viên)
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
Ngày: … / … / 20…
Ngườ i nhậ n xét
(Ký và ghi rõ họ tên)
2
LỜI NÓI ĐẦU
Trước khi trình bày nội dung phần báo cáo đồ án của mình, em xin gửi lời cảm ơn
chân thành nhất tới TS.Đặng Quang Hiếu, người đã trực tiếp hướng dẫn, cung cấp
các tài liệu cho em trong suốt quá trình thực hiện đồ án.
Do thời gian có hạn và hạn chế về mặt kiến thức, báo cáo không tránh khỏi một vài
sai sót nhỏ. Vì vậy, em rất mong nhận được ý kiến đóng góp của các thầy cô giáo
và các bạn để đề tài được hoàn thiện hơn.
Hà Nội, tháng 08 năm 2022
Sinh viên thực hiện
Lê Bảo Ngọc
3
LỜI CAM ĐOAN
Em là Lê Bảo Ngọc, mã số sinh viên 2012930, sinh viên lớp CTTT Điện Tử 01,
khóa K59. Người hướng dẫn là Ts. Đặng Quang Hiếu.Em xin cam đoan toàn bộ
nội dung được trình bày trong đồ án “Triển khai hệ thống mạng đa tầng sử dụng
định tuyến động RIP, OSPF, BGP” là kết quả quá trình tìm hiểu và nghiên cứu của
em. Các dữ liệu được nêu trong đồ án là hoàn toàn trung thực, phản ánh đúng kết
quả mô phỏng đạt được. Mọi thông tin trích dẫn đều tuân thủ các quy định về sở
hữu trí tuệ; các tài liệu tham khảo được liệt kê rõ ràng. Em xin chịu hoàn toàn
trách nhiệm với những nội dung được viết trong đồ án này.
Hà Nội, tháng 08 năm 2022
Người cam đoan
Lê Bảo Ngọc
Mục lục
4
1. PHẦN MỞ ĐẦU..................................................................................................4
2. TỔNG QUAN VỀ ĐỊNH TUYÉN TĨNH, ĐỊNH TUYẾN ĐỘNG...................4
2.1 Giới thiệu.........................................................................................................4
2.2 Tổng quan về giao thức định tuyến tĩnh...........................................................5
2.2.1 Hoạt động của định tuyến tĩnh..................................................................6
2.2.2 Các thông số chú ý của cấu hình...............................................................6
2.3 Tổng quan về giao thức định tuyến động.........................................................6
3. LÝ THUYẾT.......................................................................................................6
3.1 Hệ thống tự trị (Autonomous System/AS).......................................................6
3.2 RIP...................................................................................................................8
3.2.1 Khái niệm..................................................................................................8
3.2.2 Cách thức hoạt động.................................................................................8
3.3 OSPF...............................................................................................................8
3.3.1 Khái niệm..................................................................................................8
3.3.2 Cách thức hoạt động.................................................................................8
3.4 BGP.................................................................................................................9
3.4.1 Khái niệm..................................................................................................9
3.4.2 Cách thức hoạt động.................................................................................9
3.4.3 Thứ tự ưu tiên trong BGP.........................................................................9
3.5 Hệ thống mạng đa tầng..................................................................................10
3.5.1 Mạng Tier 1............................................................................................10
3.5.2 Mạng Tier 2............................................................................................11
3.6 So sánh các routing protocol OSPF,BGP,BGP..............................................11
3.7 Lợi thế, bất lợi của các routing protocol OSPF,BGP,BGP.............................12
3.8 Load Sharing..................................................................................................13
3.9 Configuration of RIP, OSPF, BGP................................................................13
3.9.1 Configuration of RIP...............................................................................13
3.9.2 Configuration of OSPF...........................................................................17
3.9.3 Configuration of BGP.............................................................................20
4. CÁC MÔ HÌNH LAB CỦA RIP, OSPF, BGP................................................24
4.1 Mô hình lab RIP............................................................................................24
4.1.1 Tiến trình của RIP...................................................................................24
4.1.2 So sánh RIPv1 và RIPv2.........................................................................25
5
4.2 Mô hình lab OSPF.........................................................................................25
4.2.1 Giới thiệu................................................................................................25
4.2.2 Cơ chế hoạt động của OSPF....................................................................26
4.2.3 Các loại gói tin OSPF..............................................................................27
4.3 Mô hình lab BGP...........................................................................................28
4.3.1 Giới thiệu về eBGP và iBGP...................................................................28
4.3.2 Các bảng dữ liệu của BGP......................................................................30
5. Giả lập router Cisco trên nền GNS3................................................................36
5.1 Giới thiệu GN3..............................................................................................36
5.2 Cấu hình NS3.................................................................................................36
5.3 Load IOS cho router......................................................................................36
5.4 Tìm hiểu các cách cấu hình router căn bản(cách gán IP vào interface, kiểm tra
các thông sóo IP).....................................................................................................37
6. TRIỂN KHAI CÀI ĐẶT...................................................................................42
6.1 Mô hình mạng...................................................................................................42
6.2 Cài đặt chung (dùng commandline của Linux OS)............................................44
6.3 Triển khai mô hình mạng trên cùng.................................................................45
6.3.1 Cấu hình IP................................................................................................45
6.3.2 Cấu hình cho các router OSPF................................................................48
6.3.3 Vận hành mô hình OSPF ở tầng trên cùng................................................50
6.4 Triển khai mô hình mạng tầng giữa và tầng dưới..........................................51
6.4.1 Cấu hình IP................................................................................................51
6.4.2 Cấu hình router RIP................................................................................54
6.4.3 Vận hành RIP trên mô hình mạng tầng giữa và tầng dưới.......................56
6.5 Triển khai mô hình mạng tổng quan..............................................................58
6.5.1 Cấu hình IP................................................................................................58
6.5.2 Config cho các router OSPF....................................................................60
6.5.3 Vận hành OSPF trên mô hình mạng tổng quan.......................................63
6.6 Cấu hình BGP cho các router.........................................................................65
6.6.1 Cấu hình IP................................................................................................65
6.6.2 Vận hành BGP trên toàn mô hình mạng....................................................66
7 VẬN HÀNH HỆ THỐNG.................................................................................69
7.1 Kiểm tra kết nối bằng ping và tracepath...........................................................69
6
7.2 Kiểm tra tính đáp ứng của OSPF với AS 1......................................................71
7.3 Kiểm tra tính đáp ứng của RIP với AS 2.........................................................72
7
Chữ viết Cụm từ viết đầy đủ
tắt
OSPF Open Shortest Path First
SR Static Route
DR Dynamic Route
AS Autonomous System
8
Hình 1: Tổng quan về Routing....................................................................................10
Hình 2: Ví dụ về giao thức định tuyến tĩnh.................................................................11
Hình 3: EGP và BGP giữa các AS..............................................................................12
Hình 4: Định tuyến trong và định tuyến ngoài............................................................13
Hình 5: Network mà không sử dụng Split Horizon hoặc Poison Reverse...................21
Hình 6: Count to infinity.............................................................................................22
Hình 7: OSPF Areas....................................................................................................25
Hình 8: OSPF Network với Headquarters (HQ) là area 0...........................................27
Hình 9: Mô hình RIPv2...............................................................................................32
Hình 10: Các mạng OSPF lớn được phân cấp và chia thành nhiều khu vực...............33
Hình 11: Mô hình OSPF đơn vùng..............................................................................35
Hình 12: Mô hình OSPF đa vùng................................................................................35
Hình 13: Mô hình iBGP peering.................................................................................36
Hình 14: Mô hình eBGP peering................................................................................37
Hình 15: Quá trình tiếp nhận và chọn lọc thông tin định tuyến của BGP....................38
Hình 16: Ví dụ về AS-path..........................................................................................39
Hình 17: Ví dụ về Local Preference............................................................................41
Hình 18: Ví dụ về MED..............................................................................................41
Hình 19: Ví dụ về MED..............................................................................................42
Hình 20: Một số mode config của router.....................................................................45
Hình 21: Mô hình lab static route................................................................................48
Hình 22: Mô hình mạng tổng quan.............................................................................49
Hình 23: Mô hình mạng tầng trên cùng.......................................................................50
Hình 24: Mô hình mạng tầng giữa và tầng dưới (1)....................................................50
Hình 25: Mô hình mạng tầng giữa và tầng dưới (2)....................................................51
TÓM TẮT ĐỒ ÁN
Trong đồ án này, trước hết, em tìm hiẻu kĩ lý thuyết về các định tuyến, sau đó tìm hiểu
các mô hình mạng, tìm hiểu cấu trúc vận hành của nó, rồi em triển khai mạng đa tầng
9
sử dụng định tuyến động RIP, OSPF, BGP trên GNS3 để nghiên cứu về độ chính xác
cũng như tính khả thi của việc triển khai hệ thống vận hành các mô hình mạng nhờ
việc trên khai trên Linux OS và Windows. Sau khi triển khai thành công trên GNS3,
em đã tìm cách tối ưu hóa về mô hình, các route, cấu hình IP cho từng route và độ
chính xác khi thực hiện công việc khi làm thao tác mô phỏng trên mô hình mạng.
Sau khi huấn luyện thành công trên GNS3 thì mạng đa tầng đó em cũng thực hiện mô
phỏng trên C với những yêu cầu kỹ thuật cho mạng đa tầng. Từ yêu cầu kỹ thuật, em
xây dựng kế hoạch kiểm chứng và tuân theo nó để kiểm chứng thiết kế. Thiết kế đã
đạt yêu cầu kỹ thuật khi đã đạt được độ bao phủ chức năng là 100%. Ngoài ra, em còn
xây dựng mô hình mạng MANET, mô hình mạng đơn với cấu hình không quá phức
tạp và có thể trực tiếp code các chức năng riêng cho từng chặng của mạng và từ đó so
sánh với hệ thống mạng đa tầng mà em thiết kế trong đồ án này và tính khả thi khi sử
dụng hệ thống này trong thực tế.
10
1. PHẦN MỞ ĐẦU
Trong quá trình phát triển của cuộc sống ngày nay, Internet đã và đang trở thành
một công cụ để ta có thể tương tác, giao dịch, tra cứu thông tin cũng như lưu trữ dữ
liệu. Do đó, hiểu rõ việc triển khai cũng như nắm được rõ các giải thuật trên các
Router hỗ trợ việc định tuyến là điều vô cùng quan trọng đối với những kĩ sư tương
lai. Do đó, trong khuôn khổ của bài tập này, em xin trình bày về cách thiết lập cũng
như cách vận hành hệ thống mạng 3 tầng:
- Tầng trên cùng là khu vực ứng với các router của nhà mạng (ISP), ở khu vực
này, giải thuật định tuyến được sử dụng là BGP
- Tầng giữa là khu vực các router trong mạng nội vùng, được định tuyến sử dụng
giải thuật OSPF hoặc RIP.
- Tầng dưới cùng là các máy tính cá nhân, kết nối trực tiếp vào các Router.
11
-Định tuyến(Routing) là 1 quá trình mà Router thực thi để chuyển 1 gói tin(Packet)
từ 1 địa chỉ nguồn(Source) đế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.
-Bảng định tuyến chứa một tuyến đường đến mọi mạng đích mà một bộ định tuyến
biết cách truy cập. Khi bạn định cấu hình các interface, chúng được liệt kê là các
interface được kết nối trực tiếp trong bảng định tuyến. Bạn có thể quảng cáo các
tuyến đường đến bảng này theo cách thủ công để chỉ định mạng đích. Tuy nhiên,
khi mạng trở nên lớn hơn và phức tạp hơn, việc định cấu hình thủ công mọi tuyến
đường trên mỗi bộ định tuyến trở nên không khả thi. Ngay cả khi bạn sử dụng các
tuyến mặc định và bộ định tuyến trung tâm để giảm thiểu số tuyến các bộ định
tuyến riêng lẻ phải biết, việc định cấu hình các tuyến theo cách thủ công cho việc
mở rộng mạng có thể tốn nhiều thời gian. Việc nhập các tuyến đường tĩnh cũng dễ
xảy ra lỗi: bạn dễ bấm nhầm phím và nhập các tuyến đường không chính xác.
Thay vì cấu hình các tuyến tĩnh, bạn có thể sử dụng các giao thức định tuyến động,
cho phép các bộ định tuyến trao đổi thông tin định tuyến với các bộ định tuyến
khác trong mạng. Sau đó, mỗi bộ định tuyến có thể sử dụng thông tin này để xây
dựng bảng định tuyến của nó.
-Có 2 loại định tuyến cơ bản là Định tuyến tĩnh(Static Route) và Định tuyến
động(Dynamic Route).
-Người quản trị mạng khi chọn lựa giao thức định tuyến động cần cân nhắc các
yếu tố như: độ lớn của hệ thống mạng, băng thông các đường truyền, khả năng của
router. Loại router và phiên bản router, các giao thức đang chạy trong hệ thống
mạng.
2.2 Tổng quan về giao thức định tuyến tĩnh
Đối với định tuyến tĩnh, các thông tin về đường đi phải do người quản trị mạng
nhập cho router. Khi cấu trúc mạng có bất kì thay đổi nào thì chính người quản trị
mạng phải xóa hoặc thêm các thông tin về đường đi cho router. Những loại đường
đi như vậy gọi là đường đi cố định. Đối với hệ thống mạng lớn thì công việc bảo
trì mạng định tuyến cho router như trên tốn rất nhiều thời gian. Còn đối với hệ
thống nhà mạng nhỏ,ít có thay đổi thì công việc này đỡ mất công hơn. Chính vì
định tuyến tĩnh đòi hỏi ngưuoif quản trị mạng phải cấu hình mọi thông tin về
đường đi cho router nên có không có được tính linh hoạt(flexible) như định tuyến
động. Trong những hệ thóng mạng lớn, định tuyến tĩnh thường được kết hợp với
giao thức định tuyến động cho 1 số mục đích đặc biệt.
RTZ(config)#ip route 172.24.4.0 255.255.255.0 172.16.1.2
12
Ví dụ về giao thức định tuyến tĩnh
13
1 số giao thức định tuyến động: RIP, IGRP, EIGRP, OSPF,... được sử dụng để
định hướng dữ liệu của người dùng. Một giao thức định tuyến sẽ cung cấp đầy đủ
thông tin về địa chỉ lớp mạng(network layer) để gói dữ liệu có thể truyền từ host
này đến host khác dựa trên cấu trúc địa chi đó. Có 2 giao thức mà ta cần luuw ý
trong định tuyến động là: Internet Protocol(IP), Internetwork Packet
Exchange(IPX)
3. LÝ THUYẾT
3.1 Hệ thống tự trị (Autonomous System/AS)
Là một tập hợp kết nối một số mạng IP được quản lý định tuyến bởi một thực thể
hành chính. Mỗi thực thể gồm nhiều đơn vị con. Mỗi đơn vị này quản lý và vận hành
hệ thống mạng vật lý một cách độc lập. Các mạng này sau đó được kết nối với nhau
và định tuyến theo một thiết kế chung xác định bởi thực thể. Như vậy, toàn bộ hệ
thống bên trong này có thể được coi như một hệ thống tự trị AS.
Trong hệ thống này, cấu hình và sơ đồ kết nối mạng có thể được xác định rõ ràng.
Mặt khác, rõ ràng rằng, AS này sẽ không thể nắm được sơ đồ kết nối của AS khác.
Điều này dẫn đến các giao thức định tuyến riêng được xác định để thực hiện trong và
ngoài AS, bao gồm:
- Internal Gateway Protocols (IGPs): là các giao thức cho phép các router định
tuyến trong AS. Trong bài, ta sẽ sử dụng 2 giao thức IGP, bao gồm Routing
Information Protocol (RIP) và Open Shortest Path First (OSPF).
- Exterior Gateway Protocol (EGPs): là các giao thức định tuyến kết nối giữa các
AS. Trong bài, ta sử dụng giao thức EGP là Border Gateway Protocol (BGP).
14
thường cũng có thể trở thành 1 AS trong một số trường hợp đặc biệt, tuy nhiên
trong đa số các trường hợp mà em đã tham khảo qua, thì 1 mạng doanh nghiệp, 1
mạng gia đình không cần thiết phải trở thành 1 AS để có thể kết nối Internet mà
các mạng này chỉ cần đăng kí thuê bao của 1 ISP nào đó để có thể truy cập
Internet.
Một AS cần định dạnh duy nhất bằng 1 giá trị gọi là Autonomous System
Number(ASN).
3.2 RIP
3.2.1 Khái niệm
RIP là một giao thức định tuyến dạng IGP được dùng cho các AS có kích thước
nhỏ, không sử dụng cho hệ thống mạng lớn và phức tạp. Giao thức thông tin định
tuyến thuộc loại giao thức định tuyến khoảng cách vectơ (distance-vector), giao thức
sử dụng giá trị để đo lường đó là số bước nhảy (hop count) trong đường đi từ nguồn
đến đích. Mỗi bước đi trong đường đi từ nguồn đến đích được coi như có giá trị là 1
hop count. Khi một bộ định tuyến nhận được 1 bản tin cập nhật định tuyến cho các gói
tin thì nó sẽ cộng 1 vào giá trị đo lường đồng thời cập nhật vào bảng định tuyến.
3.2.2 Cách thức hoạt động
RIP sử dụng thuật toán định tuyến theo véctơ khoảng cách Distance Vector
Algorithms (DVA). Đây là một thuật toán định tuyến tương thích nhằm tính toán con
đường ngắn nhất giữa các cặp nút trong mạng, dựa trên phương pháp tập trung được
biết đến như là 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ở của địa chỉ đích, nút kế tiếp, và con đường ngắn nhất tới đích.
3.2.3 Hạn chế
RIP phải xử lý một số lỗi do thuật giải cơ sở gây ra. Đầu tiên, trong suốt thời gian
“holddown” sau khi có thông tin định tuyến bị thay đổi, nếu router nhận được thông
tin cập nhật từ một router láng giềng khác nhưng thông tin này cho biết có đường đến
mạng X với thông số định tuyến tốt hơn con đường mà router trước đó thì nó sẽ bỏ
qua, không cập nhật thông tin này.
Tiếp theo là lỗi đếm vô hạn. Định tuyến lặp có thể xảy ra khi bảng định tuyến trên
các router chưa được cập nhật do quá trình hội tụ chậm.
15
3.3 OSPF
3.3.1 Khái niệm
OSPF là một giao thức định tuyến IGP link – state điển hình. Đây là một giao
thức được sử dụng rộng rãi trong các mạng doanh nghiệp có kích thước lớn. Giao thức
OSPF được chuẩn hoá cho các router để trao đổi thông tin và xây dựng nên cơ sở dữ
liệu link state. OSPF chỉ hoạt động trong một vùng AS nên nó được xếp vào loại
giống với RIP.
3.3.2 Cách thức hoạt động
Mỗi router khi chạy giao thức sẽ gửi các trạng thái đường link của nó cho tất cả
các router trong vùng (area). Sau một thời gian trao đổi, các router sẽ đồng nhất được
bảng cơ sở dữ liệu trạng thái đường link (Link State Database – LSDB) với nhau, mỗi
router đều có được bản đồ mạng của cả vùng. Từ đó mỗi router sẽ chạy giải thuật
Dijkstra tính toán ra một cây đường đi ngắn nhất (Shortest Path Tree) và dựa vào cây
này để xây dựng nên bảng định tuyến.
Khi router chạy OSPF thì phải có một giá trị duy nhất dùng để định danh cho
router trong cộng đồng các router chạy OSPF. Giá trị này được gọi là Router – id.
Router – id trên router chạy OSPF có định dạng của một địa chỉ IP.
Mặc định, tiến trình OSPF trên mỗi router sẽ tự động bầu chọn giá trị router –
id là địa chỉ IP cao nhất trong các interface đang active, ưu tiên cổng loopback. Để đổi
lại router – id của tiến trình, phải thực hiện khởi động lại router hoặc gỡ bỏ tiến trình
OSPF rồi cấu hình lại, khi đó tiến trình bầu chọn router – id sẽ được thực hiện lại với
các interface đang hiện hữu trên router.
Có một cách khác để thiết lập lại giá trị router – id là sử dụng câu lệnh “router-
id” để thiết lập bằng tay giá trị này trên router
Router (config) # router ospf 1
Router (config-router) # router-id A.B.C.D
hoặc thiết lập thông qua file config với dòng
ospf router id A.B.C.D
3.4 BGP
3.4.1 Khái niệm
BGP là một thành phần quan trọng của mạng Internet trong việc định tuyến các
router giữa các AS khác nhau. Nó hoạt động dựa trên việc cập nhật một bảng chứa các
địa chỉ mạng (prefix) cho biết mối liên kết giữa các hệ thống tự trị (autonomous
system, tập hợp các hệ thống mạng dưới cùng sự điều hành của một nhà quản trị
mạng, thông thường là một nhà cung cấp dịch vụ Internet, ISP. Ngoài việc sử dụng
BGP giữa các AS, BGP cũng có thể được sử dụng trong các mạng riêng quy mô lớn
do OSPF không đáp ứng được. Một lý do khác là dùng BGP để hỗ trợ multihome.
16
Đa số người sử dụng Internet thường không sử dụng BGP một cách trực tiếp.
Chỉ có các nhà cung cấp dịch vụ Internet sử dụng BGP để trao đổi đường đi. BGP là
một trong những giao thức quan trọng nhất đảm bảo tính kết nối của Internet.
3.4.2 Cách thức hoạt động
Các thiết bị tìm đường (router) sử dụng BGP kết nối từng cặp (peering) với
nhau bằng cách thiết lập phiên làm việc trên giao thức TCP qua cổng 179. Phiên kết
nối này được duy trì bằng việc gửi các thông điệp keep-alive 19 byte mỗi 60 giây
(mặc định).
Có bốn loại thông điệp BGP là open (mở phiên kết nối), update (thông báo
hoặc rút lại một đường đi), notification (thông báo lỗi), keep-alive (duy trì phiên kết
nối)
17
có thể đạt được. Điều này do giới hạn về tiềm lực tài chính cũng như các yếu tố về
địa, chính trị.
Số Thứ hạng Độ dài đường
Tên Trụ sở lượng CAIDA cáp quang
AS AS quản lý
AT&T Mỹ 7018 23 660,000
Century Link Mỹ 3356 1 885,139
Deutsche Telekom Global
Đức 3320 20 250,000
Carrier
GTT Communications, Inc. Mỹ 3257 3 232,934
Liberty Global Anh 6830 31 800,000
NTT Ltd. Anh 2914 5
Orange Pháp 5511 18
PCCW Global Hồng Kông 3491 9
Sprint Nhật Bản 1239 27 42,000
Tata Communications Ấn Độ 6453 6 700,000
Telecom Italia Sparkle Ý 6762 8 560,000
Telxius Tây Ban Nha 12956 14 65,000
Telia Carrier Thụy Điển 1299 2 65,000
Verizon Enterprise Solutions Mỹ 701 22 805,000
Zayo Group Mỹ 6461 10 196,339
18
thiện của RIP nhau: -Withdrawn routes.
-Kết nối và trạng thái của -Routes bao gồm AS
nó: thông qua các packet
+Kết nối tới network. đã đi qua.
+Kết nối tới router khác. - Bộ lọc nội bộ sàng
-ID của các router trong lọc định tuyến mà bộ
multi-access network. định tuyến quảng cáo
-Tổng hợp các route trong đến môtj láng giềng.
phạm vi network được
đinh sẵn(gửi bằng ABRs).
-Định tuyến tới
ASBR(autonomous.system
border router), gửi bằng
ABRs.
-External route hoặc route
mặc định cho external
traffic(gửi bằng ABRs).
Những router gửi -Mọi router -Trong point-to-point -BGP routers giao
và nhận được interfaces của network, các router láng tiếp chỉ với các
thông tin updates RIP networks. giềng sẽ trao đổi LSAs. routers láng giềng đã
-Interface mà -Trong multi-access được cấu hình
nhận được một networks, mọi router gửi
định tuyến quảng LSAs tới DR và back-up
bá là nó không DR(BDR) và nhận LSAs
thể tiếp cận được từ DR.
-Passive interface -ABRs tóm tắt các định
nhận được thông tuyến vào các khu vực sơ
tin update nhưng khai
không gửi nó
3.7 Lợi thế, bất lợi của các routing protocol OSPF,BGP,BGP
19
OSPF -Các route chính xác có -Cấu hình phức tạp. -Các mạng LAN và
tính đến tốc độ liên kết -Chi phí có thể cao. WAN mở rộng hơn.
và chi phí. -OSPF không thể được sử -Không được sử dụng
-Sự hội tụ diễn ra nhanh dụng như một EGP nếu qua các kết nối dial-
chóng. không có sự phân phối lại. up.
-Chi phí thấp như RIP
nếu mạng được thiết kế
tốt.
BGP -ISPs sử dụng BGP. -Cấu hình phức tạp. -Kết nối với ISP.
-BGP cung cấp sự kiểm -Mạng cũng phải chạy -Không được sử dụng
soát chặt chẽ đối với IGP. qua các kết nối dial-
những route nào được up.
quảng bá và chấp nhận.
-Chi phí tương đối thấp.
22
Bộ định tuyến B được kết nối trực tiếp với Mạng 1, vì vậy nó quảng cáo một tuyến
đường đến nó với chỉ số là 1. Bộ định tuyến A và C nhận tuyến đường này từ Bộ
định tuyến B. Cả hai đều lưu trữ tuyến đường đến Mạng 1 với B là địa chỉ bước
tiếp theo và metric là 2. Các bộ định tuyến A và C sau đó bắt đầu quảng cáo tuyến
đường này. Bộ định tuyến C nhận được tuyến đường từ Bộ định tuyến A. Nó
không thay đổi bảng định tuyến của nó để chỉ ra rằng Bộ định tuyến A là hop tiếp
theo, vì metric(2) cao hơn số liệu được quảng cáo bởi Bộ định tuyến B. Bộ định
tuyến B cũng nhận được tuyến đường từ Bộ định tuyến A. Không có gì trong bản
cập nhật mà Bộ định tuyến B nhận được từ Bộ định tuyến A chỉ ra rằng tuyến
đường này cuối cùng thông qua chính Bộ định tuyến B. Bộ định tuyến B chỉ đơn
giản là từ chối tuyến đường vì cùng một lý do mà Bộ định tuyến C đã làm: số liệu
cao hơn so với tuyến đường mà nó đã có. Miễn là mạng vẫn ổn định, quá trình này
tiếp tục suôn sẻ. Tuy nhiên, các vấn đề nảy sinh nếu cấu trúc liên kết thay đổi.
Xem xét điều gì sẽ xảy ra khi liên kết giữa Bộ định tuyến B và Mạng 1 không
thành công. Router B bắt đầu quảng cáo một tuyến đến Mạng 1 với metric là 16 để
chỉ ra rằng nó không thể truy cập được.
Router A và C nhận được bản cập nhật này từ router B và thay đổi metric, nhưng
không trước khi chúng đã gửi các router riêng của mình cho Mạng 1 với metric là
2. Router A nhận định tuyến từ router C và router C nhận cùng 1 định tuyến từ
router A.
Bởi vì các tuyến đường này có metric thấp hơn so với tuyến đường router B, router
A và C lưu trữ các tuyến đường này trong bảng định tuyến của chúng (thêm một
vào metric ). Vì kết nối của chính nó với Mạng 1 không thành công, router B chấp
nhận tuyến đường.
Count to infinity
23
Các router A và C giờ đây đều có route tới Mạng 1 với metriclà 3, trỏ tới nhau.
Trong chu kỳ cập nhật tiếp theo, router A nhận route từ router C. Nó cập nhật
routing đường trong bảng của nó với metric là 4. Router C, nhận bản cập nhật từ
router A, cũng thực hiện tương tự. Vào lần tiếp theo các router quảng bá tuyến
đường, nó có metric là 4. Cuối cùng, chỉ số này sẽ đạt đến 16 và các bộ định tuyến
sẽ xác định rằng chúng không thể tiếp cận Mạng 1 thông qua nhau. Quá trình này
được gọi là “Count to infinity”, và nó có thể l4àm chậm sự hội tụ một cách đáng
kể.
Split Horizon là một trong những giải pháp cho vấn đề hội tụ Split Horizon chỉ
định rằng một giao diện không được gửi cập nhật về một tuyến đường đến
interface mà nó nhận được tuyến đường từ đó. Nói cách khác, các bộ định tuyến
giả định rằng bộ định tuyến mà từ đó chúng nhận được một tuyến đường đến một
điểm đến ban đầu được kết nối trực tiếp hơn và cập nhật trên điểm đến đó. Split
Horizon cũng giảm thiểu số lượng gói tin được gửi trong các hoạt động thông
thường.
24
OSPF là một giao thức trạng thái liên kết; các router gửi cho nhau các LSA để
phân phối thông tin về các kết nối của chúng với mạng và tới các router khác. LSA
giúp các router đồng bộ hóa cơ sở dữ liệu của họ. Tất cả các router trong một AS
(hoặc khu vực) phải sử dụng cùng một cơ sở dữ liệu để tạo ra các tuyến đường
chính xác. OSPF định nghĩa một số loại LSA. Một số LSA này bị tràn vào tất cả
các bộ định tuyến hoặc DR trong một khu vực và một số được gửi đến các bộ định
tuyến trong toàn bộ AS. Các giao diện trong vùng sơ khai không lắng nghe một số
LSA nhất định. OSPF xác định các quy tắc cụ thể để đồng bộ hóa cơ sở dữ liệu với
lưu lượng tối thiểu giữa các bộ định tuyến. Bất kỳ hai bộ định tuyến nào có
ỉnterface trên cùng một mạng là neighbor có khả năng gửi LSA cho nhau. Tuy
nhiên, không phải tất cả các láng giềng đều thiết lập sự gần gũi đầy đủ - nghĩa là,
trao đổi LSA. OSPF thiết lập các giao thức mà theo đó tất cả các bộ định tuyến có
thể đồng bộ hóa cơ sở dữ liệu của chúng mà không cần trao đổi LSA.
Point-to-Point Versus Multi-Access Networks
Trong point-to-point network, một router chỉ thiết lập sự liền kề đầy đủ với các
router mà nó được kết nối trực tiếp. Ngay cả các mạng Frame Relay cũng dựa trên
các mạch ảo vĩnh viễn point-to-point (PVCs) được kết nối thông qua các interface
trên Frame Relay.
Trong multi-access subnet, chẳng hạn như mạng Ethernet, 1 router có thể trở thành
neighbor với tất cả các router khác trên subnet. Để giảm thiểu các gói OSPF, các
bộ định tuyến chọn một DR và một BDR để tất cả các bộ định tuyến khác thiết lập
sự kề cận đầy đủ. Nghĩa là, các bộ định tuyến chỉ gửi LSA đến DR và BDR. Chỉ
DR phát sóng LSA. Nếu DR không phát một LSA trong một khoảng thời gian nhất
định, BDR sẽ giả định rằng nó đã bị lỗi và tiếp nhận làm DR mới.
Areas
Một trong những nhiệm vụ quan trọng nhất của quản trị viên mạng OSPF là nhóm
các subnet lại với nhau thành các area để bộ định tuyến không cần phải duy trì cơ
sở dữ liệu rộng và phức tạp để chuyển lưu lượng truy cập thông suốt đến đích của
nó. Một khu vực là một nhóm các subnet trong mạng OSPF, mỗi mạng này chạy
bản sao OSPF riêng và có cơ sở dữ liệu topo riêng. Điều này có nghĩa là các router
trong các area riêng biệt không cần biết cấu trúc liên kết của nhau hoặc trao đổi
LSA. Kết quả là, việc đồng bộ hóa cơ sở dữ liệu tiêu tốn ít băng thông hơn. Các bộ
định tuyến và bộ định tuyến kém mạnh hơn chủ yếu định tuyến lưu lượng nội bộ
không còn phải giữ các bảng định tuyến rộng hơn mức chúng thực sự cần.
-Các khu vực phải được xác định để:
Tất cả các khu vực kết nối với đường trục mạng, hoặc khu vực 0.
Đường trục mạng bao gồm các bộ định tuyến có giao diện trên các mạng ở
nhiều khu vực, hoặc các ABR.
Đường trục mạng liền kề.
25
-Lưu lượng trong mạng OSPF chia thành ba loại:
Intra-area traffic
Inter-area traffic
External trafic
Bộ định tuyến biên giới hệ thống tự trị (ASBR) hỗ trợ lưu lượng bên ngoài
(trong mạng WAN với một khu vực hoặc nhiều khu vực.) ASBR kết nối với
mạng bên ngoài và chạy cả OSPF và giao thức định tuyến của mạng bên ngoài.
Sau đó, nó sẽ đưa các tuyến bên ngoài, hoặc một tuyến mặc định cho lưu lượng
bên ngoài, vào mạng OSPF. ASBR thường nằm trong đường trục mạng, nhưng
nó cũng có thể nằm trong vùng sơ khai kết nối với một trang từ xa. Khi một
khu vực sơ khai kết nối với một trang web từ xa, nó được gọi là khu vực không
sơ khai (NSSA).
OSPF Areas
Stub Areas and Stub Routers: Mạng sơ khai là mạng trong đó lưu lượng kết
thúc. Mạng nhận được lưu lượng dành cho các máy chủ của nó, nhưng nó
không chuyển bất kỳ lưu lượng nào đến mạng khác. Một khu vực sơ khai là
một phần mở rộng của ý tưởng về một mạng sơ khai.
Backbone(Area 0): Network’s backbone, hoặc khu vực 0, liên kết tất cả các
khu vực sơ khai. Như đã thảo luận ở trên, nó bao gồm các ABR. Thông qua
trao đổi với các ABR khác trong đường trục, tất cả các ABR đều giữ một cơ sở
dữ liệu tôpô cho toàn bộ mạng. Chúng tạo ra các bản tóm tắt tuyến đường cho
từng khu vực không phải đường trục. Sau đó, họ gửi các bản tóm tắt tuyến
đường này cho nhau và cho các bộ định tuyến nội bộ mà họ phục vụ. Rõ ràng,
ABR phải xử lý nhiều tuyến hơn so với bộ định tuyến sơ khai và tương ứng cần
nhiều năng lượng hơn.
26
NSSA: NSSA là một area giống với một stub area về nhiều mặt. Nó kết nối với
đường trục mạng và thường không chuyển lưu lượng đến các khu vực khác.
Tuy nhiên, một bộ định tuyến trong NSSA cũng kết nối với một trang từ xa
hoặc một ISP thông qua ASBR. Thông thường, OSPF sẽ không cho phép các
tuyến bên ngoài được phân phối vào vùng sơ khai. Tuy nhiên, các bộ định
tuyến nội bộ trong một NSSA có thể nhận các LSA được xác định đặc biệt cho
các tuyến bên ngoài.
Route Computation
Router sử dụng thông tin chúng nhận được từ LSA để tập hợp cơ sở dữ liệu
topo của AS (hoặc, nếu được cấu hình, khu vực). Cơ sở dữ liệu này bao gồm:
- Các router thuộc AS hoặc area riêng biệt
- Các network thuộc AS hoặc area riêng biệt
- Các kết nối(links) thuộc AS hoặc area riêng biệt
- Chi phí cho các links thuộc AS hoặc area riêng biệt
OSPF Configuration Concerns
-Role của mỗi router:
• Router nội bộ
• ABR
• ASBR
-ID của mỗi router
-Vùng OSPF cho mỗi mạng được kết nối trực tiếp
Một cấu trúc liên kết phổ biến cho mạng WAN là với Headquarters (HQ), được
định nghĩa là area 0, kết nối với các stub area tại một hoặc nhiều địa điểm ở xa.
Trong cấu trúc liên kết này, các router của trụ sở chính kết nối với các trang web từ
xa là ABR. Các router tại các điểm từ xa là router nội bộ. Nếu một router kết nối
với mạng công cộng hoặc mạng bên ngoài khác, chẳng hạn như ISP, thì đó là
ASBR.
27
OSPF Network với Headquarters (HQ) là area 0
28
Để bật BGP, bạn phải đặt số AS cục bộ, sau đó nhập context của BGP
configuration
Quảng bá Local Network
Chỉ định các mạng cục bộ mà các trang web từ xa có thể truy cập. Người dùng chỉ
nên quảng bá các mạng bắt nguồn từ AS của họ.
Thiết lập ID cho router
Interface của BGP nhận dạng chính nó với các hàng xóm bằng router ID của nó.
Thường thì ID này là địa chỉ IP của giao diện logic kết nối với mỗi hàng xóm. Nó
cũng có thể là địa chỉ của giao diện lặp lại được sử dụng làm nguồn cập nhật.
Cấu hình cho BGP Neighbor
BGP khác với nhiều giao thức định tuyến vì nó không cho phép một router tự động
tìm kiếm các đồng nghiệp để từ đó có được các tuyến đường. Bạn phải cấu hình
một hàng xóm BGP riêng biệt cho mỗi router mà router cục bộ có thể giao tiếp.
Đối với mỗi hàng xóm, bạn có thể cấu hình một chính sách để chỉ định các tuyến
đường mà giao diện BGP gửi đến và chấp nhận từ hàng xóm.
Thiết lập ID cho BGP Neighbor
30
• AS mà trafic phải đi qua
• thuộc tính cộng đồng
• metric
Tạo các route map entry
Ta có thể áp dụng một bản đồ tuyến đường cho mỗi hàng xóm cho dữ liệu đi và
một bản đồ cho dữ liệu đến. Bạn có thể định cấu hình nhiều chính sách trong một
sơ đồ tuyến đường bằng cách tạo các mục nhập có cùng tên nhưng khác số thứ tự.
Cấu hình cho community list
Để tạo danh sách cộng đồng, hãy chuyển sang ngữ cảnh chế độ cấu hình chung. Từ
ngữ cảnh chế độ này, bạn có thể chọn một hoặc nhiều mối quan hệ cộng đồng
được xác định rõ ràng. Bạn cũng có thể nhập một giá trị cho một cộng đồng được
xác định riêng tư.
Cấu hình cho AS path list
Ta có thể sử dụng danh sách đường dẫn AS để chọn các tuyến đường cho một
chính sách theo các giá trị trong trường AS của tuyến đường.
Định nghĩa các tuyến đường mà router có thể quảng bá
Bạn có thể kiểm soát xem giao diện BGP có quảng cáo tuyến đường đến neighbor
theo lộ trình:
-Địa chỉ mạng
-Độ dài prefix
-AS path
-Community
-Metric
Lọc các tuyến đường đi vào
Chúng ta thể kiểm soát các tuyến đường mà bộ định tuyến cục bộ quảng cáo cho
một người hàng xóm, cũng có thể kiểm soát các tuyến đường mà bộ định tuyến
chấp nhận từ một neighbor. Bạn có thể lọc các tuyến đường đến theo:
-Địa chỉ mạng đích và độ dài prefix
-Community
-AS path
31
4.1 Mô hình lab RIP
4.1.1 Tiến trình của RIP
- RIP được phát triển trong nhiều năm bắt đầu từ phiên bản 1(RIPv1), RIP chỉ là
giao thức định tuyến theo lớp địa chỉ cho đến phiên bản 2(RIPv2).
- RIP trở thành giao thức định tuyến không theo lớp địa chỉ. RIPv2 có những đặc
điểm hơn như sau:
Cung cấp thêm nhiều thông tin định tuyến hơn
Có cơ chế xác minh giữa các router khi cập nhật để bảo mật cho bảng
định tuyến
Có hỗ trợ VLSM(Varibale Length Subnet Masking) mask có chiều dài
khác nhau).
- RIP tránh định tuyến lặp vòng đếm vô hạn bằng cách giới hạn số lượng hop tối
đa cho phép từ máy gửi tới máy nhận, số lượng hop tối đa cho mỗi con đường
là 15. Đối với các con đường mà router nhận được từ thông tin cập nhật của
router láng giềng, router sẽ tăng chỉ số hop lên 1 vì router xem bản thân nó
cũng là 1 hop trên đường đi. Nếu sau khi tăng chỉ số hop lên 1 mà chỉ số này
lớn hơn 15 thì router sẽ xem như mạng đích không tương ứng với con đường
này nên không đến được. Ngoài ra RIP có những đặc tính tương tự các giao
thức định tuyến khác: RIP cũng có horizon và holddown để tránh cập nhật
thông tin định tuyến không chính xác.
Mô hình RIPv2
33
Các mạng OSPF lớn được phân cấp và chia thành nhiều khu vực
- Mạng OSPF lớn cần sử dụng thiết kế phân cấp và chia thành nhiều vùng. Các
vùng này đều được kết nối vào cùng phân vùng 0 hay còn gọi là vùng xương
sống(backbone). Kiểu thiết kế này cho phép kiểm soát hoạt động cập nhật định tuyến.
Việc phân vùng như vậy làm giảm tải của hoạt động định tuyến, tăng tốc dộ hội tụ,
giới hạn của sựu thay đổi của hệ thống mạng vào từng vùng và tăng hiệu suát hoạt
dộng.
- Sau đây là các đặc điẻm của OSPF:
Là giao thức định tuyến trạng thái theo đường liên kết.
Được sử dụng trong RFC 2328.
Sử dụng thuật toán SPF để tính toán chọn đường đi tốt nhất.
Chỉ cập nhật khi cấu trúc mạng có sự thay đổi
4.2.2 Cơ chế hoạt động của OSPF
- OSPF thực hiện thu thập thông tin về các trạng thái các đường liên kết từ các
router láng giềng. Mỗi router OSPF quảng cáo trạng thái các đường liên kết cảu nó
và chuyển tiếp các thông tin mà nó nhận được cho tất cả các láng giềng khác.
- Router xử lý các thông tin nhận được để xây dựng một cơ sở dữ liệu về trạng
thái các đường liên kết trong 1 vùng. Mọi router trong cùng 1 vùng OSPF sẽ có
cùng một cơ sở dữ liệu này. Do đó mọi router sẽ có thông tin giống nhau về trạng
thái của các đường liên kết và láng giềng của các router khác. Mỗi router áp dụng
thuật toán SPF và cơ sở dữ liệu của nó để tính toán chọn đường đi tốt nhất cho
34
mạng đích. Thuật toán SPF tính toán dựa trên chi phí của băng thông đường
truyền. Đường nào có chi phí nhỏ nhất sẽ được chọn để đưa vào bảng định tuyến.
- Mỗi router giữ 1 danh sách các láng giềng thân mật, danh sách này gọi là cơ
sở dữ liệu các láng giềng thân mật. Các láng giềng được gọi là thân mật là những
láng giềng mà router có thiết lập mối quan hệ 2 chiều. Một router có thể có thể có
nhiều láng giềng nhưng không phải láng giềng nào cũng có mối quan hệ thân mật.
Đối với mỗi router danh sách láng giềng thân mật sẽ khác nhau.
- Để giảm bớt số lượng trao đổi thông tin định tuyến với nhiều router láng giềng
trong cùng 1 mạng, các router OSPF bầu ra 1 router đại diện gọi là Designate
router(DR) và một router đại diện dự phòng gọi là backup Designated(BDR) làm
diểm tập trung cho các thông tin định tuyến.
4.2.3 Các loại gói tin OSPF
OSPF có 5 loại gói tin là Hello, Database Description, Link State Request, Link
State Update, Link State Acknowledge.
Version Type Packet Length
Router ID
Area ID
Checksum Authentication Type
Authentication Data
- Hello: Gói tin Hello dùng để phát hiện trao đổi thông tin các router cận kề.
- Database Description: gói tin này được dùng để chọn lựa router nào sẽ được
quyền trao dổi thông tin trước(master/slave).
- Link State Request: gói tin này được dùng để chỉ diinhj loại LSA dùng tiến trình
trao dổi các gói tin DBD
- Link State Update: gói tin này được dùng để gửi các gói tin LSA đến router cận
kề yêu cầu gói tin này khi nhận được thông điệp Request.
- Link State Acknowledge: gói tin này dùng để báo hiệu đã nhận gói tin Update
- Link State Acknowledge: gói tin này dùng để báo hiệu đã nhận gói tin Update
35
Mô hình OSPF đơn vùng
36
BGP chạy trên nền TCP, sử dụng port 179. Người quản trị cần nắm được để cấu
hình phù hợp cho các thiết bị kiểm soát dữ liệu(ví dụ như Firewall), các thiết bị
kiểm soát cần phải cho qua các luồng TCP với port 179.
Một điểm đáng chú ý khác khi BGP sử dụng TCP để truyền tải là TCP không hỗ
trợ gửi dữ liệu theo nhóm nên việc thiết lập quan hệ neighbor giưuax 2 router hoàn
toàn sử dụng phương thức unicast. Nghĩa là, người quản trị bắt buộc phải khai báo
tường minh địa chỉ IP của từng neighbor mà router đang xét muốn thiết lập
peering. Các neighbor trong BGP về nguyên tắc phải được khai báo bằng
tay(manually). BGP không hỗ trợ thiết lập neighbor 1 cách tự động bằng phương
thức multicast nhưu với các giao thức định tuyến trong.
Quan hệ láng giềng BGP(hay BGP peering) có thể được thiết lập giữa các router
thuộc cùng 1 AS hoặc giữa các router nằm trên 2 AS khác nhau:
Trường hợp đầu gọi là iBGP peering(internal BGP)
Trường hợp sau gọi là eBGP peering(external BGP)
37
Mô hình eBGP peering
Vì BGP chạy trên nền TCP nên 2 router BGP peer với nhau không nhất thiết phải kết
nối trực tiếp với nhau nhưu các giao thúc định tuyến trong. 2 router muốn peering với
nhau chỉ cần đảm bảo 2 địa chỉ IP của chúng có thể đi đến nhau để có thể thiết lập
được kết nối TCP từ đo xây dựng TCP peering. Tuy nhiên, điều này chỉ áp dụng cho
iBGP peering; với eBGP peering, 2 router vẫn sử dụng các IP kết nối trực tiếp để thiết
lập peering với nhau. Chúng ta có thể cấu hình các router để thay đổi, cho phép 2
router có thể xây dựng eBGP peering bằng các địa chỉ IP không kết nối trực tiếp với
nhau.
4.3.2 Các bảng dữ liệu của BGP
Bảng neighbor: Bảng này bao gồm tất cả các router mà đã thiết lập BGP
peering với router đang xét. Thông tin sẽ liệt kê ra địa chỉ IP của router
neighbor, trạng thái của quan hệ peering với neighbor này và nhiều vấn đề
liên quan khác
Bảng BGP: Các router neighbor đã thiết lập peering thành công với router
đang xét sẽ gửi tất cả ác IP prefix cùng với bộ thông số tốt nhất mà chúng
tính được cho router này. Router đang xét sẽ đưa toàn bộ thông tin nhận
được vào một kho chứa là “bảng BGP”. Là một giao thức chủ yếu được xây
dựng theo phương thức distance-vector, một router BGP chỉ quảng bá cho
láng giềng những “route” tố nhất nó có. Do vậy, bảng BGP của 1 router là
kho chứa nhưungx định tuyến tốt nhất mà các láng giềng cung cấp.
Bảng định tuyến: Router BGP sẽ sử dụng 1 tiến trình có tên gọi là Tiến
trình chọn đường BGP(BGP path selecton process) quét qua toàn bộ bảng
BGP vừa nêu. Tiến trình này sẽ chọn ra những route tốt nhất trong các route
38
được lưu trong bảng BGP để dưa vào bảng định tuyến sử dụng làm đường
đi chính thức đến các mạng đích, đồng thời router BGP sẽ tiếp tục quảng bá
những router tốt nhất vừa chọn đến các neighbor kế tiếp. Như đã nêu, bảng
BGP vốn đã có các route tốt nhất do các neighbor quảng bá cho router đang
xét, vậy thì, bảng định tuyến BGP là nới chứa những route “tốt nhất từ
những cái tốt nhất” bởi tiến trình chọn đường của BGP.
*Phương thức Distance-vector: các router quảng bá thông tin định tuyến là các
IP prefix trong bảng định tuyến cũng với giá trị metric tối ưu để đi đến được các IP
prefix này(quảng bá các route trong định tuyến). Mỗi router chạy giao thức
distance-vector không có hiểu biết về topology mạng mà chỉ nhìn thấy không xa
hơn các router neighbor kết nối trực tiếp với nó. Mọi quyết định định tuyến mà 1
router đưa ra hoàn toàn dựa vào thông tin định tuyến được cung cấp bởi neighbor
và router sẽ chọn hướng đi theo neighbor nào cung cấp thông tin với giá trị metric
tốt nhất. Để trnahs lỗi có thể xảy ra vì 1 router không thấy được tôp mạng mà chỉ
dựa hoàn toàn vào neighbor trong định tuyến, các giao thức distance-vector đều
phải được tích hợp các cơ chế chống loop để tránh các trường hợp đựa ra quyết
định định tuyến có thể gây ra loop trong vận chuyển dữ liệu.
Quá trình tiếp nhận và chọn lọc thông tin định tuyến của BGP
Router R đã peering thành công với các neighbor R1,R2,R3. Các router
R1,R2,R3 sẽ gửi đi các BGP routing update để quảng bá cho các router
BGP tốt nhất mà chúng đã chọn lựa trước đó
Router R khi nhận được các routing update từ neighbor sẽ tập hợp hết vào 1
“kho chứa” route là bảng BGP. Như vậy, bảng BGP của 1 router là nơi tập
kết tất cả thông tin định tuyến mà nó nhận được từ láng giềng
39
Tiếp theo, router R sẽ thực hiện “tuyển chon” từ “kho route” trong bnagr
BGP ra các route tốt nhất cho từng mạng đích. Việc tuyển chọn này tuân
theo 1 bộ quy tắc so sánh các thuộc tính đường đi của các route để từ đó
chọn ra route tối ưu gọi là Tiến trình chọn đường BGP(BGP Path Selection
Process).
Các route tốt nhát được chọn ở trên sẽ được router R cập nhật vào bảng
định tuyến để sử dụng chính thức cho việc đường dẫn dữ liệu, đồng thời
cũng được quảng bá cho router láng giềng kế tiếp. 1 router Path-vector hay
distance vector chỉ quảng bá láng giềng đến những route tốt nhất mà nó có.
1 số thuộc tính đường đi thường gặp:
AS-path: 1 chuỗi ký tự liệt kê ra danh sách ASN của các AS mà 1
IP prefix dã lan truyền ngang qua để đến được router đang xét.
Ví dụ về AS-path
Từ hình vẽ trên, chúng ta xem xét quá trình prefix 192.168.1.0 lan truyền từ
AS64520, qua AS65500 rồi đến router B nằm trên AS 65000. Khi router B hiển thị
thông tin về 192.168.1.0 mà nó nhận được từ BGP, 1 chuỗi ký tự kèm thep sẽ xuất
hiện cho biết prefix này đã đi qua các AS nào trước khi đến được router B. Chuỗi
ký tự này trình bày ASN theo thứ tự từ gần nhất đến xa nhất với router B : “65500
64250”.
Next-hop: Tương tự các giao thức distance-vector, next-hop là địa
chỉ của router neighbor đã quảng bá thông tin định tuyến cho router
đang xét, là router kế tiếp phỉa đi qua trong lộ trình đến một mạng
đích nào đó. Tuy nhiên, trong xử lí thông tin định tuyến được quảng
bá qua lại giữa các AS, vì BGP là 1 giao thức định tuyến ngoài,
next-hop được xem như là địa chỉ IP inbound của AS kế tiếp trên
đường đi đến đích.
40
Ví dụ về next-hop
Từ hình vẽ trên, router A(AS 64520) quảng bá prefix 172.16.0.0 đến router B qua 1
sesion eBGP với trường hợp next-hop trong routing được thiết lập là “10.10.10.3”.
Đến lượt nó, router B lại tiếp tục quảng bá prefix này cho router C. Nếu giống nhưu
các giao thức IGP thông thường, B sẽ quảng bá địa chỉ next-hop cho C là
“172.20.10.1”- là IP cảu chính nó nhưng vì đây là 1 BGP-một giao thức định tuyến
ngoài nên router B sẽ vẫn để nguyên next-hop “10.10.10.3” cho mạng 172.16.0.0 mà
quảng bá đến router C. Kết quả là C sẽ nhận được cập nhật định tuyến cho prefix
172.16.0.0 có next-hop là 10.10.10.3, và nếu như C không được định tuyến trước đó
để có thể đi đến địa chỉ 10.10.10.3, C sẽ không sử dụng được cập nhật định tuyến này,
từ đó không thể route dữ liệu đến mạng 172.16.0.0.
Origin: Có nhiều cách để 1 router ban đầu quảng bá các IP prefix
vào mạng lưới BGP. Phương pháp được sử dụng là dùng câu lệnh
“network” để tìm kiếm và quảng bá IP prefix có sẫn trước đó trong
bảng định tuyến của router vào BGP.
Có 3 Origin code có thể xuất hiện trong thuộc tính Origin:
“i”-“IGP”: Mã hiệu này cho biết prefix đang xét được router gốc quảng bá
vào BGP bằng lệnh. “network” hoặc bằng thao tác summary địa chỉ.
“e”-“EGP”: Mã hiệu này cho biết prefix đang xét được router gốc quảng bá
vào BGP bằng cách redistribute các route cảu 1 giao thức định tuyến ngoài
khác là EGP. EGP là 1 giao thức định tuyến ngoài cũ, BGP gần như là giao
thức định tuyến ngoài duy nhất được sử dụng nên trừ phi người quản trị của
router gốc cố tình thiết lập Origin code thành “e”, chúng ta ít gặp mã origin
này trong bảng BGP.
41
“?”-“Incomplete”: Mã hiệu này cho biết IP prefix được router gốc đưa vào
BGP bằng 1 phương pháp không xác định.
Ví dụ về Local Preference
Từ hình vẽ trên, ta thấy bên trong AS64520 đi đến mạng 172.16.0.0 cần phải đi ra
ngoài bằng gateway A và gateway B chỉ để dự phòng, người quản trị sẽ thực hiện cấu
hình để khi A nhận được mạng 172.16.0.0, nó sẽ thiết lập giá trị Local Preference là
200 cho prefix rồi mới quảng bá tiếp mạng này vào các router bên trong còn router B
chỉ thiết lập Local Preference là 100 cho prefix khi quảng bá mạng nhận được vào các
router bên trong. Kết quả là các router bên trong thấy rằng hướng đi đến mạng
172.16.0.0 thông qua gateway A có Local Preference cao hơn là các gateway B sẽ ưu
tiên chọn hướng gateway A để route dữ liệu đi đến mạng 172.16.0.0, đáp ứng yêu cầu
đặt ra.
MED(Multi Exit Discriminator): Còn gọi là thuộc tính metric của
BGP. Chúng ta cần phân biệt với khái niệm metric trong các IGP vì
metric(hay MED) với BGP chỉ là 1 thuộc tính trong số nhiều thuộc
tính khác nhau được dùng để đánh giá độ tối ưu của 1 đường đi.
42
Ví dụ về MED
Router A cảu AS 65000 thực hiện quảng bá mạng 172.16.0.0 cho các router B và
C của AS 65000. Chính sách của AS 65000(phía router A) muốn rằng AS láng
giềng 65500 khi gửi dữ liệu đến mạng 172.16.0.0 cần đi vào AS 65000 theo đường
link nối giữa A và B, còn đường link nối giauwx A và C chỉ để dự phòng. Nếu
người quản trị của AS 65000 thiết lập thuộc tính MED cho mạng 172.16.0.0 là 150
khi quảng bá cho router B và là 200 cho router C. Các router bên trong của AS
65500 khi xem xét 2 hướng đi đến mạng 172.16.0.0 thông qua 2 gateway B và C
sẽ thấy rằng hướng đi qua B có MED nhỏ hơn MED của hướng đi qua
C(150<200), nên sẽ chọn hướng đi qua B để lái dữ liệu đi đến 172.16.0.0.
Weight: là thuộc tính chỉ có tác dụng trong nội bộ của 1 router, và
không được quảng bá kèm theo các prefix sang các BGP peer khác.
Một đặc điểm khác đáng chú ý, Weight là thuộc tính BGP do Cisco
đưa ra và chỉ xuất hiện trên các thiết bị của Cisco, các phiên bản
BGP của các hãng khác không có thuộc tính này.
Với ví dụ trên, router A nhận được cập nhật định tuyến để đi đến mạng 172.20.0.0
của AS 65520 từ 2 hướng là thông qua router B và router C. Trọng trường hợp
này, người quản trị mong muốn rằng router A luôn luôn chọn hướng đi qua B để đi
tới mạng 172.20.0.0, hướng qua C chỉ để dự phòng bất kể các thuộc tính trên 2
hướng đi này thế nào. Mặc định, 1 router BGP sẽ gán gia trị Weight=0 cho mọi
prefix nhận được từ các router khác và gán Weight=32768 cho các prefix tự nó
43
đưa vào BGP(thường được gọi là các local route). Với ví dụ đang xem xét, router
A sẽ gán giá trị Weight=200 cho prefix 172.20.0.0 khi nhận prefix này từ router B
và gán Weight =150 cho cùng prefix ấy khi nhận từ router C, từ đó, roter A sẽ luôn
chọn hướng B để đi đến 172.20.0.0 và hướng C chỉ để dự phòng.
- KIểm tra đường dẫn tới Dynamic và thư mục làm việc
- Chọn đường dẫn đến thư mục Dynamips nhấn Test để kiểm tra nhấn
OK!
5.3 Load IOS cho router
44
1. Vào Edit IOS images and hypervisor/IOS images.
2. Tiếp theo kích chuột vào Router C3725, giữ và kéo thả vào ô bên cạnh. Lúc
này ta sẽ thấy tab Topology Summary router sẽ báo màu đỏ nghĩa là router
đang ở chế độ turn off.
3. Tạ bật lên bằng cách kích phải chuột vào router, chọn start, bạn sẽ thấy R1 báo
xanh.
4. Khi Start lên vào Task Manager sẽ thấy CPU là 100%.
5. Sử dụng tính năng Idle PC
6. Chọn mục đánh dấu sao
7. CPU đã giảm đi đáng kế, giờ ta tiến hành cấu hình router
5.4 Tìm hiểu các cách cấu hình router căn bản(cách gán IP vào interface,
kiểm tra các thông sóo IP).
5.4.1 Các mode config của router
Cisco router có nhiều chế độ(mode) khi config, mỗi chế độ có đặc điẻm riêng,
cung cấp 1 số tính năng để cấu hình router.
- User mode hay User EXEC Mode:
Đây là mode đầu tiên khi bắt đầu 1 phiên làm việc với router(qua Console
hay Telnet). Ở mode này ta chỉ có thể thực hiện một số lệnh thông thường
của router. Các lệnh này có tác dụng 1 lần như lệnh show hay lệnh clear 1
số các counter của router hay interface. Các lệnh này sẽ không được ghi vào
file config của router và do đó không gây ảnh hưởng đến các lần khởi động
sau của router.
- Privileged EXEC Mode:
Để vào Privileged EXEC Mode, từ User EXEC mode gõ lệnh enable và
password(nếu cần), Privileged EXEC Mode cung cấp các lệnh quan trọng
để theo dõi hoạt động của router, truy cập vào các file config, IOS, đặt
password... Prvileged EXEC Mode là chìa khóa để vào Configuration
Mode, cho phép cấu hình tất cả các chức năng hoạt động của router.
- Configuration Mode:
+ Như đã nói ở trên, configuration mode cho phép config tất cả các chức
năng của Cisco router bao gồm các interrface, các routing protocol, các
console line, vty(telnet), tty (async connection). Các lệnh trong
configuration mode sẽ gây ảnh hưởng trực tiếp đến cấu hình hiện hành của
router chứa trong RAM(running-configuration). Nếu cấu hình này được ghi
lại vào NVRAM, các lệnh này sẽ có tác dụng trong những lần khởi động
sau của router.
+ Configuration Mode có nhiều mode có nhiều mode nhỏ, ngoài cùng là
global configuration mode, sau đó là các interface configuration mode, line
configuration mode,, routing configuration mode.
45
+ ROM Mode: ROM Mode dùng cho các tác vụ chuyên biệt, can thiệp
trực tiếp vào phần cứng của router nhưu Recovery password, maintainance>
Thông thường ngoài các dòng lệnh do người sử dụng bắt buộc router vào
ROM mode, router sẽ tự động chuyển vào ROM mode nếu không tìm thấy
file IOS hay file IOS bị hỏng trong quá trình khởi động.
46
Một số mode config của router
- Đầu tiên khi cấu hình router ta nên đặt tên cho router:
- Ngay sau khi nhấn phím Enter để thực thi câu lệnh, dấu nhắc đổi từ tên mặc
đinh sang tên Router vừa mới đặt.
47
- Chúng ta cũng cần đặt mật khẩu cho 1 hoặc nhiều vty để kiểm soát các user
truy nhập từ xa vào router và telnet. Thông thường cisco router sẽ có 5
đường vty với thứ tự từ 0 đến 4. Chúng ta thường sử dụng 1 mật khẩu cho
tất cả các đường vty, nhưng đôi khi chúng ta nên đặt thêm mật khẩu riêng
cho mọi đường để dự phòng cả 4 đường kia đều đang được sử dụng. Sau
đây là các lênh cần được sử dụng để đặt mật khẩu cho các đường vty:
- Mật khẩu enable và enable secret được sử dụng để hạn chế việc truy cập
vào chế độ EXEC đặc quyền. Mật khẩu eneable chỉ được sử dụng khi chúng
ta cài đặt mật khẩu enable secret vì mật khẩu này được mã hóa còn mật
khẩu enable thì không. Sau đây là các lệnh dùng để đặt mật khẩu enable
secret:
- Đôi khi ta sẽ thấy không an toàn khi mật khẩu được hiển thị rõ ràng khi sử
dụng lệnh show running-config hoặc show startup-config. Để tránh điều
này ta nên mã hóa tất cả các mật khẩu hiển thị trên tập tin cấu hình của
router:
- Mặc định thì các cổng giao tiếp trên router đều đóng. Nếu muốn mở hay
khởi động các cômngr này thì ta phải dùng lệnh no shutdown. Nếu muốn
đóng cổng lại để bảo trì hoặc xử lí sự cố thì dùng lệnh shutdown:
48
- Có rất nhiều lệnh show được dùng để kiểm tra nội dung các tệp tin trên
router và để tìm ra sự cố. Trong cả 2 chế độ EXEC đặc quyền và EXEC
người dùng, khi gõ <<show?>> ta sẽ được xem danh sách các lệnh show.
Đương nhiên là số lệnh show dùng được trong chế độ EXEC đặc quyền sẽ
nhiều hơn chế độ EXEC người dùng.
- Show interface - hiển thị trạng thái của tất cả các cổng giao tiếp trên router.
Để xem trạng thái của 1 cổng nào đó thì ta thêm tên và số thứ tự của cổng
đó sau lệnh show interface. Ví dụ như:
+ Hiển thị trạng thái toàn cục và trạng thái của các cổng giao tiếp đã
được cấu hình giao thức lớp 3:
49
Mô hình lab static route
- Cấu hình static route để có thể chuyển 1 gói tin từ 1 địa chỉ nguồn đến 1 địa
chỉ đích trong mạng.
- Kiểm ta bảng định tuyến của router NgocR1 ta nhận thấy router đã học
được đường mạng 192.169.1.0/24
50
- Cấu hình static route để có thể chuyển 1 gói tin từ 1 địa chỉ nguồn đến 1 địa
chỉ đích trong mạng.
51
Mô hình mạng tầng trên cùng
52
Mô hình mạng tầng giữa và tầng dưới (2)
Trong mô hình của mình, Error: Reference source not found, Error: Reference
source not found là các mô hình sử dụng OSPF, Error: Reference source not found sẽ
sử dụng RIP cho việc định tuyến.
6.2 Cài đặt chung (dùng commandline của Linux OS)
- Cài đặt quagga:
53
6.3 Triển khai mô hình mạng trên cùng
6.3.1 Cấu hình IP
- Config router R3:
+ enp0s3 (128.123.1.2/16):
+ enp0s8 (192.168.2.1/24):
+ enp0s9 (192.168.1.1/24):
54
- Config router R4:
+ enp0s3 (192.168.2.2/24):
+ enp0s8 (192.168.3.1/24):
+ enp0s9 (192.168.4.1/24):
+ enp0s8 (192.168.3.2/24):
55
+ enp0s9 (192.168.5.1/24):
56
- Config router R9
+ enp0s3
+ enp0s8
- Config router R10
+ enp0s3
+ enp0s8
Thông tin “default-information originate always” giúp các router khác trong AS
thiết
lập default gateway đi qua R6.
57
+ Config ospfd.conf:
58
+ Cấu hình ospfd.conf:
Kiểm tra trên các router, thấy các địa chỉ đã được cập nhật vào bảng định tuyến
+R3:
59
+R4:
+R5:
60
+ enp0s3 (119.118.1.2/16):
+ enp0s8 (192.169.2.1/24):
+ enp0s9 (192.169.1.1/24):
+ enp0s8 (192.169.3.1/24):
61
+ enp0s9 (192.169.4.1/24):
+ enp0s8 (192.169.3.2/24):
+ enp0s9 (192.169.5.1/24):
62
- Config PC4 (192.169.5.10/24):
+ Config ripd.conf:
63
Thông tin “default-information originate” giúp các router khác trong AS thiết lập
default gateway đi qua R6.
+ Config ripd.conf:
64
+ Cấu hình ripd.conf:
6.4.3 Vận hành RIP trên mô hình mạng tầng giữa và tầng dưới
Lưu ý: tất cả các router đã được tắt iptables.
Khởi động rip trên router R6:
Kiểm tra trên các router, thấy các địa chỉ đã được cập nhật vào bảng định
tuyến:
+R6:
65
+R7:
+R8:
66
- Config router R0:
+ enp0s3 (12.1.1.1/8):
+ eth6 (10.1.2.1/8):
+ enp0s8 (11.1.1.1/8):
67
+ enp0s9 (128.123.1.1/16):
+ enp0s8 (11.2.1.1/8):
+ enp0s9 (129.118.1.1/16):
68
6.5.2 Config cho các router OSPF
- Config router R0:
+ Config zebra.conf:
+ Config ospfd.conf:
+ Config ospfd.conf:
70
+ Config ospfd.conf:
71
Kiểm tra trên các router, thấy các địa chỉ đã được cập nhật vào bảng định
tuyến:
+Router R0:
+Router R1:
+Router R2:
72
6.6 Cấu hình BGP cho các router
Trong mô hình, các router BGP cần cấu hình bao gồm các router: R1, R2, R3, R6
6.6.1 Cấu hình IP
- Config R1:
- Config R2:
73
- Config R3:
- Config R6:
- Config R9:
74
6.6.2 Vận hành BGP trên toàn mô hình mạng
- Config R1:
- Config R2:
- Config R3:
- Config R6:
+ R2:
75
+ R3:
+ R6:
76
+ R9:
78
- Ping từ PC3 sang PC1:
79
Ta tiến hành ngắt kết nối enp0s8 của router R3 để kiểm tra khả năng thay đổi của
OSPF.
Kiểm tra lại bảng định tuyến, ta thấy đường đi đã thay đổi.
Như vậy, hệ thống có thể đáp ứng tốt với trường hợp thay đổi trong mạng (ví dụ
enp0s8 bị ngắt khi dây đứt).
Tiến hành ping thử từ R3 đến máy PC1 (192.168.4.10/24) vẫn thành công:
Tiến hành ping thử từ PC1 đến máy PC3 (192.169.4.10/24) vẫn thành công:
80
7.3 Kiểm tra tính đáp ứng của RIP với AS 2
Trên router R7, dựa vào bảng định tuyến, ta thấy đường đi đến các mạng
192.169.2.0 và 129.118.0.0 đi qua 192.169.2.2 (eth5).
Ta tiến hành ngắt kết nối enp0s3 của router R7 để kiểm tra khả năng thay đổi của RIP.
Kiểm tra lại bảng định tuyến, ta thấy đường đi đã thay đổi.
Tiến hành ping thử PC3 sang PC4 (192.169.5.10) và PC3 sang PC1 (192.168.4.10)
vẫn thành công:
81
7.4 Các bước để kiểm tra hệ thống qua việc cài đặt và kết nối đến các DNS
server
- Cài đặt DNS mydomain.vn và cấu hình file name.domain.vn
- Cài đặt DNS NgocLe.vn trên PC1
Cấu hình file named.conf
Cấu hình file named.NgocLe.vn
- Cài đặt DNS ngocle.vn trên PC0
Cấu hình file named.conf
Cấu hình file named.ngocle.vn
- Kiểm tra kết nối đến DNS server bằng lệnh dig và nslookup
- Gửi mail từ các DNS server
Gửi mail từ NgocLe.vn đến mydomain.vn
Cấu hình file named.NgocLe.vn trên PC1
Gửi mail từ NgocLe.vn đến mydomain.vn
Nhận được mail trên mydomain.vn từ NgocLe.vn
Gửi mail từ ngocle.vn đến mydomain.vn
Cấu hình file named.ngocle.vn trên PC0
Gửi mail từ ngocle.vn tới mydomain.vn
Nhận được mail trên mydomain.vn từ ngocle.vn
8. MÔ PHỎNG TRÊN C
8.1 Mô phỏng RIP
- Định nghĩa struct cho ripd:
static struct option longopts[] =
82
{
{ "daemon", no_argument, NULL, 'd'},
{ "config_file", required_argument, NULL, 'f'},
{ "pid_file", required_argument, NULL, 'i'},
{ "help", no_argument, NULL, 'h'},
{ "dryrun", no_argument, NULL, 'C'},
{ "vty_addr", required_argument, NULL, 'A'},
{ "vty_port", required_argument, NULL, 'P'},
{ "retain", no_argument, NULL, 'r'},
{ "user", required_argument, NULL, 'u'},
{ "group", required_argument, NULL, 'g'},
{ "version", no_argument, NULL, 'v'},
{0}
};
83
- Tên chương trình chạy mô phỏng ripd, đầu tiên khai báo reain mode của
route:
int retain_mode = 0;
- Khai báo ID của tiến trình được sử dụng bởi hệ thống đầu vào:
const char *pid_file = PATH_RIPD_PID;
exit (status);
}
84
- SIGNUP handlers:
static void
sighup (void)
{
zlog_info ("SIGHUP received");
rip_clean ();
rip_reset ();
zlog_info ("ripd restarting!");
- SIGINT handler:
static void
sigint (void)
{
zlog_notice ("Terminating on signal");
if (! retain_mode)
rip_clean ();
exit (0);
}
- SIGUSR1 handler:
static void
sigusr1 (void)
{
zlog_rotate (NULL);
}
85
.signal = SIGUSR1,
.handler = &sigusr1,
},
{
.signal = SIGINT,
.handler = &sigint,
},
{
.signal = SIGTERM,
.handler = &sigint,
},
};
if (opt == EOF)
break;
86
switch (opt)
{
case 0:
break;
case 'd':
daemon_mode = 1;
break;
case 'f':
config_file = optarg;
break;
case 'A':
vty_addr = optarg;
break;
case 'i':
pid_file = optarg;
break;
case 'P':
/* Deal with atoi() returning 0 on failure, and ripd not
listening on rip port... */
if (strcmp(optarg, "0") == 0)
{
vty_port = 0;
break;
}
vty_port = atoi (optarg);
if (vty_port <= 0 || vty_port > 0xffff)
vty_port = RIP_VTY_PORT;
break;
case 'r':
retain_mode = 1;
break;
case 'C':
dryrun = 1;
break;
case 'u':
ripd_privs.user = optarg;
break;
case 'g':
ripd_privs.group = optarg;
break;
case 'v':
print_version (progname);
87
exit (0);
break;
case 'h':
usage (progname, 0);
break;
default:
usage (progname, 1);
break;
}
}
88
}
/* Print banner. */
zlog_notice ("RIPd %s starting: vty@%d", QUAGGA_VERSION,
vty_port);
89
#if defined(VTY_GROUP)
.vty_group = VTY_GROUP,
#endif
.caps_p = _caps_p,
.cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]),
.cap_num_i = 0
};
90
- Khai báo ID của tiến trình được sử dụng bởi hệ thống đầu vào:
const char *pid_file = PATH_OSPFD_PID;
#ifdef SUPPORT_OSPF_API
extern int ospf_apiserver_enable;
#endif /* SUPPORT_OSPF_API */
91
\n\
Report bugs to %s\n", progname, ZEBRA_BUG_ADDRESS);
}
exit (status);
}
92
- SIGHUP handler:
static void sighup (void)
{
zlog (NULL, LOG_INFO, "SIGHUP received");
}
- SIGUSR1 handler:
static void sigusr1 (void)
{
zlog_rotate (NULL);
}
93
},
{
.signal = SIGINT,
.handler = &sigint,
},
{
.signal = SIGTERM,
.handler = &sigint,
},
};
94
- Routine chính của ripd:
int main (int argc, char **argv)
{
char *p;
char *vty_addr = NULL;
int vty_port = OSPF_VTY_PORT;
int daemon_mode = 0;
char *config_file = NULL;
char *progname;
struct thread thread;
int dryrun = 0;
95
/* OSPF master init. */
ospf_master_init ();
#ifdef SUPPORT_OSPF_API
/* OSPF apiserver is disabled by default. */
ospf_apiserver_enable = 0;
#endif /* SUPPORT_OSPF_API */
while (1)
{
int opt;
if (opt == EOF)
break;
switch (opt)
{
case 0:
break;
case 'd':
daemon_mode = 1;
break;
case 'f':
config_file = optarg;
break;
case 'A':
vty_addr = optarg;
96
break;
case 'i':
pid_file = optarg;
break;
case 'P':
/* Deal with atoi() returning 0 on failure, and ospfd not
listening on ospfd port... */
if (strcmp(optarg, "0") == 0)
{
vty_port = 0;
break;
}
vty_port = atoi (optarg);
if (vty_port <= 0 || vty_port > 0xffff)
vty_port = OSPF_VTY_PORT;
break;
case 'u':
ospfd_privs.user = optarg;
break;
case 'g':
ospfd_privs.group = optarg;
break;
#ifdef SUPPORT_OSPF_API
case 'a':
ospf_apiserver_enable = 1;
break;
#endif /* SUPPORT_OSPF_API */
case 'v':
print_version (progname);
97
exit (0);
break;
case 'C':
dryrun = 1;
break;
case 'h':
usage (progname, 0);
break;
default:
usage (progname, 1);
break;
}
}
/* Khởi tạo. */
master = om->master;
access_list_init ();
prefix_list_init ();
/* OSPFd inits. */
98
ospf_if_init ();
ospf_zebra_init ();
ospf_route_map_init ();
#ifdef HAVE_SNMP
ospf_snmp_init ();
#endif /* HAVE_SNMP */
#ifdef HAVE_OPAQUE_LSA
ospf_opaque_init ();
#endif /* HAVE_OPAQUE_LSA */
sort_node ();
99
}
/* Print banner. */
zlog_notice ("OSPFd %s starting: vty@%d", QUAGGA_VERSION, vty_port);
/* Not reached. */
return (0);
}
100
{ "listenon", required_argument, NULL, 'l'},
{0}
};
.signal = SIGHUP,
101
.handler = &sighup,
},
.signal = SIGUSR1,
.handler = &sigusr1,
},
.signal = SIGINT,
.handler = &sigint,
},
.signal = SIGTERM,
.handler = &sigint,
},
};
/* Master of threads. */
102
- Phân loại riêng các file cấu hình:
- Khai báo ID của tiến trình được sử dụng bởi hệ thống đầu vào:
- Phân quyền:
ZCAP_BIND,
ZCAP_NET_RAW,
ZCAP_NET_ADMIN,
};
.user = QUAGGA_USER,
.group = QUAGGA_GROUP,
#endif
#ifdef VTY_GROUP
.vty_group = VTY_GROUP,
103
#endif
.caps_p = _caps_p,
.cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]),
.cap_num_i = 0,
};
if (status != 0)
else
104
-u, --user User to run as\n\
\n\
exit (status);
105
- SIGHUP handler
void
sighup (void)
bgp_terminate ();
bgp_reset ();
- SIGINT handler:
void
sigint (void)
bgp_terminate ();
zprivs_terminate (&bgpd_privs);
bgp_exit (0);
- SIGUSR1 handler:
void
sigusr1 (void)
zlog_rotate (NULL);
/*
Zebra route removal and protocol teardown are not meant to be done here.
*/
107
struct listnode *node, *nnode;
int *socket;
/* clan exit*/
/* reverse bgp_master_init */
bgp_delete (bgp);
list_free (bm->bgp);
/* reverse bgp_master_init */
list_delete (bm->listen_sockets);
/* reverse bgp_zebra_init/if_init */
if (retain_mode)
108
for (ALL_LIST_ELEMENTS (iflist, node, nnode, ifp))
bgp_connected_delete (c);
if_delete (ifp);
list_free (iflist);
/* reverse bgp_attr_init */
bgp_attr_finish ();
/* reverse bgp_dump_init */
bgp_dump_finish ();
/* reverse bgp_route_init */
bgp_route_finish ();
/* reverse bgp_route_map_init/route_map_init */
route_map_finish ();
/* reverse bgp_scan_init */
109
bgp_scan_finish ();
/* reverse access_list_init */
access_list_add_hook (NULL);
access_list_delete_hook (NULL);
access_list_reset ();
/* reverse bgp_filter_init */
as_list_add_hook (NULL);
as_list_delete_hook (NULL);
bgp_filter_reset ();
/* reverse prefix_list_init */
prefix_list_add_hook (NULL);
prefix_list_delete_hook (NULL);
prefix_list_reset ();
/* reverse community_list_init */
community_list_terminate (bgp_clist);
cmd_terminate ();
vty_terminate ();
if (zclient)
zclient_free (zclient);
if (zlookup)
110
zclient_free (zlookup);
if (bgp_nexthop_buf)
stream_free (bgp_nexthop_buf);
/* reverse bgp_master_init */
if (master)
thread_master_free (master);
if (zlog_default)
closezlog (zlog_default);
log_memstats_stderr ("bgpd");
exit (status);
111
- Routine main của bgpd:
int
char *p;
int opt;
int daemon_mode = 0;
int dryrun = 0;
char *progname;
int tmp_port;
umask (0027);
LOG_CONS|LOG_NDELAY|LOG_PID, LOG_DAEMON);
bgp_master_init ();
if (opt == EOF)
break;
switch (opt)
case 0:
break;
case 'd':
daemon_mode = 1;
break;
case 'f':
config_file = optarg;
break;
case 'i':
pid_file = optarg;
break;
case 'p':
bm->port = BGP_PORT_DEFAULT;
else
113
bm->port = tmp_port;
break;
case 'A':
vty_addr = optarg;
break;
case 'P':
if (strcmp(optarg, "0") == 0)
vty_port = 0;
break;
vty_port = BGP_VTY_PORT;
break;
case 'r':
retain_mode = 1;
break;
case 'l':
bm->address = optarg;
/* listenon implies -n */
case 'n':
bgp_option_set (BGP_OPT_NO_FIB);
114
break;
case 'u':
bgpd_privs.user = optarg;
break;
case 'g':
bgpd_privs.group = optarg;
break;
case 'v':
print_version (progname);
exit (0);
break;
case 'C':
dryrun = 1;
break;
case 'I':
bgp_option_set (BGP_OPT_IMPORT_CHECK);
break;
case 'h':
break;
default:
break;
115
/* Make thread master. */
master = bm->master;
/* Initializations. */
zprivs_init (&bgpd_privs);
cmd_init (1);
vty_init (master);
memory_init ();
bgp_init ();
sort_node ();
if(dryrun)
return(0);
116
/* Turn into daemon if daemon_mode is set. */
return (1);
pid_output (pid_file);
/* Print banner. */
vty_port,
bm->port);
thread_call (&thread);
/* Not reached. */
117
return (0);
118