Từ hình 3.7 ta thấy node kết hợp có thể xử lý hai loại lưu lượng IP và burst dữ liệu. Classifier/TypeSwitch có nhiệm vụ xét xem lưu lượng đến là IP hay burst, từ đó đưa ra quyết định lưu lượng này xử lý ở phần nào (node lõi hay node biên)
Các thông số liên quan khác được cấu hình giống như cấu hình đối với node biên và cấu hình đối với node lõi.
3.2.3. b Module tạo liên kết trong mạng (Connector/ObsLink)
Do liên kết trong mạng OBS là các liên kết WDM nên trong xây dựng chương trình cũng có chức năng tạo các liên kết WDM. Liên kết WDM trong chương trình tạo nên từ các biến số sau:
- ndc_: số kênh dữ liệu - ncc_: số kênh điều khiển
- dc_bandwidth_: băng thông kênh dữ liệu - cc_bandwidth_: băng thông kênh điều khiển - delay_: độ trễ lan truyền trên mỗi liên kết
(Connector/ObsLink)
Agent Agent Agent
Ngõ ra Ngõ ra Node lõi OBS
Giao diện kết nối
đến lớp MAC Giải đa hợp (Classifier/Port) (Classifier/TypeSwitch) Node kết hợp IP OBS Ngõ vào
Trong phần mềm khi xây dựng kịch bản mô phỏng, ta không phải nhập thông số về độ trễ lan truyền trên mỗi liên kết mà chỉ cần nhập khoảng cách theo km, chương trình sẽ tự tính ra độ trễ lan truyền với vận tốc ánh sáng là 200000km/s.
3.2.3. c Module đơn vị truyền dẫn trong mạng (ObsPacket)
Hai đơn vị truyền dẫn trong mạng là gói điều khiển OBS_BHP và burst dữ liệu OBS_DB. Nói thêm rằng trong OBS4NS, burst dữ liệu khơng phải là một gói cụ thể như trong NS2. Mà chương trình mơ phỏng chỉ bảo trì hai giá trị về thời điểm bắt đầu DB_START và kết thúc DB_END của mỗi burst. Cụ thể trong chương trình hai giá trị này là hai biến NULL, điều này làm cho việc xử burst dữ liệu nhanh hơn và không gây áp lực lên hệ thống xử lý của máy tính.
OBS_BHP
Chương trình sẽ tạo ra gói điều khiển với các thông số sau:
- id_: một biến kiểu unsigned long int làm số nhận diện mỗi gói BHP - db_start_time_: thời điểm bắt đầu của burst
- db_end_time_: thời điểm kết thúc của burst - channel_: gói BHP này sẽ đưa lên kênh nào - ttl_: thời gian sống của gói BHP
- offset_obs_bhp_: thơng số về offset time - stats_: biến gọi module thống kê
OBS_DB
Chương trình tạo ra burst dữ liệu với các thông số sau:
- type_: cho biết là DB_START hay DB_END
- id_: số nhận diện burst, cùng chỉ số với OBS_BHP tương ứng - src_: địa chỉ node nguồn
- dst_: địa chỉ node đích
- channel_: burst này sẽ được đưa lên kênh nào - stats_: biến gọi module thống kê
Phần DBpayload đại diện cho phần dữ liệu của burst được phát đi bao gồm 3 biến số liên quan:
np_: số gói tin thực tế trong một burst size_: kích thước thực tế của burst
number_DB_: số lượng đoạn trong một burst dữ liệu trong trường hợp đóng khối
kiểu phân đoạn
3.2.3. d Module lập lịch kênh truyền (ChannelScheduler)
Khi một burst dữ liệu được tạo ra hoặc khi nó đi qua các node trung gian, nó cần phải được sắp xếp đến một bước sóng nào đó ở ngõ ra. Nhiều nhà nghiên cứu đã đưa ra nhiều phương thức sắp xếp khác nhau. Ba phương thức lập lịch được nhiều người quan tâm nhất được xây dựng trong OBS4NS đó là : FFUC, LAUC và LAUC-VF
- channelScheduler/FFUC: Giải thuật lập lập lịch kênh là FFUC - channelScheduler/LAUC: Giải thuật lập lịch kênh truyền là LAUC - channelScheduler/LAUC_VF: Giải thuật lập lịch kênh truyền là
LAUC-VF. Với các thông số liên quan như sau :
3.2.3. e Module định tuyến (ObsRoute)
OBS4NS tính tốn đường đi dựa trên giả thuật đường đi ngắn nhất SPF. Mỗi node mạng cùng với các liên kết tạo ra một topo mạng. Sau đó mỗi node mạng sẽ lưu trữ một bảng các láng giềng của nó. Việc tính tốn đường đi ngắn nhất từ node này đến node kia ban đầu dựa vào số bước nhảy hay hop count để tìm đường đi ngắn nhất. Nếu như việc tìm đường đi dựa vào số bước nhảy tìm được nhiều hơn một con đường đến đích thì con đường ngắn nhất được chọn chính là con đường có độ trễ lan truyền nhỏ nhất.
3.2.4 Đánh giá độ chính xác của phần mềm mô phỏng
Để đánh giá được độ chính xác của phần mềm này trong mơ phỏng mạng, tác giả đưa ra hai phương pháp để đánh giá như sau:
- Thứ nhất, xây dựng một mơ hình đơn giản để đánh giá
- Thứ hai, xây dựng mơ hình mơ phỏng với nhưng thơng số tham khảo và so sánh kết quả đạt được trong bài báo
type_ id_ src_ dst_ arrival_time_ channel_ DBpayload stats_
Điều kiện mô phỏng đối với mô phỏng trong bài báo: mô phỏng chỉ dừng lại khi 100 triệu gói được phát đi.
3.2.4. a Xây dựng mơ hình đơn giản để đánh giá
Mơ hình mơ phỏng đơn giản được xây dựng như sau. Mạng gồm 2 node, 1 liên kết, 8 kênh dữ liệu trên liên kết, số kênh điều khiển được chọn sao cho sự mất mát burst khơng phải là do rớt gói điều khiển (chọn 8 kênh).
Lưu lượng được gửi theo một hướng từ node 1 đến node 2 theo phân phối Poisson (tốc độ trung bình λ và kích thước gói 1250 byte).
Việc chọn lựa bước sóng ngõ ra theo kiểu FFUC (nó rõ hơn ở phần 8.3). Khi xảy ra xung đột giữa 2 burst thì rớt burst đến xung đột.
Lấy kết quả mơ phỏng so sánh với mơ hình lưu lượng Erlang B. Việc chọn mơ hình Erlang B vì những đặc điểm sau của mơ hình Erlang B tương ứng với mơ hình mơ phỏng xây dựng ở trên:
- Số lượng nguồn vô hạn
- Các cuộc gọi đến ngẫu nhiên
- Xoá cuộc gọi bị khoá
- Thời gian chiếm giữ phân phối theo hàm mũ
Kết quả mô phỏng 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0 5 10 15 20 Tải (Erlang) X á c su ấ t r ớ t gói Lý thuyết Erlang B Mơ phỏng
Hình 3.8: Đồ thị so sánh giữa kết quả mô phỏng và lý thuyết mơ hình Erlang B
Nhận xét:
Từ đồ thị nhận được ta thấy mô phỏng đã cho kết quả tương đối chính xác so với mơ hình lý thuyết Erlang. Sở dĩ tại lưu lượng thấp Tải < 13 Erlang, hai đường biểu diễn
Node 1 Node 2
8 kênh dữ liệu Poisson
tách xa nhau ra bởi vì số mẫu cần mô phỏng chưa đạt đến mức độ cần thiết. Nhưng vì thời gian có hạn nên tác giả chưa thực hiện mô phỏng với số mẫu nhiều hơn.
3.2.4. b So sánh kết quả mô phỏng với kết quả trong bài báo [6]
Trong [6], tác giả thực hiện mô phỏng trên mạng đường trục Hoa Kỳ NSFNET, tác giả đã xem xét ảnh hưởng của phân đoạn burst đến xác suất mất gói.
Hình 3.9: Mạng NSFNET Đây là các giả định của tác giả [6] Đây là các giả định của tác giả [6]
- Các node trong mạng được giả sử là các node kết hợp
- Liên kết trong mạng là song hướng : 1 kênh điều khiển và 1 kênh dữ liệu cho mỗi hướng. Tốc độ truyền dẫn mỗi kênh là 10Gbps
- Lưu lượng vào mạng có phân phối Poisson tốc độ λ và kích thước gói cố định 1250 byte. Lưu lượng tính bằng Erlang.
- Đóng khối theo kiểu mức ngưỡng tối đa, burst được tạo ra có kích thước cố định tại tất cả các node và bằng 100 gói
- Gói điều khiển có kích thước 64 byte
- Thời gian chuyển mạch tại mỗi node là 10 us
- Thời gian xử lý gói điều khiển tại mỗi node là 2.5 us
- Lưu lượng được phân phối đồng nhất tại tất cả các cặp node 300 9 12 14 11 10 8 7 6 5 4 3 13 1 2 2800 2400 2000 1200 600 1100 1600 1000 600 800 2000 900 700 500 300 800 800 500 700
So sánh kết quả của [6] và kết quả mô phỏng 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0 0.2 0.4 0.6 0.8 1 Tải (Erlang) X ác su ấ t m ấ t gói bai bao mo phong
Hình 3.10: Đồ thị so sánh kết quả trong [6] và kết quả mô phỏng bằng OBS4NS
Nhận xét: Sau khi so sánh hai kết quả từ đồ thị, ta thấy phần mềm đã đáp ứng được độ chính xác so với kết quả [6].
Qua các kiểm nghiệm trên, phần mềm mơ phỏng đã xây dựng có thể dùng trong việc mô phỏng mạng OBS.
3.3.5 Cách sử dụng chương trình OBS4NS
Trong phần này, sẽ mô tả các thao tác để tạo một kịch bản mô phỏng bằng phần mềm OBS4NS.
Mở đầu một kịch bản mô phỏng bằng dòng lệnh
Set ns [new Simulator]; tạo ra đối tượng mô phỏng
Tạo ra node mạng
Set c($i) [$ns ObsCoreNode $ncc $ndc ChannelScheduler/$stype]; tạo ra node lõi
Set e($i) [$ns ObsEdgeNode $ncc $ndc ChannelScheduler/$stype]; tạo ra node biên
Set h($i) [$ns ObsHybridNode $ncc $ndc ChannelScheduler/$stype]; tạo ra node kết hợp
Trong các câu lệnh trên ChannelScheduler/$stype là loại lập lịch kênh truyền. Ndc và ncc là số lượng kênh dữ liệu và kênh điều khiển ở ngõ ra mỗi node.
Tạo ra các lệnh kết trong mạng
$ Ns duplex-obs-link $c(1) $c(2) $ncc $ndc 1100 ChannelScheduler/$stype
Câu lệnh trên sẽ tạo ra một liên kết song hướng giữa 2 node c(1) và c(2) với
Thiết lập các thông số mạng
Agent/Burstifier set equal_offset_ false; cho phép thời gian offset bằng nhau cho tất cả các mức dịch vụ hay không
Agent/Burstifier set max_db_size_ 50000; thiết lập kich thước tối đa cho một burst
Agent/Burstifier set bhp_size_ 40; thiết lập kích thước gói điều khiển
Agent/Burstifier set max_packets_ 100; thiết lập số lượng gói tối đa trong một burst
Agent/Burstifier set timeout_ 10ms; thiết lập thời gian cho bộ định thời của bộ đong khối
Agent/Burstifier set min_segmentable_size_ 2000
Agent/Burstifier set segmentation_ false; cho phép phân đoạn burst trong giải quyết xung đột hay không
Đưa lưu lượng vào mạng
Set Traffic_type($i$j$k) [new Application/Traffic/Traffic_type] $ Traffic_type($i$j$k) set rate_ $rate ; thiết lập tốc độ trung bình $ Traffic_type($i$j$k) set packetSize_ 1250 ; thiết lập kích thước gói # Attach traffic
set udp($i$j$k) [$c($i) set burstifier_([$c($j) id]:$k)]; cho phép việc đóng khối và gửi đi
$ Traffic_type ($i$j$k) attach-agent $udp($i$j$k)
$ Udp ($i$j$k) set-traffic-generator $ Traffic_type($i$j$k) $ Ns at 0.0 "$udp($i$j$k) start"; bắt đầu phát lưu lượng
Traffic_type là loại lưu lượng được đưa vào mạng như Pareto, Poisson..
Các câu lệnh sau dùng để giới hạn thời gian của việc mô phỏng. Mô phỏng kết thúc khi thông số cài đặt đạt đến yêu cầu.
Set sc [$ns get-global-stats-collector k]; biến sc ghi nhận các sự kiện đối với mức dịch vụ là k
$sc0 set-counter-convergence DATA_SND 125000000000; mô phỏng chỉ kết thúc khi dữ liệu được phát đi đạt đến mức đã đặt ra là 125000000000
Stats stop-command "stop"; khi đã đạt đến mức u cầu thì gọi hàm “stop” để
kết thúc mơ phỏng
# Enable stats collector
$ns at [RouteLogic/ObsRoute transit_time] "$ns enable-stats"; cho phép gọi chức năng thống kê trong thời gian thực hiện mô phỏng
Hàm kết thúc các lưu lượng
Proc stop {} {
Global ns udp edge_count
$ns at-now "$udp($i$j$k) stop"; kết thúc phát burst Set now [$ns now]
$ Ns at [expr $now + 0.2] "finish"; chờ 0.2s sau cho các burst đã đến đích hết rồi mới kết thúc mô phỏng
Hàm dùng để kết thúc mô phỏng và thu thập kết quả
Proc finish {} { Global ns sc
set ip_snd [expr [$sc get-counter-value DATA_SND]]; lấy số lượng gói được phát
đi
Set ip_rcv [expr [$sc get-counter-value DATA_RCV]]; lấy số lượng gói đã nhận
được
Set ip_drop [expr $ip_snd - $ip_rcv]; tính ra số lượng gói đã bị rớt set ip_p [expr 1.0*$ip_drop/$ip_snd]; tính tốn xác suất mất gói Set file [open "results. Txt " "a"]; mở một file để ghi kết quả
Puts $file "$ip_p" ; ghi kết quả xác suất mất gói vào một file exit 0
}
Bắt đầu cho việc chạy mơ phỏng
Chương IV
THỰC HIỆN MƠ PHỎNG Q TRÌNH ĐÓNG KHỐI TRONG MẠNG CHUYỂN MẠCH KHỐI
QUANG OBS
4.1 Mục đích
Như đã trình bày trong phần lý thuyết về mạng OBS ở chương 2, mạng OBS có nhiễu vấn đề cần phải quan tâm. Các thông số mạng cần phải được chọn một cách hợp lý và các giao thức mạng phải được xây dựng sao cho tốt nhất về mặt mất mát và độ trễ.
Vì giới hạn về mặt thời gian nên luận văn đi vào nghiên cứu một phần nhỏ trong mạng OBS, đó là việc đóng khối trong mạng OBS. Việc mơ phỏng trong luận văn nhằm tìm được một giá trị hay một dải giá trị về kích thước burst cho xác suất mất gói nhỏ nhất trong mạng OBS với một topo và các thông số mạng liên quan được giới hạn trước.
4.2 Cách thức thực hiện mô phỏng và ghi nhận kết quả
Việc mô phỏng sẽ được thực hiện bằng phần mềm mô phỏng OBS4NS. Mô phỏng được thực hiện để tính tốn xác suất mất gói đối với từng kích thước burst với cùng một lưu lượng tải đưa vào. Sau đó vẽ đồ thị và chọn ra kích thước burst cho xác suất mất gói thấp nhất trong số các kích thước burst đã mơ phỏng
4.3 Giới hạn mơ phỏng của bài tốn đóng khối
Hình 4.1: Mạng NSFNET 300 300 9 12 14 11 10 8 7 6 5 4 3 13 1 2 2800 2400 2000 1200 600 1100 1600 1000 600 800 2000 900 700 500 300 800 800 500 700
Trong chương 1 đã đề cập đến các giới hạn trong mô phỏng quá trình đóng khối trong mạng OBS nhưng chưa đề cập đến tại sao lại chọn các thông số như vậy. Trong chương này nhắc lại những thơng số đó và giải thích việc chọn lựa các thông số ấy như thế nào. Sau đây là các giới hạn mô phỏng:
- Mô phỏng trên mạng NSFNET 14 node như trên hình 4.1 - Các node mạng điều là các node kết hợp
- Liên kết là song hướng, mỗi hướng có hai kênh điều khiển và hai kênh dữ liệu nghĩa là 1 liên kết quang có 8 bước sóng
- Gói đến có phân phối Poisson có tốc độ λ
- Các gói đến có kích thước cố định và bằng 1250 byte - Tốc độ truyền dẫn trên mỗi kênh truyền là 10 Gb/s - Thời gian chuyển mạch là 10 us
- Thời gian xử lý gói điều khiển là 2.5 us
- Lưu lượng được phân bố đồng nhất giữa tất cả các cặp node ngõ vào - Định tuyến dựa vào đường đi ngắn nhất giữa các cặp node
- Đóng khối dựa trên mức ngưỡng tối đa về kích thước burst - Kích thước gói điều khiển là cố định và bằng 64 bytes - Giải thuật lập lịch kênh truyền là LAUCVF
Việc chọn lựa mạng NSFNET 14 node trong mơ phỏng bởi vì mạng OBS chưa thực sự được triển khai, việc chọn lựa một mạng chuẩn được các nhà nghiên cứu đề xuất để so sánh kết quả của các nhà nghiên cứu khác nhau là một điều cần thiết. Ngoài mạng NSFNET được sử dụng khá phổ biến trên các bài báo về mạng OBS, cịn có mạng đường trục Châu Âu và mạng đường trục Nhật Bản được các nhà nghiên cứu Châu Âu và Nhật Bản sử dụng để mô phỏng.
Việc chọn số kênh dữ liệu và kênh điều khiển đều là hai; có thể nhìn thấy một điều bất hợp lý là số lượng kênh truyền được ghép trên một liên kết quang như thế là q ít so với cơng nghệ ghép kênh theo bước sóng tiên tiến. Nhưng việc chọn lựa như vậy dựa vào hai căn cứ: thứ nhất tác giả tham khảo ở [4, 6, 14], thứ hai là vì khi ta chỉ chú trọng đến vấn đề đóng khối trong mạng thì có thể kém quan tâm đến các thông số khác hơn. Vả lại việc chọn lựa số bước sóng cao hơn, với số lượng node mạng và liên kết như vậy để thu nhận được kết quả hội tụ thì việc mô phỏng yêu cầu cấu hình máy tính lớn và mất rất nhiều thời gian trong việc mô phỏng. Vì những nguyên nhân như trên tác giả xin được phép chọn lựa số lượng kênh truyền như vậy.
Việc chọn lựa lưu lượng phân phối Poisson với kích thước gói tin là cố định 1250 byte được tham khảo từ [17] và từ [4, 14]. Theo kết quả thống kê của các nhà nghiên cứu
của tổ chức này thì số lượng gói tin IP có kích thước xung quanh giá trị 1250 byte (10MB) là nhiều nhất.
Việc chọn lựa thời gian chuyển mạch là 10us được giải thích như sau: công nghệ chuyển mạch tồn quang có thể dựa trên hai cơng nghệ là cơng nghệ chuyển mạch gương