Thursday, October 28, 2010

[Switching]Các khái niệm cơ bản về Virtual LAN


1.Cơ bản về VLAN-Virtual LAN
Để hiểu được về VLAN, trước hết ta phải hiểu về LAN. Với LAN có nhiều cách để nói về khái niệm này, để thấy được sự tương quan giữa LAN và VLAN, ta sẽ dùng khái niệm sau với LAN:

            Một LAN là một tập hợp các thiết bị trong cùng một broadcast domain
Broadcast domain là một vùng kết nối các thiết bị mà trong đó khi một thiết bị gửi một gói tin broadcast cho toàn bộ mạng thì các thiết bị bên trong đều nhận được một gói tin copy của gói tin đó. Cho nên, ta có thể xem là broadcast domain có cùng một khái niệm như LAN.
Khái niệm VLAN được dùng để tạo ra nhiều LAN “ảo” cho một switch. Nếu ko có VLAN thì các interfaces của switch sẽ nằm trong một LAN hay một broadcast domain. Với VLAN, ta ko cần phải đưa tất cả các int vào trong một LAN mà có thể “phân chia” các int này thành nhiều broadcast domain.
Hình trên cho ta một cái nhìn trừu tượng về VLAN. Với 1 switch, ta có thể chia ra nhiều mạng nhỏ thông qua các interfaces của sw. Ở trên thì VLAN1 và VLAN2 là hoàn toàn độc lập với nhau. Dino và Fred là trong một mạng, còn Wilma và Betty trong cùng một mạng. Lúc này Dino ko thể liên lạc với Betty và Wilma, tương tự với Fred và ngược lại.
Lợi ích của việc dùng VLAN:
  •             -Nhóm các users trong cùng một đơn vị lại với nhau mà ko cần đụng đến quá trình vật lý
  •             -Chia các thiết bị vào trong các LAN nhỏ hơn, từ đó giảm thiểu những nguy cơ mà mỗi host đem lại
  •             -Tăng tính bảo mật cho từng vùng
2.Trunking với khái niệm ISL và 802.1Q
Khái niệm trunking ra đời khi xuất hiện việc sử dụng nhiều sw kết nối với nhau. Khi đó, việc mỗi sw có các VLANs giống nhau là hoàn toàn có thể và yêu cầu đưa ra là phải làm cho các VLAN đó thông được với nhau. Việc để các VLAN kết nối với nhau(lúc này có tính chất vật lý) chính là quá trình trunking
VLAN trunking hoạt động dựa vào quá trình gọi là VLAN tagging. Đây là quá trình mà  sw gửi sẽ add một header vào frame trước khi gửi qua đường trunk. Header này sẽ mang một thông tin gọi là VLAN ID. Dựa vào VLAN ID, bên sw gửi sẽ cho biết frame đó thuộc VLAN nào và bên nhận sẽ từ đó mà đưa đến đúng vlan là frame cần đến.
 
