Sự cần thiết của chia Subnet?
1. Nhu cầu muốn chia những mạng lớn thành những mạng nhỏ hơn với những mục đích:
- Giảm kích thước Broadcast domain.
- Tăng tính bảo mật.
- Áp dụng tính quản lý theo kiểu phân cấp.
2. Cần nhiều địa chỉ mạng có kích thước nhỏ nhưng bên ngoài chỉ nhìn thấy như 1 mạng duy nhất.
Nguyên lý cơ bản của kỹ thuật chia subnet
Để có thể chia nhỏ một mạng lớn thành nhiều mạng con bằng nhau, người ta thực hiện mượn thêm một số bit bên phần host để làm phần mạng, các bit mượn này được gọi là các bit subnet. Tùy thuộc vào số bit subnet mà ta có được các số lượng các mạng con khác nhau với các kích cỡ khác nhau:
Các dạng chia Subnet
- Dạng 1: Cho một mạng lớn và số bit mượn, xác định các yếu tố
- Dạng 2: Cho một địa chỉ host. Xác định xem host thuộc mạng nào
- Dạng 3 : Cho sơ đồ mạng, xác định số bit mượn phù hợp để chia subnet
- Dạng 4 : Chia subnet VLSM
Một vài điểm cơ bản cần nhớ
– Chuyển đổi nhị phân – thập phân: cần nắm vững cách chuyển đổi giữa số nhị phân và thập phân. VD: 5 <-> 101 ; 10 <-> 1010; 64 <-> 1000000.
– Với n bit nhị phân, ta có thể thiết lập được: 2^n số nhị phân n bit với giá trị thập phân tương ứng chạy từ 0 đến 2^n – 1.
Ví Dụ:
Với n = 2, ta lập được 2^2 = 4 số nhị phân 2 bit chạy từ 0 đến 3 ( = 2^2 – 1 ):
00 -> 0
01 -> 1
10 -> 2
11 -> 3
Với n = 3, ta lập được 2^3 = 8 số nhị phân 3 bit chạy từ 0 đến 7 ( = 2^3 – 1 ):
000 -> 0
001 -> 1
010 -> 2
011 -> 3
100 -> 4
101 -> 5
110 -> 6
111 -> 7
– Cố gắng nhớ một số lũy thừa của 2, ít nhất cho đến 2^8 :
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
– Sau đây là các chuỗi nhị phân 8 bit cùng các số thập phân tương ứng cần phải thuộc để phục vụ cho việc tính nhanh subnet mask:
Bảng bước nhảy: bảng này được sử dụng để tính toán trong phép chia subnet
Dạng 1: Cho một mạng lớn và số bit mượn, xác định các yếu tố
– Số subnet
– Số host/subnet
– Địa chỉ mạng của mỗi subnet.
– Địa chỉ host đầu của mỗi subnet.
– Địa chỉ host cuối của mỗi subnet.
– Địa chỉ broadcast của mỗi subnet.
– Subnet mask được sử dụng
Cách tính:
– Gọi n là số bit mượn và m là số bit host còn lại. Ta có:
+ Số subnet có thể chia được:
- 2^n nếu có hỗ trợ subnet – zero.
- 2^n – 2 nếu không hỗ trợ subnet – zero.
Luật subnet – zero: nếu hệ điều hành trên host không bật tính năng subnet – zero, khi chia subnet ta phải bỏ đi không dùng hai mạng con ứng với các bit subnet bằng 0 hết và các bit subnet bằng 1 hết. Ngược lại nếu hệ điều hành bật tính năng subnet – zero , ta có quyền sử dụng hai mạng con này. Nhìn chung, các hệ điều hành ngày nay đều bật tính năng subnet – zero một cách mặc định, do đó nếu không thấy nói gì thêm trong yêu cầu, ta sử dụng cách chia có hỗ trợ subnet – zero.
+ Số host có thể có trên mỗi subnet: 2^m – 2 (host/subnet)
– Với mỗi subnet chia được:
+ Địa chỉ mạng có octet bị chia cắt là bội số của bước nhảy (Octet bị chia cắt là octet vừa có các bit thuộc phần mạng vừa có các bit thuộc phần host).
Bước nhảy tương ứng với số bit mượn có thể được tra trong bảng bước nhảy phía trên.
+ Địa chỉ host đầu = địa chỉ mạng + 1 (cần hiểu cộng 1 ở đây là lùi về sau một địa chỉ).
+ Địa chỉ broadcast = địa chỉ mạng kế tiếp – 1 (cần hiểu trừ 1 ở đây là lùi về phía trước một địa chỉ).
+ Địa chỉ host cuối = địa chỉ broadcast – 1 (cần hiểu trừ 1 ở đây là lùi về phía trước một địa chỉ).
– Để tính ra subnet mask được sử dụng, ta sử dụng cách nhớ: phần mạng của địa chỉ chạy đến đâu, các bit 1 của subnet mask chạy đến đó. Tham khảo bài viết về subnet mask ở đây.
VD1:
Xét mạng 192.168.1.0/24 , mượn 2 bit, còn lại 6 bit host, bước nhảy là 64.
Ta có:
– Số subnet có thể có: 2^2 = 4 subnet.
– Số host trên mỗi subnet = 2^6 – 2 = 62 host.
– Các địa chỉ mạng sẽ có octet bị chia cắt (octet thứ 4) là bội số của 64.
– Liệt kê các mạng như sau:
192.168.1.0/26 -> địa chỉ mạng
192.168.1.1/26 ->địa chỉ host đầu.
….
192.168.1.62/26 ->địa chỉ host cuối.
192.168.1.63/26 ->địa chỉ broadcast.
———————————————
192.168.1.64/26 -> địa chỉ mạng
192.168.1.65/26 ->địa chỉ host đầu
…..
192.168.1.126/26 ->địa chỉ host cuối
192.168.1.127/26 ->địa chỉ broadcast.
———————————————
192.168.1.128/26 -> địa chỉ mạng
192.168.1.129/26 ->địa chỉ host đầu.
….
192.168.1.190/26 ->địa chỉ host cuối.
192.168.1.191/26 ->địa chỉ broadcast.
———————————————
192.168.1.192/26 -> địa chỉ mạng
192.168.1.193/26 ->địa chỉ host đầu.
….
192.168.1.254/26 ->địa chỉ host cuối.
192.168.1.255/26 ->địa chỉ broadcast.
Vậy, một mạng lớp C 192.168.1.0/24 đã được chia thành 4 mạng :192.168.1.0/26, 192.168.1.64/16, 192.168.1.128/26, 192.168.1.192/26.
Subnet mask được sử dụng trong ví dụ này là 255.255.255.192
VD2: Xét mạng 172.16.0.0/16, mượn 2 bit. Octet bị chia cắt ( thành 2 phần là net
và host ) là octet thứ 3.
– Số bit mượn là 2 => số mạng con có thể có (tính theo luật subnet zero): 2^2 = 4
mạng. Số bit mạng bây giờ là 18 bit.
– Số bit host còn lại: 32 – 18 = 14 bit. => số host/subnet = 2^14 – 2 host.
– Các địa chỉ mạng sẽ có octet thứ 3 là bội số của 64 (octet này bị mượn 2 bit)
– Ta có dải địa chỉ như sau:
172.16.0.0/18 -> Địa chỉ mạng
172.16.0.1/18 -> Địa chỉ host đầu
.. .…
172.16.63.254/18 -> Địa chỉ host cuối.
172.16.63.255/18 -> Địa chỉ broadcast
——————————————————
172.16.64.0/18 -> Địa chỉ mạng
172.16.64.1.18 -> Địa chỉ host đầu
……
172.16.127.254/18 -> Địa chỉ host cuối.
172.16.127.255/18 -> Địa chỉ broadcast.
——————————————————–
172.16.128.0/18 -> Địa chỉ mạng
172.16.128.1/18 -> Địa chỉ host đầu
……
172.16.191.254/18 -> Địa chỉ host cuối
172.16.191.255/18 -> Địa chỉ broadcast
VD3: Xét mạng 172.16.0.0/16, mượn 10 bit => octet bị chia cắt (thành hai phần
net và host ) là octet thứ 4. Ta có
– Số bit mượn là 10 => số bit mạng là 26 bit.
Số subnet có thể có: 2^10 = 1024 mạng.
– Số bit host còn lại: 32 – 26 = 6 bit => số host trên mỗi subnet: 2^6 – 2 = 62 host.
– Địa chỉ mạng có octet thứ 4 là bội số của 64 (octet này bị mượn 2 bit)
– Ta có dải địa chỉ như sau:
172.16.0.0/26 -> Địa chỉ mạng
172.16.0.1/26 -> Địa chỉ host đầu
…..
172.16.0.62/26 -> Địa chỉ host cuối
172.16.0.63/26 -> Địa chỉ broadcast
————————————————-
172.16.0.64/26 -> Địa chỉ mạng
172.16.0.65/26 -> Địa chỉ host đầu
…..
172.16.0.126/26 -> Địa chỉ host cuối
172.16.0.127/26 -> Địa chỉ broadcast
————————————————–
172.16.0.128/26 -> Địa chỉ mạng
172.16.0.129/26 -> Địa chỉ host đầu
…..
172.16.0.190/26 -> Địa chỉ host cuối
172.16.0.191/26 -> Địa chỉ broadcast
————————————————–
172.16.0.192/26 -> Địa chỉ mạng
172.16.0.193/26 -> Địa chỉ host đầu
…..
172.16.0.254/26 -> Địa chỉ host cuối
172.16.0.255/26 -> Địa chỉ broadcast
========================================
172.16.1.0/26 -> Địa chỉ mạng
172.16.1.1/26 -> Địa chỉ host đầu
…..
172.16.1.62/26 -> Địa chỉ host cuối
172.16.1.63/26 -> Địa chỉ broadcast
————————————————-
172.16.1.64/26 -> Địa chỉ mạng
172.16.1.65/26 -> Địa chỉ host đầu
…..
172.16.1.126/26 -> Địa chỉ host cuối
172.16.1.127/26 -> Địa chỉ broadcast
————————————————–
172.16.1.128/26 -> Địa chỉ mạng
172.16.1.129/26 -> Địa chỉ host đầu
…..
172.16.1.190/26 -> Địa chỉ host cuối
172.16.1.191/26 -> Địa chỉ broadcast
————————————————–
172.16.1.192/26 -> Địa chỉ mạng
172.16.1.193/26 -> Địa chỉ host đầu
…..
172.16.1.254/26 -> Địa chỉ host cuối
172.16.1.255/26 -> Địa chỉ broadcast
========================================
172.16.2.0/26 -> Địa chỉ mạng
172.16.2.1/26 -> Địa chỉ host đầu
…..
172.16.2.62/26 -> Địa chỉ host cuối
172.16.2.63/26 -> Địa chỉ broadcast
————————————————-
172.16.2.64/26 -> Địa chỉ mạng
172.16.2.65/26 -> Địa chỉ host đầu
…..
172.16.2.126/26 -> Địa chỉ host cuối
172.16.2.127/26 -> Địa chỉ broadcast
————————————————–
172.16.2.128/26 -> Địa chỉ mạng
172.16.2.129/26 -> Địa chỉ host đầu
…..
172.16.2.190/26 -> Địa chỉ host cuối
172.16.2.191/26 -> Địa chỉ broadcast
————————————————–
172.16.2.192/26 -> Địa chỉ mạng
172.16.2.193/26 -> Địa chỉ host đầu
…..
172.16.2.254/26 -> Địa chỉ host cuối
172.16.2.255/26 -> Địa chỉ broadcast
…………..
172.16.255.0/26 -> Địa chỉ mạng
172.16.255.1/26 -> Địa chỉ host đầu
…..
172.16.255.62/26 -> Địa chỉ host cuối
172.16.255.63/26 -> Địa chỉ broadcast
————————————————-
172.16.255.64/26 -> Địa chỉ mạng
172.16.255.65/26 -> Địa chỉ host đầu
…..
172.16.255.126/26 -> Địa chỉ host cuối
172.16.255.127/26 -> Địa chỉ broadcast
————————————————–
172.16.255.128/26 -> Địa chỉ mạng
172.16.255.129/26 -> Địa chỉ host đầu
…..
172.16.255.190/26 -> Địa chỉ host cuối
172.16.255.191/26 -> Địa chỉ broadcast
————————————————–
172.16.255.192/26 -> Địa chỉ mạng
172.16.255.193/26 -> Địa chỉ host đầu
…..
172.16.255.254/26 -> Địa chỉ host cuối
172.16.255.255/26 -> Địa chỉ broadcast
Ta để ý thấy octet thứ 3 (là octet bị mượn nhưng không bị chia cắt thành net và host) tăng dần từ 0 đến 255. Trong khi đó, octet thứ 4 (là octet bị chia cắt) thay đổi theo bước nhảy khi địa chỉ là địa chỉ mạng (nó bị mượn 2 bit nên có bước nhảy là 64). Subnet mask trong ví dụ này là 255.255.255.192
Dạng 2: Cho một địa chỉ host. Xác định xem host thuộc mạng nào
Ta xem xét các ví dụ sau:
VD1: Cho địa chỉ host 192.168.1.158/28. Hãy cho biết, host này thuộc về subnet nào?
Giải: /28 => có 28 bit mạng. Octet bị chia cắt là octet thứ 4 => số bit mượn của octet này là 4 => bước nhảy là 16.
Lấy octet thứ 4 của địa chỉ host là 158 chia cho 16 được 9 và còn dư. Ta lấy 16 nhân với 9 được 144. Host này thuộc mạng 192.168.1.144/28
VD2: Cho địa chỉ host 172.16.159.2/18. cho biết địa chỉ này thuộc subnet nào?
Giải: /18 => có 18 bit mạng. Octet bị chia cắt là octet thứ 3 => số bit mượn của octet này là 2 => bước nhảy là 64.
Lấy octet thứ 3 là 159 chia cho 64 được 2 và còn dư. Ta lấy 64 nhân với 2 được 128. Host này thuộc mạng 172.16.128.0/18
Dạng 3 : Cho sơ đồ mạng, xác định số bit mượn phù hợp để chia subnet
VD: Chỉ cho một mạng 192.168.1.0/24. Hãy đảm bảo cung cấp đủ các địa chỉ IP cho sơ đồ mạng trên.
Ta thấy: Có tất cả 5 mạng (kết nối giữ các router với nhau cũng được tính là 1 mạng), mạng nhiều host nhất là mạng có 26 host (cộng thêm một địa chỉ cổng router).
Gọi số bit mượn là n số bit host là m. Ta có hệ sau:
- 2^n ≥ 5 (số mạng chia ra tối thiểu phải bằng 5).
- 2^m – 2 ≥ 26 (nếu mỗi mạng con đáp ứng được số host của mạng 26 host, nó sẽ đáp ứng được yêu cầu về số host của tất cả các mạng còn lại trên sơ đồ).
- m + n = 8
- => n = 3, m = 5 là phù hợp.
Vậy ta có tất cả 2^3 = 8 mạng và mỗi mạng này có 2^5 – 2 = 30 host, đáp ứng được yêu cầu của sơ đồ trên.
Để xác định được các mạng cụ thể, sử dụng các quy tắc chia subnet đã được trình bày ở Dạng 1.
Dạng 4 : Chia subnet VLSM
VLSM (Variable Length Subnet Mask): là kỹ thuật chia nhỏ một mạng thành các mạng có độ dài khác nhau (sẽ có các subnet mask khác nhau)
Xem xét ví dụ sau
– Cũng dùng mạng 192.168.1.0/24 để đặt địa chỉ cho tất cả các mạng trên . Tuy nhiên ta không thể làm như ví dụ trước, chia mạng 192.168.1.0/24 thành các mạng bằng nhau vì sẽ không có cách chia nào phù hợp cho sơ đồ trên: nếu mượn 1 bit thì đáp ứng được yêu cầu về số host cho mạng 100 host vì mỗi mạng được chia ra có 126 host nhưng lại không đáp ứng được yêu cầu về số lượng subnet vì ta chỉ chia được có 2 subnet nếu mượn 1 bit trong khi trên sơ đồ có tới 5 mạng.
Ngược lại, để đáp ứng nhu cầu về số lượng mạng trên sơ đồ, ta phải mượn tối thiểu là 3 bit (2^3 = 8 subnet) nhưng khi đó mỗi mạng lại chỉ có nhiều nhất là 30 host ( 2^5 – 2 = 30) không đáp ứng được yêu cầu về số lượng host trên các mạng của sơ đồ trên
=> Cách thức tiến hành là: sẽ xét các mạng theo thứ tự số host từ cao xuống thấp
– Đầu tiên , xét mạng nhiều host nhất: 100 host.
ta phải xem mượn bao nhiêu bit thì đủ cho mạng này. Ta giải hệ:
- 2^m – 2 ≥ 101
- m + n = 8 (mượn bit ở octet thứ 4).
Với m: sối bit host, n: số bit mượn
Ta được m = 7, n = 1.
Vậy ta mượn 1 bit và dành mạng 192.168.1.0/25 để gán cho mạng có 100 host. Mỗi mạng /25 có 2^7 – 2 = 126 host => đáp ứng đủ cho mạng 100 host.
Vậy dải địa chỉ 192.168.1.0/24 còn lại các địa chỉ từ 192.168.1.128 -> 192.168.1.255
– Tiếp đó ta xét đến mạng có 50 host, tương tự ta xem xem mượn bao nhiêu bit là phù hợp:
- 2^m – 2 ≥ 51
- m + n = 8 (mượn bit ở octet thứ 4).
Với m: số bit host, n: số bit mượn
Ta được m = 6 và n = 2 là tối ưu.
Vậy ta mượn 2 bit, mạng 192.168.1.0/24 được chia thành 4 mạng 192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26 và 192.168.1.192./26.
Tuy nhiên hai dải địa chỉ của hai mạng 192.168.1.0/26 và 192.168.1.64/26 đã được giành cho mạng 100 host. Do đó ta chỉ có thể lấy từ mạng 192.168.1.128/26 để gán cho mạng 50 host. Ở đây ta lấy mạng 192.168.1.128/26 gán cho mạng 50 host.
– Tiếp đó ta xét đến mạng có 20 host, ta xem xem mượn bao nhiêu bit là phù hợp:
- 2^m – 2 ≥ 21
- m + n = 8 (mượn bit ở octet thứ 4).
Với m: số bit host, n: số bit mượn
Ta được m = 5 và n = 3.
Vậy ta mượn 3 bit mạng 192.168.1.0/24 được chia thành 8 mạng 192.168.1.0/27, 192.168.32.0/27, 192.168.64.0/27 và 192.168.96.0/27, 192.168.128.0/27, 192.168.1.160/27, 192.168.1.192/27, 192.168.1.224/27 .
Tuy nhiên các dải địa chỉ của các mạng 192.168.1.0/27 ,…, 192.168.1.160/27 đã được giành cho mạng 100 và mạng 50 host. Do đó ta chỉ có thể lấy từ mạng 192.168.192.0/27 trở đi để gán cho mạng 20 host. Ở đây ta lấy mạng 192.168.1.192/27 gán cho mạng 20 host.
– Tiếp đó ta xét đến các mạng có 2 host là các liên kết điểm – điểm serial, ta xem thử mượn bao nhiêu bit là phù hợp:
- 2^m – 2 ≥ 2
- m + n = 8 (mượn bit ở octet thứ 4).
Với m: số bit host, n: số bit mượn
Ta được m = 2 và n = 6 là tối ưu hơn cả, đảm bảo không bị dư địa chỉ..
Vậy ta mượn 6 bit, mạng 192.168.1.0/24 được chia thành 2^6 = 64 mạng 192.168.1.0/30,
192.168.1.4/30, 192.168.1.8/30,…, 192.168.1.248/30, 192.168.1.252/30 .
Tuy nhiên các dải địa chỉ của các mạng 192.168.1.0/30 ,…, 192.168.1.222/27 đã được giành cho mạng 100 host, mạng 50 host và mạng 20 host. Do đó ta chỉ có thể lấy từ mạng 192.168.224.0/30 để gán cho các mạng 2 host. Ở đây ta lấy mạng 192.168.1.224/30 và 192.168.1.228/30 gán cho hai liên kết serial
Vậy ta có kết quả chia VLSM như sau:
Thực tế, chúng ta có thể sử dụng những tool chia VLSM online để phục vụ cho công việc nhanh chóng hơn.