1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

redistribution-các kỹ thuật chống loop và tối ưu

12 685 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 66 KB

Nội dung

Redistribution-các kỹ thuật chống loop và tối ưu Phân phối lại (Redistribution) với các kỹ thuật liên quan để chống loop và tối ưu 1. Phân phối lại với tóm lược tuyến (Redistribution và RouteSummarization) a. Tóm lược tuyến (Route Summarization) Trong một routing domain, khi một topo mạng càng lớn thì kích thước routing table của các router trong domain đó không những có kích thước càng lớn mà còn rất khó khăn cho các nhà quản trị gỡ dối mạng cũng như yêu cầu rất cao về phần cứng của router. Có một giải pháp giải quyết vấn đề này đó là route summarization. Bằng cách nhóm các subet con thành một subnet đại to hơn. Route summarization còn có một ứng dụng quan trọng khác nữa đó nó là giải pháp để thực hiện redistribution từ classless routing protocol vào classful routing protocol. b. Phân phối lại và tóm lược tuyến (Redistribution and Route Summarization) Các giao thức định tuyến EIGRP, OSPF và IS-IS có khả năng thực hiện tóm tắt những tuyến phân phối lại(summary redistribute route). Trong trường hợp như hình 3.19 sẽ nghiên cứu summary của EIGRP và OSPF. Điều đầu tiên cần ghi nhớ khi thực hiện summary đó là có chiến lược thiết kế subnet IP phù hợp cho summary. Chẳng hạn như hình 3.19, các subnet của mạng 192.168.3.0 trong OSPF domain có thể được nhóm vào một subnet đại diện đó là 192.168.3.0/25. Tương tự như vậy các subnet trong EIGRP 1 domain có thể nhóm lại thành một subnet đại diện là 192.168.3.128/25. Nếu subnet 192.168.3.0/27 được nối trực tiếp vào router Podres, thì subnet đó sẽ được quảng bá một cách riêng lẻ mà không thực hiện summary được. Tuy nhiên nếu các tuyến riêng lẻ không tham gia summary tồn tại càng nhiều thì hiệu quả của summary càng kém. Thực hiện summary với OSPF Câu lệnh summary-address xác định một địa chỉ và mask summary tới một OSPF domain. Bất cứ địa chỉ subnet ra vào đãI được xác định bởi địa chỉ summary sẽ bị khử (suppress). Chú ý khi thực hiện summary đối với OSPF là: Khi summary các tuyến ngoại thì sẽ được thực hiện tại ASBR. Khi summary các tuyến nội OSPF thì sẽ được thực hiện tại ABR với câu lệnh area range. Tại Robinson trong hình 3.19, các subnet trong EIGRP domain được summary vào OSPF domain với địa chỉ summary là 192.168.3.128/25, và các subnet trong EIGRP domain được summary với địa chỉ summary 172.16.0.0/16. Router eigrp 1 redistribute ospf 1 metric 1000 100 1 255 1500 redistribute eigrp 2 passive-interface Ethernet0 network 192.168.3.0 ! router eigrp 2 redistribute eigrp 1 network 192.168.4.0 network 172.16.0.0 ! router ospf 1 summary-address 192.168.3.128 255.255.255.128 summary-address 172.16.0.0 255.255.0.0 redistribute eigrp 1 metric 50 subnets redistribute eigrp 2 metric 100 metric-type 1 subnets network 192.168.3.33 0.0.0.0 area 0 Thực hiện summary với EIGRP Summary cho EIGRP được thực hiện ở interface. Thay vì việc xác định địa chỉ summary (gồm địa chỉ và mask) trong một routing process như OSPF, đối với EIGRP chúng được xác định dưới các interface riêng rẽ. Hệ thống này cung cấp khả năng mềm dẻo trong việc quảng bá các summary route (tóm lược tuyến đường) khác nhau cho các interface khác nhau trong cùng một process (quá trình). Câu lệnh thực hiện là ip summary-address eigrp process-id xác định một địa chỉ summary (bao gồm cả địa chỉ và mask). Để thực hiện 3 địa chỉ summary là 192.168.3.0/25; 172.16.0.0/16; 192.168.4.0/24 vào IEGRP 1 domain. Cần thực hiên cấu hình tại Robinson như sau: interface Ethernet0 ip address 192.168.3.33 255.255.255.224 ! interface Ethernet1 ip address 192.168.3.129 255.255.255.224 ip summary-address eigrp 1 192.168.3.0 255.255.255.128 ip summary-address eigrp 1 172.16.0.0 255.255.0.0 ip summary-address eigrp 1 192.168.4.0 255.255.255.0 ! interface Serial0 ip address 192.168.4.5 255.255.255.252 ip summary-address eigrp 2 192.168.3.0 255.255.255.0 ! interface Serial1 ip address 172.16.2.21 255.255.255.252 ip summary-address eigrp 2 192.168.0.0 255.255.0.0 ! router eigrp 1 redistribute ospf 1 metric 1000 100 1 255 1500 redistribute eigrp 2 passive-interface Ethernet0 network 192.168.3.0 ! router eigrp 2 redistribute eigrp 1 network 192.168.4.0 network 172.16.0.0 ! router ospf 1 summary-address 192.168.3.128 255.255.255.128 summary-address 172.16.0.0 255.255.0.0 redistribute eigrp 1 metric 50 subnets redistribute eigrp 2 metric 100 metric-type 1 subnets network 192.168.3.33 0.0.0.0 area 0 Hình 3.21 cho biết routing table của Podres. Cũng giống như OSPF summarization, EIGRP summarization khử việc quảng bá những subnet mà thuộc miền (range) của địa chỉ summary. Điểm không giống với OSPF là routing table của Podres chỉ cho biết những route tóm lược được quảng bá vào EIGRP mà không đánh dấu đó là external route. Một điều chú ý trong routing table của Snider là mục nhập cho 192.168.4.0/24. Là subnet này không được summary với địa chỉ summary 192.168.0.0/16 với lý do là summary chỉ áp dụng cho những route được redistribution vào process domain. Xem lại mục nhập cho tuyến đường tóm lược (summary route) 192.168.3.128/25. Mục nhập này được redistribution vào OSPF domain và được đánh dấu là tuyến ngoại (external route), chính điều này khiến cho nó lại được redistribution ngược trở lại EIGRP domain. Chuyện gì sẽ xảy ra khi tuyến đường tóm lược đó được quảng bá vào OSPF và lại được quảng bá quay trở lại EIGRP domain. Dưới đây là một tình huống không mong muốn tại Podres: Giả sử rằng subnet 192.168.3.1/27 trở thành không tới được. Podres có thể forward (chuyển tiếp) packet có địa chỉ đích thuộc subnet 192.168.3.128/125 một cách không rõ ràng. Packet được gửi vào OSPF domain nơi mà bạn mong muốn tuyến đường tóm lược sẽ mang packet trở lại Podres. Kết quả là xuất hiện routing loop. Có một giải pháp để khắc phục tình huống trên đó là: sử dụng null interface để bảo vệ tình trạng routing loop gây lên bởi summarization. Null interface chỉ là một interface o (software-only) không tới nơi nào c-packet được định tuyến tới đó sẽ bị drop. Với kỹ thuật này trong thực tế tình huống trên sẽ không xảy ra. Bất cứ khi nào một router tạo ra một địa chỉ summary thì router sẽ tạo ra một tuyến tới null interface. Quay trở lại tình huống trên nếu Robinson nhận được một packet với địa chỉ đích thuộc subnet 192.168.3.192/27 và subnet đó không đến được nữa thì router sẽ forward packet đó tới null interface. Routing loop đã được giải quyết. 2. Phân phối lại tuyến tĩnh (Redistributing Static Routes) Hình 3.25 cho biết routing table của router Williams trong hình 3.24. Chú ý rằng tuyến tới subnet 10.1.2.160/28 và 10.1.2.224/28 không có trong routing table, do là subnetmask của chúng không nhất quán với 24-bit mask trên interface E1 của May dẫn tới những đó không có trong thông tin update vào RIP domain. Đây là tình huống thường gặp trong quá trình redistribution từ classless routing protocol vào classful routing protocol. Có một giải pháp để giải quyết vấn đề này là summary 2 subnet 28-bit vào một subnet đại diện 24-bit là 10.1.2.0/24. Tuy nhiên là RIP không hỗ trợ lệnh summary vì nó là một classful routing protocol. Cần có một giải pháp khác đó là cấu hình static route để summary để chỉ và redistribution tuyến đó vào RIP domain. Cấu hình cụ thể như sau: router isis summary-address 10.2.0.0 255.255.0.0 level-1 redistribute rip metric 0 metric-type external level-1 net 01.0001.0000.0c76.5432.00 ! router rip redistribute static metric 1 redistribute isis level-1-2 metric 1 passive-interface Ethernet0 network 10.0.0.0 ! ip route 10.1.2.0 255.255.255.0 10.1.4.1 3. Lọc tuyến và phân phối lại (Route Filtering and Redistribution) a. Lọc tuyến (Route Filtering) Như trong phần trước đã giới thiệu một số tình huống dẫn đến routing loop khi thực hiện redistribution. Chẳng hạn như ví dụ trong hình 3.19, tuyến tóm lược 192.168.3.128/25 được quảng bá vào OSPF domain nhưng lại được quảng bá lại vào trong EIGRP domain- nơi mà summary subnet tồn tại. Trong hiện tượng này có sự quảng bá sai hướng qua redistributing router và được gọi là route feedback. Có một giải pháp để giải quyết vấn đề trên là sử dụng route filtering. Route filtering là một kỹ thuật để điều khiển thông tin định tuyến bằng cách sử dụng access-list. Bất cứ khi nào quá trình mutual redistribution diễn ra có sự chia sẻ hai chiều thông tin định tuyến giữa hai hay nhiều giao thức định tuyến chính những điều này có thể dẫn đến hiện tượng feedback- route filter có thể đảm bảo những tuyến đó sẽ chỉ được quảng bá theo một chiều. Mục đích của việc sử dụng route filter là tạo ra một route firewall. Trong thực tế thường xuyên xảy ra hiện tượng một tập đoàn hay một tổ chức lớn có rất nhiều tổ chức con và phải liên hệ giữa chúng nhưng vấn đảm bảo một vài tổ chức con hay một mạng con nào đó có sự riêng tư trong việc điều khiển thông tin update. Route filter được thực hiện tại interconnecting router sẽ đảm bảo rằng router đó chỉ đồng ý những route phù hợp với chính sách điều khiển định tuyến định tuyến của người quản trị. Route filter làm việc bởi sự quy định những tuyến được tham dự vào hay quảng bá ra ngoài routing table. Route filter có tác dụng đối với link state routing protoco khác một chút so với distance vector routing protocol. Đối với các router chạy distance vector routing protocol việc quảng bá tuyến dựa vào việc trao đổi routing table của nó đối với các router khác trong cùng domain dưới dạng broadcast. Kết quả là route filter có ảnh hưởng những route mà router quảng bá tới neighbor của nó. Đối với các router chạy link state routing protocol thì bình thường nó chỉ trao đổi bản tin Hello để duy trì neighbor mà không trao đổi các tuyến với nhau. Và nó xây dựng lên các tuyến (route) dựa vào link state database của nó. Do đó route filter không có ảnh hưởng trong việc quảng bá thông tin trạng thái. Kết quả là route filter chỉ có ảnh hưởng đến routing table của router mà được cấu hình route filter mà không ảnh hưởng tới các mục nhập tuyến của router neighbor. Chính điều này dẫn tới route filter thường được sử dụng tại điểm redistribution vào link state domain chẳng hạn như tại ASBR đối với OSPF. b. Lọc tuyến với phân phối lại (Route Filtering with redistribution) Bất cứ khi nào một router thực hiện mutual redistribution, thì khả năng feedback luôn có khả năng xảy ra. Ví dụ như hình 3.26, tuyến từ RIP domain có thể được redistribution vào OSPF domain và từ đó chúng lại được redistribution vào RIP domain. Do đó sử dụng route filter để điều khiển hướng quảng bá tuyến một cách khôn ngoan nhất. Cấu hình route filter tại Cruncher như sau: router ospf 25 redistribute rip metric 100 network 172.16.1.254 0.0.0.0 area 25 network 172.16.8.254 0.0.0.0 area 25 network 172.16.50.254 0.0.0.0 area 25 distribute-list 3 in Ethernet0/0 distribute-list 3 in Ethernet0/1 distribute-list 3 in Ethernet0/2 ! router rip redistribute ospf 25 metric 5 passive-interface Ethernet0/0 passive-interface Ethernet0/1 passive-interface Ethernet0/2 network 172.16.0.0 distribute-list 1 in Ethernet0/3 distribute-list 1 in Ethernet2/0 distribute-list 1 in Ethernet2/1 ! ip classless access-list 1 permit 172.16.128.0 0.0.127.255 access-list 3 permit 172.16.0.0 0.0.127.255 Với cấu hình như trên, những tuyến có đích thuộc OSPF domain sẽ không quảng bá vào OSPF domain từ RIP domain và những tuyến có đích thuộc RIP domain sẽ không được quảng bá vào RIP domain từ OSPF domain. Tuy nhiên với cách cấu hình như trên, trong những trường hợp có rất nhiều subnet con và chúng phân bố rất khó để thực hiện summary thì việc cấu hình access list sẽ rất khó. Có một giải pháp để giải quyết vấn đề trên đó là cấu hình route filter tại các điểm redistribution để lọc bởi quá trình định tuyến (route process) thay vì bởi interface. Cấu hình cụ thể như sau: router ospf 25 redistribute rip metric 100 network 172.16.1.254 0.0.0.0 area 25 network 172.16.8.254 0.0.0.0 area 25 network 172.16.50.254 0.0.0.0 area 25 distribute-list 10 out rip ! router rip redistribute ospf 25 metric 5 passive-interface Ethernet0/3 passive-interface Ethernet2/0 passive-interface Ethernet2/1 network 172.16.0.0 distribute-list 20 out ospf 25 ! ip classless access-list 10 permit 172.16.130.0 access-list 10 permit 172.16.145.0 access-list 10 permit 172.16.240.0 access-list 20 permit 172.16.23.0 access-list 20 permit 172.16.9.0 access-list 20 permit 172.16.75.0 Route filter cấu hình trong OSPF domain cho phép OSPF quảng bá những route do RIP domain gửi với điều kiện được cho phép trong access list 10. Tương tự như vậy, route filter cấu hình trong RIP domain chỉ cho phép RIP quảng bá những route do OSPF 25 khám phá với điều kiện những tuyến đó được cho phép trong access list 20. Chú ý rằng mặc dù lọc (filter) bởi routing protocol là hữu ích cho việc xác định tuyến nào được redistribution nhưng nó cũng không phải phương pháp tốt để giải quyết tình trạng route feedback. Ví dụ với hình 3.26 có cấu hình như sau: router ospf 25 redistribute rip metric 100 network 172.16.1.254 0.0.0.0 area 25 network 172.16.8.254 0.0.0.0 area 25 network 172.16.50.254 0.0.0.0 area 25 distribute-list 1 out rip ! router rip redistribute ospf 25 metric 5 passive-interface Ethernet0/3 passive-interface Ethernet2/0 passive-interface Ethernet2/1 network 172.16.0.0 distribute-list 3 out ospf 25 ! ip classless access-list 1 permit 172.16.128.0 0.0.127.255 access-list 3 permit 172.16.0.0 0.0.127.255 Giả sử rằng một route từ RIP domain chẳng hạn 172.16.190.0/24, redistribution vào OSPF domain, lại được quảng bá lại Crucher. Mặc dù distribute list được cấu hình trong RIP domain sẽ chặn tuyến được quảng bá lại RIP domain, nhưng distribute lisr lại không chặn việc tuyến đó được quảng bá vào routing table của Cruncher cũng như được tạo ra trong OSPF domain. Sự thật filter cho rằng tuyến đó đã được đưa vào routing table của OSPF. Kết luận để ngăn chặn tình trạng feedback, tuyến phải được lọc từ khi tuyến đến một interface trước khi được đưa vào routing table. 4. Di chuyển một giao thức định tuyến (A protocol Migration) a. Định nghĩa Sự di chuyển một giao thức định tuyến là rất hay gặp trong thực tế. Khi một tổ chức đang chạy một giao thức định tuyến nào đó tuy nhiên nó mắc phải một số nhược điểm và họ muốn chuyển sang chạy một giao thức định tuyến khác tin cậy hơn. Quá trình này được gọi là a protocol migration. Câu lệnh distance được sử dụng không với bất cứ thông số tuỳ chọn nào, để xác định administrative distance được gán cho các tuyến đường được học từ một giao thức định tuyến xác định. Khi router chạy nhiều giao thức định tuyến khác nhau, thì các tuyến đường được đồng ý hay từ chối căn cứ dựa trên administrative distance của chúng. Ví dụ: topo mạng như hình 3.27 đang chạy RIP và người ta muốn thiết kế để chuyển sang chạy EIGRP. b. Các phương pháp thực hiện Để thực hiện a protocol migration có một vài phương pháp như sau: Phương pháp thứ nhất: tắt giao thức cũ và bật giao thức mới tại mỗi router. Phương pháp này không khả thi khi giải quyết trong mô hình mạng cỡ lớn bởi vì thời gian chết (downtime) sẽ rất lớn. Phương pháp thứ hai: cài đặt thêm giao thức định tuyến mới vào nhưng không xoá giao thức định tuyến cũ. Phương pháp này chỉ áp dụng cho trường hợp giá trị administrative distance của giao thức định tuyến mới nhỏ hơn giao thức cũ, mỗi router sẽ chọn các tuyến do giao thức mới quảng bá để đưa vào bảng định tuyến. Sau một thời gian toàn mạng sẽ hội tụ với giao thức định tuyến mới đồng nghĩa với quá trình a protocol migration đã hoàn tất lúc này ta có thể gỡ giao thức định tuyến cũ ra mà không ảnh hưởng đến mạng. Tuy nhiên khi thực hiện phương pháp thứ 2 thì khả năng routing loop và black hole vẫn tồn tại trong suốt quá trình hội tụ lại. Phương pháp thứ ba: thay đổi administrative distance của một trong hai giao thức định tuyến đảm bảo sao cho những route mà được quảng bá bởi giao thức định tuyến mới sẽ không đưa vào routing table cho đến khi tất cả các router trên mạng đã sẵn sàng cho quá trình chuyển đổi. Cho đến khi tất cả các thiết bị trên mạng đều được cấu hình giao thức định tuyến mới khi ấy ta mới thay đổi giá trị administrative distance về giá trị ban đầu. Ưu điểm 1: Mặc dù routing loop và black hole vẫn có thể xảy ra đối với phương pháp này nhưng quá trình chuyển đổi nhanh hơn và ít xảy ra lỗi hơn bởi vì chỉ cần một sự thay đổi administrative distance trên các thiết bị. Ưu điểm 2: khi người quản trị có thể sử dụng lại giao thức định tuyến ban đầu bằng cách thay đổi giá trị administrative distance của các giao thức định tuyến nếu như giao thức định cũ chưa bị xoá. Nhược điểm : khi thực hiên phưng pháp này router phải có khả năng chạy được hai quá trinh định tuyến cho nên yêu cầu về phần cứng phải cao hơn khi chỉ chạy một giao thức định tuyến. Do đó sau các thiết bị trên mạng nhận biết sự xuất hiện của giao thức định tuyến mới thì nên xoá giao thức định tuyến cũ đi. 5. Nhiều điểm phân phối lại (Multiple Redistribution Points) Khi mutual redistribution được thực hiện ở nhiều hơn một điểm, như trong hình 3.28. Administrative distance có gây lựa chọn sai tuyến đường (sub-optimal routing), routing loop và black holes. Ví dụ như trong routing table của Bumble như trong hình 3.29, tuyến đến mạng 192.168.6.0 mà router Bumble sẽ đi qua Blather mà không đi qua router Monks. Giải cho vấn đề này là sử dụng distribute-list để điều khiển nguồn gốc của các tuyến tại các redistribution point. Cấu hình tại Bumble và Grimwig cụ thể như sau: Bumble router ospf 1 redistribute rip metric 100 network 192.168.3.1 0.0.0.0 area 0 distribute-list 1 in ! router rip redistribute ospf 1 metric 2 network 192.168.2.0 distribute-list 2 in ! ip classless access-list 1 permit 192.168.4.0 access-list 1 permit 192.168.5.0 access-list 2 permit 192.168.1.0 access-list 2 permit 192.168.6.0 Grimwig router ospf 1 redistribute rip metric 100 network 192.168.5.1 0.0.0.0 area 0 distribute-list 1 in ! router rip redistribute ospf 1 metric 2 network 192.168.6.0 distribute-list 2 in ! no ip classless access-list 1 permit 192.168.3.0 access-list 1 permit 192.168.4.0 access-list 2 permit 192.168.1.0 access-list 2 permit 192.168.2.0 Trong cấu hình trên, access list 1 chỉ cho phép network trong OSPF domain đồng ý bởi OSPF và access list 2 chỉ cho phép network trong RIP domain đồng ý bởi RIP. Hình 3.30 cho biết routing table của Bumble sau khi thực hiện distribute-list. Vấn đề xảy ra ở đây đó là khi kết nối trên cổng Ethernet của Bumble bị fail. Thì khi ấy mạng 192.168.6.0 sẽ không đến được do phương pháp này không khả năng dự phòng. Cụ thể xem routing table của Bumble sau khi kết nối trên cổng Ethernet của Bumble bị fail như hình 3.31 sẽ chứng minh điều này. Để khắc phục điều này chúng ta sử dụng hai câu lệnh command để thiết lập độ ưu tiên của các tuyến. Cấu hình cụ thể như sau: Bumble router ospf 1 redistribute rip metric 100 network 192.168.3.1 0.0.0.0 area 0 distance 130 distance 110 0.0.0.0 255.255.255.255 1 ! router rip redistribute ospf 1 metric 2 network 192.168.2.0 distance 130 distance 120 192.168.2.1 0.0.0.0 2 ! ip classless access-list 1 permit 192.168.4.0 access-list 1 permit 192.168.5.0 access-list 2 permit 192.168.1.0 access-list 2 permit 192.168.6.0 Grimwig router ospf 1 [...]... giải quyết 6 Route Maps và Redistribution a Route map Route map tương tự như access list, cả hai đều có tiêu chuẩn cho việc sao khớp (match) một packet nào đó và một hành động (action) cho phép hay từ chối nhữnh packet đó Nhưng route map có điểm không giống so với access list là nó được chia thành các sequence Và mỗi sequence có một giá trị để xác định nó là sequence number và một cặp tiêu chuẩn (match,... chuẩn (match, set) Cặp tiêu chuẩn (match, set) được dùng để chay đổi một loại lưu lượng mạng xác định nào đó Hoạt động của route map nó sẽ hoạt động từ sequence có giá trị nhỏ nhất đến sequence có giá trị lớn nhất Nếu điều kiện so khớp tại một sequence nào đó không khớp thì nó sẽ chuyển xuống sequence có giá trị lớn hơn Những lưu lượng mà không so khớp với bất kỳ sequence nào thì nó sẽ tham gia định tuyến... access-list 1 permit 192.168.4.0 access-list 2 permit 192.168.1.0 access-list 2 permit 192.168.2.0 Câu lệch distance thứ nhất trong cấu hình của cả hai router đều thiết lập giá trị mặc định cho cả OSPF và RIP là 130 Câu lệnh thứ hai thiết lập một giá trị distance khác cho các tuyến được xác định bởi access list tương ứng Như trong ví dụ cấu hình trên, RIP gán giá trị distance là 120 cho các tuyến quảng... câu lệnh set Nhưng nó có một điểm khác biệt so với route filtering với redistribution là nó rất cơ động trong việc thay đổi những tuyến bị lọc bằng cách chèn một sequence với cặp tiêu chuẩn (match, set) vào cấu hình . Redistribution-các kỹ thuật chống loop và tối ưu Phân phối lại (Redistribution) với các kỹ thuật liên quan để chống loop và tối ưu 1. Phân phối lại với tóm lược tuyến (Redistribution và RouteSummarization) a administrative distance về giá trị ban đầu. Ưu điểm 1: Mặc dù routing loop và black hole vẫn có thể xảy ra đối với phương pháp này nhưng quá trình chuyển đổi nhanh hơn và ít xảy ra lỗi hơn bởi vì chỉ cần. route được redistribution vào process domain. Xem lại mục nhập cho tuyến đường tóm lược (summary route) 192.168.3.128/25. Mục nhập này được redistribution vào OSPF domain và được đánh dấu là tuyến

Ngày đăng: 16/11/2014, 19:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w