Hình trên cho ta một cái nhìn sơ qua về VLAN trunking. Như ta thấy, 2 sw có cùng các vlans, được nối với nhau qua một đường vật lý gọi là đường trunk. Ta cũng có thể thấy rằng các ethernet frame khi đi qua đường trunk sẽ thêm vào một header chứa VLAN ID.
Ta thử xét ví dụ về VLAN1
Khi host gưi gói tin broacast qua int 0/1, frame sẽ đi qua port 0/2 và 0/23(vì đây là cồng nối đường trunk), gói tin đi qua đường trunk sẽ được gắn(tag) thêm một header chứa VLAN ID, khi qua đến sw2, VLAN ID sẽ được bóc tách và đưa đến đúng VLAN 1 là và đưa ra cồng 0/1 và 0/2. Như vậy, gói tin broadcast đã gửi được hết cho các host trong mạng mà nó gắn vào.
Các sw cisco hỗ trợ 2 kiểuVLAN trunking protocol là ISL(Inter-Switch Link) và IEEE 802.1Q. Mỗi kiểu sẽ quy định cách đóng gói Header chứa VLAN ID như thế nào.
2.1.ISL
ISL được Cisco tạo ra rất lâu trước khi IEEE định nghĩa giao thức trunking 802.1q. ISL là giao thức được tạo ra dành riêng cho các sw của Cisco hỗ trợ ISL bởi vì một số các sw mới của Cisco đã bỏ, ko hỗ trợ giao thức này. Frame chứa ISL header có thể được hình dung như sau:
Bằng cách thêm vào frame một ISL header có chứa VLAN ID, sw gửi sẽ chắc chắn rằng, sw nhận sẽ nhận được đúng frame mà nó cần nhận. ISL header sẽ sử dụng source và dest MAC add của sw chứ ko phải MAC của nơi gửi.
2.2.IEEE 802.1Q
Rất lâu sau khi Cisco định nghĩa ISL thì IEEE đã đưa ra chuẩn của mình để quy định về cách trunking. Và hiện nay thì chuẩn 802.1q của IEEE đang được sử dụng rộng rãi, thậm chí một số sw của Cisco đã bỏ việc hỗ trợ ISL
802.1Q ko bao quanh frame bằng một header mới mà nó sẽ thêm trực tiếp 4bytes vào frame cũ. Như vậy, source add và dest add của frame được giữ nguyên ko bị thay đổi. Và bởi vì đã thêm 4bytes vào frame ban đầu nên sẽ phải tính toán lại FCS. Ta có thể hình dung việc chèn thêm 4bytes vào frame cũ như sau:


 
2.3.So sánh ISL và 802.1q
Với 2 phần trên, ta đã phần nào hình dung ra việc giống và khác nhau giữa 2 giao thức trunking này. Chúng đều dùng để định danh các VLAN nhờ vào VLAN ID. Khác nhau lớn nhất chính là tiêu chuẩn của mỗi giao thức, một là giao thức dành riêng cho Cisco, một là tiêu chuẩn dùng chung cho mọi thiết bị.
Phần này sẽ nói thêm về một số điểm giống và khác nhau của 2 giao thức này
  •             -Cả 2 giao thức đều dùng 12bits để định danh VLAN ID cho nên hỗ trợ cùng một số lượng VLAN như nhau: 4096.  VLAN ID được chia thành 2 phần, từ 1-1005 gọi là normal range VLANs, còn các giá trị cao hơn 1005 gọi là extended range
  •             -Cả 2 đều hỗ trợ STP-Spanning Tree Protocol cho mỗi VLAN.STP được sử dụng khi thiết kế một mạng dự phòng(được nói sau).
  •             -Một điểm khác nữa là native VLAN.802.1Q quy định rằng, với mỗi đường trunk, sẽ có 1 native VLAN, trong khi đó ISL ko hỗ trợ việc này.Mặc định, 802.1q quy định rằng VLAN1 là native VLAN.Theo định nghĩa, 802.1Q sẽ không thêm một 802.1q header vào frame. Khi một frame ko có header được thêm vào, nó sẽ tự hiểu rằng frame này dành cho native VLAN. Vì vậy, cả 2 sw phải biết  được rằng VLAN nào là native VLAN.
Bảng sau sẽ nói về sự khác nhau giữa ISL và 802.1Q:
 
3.VLAN Trunking Protocol(VTP)
VTP là giao thức mà các sw sẽ sử dụng để trao đổi các thông tin về cấu hình VTP sẽ quảng bá dựa vào các VLAN ID và các VLAN name. VTP sẽ ko quảng bá rằng các int nào thuộc VLAN nào nhưng VTP sẽ giúp cho người admin giảm bớt được việc cấu hình cục bộ trên từng sw.
Ta có thể hình dung rằng có 10 sw kết nối với nhau, sử dụng các đường trunks và mỗi sw có ít nhất 1 int gán vào 1 VLAN với VLAN ID là 3 và tên của VLAN đó là Accounting.Nếu ko sử dụng VTP, thì người admin sẽ phải đến từng sw và cấu hình bằng tay các thông tin đó. Nhưng với VTP thì chỉ cần cấu hình trên một sw nào đó và 9 sw còn lại sẽ học được thông tin đó từ sw đc cấu hình.
VTP định nghĩa một giao thức tại layer2 mà dựa vào đó các sw sẽ trao đổi các thông tin cấu hình về VLAN. Khi có sự thay đổi nào đó về các VLANs, VTP sẽ gửi các gói tin yêu cầu các sw khác đồng bộ về thông tin này. Các gói tin VTP được gửi một cách định kỳ hoặc đc gửi ngay khi có sự thay đổi nào đó xuất hiện.
Mỗi sw sẽ sử dụng 1 trong 3 VTP modes : client, server, transparent. Để sử dụng VTP người admin phải cấu hình 1 sw đóng vai trò là client còn các sw khác sẽ đóng vai trò là client, Sau đó, các thông tin về VLAN sẽ đc cấu hình trên server, client sẽ học các thông tin từ server đư vào VLAN database. Client ko thể được sử dụng để cấu hình thông tin VLAN.
Cisco sw ko thể disable VTP , cách hữu hiệu nhất là cấu hình transparent, ở mode này sw có thể từ chối VTP, nhưng vẫn forward các gói tin VTP, nhờ đó các server và clients vẫn nhận được các gói tin VTP.
3.1.Sử dụng VTP server mode và client mode
Qúa trình làm việc của VTP bắt đầu với việc tạo một VTP server.VTP server sau đó sẽ phân phối các thông tin cấu hình VLAN thông qua các gói tin VTP bằng cách gửi qua 802.1q hoặc ISL.Cả server và client đều xử lý gói tin VTP mà nó nhận được, cập nhật lại database dựa vào các thông tin đó và sau đó sẽ tự động gửi các gói tin cập nhật VTP qua các đường trunks. Kết thúc quá trình bằng việc tất cả sw đều học được các thông tin VLAN mới.
Việc tiếp nhận cập nhật của server và client dựa vào một thông số gọi là revision number. Khi revision number tăng lên thì khi đó chúng mới quyết định cập nhật thông tinvào database. Khi 1 sw nhận được goist in VTP update, nó sẽ kiểm tra xem revision number mà gói tin đem tới có cao hơn so với revision number của nó hay ko, nếu đúng thì nó sẽ cập nhật thông tin từ gói tin VTP update.
 
Hình trên cho ta thấy được các sw hoạt động dựa vào revision number
  • -step1: thêm mới VLAN
  • -step2: tăng revision number từ 3 lên 4
  • -step3: gửi các gói tin VTP quảng bá đến các VTP client
  • -step4:các VTP client sẽ so sánh revision của nó với revision number trong gói tin VTP quảng bá
  • -step5: quyết định cập nhật thông tin vì revision number mới lớn hơn.
Đối với mạng lớn hơn, khi VTP server có thông tin mới, nó ngay lập tức đưa các gói tin cập nhật qua các đường trunks. Các sw láng giềng kế cận với VTP server bằng đường trunk sẽ xử lý gói tin này và quyết định cập nhật hay ko, sau đó thì tiếp tục quảng bá cho các sw láng giềng cuả nó. Qúa trình sẽ hoàn tất khi tất các các sw trong mạng đuề có thông tin mới nhất trong database.
VTP server và client sẽ gửi định kỳ gói tin VTP message 5 phút một lần.VTP định nghĩa 3 kiểu gói tin VTP khác nhau: summary advertisement, subset advertisement và advertisement request.
            -Summary advertisement: sẽ chứa thông tin về revision number, domain name và các thông tin khác nhưng sẽ không chứa các thông tin về VLAN. Đây chính là gói tin được gửi đi định kỳ 5 phút một lần.
            -Subset advertisement: Nếu như revision number tăng lên 1, thì một hoặc nhiều gói tin subset adv sẽ được gửi ngay sau gói tin summary adv và sẽ đem theo thông tin mới về VLAN database.
            -Advertisement request: Cho phép 1 sw ngay lập tức yêu cầu VTP message từ sw láng giềng ngay khi đường trunks được active.
3.2.Yêu cầu để VTP có thể hoạt động giữa các sw.
Để VTP có thể hoạt động được giữa các sw thì cần phải đảm bảo 3 yếu tố:
            -Kết nối giữa các sw phải là đường trunk, sử dụng vlan trunking(802.1q hoặc ISL)
            -Các sw phải cùng domain(lưu ý domain name phân biệt HOA-thường)
            -Nếu cấu hình password thì các sw phải match password.
Khái niệm VTP domain dùng để chỉ một vài các sw được thiết lập trong cùng 1 nhóm, và như vậy, mỗi thành viên của domain này sẽ từ chối gói tin cập nhật từ domain khác. Password nếu được dùng thì sẽ không bao giờ được gửi dưới dạng plaintext.
3.3.Từ chối VTP bằng cách sử dụng VTP Transparent mode
Mặc định, ko thể disable VTP, cho nên nếu ko muốn nhận VTP update thì ko thể disable chức năng VTP của sw được. Thay vào đó, ta sẽ phải sử dụng mode thứ 3 là transparent mode. Tại mode này thì sw ko phải chịu ảnh hưởng từ các sw đang ở mode khác. Giống như VTP server, tại mode transparent, ta có thể tự cấu hình các VLANs, nhưng sẽ ko cập nhật thông tin từ các VTP message và cũng sẽ không bao giờ tạo ra các message để yêu cầu các VTP khác cập nhật thông tin từ nó.
3.4.Lưu trữ VLAN configuration
Để gửi đi các gói tin cho VLAN, sw cần phải biết VLAN ID và VLAN name. Công việc của VTP là quảng bá chi tiết các thông tin này tức là các thông tin gọi là VLAN database.Khi VTP client lưu trữ VLAN configuration( bao gồm VLAN ID, VLAN name, và các thiết lập khác) thì file câu hình được lưu trữ trong flash với tên vlan.dat
Lưu ý rằng Cisco IOS ko lưu  file này trong file start-up config hay running-config. Nếu muốn xóa cấu hình về VLAN và cấu hình của nó thì phải dùng câu lệnh:
                        delete flash:vlan.dat
3.5.VTP versions
VTP có 3 versions, ở đây ta chỉ bàn về version 1 và 2.Vấn đề lớn nhất giữa ver1 và ver2 nằm tại VTP transparent mode. Tại ver1, khi nhận được VTP message, sw ở trans mode sẽ kiểm tra domain name và password, nếu match 2 thông số này thì trans mode sẽ forward gói tin. Nhưng nếu ko, thì chúng sẽ drop gói tin và sẽ không forward gói tin đó nữa. Việc này làm cho một số gói tin VTP bị mất, ko đến được các sw khác. Chính vì điều này, tại VTP ver2, trans mode đã ko kiểm tra 2 thông số trên mà sẽ ngay lập tức forward VTP update message đi.
3.6.VTP Pruning
Do gói tin VTP cập nhật sẽ được broadcast ra toàn bộ các đường trunk nên các sw đều nhận được thông tin về VTP mess đó. Nhưng ko phải tất cả các sw đều có các VLAN như nhau, bởi một số có thể ko có một vài VLAN. Điều này dẫn đến việc làm hao tốn băng thông. VTP pruning cho phép xác định xem sw nào ko cần frame.

Hình trên cho ta một cái nhin về VTP Pruning. Sw1 và sw4 đều có các port gắn vào VLAN10.Với VTP pruning được cấu hình, sw2 và sw4 sẽ ko đưa các frame qua các đường trunks xuống sw3 và sw5 nữa.Nếu hostA gửi một gói tin broadcast thì gói tin đó sẽ đi như theo hướng mà mũi tên đã chỉ.



==================End===================


No comments:

Post a Comment