tcp congestion control
DESCRIPTION
TCP Congestion ControlsTRANSCRIPT
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Lời nói đầu
Cùng với sự phát triển của Internet thì cơ sở hạ tầng truyền dẫn thông tin ở Việt
Nam đang ngày càng được mở rộng. Sự phát triển các hệ thống truyền dẫn này đòi hỏi
cao về việc bảo trì và sửa chữa đường truyền do thiếu các thiết bị chuyên dụng thực hiện
việc kiểm tra kết nối và chất lượng đường truyền. Việc sử dụng hệ thống máy tính – máy
tính (Personal Computer – PC) có thể đáp ứng được điều này nhưng do chi phí xây dựng
hệ thống và bảo trì lớn, tính linh hoạt kém dẫn đến việc triển khai hệ thống không có
hiệu quả kinh tế.
Đề tài của chúng em là “hệ thống đo đạc các thông số mạng trên đường truyền
băng hẹp điều khiển qua Internet” nhằm mục đích khắc phục những ý trên. Dưới sự dẫn
dắt và chỉ bảo phương hướng thực hiện công việc một cách tận tình của thầy hướng dẫn,
chúng em đã tiến hành nghiên cứu phát triển xây dựng kịch bản, xây dựng chương trình
đo các thông số và mở rộng việc điều khiển qua Internet.
Chúng em xin được gửi lời cảm ơn sâu sắc đến TS. Phạm Văn Bình – Trưởng
bộ môn mạch và xử lý tín hiệu – Viện Điện Tử Viễn Thông – Đại Học Bách Khoa Hà
Nội. Trong quá trình làm đồ án, chúng em đã được TS. Phạm Văn Bình tận tình giúp
đỡ và quan tâm, cũng như cung cấp các tài liệu quý để chúng em hoàn thành công việc
được giao.
Chúng em cũng xin gửi lời cảm ơn đến tập thể giảng viên Viện Điện Tử Viễn
Thông – ĐH Bách Khoa Hà Nội đã giảng dạy và trang bị cho chúng em những kiến thức
nền tảng trong suốt bốn năm học tập trong Khoa.
1
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Tóm tắt đồ án
Ngày nay cơ sở hạ tầng truyền dẫn thông tin ở Việt Nam đang ngày càng được
mở rộng. Sự phát triển các hệ thống truyền dẫn này đòi hỏi cao về việc bảo trì và sửa
chữa đường truyền do thiếu các thiết bị chuyên dụng thực hiện việc kiểm tra kết nối và
chất lượng đường truyền. Việc sử dụng hệ thống máy tính – máy tính (Personal
Computer – PC) có thể đáp ứng được điều này nhưng không có ý nghĩa về hiệu quả kinh
tế và xây dựng hệ thống. Trên cơ sở đó nhóm chúng em đã nghiên cứu và phát triển một
hệ thống đo mới khắc phục được những ý trên.
Hệ thống đo đạc các thông số mạng cho modem – mạng LAN trên đường truyền
băng hẹp điều khiển qua Internet là một hệ thống đo mà trong đó vai trò các nút mạng là
máy tính được thay thế bởi thiết bị chuyên dụng là STR9-comstick (Terminal Comstick
– TC). Các thông số lớp mạng cần đo bao gồm Trễ (RTT), Thông lượng và tỷ lệ mất gói
(PLR). Người dùng có thể truy cập vào máy đo (Measurement Computer – MC) qua
Internet với giao diện Web để gửi các thông số điều khiển tiến trình đo và nhận lại kết
quả đo.
Kết quả nghiên cứu:
_Xây dựng được kịch bản đo Trễ, Thông lượng và tỷ lệ mất gói dựa trên giao
thức TCP/IP.
_Xây dựng được chương trình đo phía MC và chương trình nhúng phía TC.
_Điều khiển qua Internet phục vụ việc đo tự động, quản lý từ xa.
2
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Qua kiểm tra đánh giá, hệ thống đo tạo ra ở trên thực hiện tốt việc kiểm tra kết
nối và so sánh chất lượng các đường truyền băng hẹp. Qua đó thể hiện được tiềm năng
phát triển và mở rộng của đề tài khi thực hiện trên các đường truyền băng rộng.
3
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Summary
Today the infracstructure of information transmission in Vietnam has been more
and more expanded. The development of transmission systems require high maintenance
and repairing of transmission lines due to lack of specialized equipment to inspect the
connection and transmission quality. The use of PC – PC (Personal Computer – PC)
system may meet that condition but no sense of economic efficiency and building
systems. On that basis we group have studied and developed a new mesurement system
to overcome the above in mind.
Measurement system parameters on transmit narrow-band network control via
Internet is a measurement system in which the role of the PC-nodes is replaced by a
specialized equipment which is STR9-comstick (Terminal Comstick – TC). The
measured parameters include Round Trip Time – RTT, Throughput and Packet Loss
Rate - PLR. Users can access the meter (Measurement Computer – MC) over the Internet
with a web interface to send the parameters which control the process and receive
results.
Research results:
_Built up scripts which measures RTT, Throughput and PLR, based on TCP/IP.
_Built up programs for MC and embedded programs for TC.
_Internet control for remote processing and auto-measurement.
Through the evaluation, the created measurement system can afford effectively in
connection checking and quality comparison of narrow-band transmissions. Thereby
showing the potencial development and expansion of this project on the broadband line.
4
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Mục lục
Lời nói đầu..............................................................................................................1
Tóm tắt đồ án..........................................................................................................2
Summary.................................................................................................................4
Mục lục...................................................................................................................5
Danh sách các hình vẽ.............................................................................................6
Danh sách các bảng biểu.........................................................................................9
Danh sách các từ viết tắt.......................................................................................10
Mở đầu..................................................................................................................11
Tổng quan hệ thống...............................................................................................13
Xây dựng kịch bản hệ thống.................................................................................18
Xây dựng chương trình.........................................................................................37
Kiểm tra – đánh giá hệ thống................................................................................78
Tài liệu tham khảo.................................................................................................86
5
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Danh sách các hình vẽ
Hình 1.1 Hệ thống đo xây dựng trên mạng LAN thông thường...........................14
Hình 1.2 Liên hệ khối đo – khối điều khiển..........................................................15
Hình 1.3 Mô hình hệ thống (trên môi trường PLC)..............................................16
Hình 2.4 Cấu trúc IP header..................................................................................18
Hình 2.5 Cấu trúc ICMP header............................................................................20
Hình 2.6 Echo request...........................................................................................21
Hình 2.7 Echo reply..............................................................................................21
Hình 2.8 Cấu trúc UDP header..............................................................................22
Hình 2.9 Cấu trúc TCP header..............................................................................23
Hình 2.10 Chế độ “ngưng-và-truyền” (Stop-and-go)............................................25
Hình 2.11 Chế độ “cửa sổ di động” (Sliding window).........................................25
Hình 2.12 Điều khiển lưu lượng TCP...................................................................26
Hình 2.13 Mô hình Client – Server.......................................................................28
Hình 2.14 Quá trình thiết lập và kết thúc phiên TCP............................................29
Hình 2.15 Công thức tính trễ RTT........................................................................30
Hình 2.16 Kịch bản đo trễ RTT............................................................................31
Hình 2.17 Kịch bản đo thông lượng......................................................................31
Hình 2.18 Công thức tính thông lượng.................................................................32
Hình 2.19 STR9-comstick.....................................................................................34
Hình 2.20 Các thông số chính của STR9-comstick...............................................35
Hình 3.21 Giải thuật đo trễ RTT...........................................................................37
6
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.22 Giải thuật đo thông lượng....................................................................39
Hình 3.23 Quá trình đo thông lượng hướng lên....................................................40
Hình 3.24 Quá trình đo thông lượng hướng xuống...............................................41
Hình 3.25 Giao diện chương trình MC Tool.........................................................42
Hình 3.26 Giao diện chọn kiểu đo........................................................................43
Hình 3.27 Khởi tạo chương trình..........................................................................45
Hình 3.28 Bộ đếm thời gian..................................................................................46
Hình 3.29 Thời gian truyền...................................................................................47
Hình 3.30 Cấu trúc thư viện STR9........................................................................50
Hình 3.31 Nội dung thư viện.................................................................................51
Hình 3.32 Kiến trúc thư viện phần mềm...............................................................52
Hình 3.33 Các thiết lập uIP...................................................................................58
Hình 3.34 Vector ngoại lệ.....................................................................................62
Hình 3.35 Cấu hình ngăn xếp................................................................................63
Hình 3.36 User stack.............................................................................................64
Hình 3.37 Kích thước ngăn xếp............................................................................65
Hình 3.38 ARM Procedure Call Standard (APCS)...............................................65
Hình 3.39 Giao diện HiTOP Debugger.................................................................68
Hình 3.40 Các cửa sổ thao tác HiTOP..................................................................69
Hình 3.41 Sơ đồ khối chương trình nhúng............................................................71
Hình 3.42 Hàm khởi tạo sơ lược...........................................................................71
Hình 3.43 Hàm Main sơ lược................................................................................72
Hình 3.44 Hàm uip sơ lược...................................................................................73
Hình 3.45 Hàm ICMP sơ lược..............................................................................75
7
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.46 Hàm TCP sơ lược.................................................................................77
Hình 4.47 Cấu trúc mạng PLC..............................................................................78
Hình 4.48 Cấu trúc mạng PLC trong nhà..............................................................79
Hình 4.49 PLC sử dụng trạm lặp...........................................................................80
Hình 4.50 Thuê bao PLC kết nối trực tiếp............................................................80
Hình 4.51 Thuê bao PLC kết nối gián tiếp............................................................81
Hình 4.52 Mô tả lệnh Ping qua wireshark ............................................................82
Hình 4.53 Quá trình bắt tay 3 bước.......................................................................83
Hình 4.54 Khảo sát thông lượng mạng Ethernet...................................................84
Hình 4.55 Khảo sát thông lượng đường điện........................................................85
8
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Danh sách các bảng biểu
Bảng 2.1 Cấu trúc gói tin sử dụng.........................................................................33
Bảng 2.2 Cấu trúc dữ liệu các gói tin....................................................................33
Bảng 3.3 Cấu trúc gói tin đo thông lượng.............................................................40
Bảng 3.4 Các module chính của chương trình......................................................47
Bảng 3.5 Các chức năng hỗ trợ bởi thư viện STR9..............................................49
Bảng 3.6 Cấu trúc thanh ghi bộ nhớ......................................................................54
Bảng 3.7 FMI_BootBankSize...............................................................................54
Bảng 3.8 FMI_NonBootBankSize........................................................................55
9
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Danh sách các từ viết tắt
10
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Mở đầu
Yêu cầu đặt ra của hệ thống đo chủ yếu nằm ở việc thay thế máy tính bằng STR9-
comstick của hãng ST. Lý do sử dụng thiết bị này bởi vì giá thành chấp nhận được
(€40),nhỏ gọn hỗ trợ kết nối Ethernet và thư viện MicroIP đáp ứng được yêu cầu làm nút
mạng.
Dựa trên việc nghiên cứu ứng dụng của thiết bị và lý thuyết ta xây dựng kịch bản
đo Trễ, Thông lượng. Trê (đây đu la thơi gian trê tron vong) la đai lương đo băng mili-
giây (ms) va chuyên dung đê kiêm tra kêt nôi băng cach môt bên gưi goi tin ICMP va
lăng nghe bên kia tra lơi. Thông lương la đai lương đo băng Mbit/s thê hiên lương dư
liêu gưi thanh công trên đương truyên trong môt đơn vi thơi gian.
Sau khi có kịch bản, công việc tiếp theo là hiện thực hóa kịch bản đó thành
chương trình đo. Cụ thể là hai phần chính được thực hiện song song: lập trình cho MC
và TC đảm nhận vai trò điểm đầu và điểm cuối của kết nối, trong đó MC là máy đo và
xuất phát điểm của các tiến trình đo. Đê đap ưng đươc kha năng tuy biên, chương trinh
đo phia MC phai co cơ chê đoc cac thông sô yêu câu điêu khiên qua trinh đo va cơ chê
ghi lai kêt qua đo đươc phuc vu cho viêc kiêm tra, đanh gia va nghiên cưu. Kịch bản đo
và chương trình đo là nội dung chính của đề tài này.
Hoàn thành phần đo, đề tài được mở rộng về khả năng tùy biến và phát triển tính
linh hoạt bằng cách thiết lập cơ chế điều khiển từ xa, cụ thể hiện tại là qua Internet. Phần
mở rộng này chia làm hai phần: truyền yêu cầu điều khiển quá trình đo theo hướng
người dùng (User) => Web server => MC và gửi trả lại kết quả đo được theo hướng MC
=> Web server => người dùng. Kết quả đo được khi gửi trả lại Web server sẽ được lưu
11
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
vào cơ sở dữ liệu để đáp ứng việc tìm kiếm và tra cứu sau này. Người dùng có thể tiếp
cận dễ dàng kết quả đo qua giao diện Web hiển thị.
Trên cơ sở đó, đồ án được trình bày gồm bốn chương:
Chương 1: chương này trình bày phần tổng quan của hệ thống đo, cho ta một cái
nhìn khái quát nhất bao gồm mô hình hệ thống, phương án xây dựng hệ thống dựa trên
các thành phần được triển khai ở mô hình.
Chương 2: chương này trình bày chi tiết về cơ sở lý thuyết để xây dựng hệ thống.
Nội dung cụ thể bao gồm việc tìm hiểu bộ giao thức TCP/IP, các định nghĩa thông số
mạng, truyền và nhận dữ liệu qua socket, chức năng và cấu trúc hàm của STR9-comstick
và xây dựng kịch bản đo phù hợp. Trọng tâm chính của chương là kịch bản đo và làm
quen với STR9-comstick, cho ta một cái nhìn cụ thể về những việc cần phải làm để hoàn
thành kịch bản đo.
Chương 3: chương này trình bày chi tiết về cách xây dựng chương trình đo dựa
trên kịch bản đã định trước. Nội dung cụ thể bao gồm việc ánh xạ kịch bản vào giải
thuật, định nghĩa các gói tin dữ liệu và điều khiển, xây dựng chương trình đo trên MC,
lập trình nhúng cho TC trên cơ sở lý thuyết đã nghiên cứu ở chương 2. Trọng tâm chính
của chương là chương trình đo và lập trình trên TC phải được xây dựng đảm bảo thực
hiện đúng kịch bản đo.
Chương 4: chương này trình bày sự kiểm tra, đánh giá các kết quả của hệ thống
đo đã được xây dựng ở chương 3, mở rộng với phần điều khiển qua Internet. Nội dung
chương thể hiện toàn diện các kết quả đã đạt được trong quá trình nghiên cứu thực hiện
hoàn thành đồ án.
12
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Tổng quan hệ thống
1.1 Giới thiệu
Một hệ thống đo các thông số mạng đơn giản trước hết bao gồm một máy đo
(MC) đóng vai trò điểm đầu và một thiết bị đóng vai trò điểm cuối (Terminal Device –
TD) của đường truyền. MC thực hiện các kịch bản đo đã đặt trước trên đường truyền tới
TD, kết quả thu được là các thông số đặc trưng của đường truyền MC – TD đó. Các
thông số mạng chính được quan tâm là trễ RTT (đo bằng ms) và thông lượng (đo bằng
Mbit/s).
Trong các hệ thống đo thông thường, tốc độ phụ thuộc vào modem – đường
truyền. Ở đây máy tính đóng vai trò lớp trên giao tiếp TCP, MC và TD được đảm nhận
bởi các PC và các hệ thống đo này phải dùng các mạng LAN văn phòng to, cồng kềnh
để phục vụ cho việc xây dựng mạng lưới đường truyền.
13
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 1.1 Hệ thống đo xây dựng trên mạng LAN thông thường
Trên hình vẽ mô tả một hệ thống đo với các nút mạng là PC. Chương trình đo
được thiết lập trên MC và các TD thực hiện kịch bản đo định sẵn và thu thập kết quả đo
đặc trưng của đường truyền Ethernet giữa các nút mạng. Như nhận định ở trên, mô hình
này không có hiệu quả kinh tế do một số nguyên nhân chính cụ thể như sau:
_Các nút mạng là PC dẫn đến việc xây dựng hệ thống phần cứng và các phần
mềm đi kèm hệ thống tốn chi phí lớn.
_Chi phí bảo trì, sửa chữa hệ thống nhiều.
_Không thích hợp cho việc mở rộng hệ thống.
_Sử dụng và cài đặt phức tạp không tập trung.
Dựa trên cơ sở trên, nhóm chúng em đã nghiên cứu và xin đưa ra mô hình hệ
thống mới, trong đó vai trò các TD được thay bằng STR9-comstick.
14
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.2 Mô hình hệ thống
Trước hết ta đưa ra sơ đồ khối của hệ thống đo. Hệ thống đơn giản bao gồm hai
khối đó là khối đo và khối điều khiển qua Internet.
Hình 1.2 Liên hệ khối đo – khối điều khiển
Đặc điểm chính của mô hình hệ thống đo đó là các PC được thay bằng STR9-
comstick. Khối chính của hệ thống đo sẽ là phần bao gồm MC, TC và đường truyền dẫn
nối chúng. Khối mở rộng là phần nối với Internet để phục vụ cho mục đích điều khiển từ
xa bao gồm máy chủ web để tương tác với người dùng. Tương tác ở đây bao gồm việc
điều khiển quá trình đo qua các thông số thiết lập kịch bản và việc nhận lại kết quả đo
được từ MC.
Từ cơ sở sơ đồ khối như trên, mô hình đưa ra là một hệ thống đơn giản bao gồm
MC và các TC được kết nối với nhau thông qua đường truyền dây tải điện (Power Line
Communication – PLC). Sở dĩ chúng em chọn đường PLC làm môi trường để kiểm tra
và xây dựng hệ thống do đây là một môi trường mới, chưa có nhiều công cụ đánh giá
kiểm tra chất lượng được phát triển. Nó đáp ứng được yêu cầu băng hẹp mà hệ thống
yêu cầu do tốc độ của STR9-comstick. Để thực hiện mô hình với đường PLC, hệ thống
cần thêm các modem đường điện (PLC modem) làm nhiệm vụ điều chế và giải điều chế
15
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
tín hiệu từ đường Ethernet sang đường PLC và ngược lại. Các kết quả hệ thống thu được
trong quá trình kiểm tra đánh giá chủ yếu là kết quả dựa trên môi trường này.
Hình 1.3 Mô hình hệ thống (trên môi trường PLC)
Máy đo MC được nối với mạng cần đo qua các modem PLC. Các nút mạng được
thiết lập bằng các thiết bị STR9-comstick. Tiến trình đo sẽ được thực hiện giữa MC đến
TC và ngược lại, kết quả được lưu tại MC. Các thông số đo được bao gồm Trễ RTT và
Thông lượng. Yêu cầu hệ thống đòi hòi chương trình đo trên MC và chương trình nhúng
trên TC thực hiện đúng các kịch bản đo.
MC được nối với Internet qua ADSL Router. Người dùng có thể truy cập qua
Internet để gửi các thông số điều khiển quá trình đo và nhận lại kết quả đo được từ MC.
Máy chủ web làm nhiệm vụ tương tác người dùng và lưu kết quả đo được từ MC gửi về
vào cơ sở dữ liệu để phục vụ mục đích tra cứu sau này.
Với mô hình hệ thống thực tế được đưa ra như vậy, việc thực hiện đồ án đòi hỏi
phân chia các khối và công việc cần làm một cách khoa học, hệ thống. Nhóm em thực
hiện dựa trên phương án cụ thể sẽ được trình bày ở phần dưới đây.
16
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.3 Nội dung phương án
Để thực hiện mô hình hệ thống như ở trên, phương án được đưa ra trong đề tài
này gồm 2 phần chính:
_Xây dựng kịch bản hệ thống: bao gồm việc nghiên cứu bộ giao thức TCP/IP,
truyền dẫn dữ liệu bằng socket, lý thuyết thông lượng, trễ. Xây dựng kịch bản đo hai
thông số trên, kịch bản điều khiển qua Internet. Thư viện microIP của STR9-comstick.
_Xây dựng hệ thống thực tế: bao gồm xây dựng chương trình đo trên MC với
giao diện GUI (sử dụng Visual Studio C#) và chương trình nhúng vào TC (Sử dụng
HiTOP Debugger). Thiết lập cơ chế điều khiển qua Internet bằng máy chủ web, tương
tác các khối truyền dẫn dữ liệu bằng socket được tích hợp trên chương trình đo.
Chương tiếp theo chúng em xin trình bày các nội dung cụ thể trong quá trình
nghiên cứu và thực hiện đồ án.
17
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Xây dựng kịch bản hệ thống
1.4 Cơ sở lý thuyết – bộ giao thức TCP/IP
1.4.1 IP
Giao thức IP (Internet Protocol - Giao thức Liên mạng) là một giao thức hướng
dữ liệu được sử dụng bởi các máy chủ nguồn và đích để truyền dữ liệu trong một liên
mạng chuyển mạch gói.
Hình 2.4 Cấu trúc IP header
VERS (4 bits): Chỉ ra phiên bản của trình nghi thức IP đang được dùng là Ipv4.
IP Header Length (HLEN) (4 bits): Chỉ ra chiều dài của header.
Type Of Services (TOS)(8 bits) : Chỉ ra cách thức xử lý data như thế nào.
18
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Total Length (16 bits): Chỉ ra chiều dài của toàn bộ gói tính theo byte, bao gồm dữ liệu
và header.
Identification (16 bits): Chỉ mã số của 1 IP datagram, giúp bên nhận có thể ghép các
mảnh của 1IP datagram lại với nhau vì IP datagram phân thành các mảnh, và các mảnh
thuộc cùng 1 IP datagram sẽ có cùng Identification.
Flag (3 bits): Được sử dụng để kiểm soát hay xác định các mảnh.
Offset (13 bits): Báo bên nhận vị trí offset của các mảnh so với gói IP datagram gốc để
có thể ghép lại thành IP datagram gốc.
Time To Live (TTL) (8 bits): Chỉ ra số bước nhảy (hop) mà một gói có thể đi qua. Con
số này sẽ giảm đi 1 khi gói tin đi qua 1 router. Khi router nào nhận gói tin thấy TTL đạt
tới 0 gói này sẽ bị loại. Đây là giải pháp nhằm ngăn chặn tình trạng lặp vòng vô hạn của
gói tin trên mạng.
Protocol (8 bit): Chỉ ra giao thức nào của tầng trên (tầng Vận chuyển) sẽ nhận phần
data sau khi công đoạn xử lí IP diagram ở tầng Network hoàn tất hoặc chỉ ra giao thức
nào của tầng trên gởi segment xuống cho tầng Network đóng gói thành IP Diagram, mỗi
giao thức có 1 mã.
_06 : TCP
_17 : UDP
_01 : ICMP
_08 : EGP
Header CheckSum (16 bits): Giúp bảo đảm sự toàn vẹn của IP Header.
Source Address (32 bits): Chỉ ra địa chỉ của thiết bị truyền IP diagram.
Destination Address(32 bits ): Chỉ ra địa chỉ IP của thiệt bị sẽ nhận IP diagram.
19
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Dữ liệu trong một liên mạng IP được gửi theo các khối được gọi là các gói
(packet hoặc datagram). Cụ thể, IP không cần thiết lập các đường truyền trước khi một
máy chủ gửi các gói tin cho một máy khác mà trước đó nó chưa từng liên lạc với.
Giao thức IP cung cấp một dịch vụ gửi dữ liệu không đảm bảo (còn gọi là cố
gắng cao nhất), nghĩa là nó hầu như không đảm bảo gì về gói dữ liệu. Gói dữ liệu có thể
đến nơi mà không còn nguyên vẹn, nó có thể đến không theo thứ tự (so với các gói khác
được gửi giữa hai máy nguồn và đích đó), nó có thể bị trùng lặp hoặc bị mất hoàn toàn.
1.4.2 ICMP
Giao thức ICMP (Internetwork Control Message Protocol) cho phép việc thử
nghiệm và khắc phục các sự cố của giao thức TCP/IP. ICMP bao gồm nhiều loại thông
điệp khác nhau.
Hình 2.5 Cấu trúc ICMP header
Type(8 bits): Chỉ kiểu cho ICMP messenger.
Code(8 bits): Bổ sung thêm thông tin cho Type.
Checksum (16 bits): Kiểm tra lỗi dữ liệu. Tính từ ICMP header + dữ liệu, với giá trị 0
cho trường này.
20
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Các gói tin Ping, cũng được biết đến như các gói tin ICMP echo request, và
ICMP echo reply. Echo request là một tin nhắn ICMP mà dữ liệu của nó dự kiến nhận lại
trong tin echo reply . Host và router phải đáp lại tất cả các echo request bằng một echo
reply chứa cả thông tin chính xác đã nhận trong tin echo request. Echo reply là một tin
ICMP phát ra để đáp lại tin echo request và là bắt buộc với tất cả host và router.
Hình 2.6 Echo request
Hình 2.7 Echo reply
Dữ liệu nhận được trong Echo request phải được bao gồm toàn bộ trong Echo
reply.
1.4.3 UDP
Giao thức UDP (User Datagram Protocol) cung cấp một giao diện đơn giản giữa
tầng mạng bên dưới và tầng ứng dụng bên trên.
UDP không đảm bảo tầng phía trên thông điệp đã gửi đi.
Do thiếu tính tin cậy, các ứng dụng UDP nói chung phải chấp nhận mất mát, lỗi
hoặc trùng dữ liệu. Một số ứng dụng như TFTP có nhu cầu phải thêm những kỹ thuật
làm tin cậy cơ bản vào tầng ứng dụng. Hầu hết các ứng dụng UDP không cần những kỹ
thuật làm tin cậy này và đôi khi nó bị bỏ đi. Streaming media, game trực tuyến và voice
over IP (VoIP) là những thí dụ cho các ứng dụng thường dùng UDP. Nếu một ứng dụng
21
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
đòi hỏi mức độ cao hơn về tính tin cậy, những giao thức như TCP hoặc mã erasure có
thể dùng thay.
Hình 2.8 Cấu trúc UDP header
Source port (16 bits): Xác định port cả người gửi thông tin và có ý nghĩa nếu muốn
người nhận phản hồi. Nếu ko dùng đặt nó bằng 0.
Destination(16 bits): Xác nhận port nhận (trường này bắt buộc).
Length(16 bits): Xác định toàn bộ chiều dài toàn datagram: header + data.
Checksum(16 bits): Không bắt buộc kiểm tra lỗi phần header data.
1.4.4 TCP
Giao thức TCP (Transmission Control Protocol – giao thức điều khiển giao vận)
cung cấp một số lượng đáng kể dịch vụ cho lớp IP dưới và lớp ứng dụng ở trên.
Cung cấp một kết nối định hướng cho phép một ứng dụng đảm bảo gói dữ liệu đã
được nhận toàn bộ. Trong vai trò này, TCP hoạt động như một tin nhắn xác nhận giao
thức cung cấp thông tin đáng tin cậy. Nếu gói dữ liệu bị hỏng hoặc mất TCP thường xử
lý phát lại hơn là các ứng dụng phía trên.
Kết nối định hướng (connection-oriented) nghĩa là hai ứng dụng sử dụng TCP
phải thiết lập một kết nối TCP cùng nhau trước khi cùng trao đổi dữ liệu.
TCP header gồm 10 trường bắt buộc và 1 trường tùy biến.
22
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 2.9 Cấu trúc TCP header
Source port (16 bits): Xác định port gửi .
Destination (16 bits): Xác định port nhận.
Sequence number (32 bits): có 2 nhiệm vụ:
_Nếu SYN flag bật thì nó là số thứ tự ban đầu và byte đầu tiên được gửi có số thứ tự +1.
_Nếu SYN flag ko có giá trị thì đây là số thứ tự byte đầu tiên.
ACK number (32bits): Nếu ACK flag thiết lập thì giá trị của trường là số thứ tự gói tin
tiếp theo mà bên nhận cần.
Data offset (4 bits): Quy định độ dài của phần header (32 –bit word) kích thước header
nhỏ nhất 5 words(160 bits) max là 15 words.
Reserveed (4bits): Dự trữ cho sử dụng về sau và được thiết lập bằng 0.
Flags(8 bits): chứa 8 flags mỗi flag 1 bit :
_CWR: Congestion window reduced được thiết lập bởi các máy chủ gửi để cho biết nó
đã nhận được 1 phân đoạn TCP với flag ECE và có phản ứng trong cơ chế điều khiển tắc
nghẽn.
_ECE: ECN-echo indicates.
23
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
_URG: Chỉ ra field urgent pointer.
_ACK: Chỉ ra trường ACK. Tất cả gói tin sau khi gởi SYN ban đầu được gửi đi bởi
client cần phải có flag này được thiết lập.
_PSH: Hàm PUSH. Yêu cầu đẩy bộ đệm dữ liệu cho ứng dụng nhận
_RST: Thiết lập lại đường truyền.
_SYN: Đồng bộ lại số thứ tự.
_FIN : Không thêm dữ liệu từ người gửi (kết thúc).
Window size(16 bits): Xác định số byte mà người nhận sẵn sàng nhận.
Checksum (16 bits): Trường này được sử dụng để kiểm tra lỗi của header và dữ liệu.
Urgent pointer (16 bits): Chỉ có giá trị nếu URG flag được thiết lập.Chế độ TCP
urgent là một cách để người gửi truyền dữ liệu đến thiết bị cuối.
Option: Đây là trường tùy chọn nếu có thì độ dài bội số của 32 bits.
1.4.5 Các cơ chế quan trọng của TCP
(a) Flow control (điều khiển lưu lượng)
Chúng ta cần phân biệt khái niệm này với khống chế tắc nghẽn (congestion
control) - điều khiển luồng dữ liệu khi tắc nghẽn đã xảy ra. Điều khiển lưu lượng có vai
trò quan trọng, vì tình trạng một máy tính gửi thông tin tới một máy tính khác, với một
tốc độ cao hơn tốc độ mà máy tính đích có thể nhận và xử lý có thể xảy ra. Tình huống
này có thể xảy ra nếu các máy tính nhận phải chịu tải giao thông về dữ liệu cao hơn máy
tính nhận, hoặc nếu máy tính nhận có năng lực xử lý kém hơn máy tính gửi.
Điều khiển lưu lượng truyền có thể được áp dụng biệt lập trên mỗi chiều mà tín
hiệu được truyền thông, cho phép tần số truyền tin trên mỗi chiều khác nhau. Phương
24
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
pháp điều khiển lưu lượng truyền có hai cách, hoặc là dùng chế độ "ngưng-và-truyền"
(stop-and-go) hoặc dùng hình thức cửa sổ di động (sliding window).
Hình 2.10 Chế độ “ngưng-và-truyền” (Stop-and-go)
Hình 2.11 Chế độ “cửa sổ di động” (Sliding window)
Trong mỗi một TCP segment, bên nhận quy định lượng dữ liệu sẵn sàng nhận
trong bộ đệm trường receiver window . Bên gửi chỉ có thể gửi dữ liệu trước khi chờ 1 tin
ACK cập nhật về window size từ máy đích.
25
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Khi host gửi về window size bằng 0 thì bên gửi phải ngừng gửi và bắt đầu đếm
thời gian tồn tại (persist timer). người gửi không thể gửi nhiều dữ liệu hơn cho đến khi
nhận được một bản cập nhật cửa sổ kích thước mới từ người nhận. Khi bộ hẹn giờ vẫn
tồn tại hết hạn, người gửi TCP cố gắng phục hồi bằng cách gửi một gói nhỏ để thu các
phản ứng bằng cách gửi một xác nhận có chứa các kích thước cửa sổ mới.
Dữ liệu nhận được từ mạng được lưu trữ trong bộ đệm. Cửa sổ thông báo được
sử dụng để thông báo cho máy chủ từ xa của các kích thước cửa sổ hiện hành. Nếu các
ứng dụng ở máy đích không thể xử lý dữ liệu đủ nhanh, kích thước cửa sổ sẽ giảm
xuống bằng không và các máy chủ sẽ ngừng gửi dữ liệu. Sau khi các ứng dụng máy đích
đã xử lý một số dữ liệu xếp hàng, tăng kích thước cửa sổ, và các máy chủ từ xa bắt đầu
truyền lại.
Hình 2.12 Điều khiển lưu lượng TCP
(b) Congestion control (điều khiển tắc nghẽn)
TCP sử dụng một số cơ chế nhằm đạt được hiệu suất cao và ngăn ngừa khả năng
nghẽn mạng. Các cơ chế này bao gồm : thuật toán slow-start, thuật toán tránh nghẽn
mạng (congestion avoidance), thuật toán truyền lại và phục hồi nhanh.
_Thuật toán Slow-start là một trong những thuật toán mà TCP sử dụng để kiểm
soát tắc nghẽn trong mạng. Slow-start đầu hoạt động bằng cách tăng cửa sổ TCP
26
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
congestion mỗi khi nhận được nhận được ACK segment.Điều này tiếp tục cho tới khi
không nhận được một ACK thông báo về các segment đã gửi . Nếu một sự kiện mất mát
xảy ra, TCP giả định rằng đó là do sự tắc nghẽn mạng và tiến hành các bước để giảm tải
được cung cấp trên mạng.
_Thuật toán tránh nghẽn mạng (congestion avoidance).
_Thuật toán truyền lại (fast retransmit): người gửi TCP sử dụng một bộ đếm thời
gian để nhận ra các phân đoạn bị mất. Nếu 1 ACK không nhận được cho một phân đoạn
cụ thể trong một thời gian nhất định (một chức năng ước tính thời gian trễ khứ), người
gửi sẽ cho rằng phân đoạn đã bị mất trong mạng, và sẽ truyền lại các phân đoạn.The fast
retransmit hoạt động như sau: nếu một người gửi TCP nhận được 3 bản sao ACK có
cùng 1 ACK number. Người gửi có thể là tin rằng các phân đoạn có cao hơn kế tiếp số
thứ tự đã bị bỏ (drop), và sẽ không đến trong trật tự. Người gửi sau đó sẽ truyền lại các
gói tin đã được coi là đã giảm trước khi chờ đợi thời gian chờ của nó.
_Thuật toán phục hồi nhanh (fast recovery).
27
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.5 Mô hình Client – Server
1.5.1 Mô hình
Hình 2.13 Mô hình Client – Server
(a) Phía server
Tạo socket : gồm khai báo domain, type, protocol.
Thông thường domain là AF_INET.
TYPE : kiểu kết nối virtual circuit nhận truyền đáng tin cậy.
PROTOCOL: giao thức truyền tải TCP.
28
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
bind : gán port , ip cho socket .
listen : quy định 1 số lượng cụ thể chờ xếp hang cho serve socket .
accept : server chấp nhận 1 yêu cầu kết nối từ client. Tạo socket mới truyền và nhận dữ
liệu.
(b) Phía client
Tạo socket
connect : kết nối đến server. Quá trình kết nối theo kiểu bắt tay 3 bước.
Kết nối thành công: Bắt đầu quá trình truyền nhận dữ liệu giữa Client – Server.
1.5.2 Kết nối bắt tay 3 bước
Hình 2.14 Quá trình thiết lập và kết thúc phiên TCP
Để thiết lập kết nối TCP sử dụng bắt tay 3 bước (3 ways handshake). Trước khi
client thử một kết nối đến server , server phải mở port cho kết nối đó. Ba bước diễn ra
như sau:
29
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
_Client yêu cầu mở cổng dịch vụ bằng cách gửi một gói tin SYN đến server,
trong gói tin này tham số sequence number gán giá trị ngẫu nhiên X.
_Server hồi đáp bằng cách gửi lại client gói tin SYN-ACK, trong gói tin này
ACK number gán X+1, sequence number gán Y.
_Để hoàn tất bắt tay 3 bước, client gửi tới server gói tin tin ACK, trong gói tin
này tham số sequence number gán X+1, ACK number gán Y+1.
Như vậy sau khi có kết nối ta đã có đủ thông tin: Từ IP nào, port nào , giao thức
vận chuyển (TCP/UDP) đến địa chỉ IP và port bên kia để bắt đầu việc truyền và nhận dữ
liệu.
1.6 Kịch bản đo
1.6.1 Đo trễ RTT
Trễ được xác định bởi thời gian bắt đầu gói tin Ping được gửi từ MC đến TC và
thời gian kết thúc gói Pong được gửi từ TC trả về MC.
Hình 2.15 Công thức tính trễ RTT
Trên đường truyền khảo sát là đường truyền Powerline, khoảng thời gian trễ giữa
MC – Modem và Modem – TC là rất nhỏ và có thể bỏ qua so với khoảng thời gian trễ
giữa Modem – Modem (đoạn đường truyền chính cần đo). Vì thế kết quả nhận được có
thể được coi là trễ trên đường truyền Powerline.
Chú ý phân biệt Ping và Pong qua trường Type và Code của gói tin ICMP.
30
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 2.16 Kịch bản đo trễ RTT
1.6.2 Đo thông lượng
Hình 2.17 Kịch bản đo thông lượng
31
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Để đo thông lượng, ta định nghĩa thông lượng là lượng dữ liệu gửi thành công
trên đường truyền trong một đơn vị thời gian.
Quá trình đo được thực hiện theo trình tự sau:
_Thực hiện kết nối giữa MC – TC theo mô hình Client – Server. Đặt MC và TC
vào trạng thái sẵn sàng cho quá trình truyền và gửi dữ liệu.
_Bắt đầu đo, MC gửi gói tin Request đến TC để thông báo bắt đầu quá trình đo.
TC nhận và gửi trả lại MC gói Request_ACK để báo hiệu TC đã sẵn sàng nhận dữ liệu.
_Nhận được gói Request_ACK, MC thực hiện truyền một lượng lớn dữ liệu
được phân thành nhiều gói Data có kích thước định sẵn cho TC. Trong quá trình này TC
nhận và cập nhật bộ đếm dữ liệu đã nhận.
_Khi lượng dữ liệu truyền đã đủ, MC gửi gói Fin để thông báo kết thúc quá trình
truyền dữ liệu. TC nhận và gửi trả lại MC gói Fin_ACK để báo hiệu TC dã kết thúc
trạng thái nhận dữ liệu và chuẩn bị gửi kết quả nhận được cho MC.
_TC tạo và gửi gói Result chứa thông tin lượng dữ liệu đã nhận cho MC. MC lấy
thông tin này để tổng hợp ra thông lượng đo được theo công thức:
Hình 2.18 Công thức tính thông lượng
1.6.3 Cấu trúc gói tin
Để thực hiện việc đo, ta phải định nghĩa các gói tin được sử dụng trong quá trình
truyền dữ liệu để đảm bảo thực hiện đúng kịch bản đo. Cụ thể là các gói Request, Data,
Fin, Result và ACK.
Dưới đây là mô tả cấu trúc một gói tin dữ liệu được sử dụng trong quá trình đo,
độ dài dữ liệu được cố định trong hai trường hợp là 1000 bytes và 100 bytes.
32
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Bảng 2.1 Cấu trúc gói tin sử dụng
IP header TCP header Data20 bytes 20 bytes 1000/100 bytes
Sau phần IP header và TCP header, 5 bytes đầu tiên của phần dữ liệu gói tin sẽ
được sử dụng để định dạng gói tin theo cấu trúc 1 – 4. Giá trị byte đầu tiên Code xác
định loại gói trong các gói tin kể trên. Dãy 4 bytes tiếp theo Parameter lưu thông số đặc
trưng tùy thuộc vào loại gói tin đó. Sau dãy 5 bytes này sẽ là dữ liệu ngẫu nhiên có độ
dài tùy thuộc vào kích thước gói tin đã được định sẵn.
Bảng 2.2 Cấu trúc dữ liệu các gói tin
Code Parameter Restbytes1 byte 4 byte Changeable
1.7 Điều khiển qua Internet
1.7.1 Gửi và nhận dữ liệu
Sử dụng mô hình Client – Server, MC và Web server đóng vai trò hai điểm gửi
nhận dữ liệu. Gồm có hai luồng chính là từ Web server gửi yêu cầu điều khiển quá trình
đo đến MC và từ MC gửi kết quả đến Web server. Quá trình gửi nhận được thực hiện
qua một Server ảo đặt tại MC.
Để truyền dữ liệu ta phải tạo socket, thực hiện kết nối từ MC đến Web server
thông qua địa chỉ IP và cổng kết nối. Sau khi kết nối thành công, dữ liệu cần gửi được
đóng vào trong một struct với hai trường cơ bản là nội dung dữ liệu cần gửi và địa chỉ
của bên gửi.
Ở Server ảo đặt tại MC, khi có dữ liệu đến, Server thực hiện việc bóc tách nội
dung dữ liệu nhận được và cập nhật nội dung đó vào cơ sở dữ liệu. Server ảo đóng vai
trò trung gian giữa Web server và MC.
33
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.7.2 Hiển thị dữ liệu lên Web
Để thuận tiện cho việc điều khiển, ta phải thiết kế giao diện Web giúp người dùng
nhập các thông số điều khiển, hiển thị kết quả đo được và tra cứu cơ sở dữ liệu đo.
Ngôn ngữ sử dụng là PHP, HTML và MySQL.
1.8 Tổng quan về STR9-comstick
1.8.1 Tổng quan
Hình 2.19 STR9-comstick
Các thông số chính:
Sử dụng ARM966E – 96Mhz.
544 Kb flash memory – 96 Kb SRAM.
3xUART, 2xSPI, 80 I/Os, 4xTimers.
10-bit ADC, CAN, USB, Real Time Clock, AC Motor Control.
Ethernet MAC.
34
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 2.20 Các thông số chính của STR9-comstick
Một số ưu điểm của STR9-comstick:
_Hỗ trợ Ethernet.
_SRAM và Flash Memories lớn.
_Thiết kế nhỏ gọn, dễ dàng cho việc triển khai cài đặt hệ thống.
_Tiêu thụ điện năng thấp.
_Hỗ trợ công cụ phát triển phần mềm độc lập và bộ thư viện đầy đủ.
35
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.9 Thư viện MicroIP (uIP)
Cùng với thành công của Internet, bộ giao thức TCP/IP đã trở thành chuẩn giao
tiếp toàn cầu. TCP/IP là giao thức cơ bản được sử dụng để chuyển trang web, email, file
v.v… trên Internet. Đối với các hệ thống nhúng, khả năng hỗ trợ TCP/IP có thể làm
chúng kết nối trực tiếp vào mạng nội bộ hoặc thậm chí là mạng Internet toàn cầu. Các
thiết bị nhúng hỗ trợ đầy đủ TCP/IP sẽ là những công dân mạng hạng nhất do có thể giao
tiếp đầy đủ với các máy khác trong mạng.
TCP/IP truyền thống yêu cầu quá nhiều cả về kích thước mã lệnh và cách sử dụng
bộ nhớ trong các hệ thống 8 hoặc 16-bit. Kích thước mã khoảng vài trăm KB và yêu cầu
bộ nhớ ram hàng trăm KB khiến các hệ thống với vài chục KB RAM và bộ nhớ không
thể đáp ứng đầy đủ bộ giao thức này.
Bộ giao thứ uIP được thiết kế theo chỉ định tuyệt đối tối thiểu các tính năng cần
thiết cho để giao tiếp với một thiết bị hỗ trợ TCP/IP đầy đủ. Hầu hết các hệ thống nhúng
luôn luôn tương tác với các hệ thống hỗ trợ đầy đủ TCP/IP. Theo giả định này, uIP loại
bỏ một số cơ chế của TCP/IP hiếm khi được sử dụng và chỉ giữ lại những cơ chế cần
thiết. Nó chỉ có thể xử lý một giao diện mạng duy nhất và có chứa các giao thức IP,
ICMP, UDP và TCP. uIP được viết bằng ngôn ngữ lập trình C.
Do đặc điểm hệ thống nên STR9-comstick chỉ hỗ trợ thư viện MicroIP và ta sẽ
phát triển hệ thống dựa trên nghiên cứu thư viện này.
36
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Xây dựng chương trình
1.10 Giải thuật
1.10.1Đo Trễ (RTT)
Hình 3.21 Giải thuật đo trễ RTT
Phía TC, TC thực hiện vòng lặp liên tục đọc bộ đệm gói tin gửi đến. Trạng thái
lúc này của TC là trạng thái chờ (Standby).
Bằng cách kiểm tra bộ đệm này, TC nhận biết được đó có phải là gói PING gửi
từ MC hay không. Nếu không phải thì TC tiếp tục ở trạng thái chờ.
37
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Nếu gói tin gửi đến là gói PING, chương trình nhảy khỏi vòng lặp và chuyển
trạng thái thành “Ping”. Lúc này TC đã nhận được yêu cầu ping từ MC.
Chương trình thực hiện việc chuyển trường Type của gói PING gửi đến thành 0
(từ giá trị là 8), đảo ngược giá trị của hai trường Source IP Address và Destination IP
Address. Lúc này TC đã có một gói tin PONG đúng yêu cầu.
Gói PONG vừa được tạo sẽ được gán cho biến dữ liệu gửi để thực hiện việc
truyền lại cho MC. Kết thúc quá trình gửi, TC chuyển trở lại trạng thái chờ và thực hiện
vòng lặp mới.
1.10.2Đo thông lượng
Bắt đầu tiến trình đo, TC thực hiện việc khởi tạo socket, thiết lập lắng nghe TCP
ở cổng định trước (Mặc định là 2001).
MC thực hiện lệnh kết nối TCP (cụ thể gồm 3 bước SYN, SYN+ACK, ACK) qua
cổng định trước với TC. MC sẽ bắt đầu tiến trình đo nếu kết nối thành công.
TC lúc này ở trạng thái chờ và thực hiện vòng lặp liên tục đọc bộ đệm. Nếu đó là
gói tin TCP thì chương trình thực hiện việc kiểm tra 5 bytes đầu tiên của dữ liệu gói tin
đó và thực hiện các tiến trình tương ứng theo kịch bản đo.
_Là gói Request, TC tạo gói Request_ACK và gửi lại MC. TC chuyển sang
trạng thái “Throughput”.
_Là gói Data, TC cập nhật bộ đếm dữ liệu nhận được.
_Là gói Fin, TC tạo gói Fin_ACK và gửi lại MC. Tiếp đó TC tạo gói Result và
gửi lại MC.
Kết thúc tiến trình, TC chuyển sang trạng thái chờ và thực hiện vòng lặp mới.
38
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.22 Giải thuật đo thông lượng
1.10.3Cấu trúc gói tin phục vụ giải thuật
Dựa trên cơ sở các giải thuật chương trình đã được đưa ra, ta định nghĩa cụ thể
các gói tin điều khiển, gói tin dữ liệu phục vụ cho quá trình đo thông lượng, bao gồm hai
39
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
quá trình riêng biệt: đo thông lượng hướng lên và thông lượng hướng xuống. Các gói tin
được phân biệt dựa trên Code.
Bảng 3.3 Cấu trúc gói tin đo thông lượng
Name Code(1 byte)
Parameter (4 bytes)
Restbytes
Packetdata 0 Packet IDPacket ACK 1 Code of packetGen request (small) 2 Number of packet to generate (small packet)Gen request (big) 3 Number of packet to generate (big packet)Gen fin 4Rec request (small) 5Rec request (big) 6Rec fin 7Rec result 8 Number of received packet
(a) Thông lượng hướng lên (Uplink Transmission Throughput)
MC nhận, TC tạo dữ liệu.
Hình 3.23 Quá trình đo thông lượng hướng lên
_MC gửi gói tin gen_req bao gồm thông tin về lượng dữ liệu cần tạo và gửi trong
quá trình đo để yêu cầu TC gửi dữ liệu. Thông tin này được lưu trong trường Parameter.
40
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
_TC nhận gen_req và gửi lại gói ACK để xác nhận và bắt đầu gửi dữ liệu theo
yêu cầu của gen_req. Gói tin ACK kèm theo thông số phụ là Code của gói tin cần phản
hồi. Ví dụ phản hồi cho gen_req thì gói ACK có Parameter bằng Code của gói
gen_req. Tiếp đó TC bắt đầu quá trình gửi liên tục các gói data cho đến khi lượng dữ
liệu gửi đủ yêu cầu. Sau quá trình này, TC gửi gói gen_fin để thông báo đến MC biết đã
kết thúc phiên gửi dữ liệu.
_MC nhận dữ liệu gồm các gói data cho đến khi nhận được gói tin gen_fin thì
tổng hợp đưa ra kết quả đo.
(b) Thông lượng hướng xuống (Downlink Transmission Throughput)
Ngược lại với hướng lên, MC tạo dữ liệu, TC nhận dữ liệu.
Hình 3.24 Quá trình đo thông lượng hướng xuống
_MC gửi gói tin rec_req đến TC để thông báo bắt đầu quá trình đo.
_TD nhận rec_req và gửi lại gói ACK để xác nhận sẵn sàng nhận dữ liệu.
_Khi MC nhận được gói ACK của rec_req liền lập tức gửi dữ liệu được phân
thành các gói data đến TC. TC nhận các gói data và thực hiện việc đếm số dữ liệu nhận
được.
_Khi đã gửi đủ dữ liệu, MC kết thúc quá trình gửi bằng cách gửi gói rec_fin.
41
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
_TC nhận gói rec_fin và gửi lại gói ACK để xác nhận kết thúc quá trình nhận.
Sau đó TC tổng hợp lượng dữ liệu nhận được và gửi gói rec_result chứa thông tin về
lượng dữ liệu nhận được trong quá trình đo cho MC. Thông tin này được lưu ở
Parameter.
_MC nhận gói rec_result và tổng hợp đưa ra kết quả đo.
1.11 Chương trình đo phía MC – MC Tool
1.11.1Tổng quan
Chương trình được viết trên nền Microsoft Visual C# giao diện winform.
Hình 3.25 Giao diện chương trình MC Tool
Chương trình có hai kiểu đo chính là Auto Mode và Manual Mode. Auto Mode
là đo với các thông số điều khiển được đọc từ file config.txt nhận được từ người dùng
qua Internet. Manual Mode là đo với các thông số điều khiển được thiết lập trực tiếp từ
MC.
42
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.26 Giao diện chọn kiểu đo
Các thiết lập chính bao gồm địa chỉ IP của TC (mặc định là 192.168.1.10), cổng
lắng nghe của TC (mặc định là 2001). Thời gian chờ ACK timeout (mặc định 1000ms).
Số lần Ping, lượng dữ liệu truyền trong một lần đo thông lượng. Kiểu đo thông lượng
(hướng lên – Uplink, hướng xuống – Downlink), kích thước gói tin sử dụng (1000 bytes
hoặc 100 bytes).
1.11.2Các khối hàm chính
Để xây dựng chương trình đo tại MC, ta phải chia thành nhiều khối hàm đảm
nhận các nhiệm vụ khác nhau. MC Tool bao gồm 5 khối hàm chính như sau.
(a) Khối giao tiếp hệ thống
Nhiệm vụ chính của khối này là đọc và ghi dữ liệu các file. Ứng dụng trong hệ
thống đó là việc đọc các file thiết lập thông số (config.txt) được gửi đến MC từ máy chủ
web, việc ghi kết quả đo được ra file rồi gửi lại máy chủ web.
Thao tác đọc/ghi file được thực hiện bởi thư viện System.IO với các hàm
StreamReader, file.ReadLine(), file.WriteLine().
Khối này cũng làm nhiệm vụ cập nhật các thông số điều khiển quá trình đo từ các
textbox do người dùng nhập vào hoăc từ file config nhận được qua máy chủ web.
(b) Khối ping
Nhiệm vụ chính của khối này là thực hiện lệnh ping theo yêu cầu. Ứng dụng
trong hệ thống đó là việc thực hiện kịch bản đo trễ, gửi gói ping theo yêu cầu và xử lý
kết quả đo nhận được.
43
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Thao tác được thực hiện nhờ thư viện System.Net.NetworkInformation.
(c) Khối socket
Nhiệm vụ chính của khối này là khởi tạo socket để gửi nhận dữ liệu. Ứng dụng
trong hệ thống đó là việc thực hiện kịch bản đo thông lượng.
Thao tác được thực hiện nhờ thư viện System.Net và System.Net.Sockets.
Khởi tạo socket TCP với các khai báo TCPClient, các hàm TCPClient.Connect(),
TCPClient.Close(). Gửi và nhận dữ liệu với khai báo NetworkStream, các hàm
networkstream.Read() và hàm networkstream.Write().
Quá trình đo thông lượng cũng được thực hiện trong khối này bằng cách thiết lập
quá trình gửi nhận các gói tin TCP theo kịch bản được định sẵn.
(d) Khối giao diện
Nhiệm vụ chính của khối này là xây dựng giao diện tương tác người dùng. Ứng
dụng trong hệ thống đó là việc xây dựng một phần mềm đo với giao diện khoa học, cụ
thể, dễ điều khiển.
Thao tác được thực hiện nhờ các thư viện System.Windows.Forms, System.Text,
System.Drawing.
(e) Khối phụ trợ
Nhiệm vụ chính của khối này là khởi tạo các công cụ cần thiết trong quá trình xây
dựng chương trình. Ứng dụng trong hệ thống đó là việc xây dựng bộ đếm thời gian có
độ chính xác rất cao theo xung nhịp CPU dùng để đo thời gian gửi nhận dữ liệu, việc
xây dựng cơ chế điều khiển luồng để đảm bảo các tiến trình đo được thông suốt và quả
lý bộ nhớ một cách khoa học.
Thao tác được thực hiện bởi thư viện System.Threading và
System.Runtime.InteropServices.
44
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.11.3Chương trình đo
(a) Khởi tạo
Khởi tạo các thông số chính để chương trình đo hoạt động bình thường.
Hình 3.27 Khởi tạo chương trình
(b) Các module chính
Bộ đếm thời gian độ chính xác cao: dùng để đo thời gian tiến trình gửi nhận dữ
liệu một cách chính xác theo xung nhịp của bộ vi xử lý máy tính chạy MC.
Pingsender: phục vụ cho khối Ping.
Uplink: phục vụ cho đo thông lượng hướng lên.
Downlink: phục vu cho đo thông lượng hướng xuống.
45
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.28 Bộ đếm thời gian
46
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.29 Thời gian truyền
1.12 Chương trình nhúng trên TC
1.12.1Cấu trúc chương trình
Trước khi đi vào cụ thể chương trình nhúng trên TC, ta cần có một cái nhìn tổng
quát về cấu trúc của chương trình. Do yêu cầu hệ thống đòi hỏi tập trung vào phần
Ethernet nên chương trình được xây dựng cũng dựa trên sườn lấy thư viện uIP là chủ
đạo. Để TC có thể hoạt động thì ta phải xây dựng chương trình dựa trên các module
chính như đề cập ở bảng dưới đây.
Bảng 3.4 Các module chính của chương trình
Main.c Mã chính của chương trìnhStartup912.s File ASM khởi tạo cho STR9Startup_generic.s File ASM chứa trong Startup912.sInterrupt.c Xử lý ngắtMemcopy.s Xử lý bộ nhớ91x_fmi.c Thư viện cơ bản quản lý bộ nhớ91x_gpio.c Thư viện cơ bản quản lý giao tiếp IO91x_scu.c Thư viện cơ bản quản lý hoạt động điều khiển hệ thống91x_enet.c Thư viện cơ bản quản lý Ethernet
47
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
91x_vic.c Thư viện cơ bản quản lý vector ngắtUipmain.c uIP stack mainUip.c uIP stack coreUip_arp.c Xử lý giao thức ARPUip_arch.c Xử lý kiến trúc đặc biệtCgi.c Mã CGIFs.c Mô phỏng file systemFsdata.c Nội dung webHttpd.c Web serverMemb.c Web serverTelnettd-shell.c Máy chủ telnet
Main.c Chương trình chính bắt đầu bằng việc thiết lập các thủ tục phần cứng liên quan
(SCU, GPIO và Ethernet). Mã khởi động trong “startup912.s” khởi tạo những thành
phần như PLL, clock và memory. Sau lần cấu hình này ta sẽ không thay đổi những thành
phần đó nữa. Tiếp đó là vòng lặp chính của chương trình.
Startup912.s Như tên của nó bao hàm, code khởi động được đặt để chạy từ vector reset.
Nó cung cấp bảng vector ngoại lệ, cũng như khởi đẩu stack pointer cho các chế độ hoạt
động khác nhau. Ta sử dụng code mặc định.
Interrupt.c Chứa các vector ngắt.
uIPMain.c Khởi tạo uIP stack với các chức năng cơ bản của ARP. Khởi tạo cũng bắt
đầu WEB server bằng cách gọi hàm “httpd_init()”. Giao thức được xử lý trong một vòng
lặp vô tận. Bằng cách gọi (size = ENET_HandleRxPkt(uip_buf);) ta kiểm tra được trạng
thái bộ đệm đầu vào. Nếu dữ liệu nhận được trả về giá trị lớn hơn 0 thì hàm tương ứng
sẽ được thực hiện.
uip.c Chứa phần chính của uIP và xử lý giao tiếp TCP/IP.
uip_arp.c Xử lý ARP.
uip_arch.c Xử lý kiến trúc đặc biệt.
cgi.c Cung cấp các hàm theo ngôn ngữ web CGI phục vụ cho web server.
48
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
fs.c Chứa các file hệ thống cơ bản của WEB server, được gọi bởi mã CGI. Vòng lặp
chính “fsopen()” cho phép WEB server mở đúng file cần thiết cho trình duyệt.
fsdata.c Chứa nội dung của chương trình WEB server. Các file HTML, CGI, ảnh được
mã hóa thành mảng ký tự được chứa trong đây. Ta sử dụng công cụ đi kèm để thực hiện
điều này.
httpd.c Chứa các thủ tục của WEB server. Các chức năng cơ bản của CGI nằm ở đây.
Khởi tạo bằng hàm “httpd_init()” từ vòng lặp chính.
1.12.2Thư viện STR9
Thư viện chương trình của TC dùng trong việc xây dựng hệ thống sẽ được miêu
tả dưới đây.
Bảng 3.5 Các chức năng hỗ trợ bởi thư viện STR9
Chức năng Miêu tả
ADC Analog-to-Digital ConverterCAN Controller Area NetworkSCU System Control UnitDMA DMA ControllerVIC Vectored Interrupt ControllerGPIO General Purpose I/O PortsI2C I2C Interface moduleRTC Real Time ClockWIU Wake-Up Interrupt UnitAHBAPB AHB/APB BridgesMC 3-phase induction Motor Controller (MC)FMI Flash Memory InterfaceEMI External Memory InterfaceSSP Synchronous Serial PeripheralTIM Standard TimerUART Universal Asynchronous Receiver TransmitterWDG Watchdog Timer
49
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.30 Cấu trúc thư viện STR9
50
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.31 Nội dung thư viện
Folder này chứa các thành phần chính của thư viện.
Folder inc chứa các file header, người dùng không được khuyến khích thay đổi
nội dung các file này, bao gồm:
91x_type.h: Chứa các thiết lập về loại dữ liệu và biến được sử dụng trong các
thư viện khác.
91x_map.h: Chứa bản đồ bộ nhớ và cấu trúc các thanh ghi.
91x_lib.h: Header chính chứa các header khác.
91x_ppp.h: Chứa các cấu trúc hàm, dữ liệu và biến.
51
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Folder src chứa mã nguồn thư viện, người dùng không được khuyến khích thay
đổi nội dung các file này, bao gồm:
91x_ppp.c: Chứa mã nguồn cấu trúc hàm.
Chú ý: Các thư viện được lập trình theo Strict ANSI-C và không phụ thuộc vào
bất cứ sự liên kết phần mềm nào khác.
Hình 3.32 Kiến trúc thư viện phần mềm
1.12.3Quy tắc xây dựng mã nguồn
Những quy tắc và chú ý sau được sử dụng khi xây dựng thư viện phần mềm.
(a) Các types cụ thể được quy định cho các biến có kiểu và kích thước là cố định.
Các types này được định nghĩa trong thư viện 91x_type.h:
typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;
52
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
typedef signed long s32;
typedef signed shorts16;
typedef signed char s8;
typedef volatile unsigned long vu32;
typedef volatile unsigned short vu16;
typedef volatile unsigned char vu8;
typedef volatile signed long vs32;
typedef volatile signed short vs16;
typedef volatile signed char vs8;
(b) Kiểu bool
Được định nghĩa trong 91x_type.h như sau:
typedef enum
{
FALSE = 0,
TRUE = !FALSE
} bool;
(c) FlagStatus và ITStatus
Hai types này được định nghĩa trong 91x_type.h. Hai giá trị có thể được gán cho
biến này: SET hoặc RESET.
53
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(d) FunctionalState
Type này được định nghĩa trong 91x_type.h. Hai giá trị có thể được gán cho biến
này: ENABLE hoặc DISABLE.
(e) ErrorStatus
Type này được định nghĩa trong 91x_type.h. Hai giá trị có thể được gán cho biến
này: SUCCESS hoặc ERROR.
(f) Con trỏ
Con trỏ tới thiết bị ngoại vi được sử dụng để truy cập vào các thanh ghi điều
khiển kiểm soát các thiết bị ngoại vi. Con trò trỏ đến cấu trúc dữ liệu đại diện cho sự ánh
xạ các thanh ghi điều khiển. Cấu trúc được định nghĩa cho mỗi một thiết bị ngoại vi
được thực hiện trong 91x_map.h.
Bảng 3.6 Cấu trúc thanh ghi bộ nhớ
Register Description
BBSR Boot Bank Size RegisterNBBSR Non-Boot Bank Size RegisterBBADR Boot Bank Base Address RegisterNBBADR Non-Boot Bank Base Address RegisterCR Control RegisterSR Status RegisterBCE5ADDR BC Fifth Entry Target Address Register
Bảng 3.7 FMI_BootBankSize
FMI_BootBankSize Meaning
0 32 KBytes1 64 KBytes2 128 KBytes3 256 KBytes4 512 KBytes... ...0xB 64 MBytes
54
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Bảng 3.8 FMI_NonBootBankSize
FMI_NonBootBank
Size
Meaning
0 8 KBytes1 16 KBytes2 32 KBytes3 64 KBytes... ...0xD 64 MBytes
1.12.4Khối hàm uIP
(a) Các hàm thiết lập
#define uip_sethostaddr(addr)
Thiết lập địa chỉ IP.
#define uip_gethost addr(addr)
Lấy địa chỉ IP.
#define uip_setdraddr(addr)
Thiết lập địa chỉ IP của router.
#define uip_setnetmask(addr)
Thiết lập netmask.
#define uip_getdraddr(addr)
Lấy địa chỉ IP của router.
#define uip_getnetmask(addr)
Lấy netmask.
55
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
#define uip_setethaddr(eaddr)
Thiết lập địa chỉ MAC.
(b) Các hàm khởi tạo
#void uip_init(void)
#void uip_setipid(u16_t id)
Khởi tạo khối microIP.
(c) Các hàm ứng dụng
#define uip_datalen()
Độ dài hiện tại của dữ liệu đến.
#define uip_close()
Đóng kết nối hiện tại.
#define uip_abort()
Hủy kết nối hiện tại.
#define uip_stop()
Gửi yêu cầu dừng truyền dữ liệu tới đối tượng đang truyền.
#define uip_stopped(conn)
Kiểm tra kết nối hiện tại đã bị dừng trước đó bởi hàm uip_stop() chưa?
#define uip_newdata()
Kiểm tra có dữ liệu mới hay không?
#define uip_acked()
Kiểm tra dữ liệu gửi trước đó đã được nhận chưa?
56
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
#define uip_connected()
Kiểm tra kết nối đã thành công chưa?
#define uip_closed()
Kiểm tra kết nối có bị đóng bởi phía bên kia?
#define uip_aborted()
Kiểm tra kết nối có bị hủy bởi phía bên kia?
#define uip_timedout()
Kiểm tra kết nối bị timed out?
#define uip_listen(u16_t port)
Bắt đầu lắng nghe TCP trên cổng port.
#define uip_unlisten(u16_t port)
Dừng lắng nghe TCP trên cổng port.
#uip_conn * uip_connect(uip_ipaddr_t*ripaddr, u16_t port)
Kết nối đến địa chỉ ripaddr và cổng port.
#uip_send(const void *data, int len)
Gửi dữ liệu data, độ dài len trên kết nối hiện tại.
57
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.33 Các thiết lập uIP
58
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.12.5Liên kết thư viện uIP
(a) Vòng lặp điều khiển chính
Khối uIP có thể chạy như là một tiến trình trong hệ thống đa nhiệm hoặc đảm
nhận vai trò là chương trình chính trong hệ thống đơn nhiệm. Trong cả hai trường hợp,
vòng lặp chính của chương trình thực hiện liên tục hai việc:
_Kiểm tra xem có gói tin được gửi đến từ mạng?
_Kiểm tra xem timeout định kỳ có xảy ra?
Nếu một gói tin được gửi đến, chức năng xử lý đầu vào uip_input() được kích
hoạt trong vòng lặp điều khiển chính. Hàm uip_input() gọi chương trình tương ứng với
gói tin gửi đến, chương trình này có thể tạo ra một hoặc nhiều gói tin trả lời để gửi lại.
Nếu vậy, hàm điều khiển thiết bị mạng sẽ được gọi để gửi các gói tin đó.
(b) Ứng dụng gói tin
Ứng dụng các gói tin phải được thực hiện trong hàm uip_appcall(), hàm được gọi
mỗi khi có bất cứ một sự kiện nào xảy ra. Mỗi sự kiện có một chức năng kiểm tra tương
ứng được sử dụng để phân biệt giữa các sự kiện khác nhau. Chú ý rằng các sự kiện nhất
định có thể xảy ra trong sự kết hợp với nhau (ví dụ: sự kiện dữ liệu mới gửi đến có thể
xảy ra cùng một lúc với sự kiện dữ liệu gửi đã được công nhận).
(c) Con trỏ kết nối
Khi các ứng dụng được gọi bởi uIP, biến toàn cục uip_conn được thiết lập trỏ đến
cấu trúc uip_conn cho kết nối đang được xử lý hiện thời, và được gọi là “kết nối hiện
thời” (current connection). Các trường trong cấu trúc uip_conn cho kết nối hiện thời có
thể được sử dụng. Ví dụ, để phân biệt giữa các dịch vụ khác nhau, hoặc để kiểm tra địa
chỉ IP mà kết nối được kết nối. Một điển hình sẽ được sử dụng là việc kiểm tra trường
uip_conn->lport (thông tin cổng TCP) để quyết định dịch vụ kết nối cần cung cấp. Ngoài
ra, một ứng dụng có thể hoạt động như một máy chủ HTTP nếu giá trị uip_conn-lport
bằng 80 và hoạt động như một máy chủ Telnet nếu giá trị đó bằng 23.
59
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(d) Nhận dữ liệu
Nếu kiểm tra thấy hàm uip_newdata() trả về giá trị khác 0, điều đó cho thấy máy
chủ từ xa của kết nối đã gửi dữ liệu mới. Con trỏ uip_appdata dược trỏ tới dữ liệu thực
tế. Kích thước của dữ liệu có thể thu được thông qua hàm uip_datalen(). Dữ liệu không
phải là bộ đệm của uIP, nhưng sẽ bị ghi đè lên sau khi ứng dụng trả về giá trị tương ứng.
Bởi vậy các ứng dụng sẽ phải hoặc là xử lý trực tiếp trên dữ liệu gửi đến hoặc là phải tự
sao chép các dữ liệu gửi đến vào một bộ đệm để xử lý sau.
(e) Gửi dữ liệu
Khi gửi dữ liệu, uIP điều chỉnh độ dài dữ liệu gửi bằng cách áp dụng theo không
gian bộ đệm có sẵn và kích thước cửa sổ TCP của bên nhận. Kích thước không gian bộ
đệm được quyết định bởi cấu hình bộ nhớ. Do đó có thể các dữ liệu gửi sẽ không đến
được nơi nhận, và ứng dụng có thể sử dụng hàm uip_mss() để xem có bao nhiêu dữ liệu
sẽ được gửi thực tế qua các ngăn xếp.
Các ứng dụng gửi dữ liệu bằng cách sử dụng hàm uip_send(). Hàm này có hai
thông số: một trỏ tới dữ liệu cần gửi đi và một là chiều dài của dữ liệu. Nếu ứng dụng
cần sử dụng bộ nhớ RAM để tạo các dữ liệu thực tế được gửi đi, bộ đệm gói tin (được
trỏ đến bởi con trỏ uip_appdata) có thể được sử dụng cho mục đích này.
Các ứng dụng chỉ có thể gửi đi một đoạn dữ liệu tai một thời điểm trên một kết
nối và không thể gọi nhiều hơn một lần hàm uip_send() cho mỗi một ứng dụng được
kích hoạt. Chỉ có dữ liệu từ lần gọi cuối cùng sẽ được gửi đi.
(f) Truyền lại dữ liệu
Cơ chế truyền lại dữ liệu được điều khiển bởi bộ đếm thời gian định kì TCP. Mỗi
khi bộ đếm thời gian định kì được gọi, bộ đếm giờ truyền lại cho mỗi kết nối bị giảm đi.
Nếu bộ đếm giờ giảm đến 0, dữ liệu sẽ được truyền lại bằng cahcs thiết lập cờ
uip_rexmit(). Ứng dụng phải kiểm tra cờ uip_rexmit() và tạo dữ liệu giống với dữ liệu
đã được gửi trước đó.
60
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(g) Đóng kết nối
Ứng dụng đóng kết nối hiện tại bằng cách gọi hàm uip_close(). Thực hiện điều
này sẽ khiến kết nối được đóng lại một cách sạch sẽ. Trong trường hợp có lỗi nghiêm
trọng, các ứng dụng có thể hủy bỏ kết nối bằng cách gọi hàm uip_abort().
Nếu kết nối được ngắt bởi phía bên kia, hàm uip_closed() sẽ trả về giá trị true.
Các ứng dụng có thể thực hiện những lệnh dọn dẹp bộ nhớ cần thiết.
(h) Lắng nghe cổng TCP
uIP duy trì một danh sách các cổng TCP. Một cổng mới được mở ra để lắng nghe
khi gọi hạm uip_listen(). Khi một yêu cầu kết nối được gửi đến cổng đó, uIP tạo ra một
kết nối mới và gọi các hàm ứng dụng tương ứng. Hàm uip_connected() trả về giá trị true
nếu ứng dụng được gọi bởi một kết nối mới được tạo ra.
Các ứng dụng có thể kiểm tra trường uip_conn->lport để kiểm tra xem kết nối
được tạo trên cổng nào.
(i) Tạo kết nối
Kết nối mới có thể được mở ra từ bên trong khối uIP bằng cách gọi hàm
uip_connect(). Hàm này cấp phát một kết nối TCP mới đến địa chỉ IP và cổng được chỉ
định. Hàm uip_connect() trả về con trỏ đến cấu trúc uip_conn dành cho kết nối mới. Nếu
không có kết nối, hàm trả về giá trị NULL.
Hàm uip_ipaddr() có thể được sử dụng để đóng gọi một địa chỉ IP vào mảng hai
thành phần 16bit được sử dụng bởi uIP để đại diện các địa chỉ IP.
61
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.12.6Mã khởi động
Ở project ví dụ của chúng ta có một số source file. Các file .c là file source,
startup912.s là module assembler cung cấp bởi Hitex để hỗ trợ STR9. Như tên của nó
bao hàm, code khởi động được đặt để chạy từ vector reset. Nó cung cấp bảng vector
ngoại lệ, cũng như khởi đẩu stack pointer cho các chế độ hoạt động khác nhau. Code
khởi động sẽ tùy biến, dựa trên thiết bị ARM9 nào và trình biên dịch nào bạn đang dùng,
nên việc chắc chắn bạn dùng đúng file sẽ quan trọng cho project của bạn.
Trước hết code khởi động cung cấp bảng vector ngoại lệ như dưới đây:
Hình 3.34 Vector ngoại lệ
Bảng vector được đặt ở 0x00000000 và cung cấp 1 bước nhảy đến vòng lặp ngắt
(ISR) ở mỗi vector. Nếu code của bạn để chạy từ 0x00000000 thì bảng vector có thể
được tạo từ một loạt các chỉ dẫn nhãn. Bạn phải nhớ đệm thêm vào vector ngắt không sử
62
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
dụng 1 lệnh NOP, ngoài ra chú ý các chỉ dẫn Assembler khác nhau trong vector ngắt
IRQ ở trên.
Sử dụng chỉ dẫn nhãn nghĩa là chỉ mục của phần mềm và các vòng lặp ngắt phải
được đặt trong 32Mb đầu bản đồ memory của STR9 vì đây là khoảng địa chỉ của chỉ dẫn
nhãn. Một cách tổng quát hơn để xử lý bảng vector là dùng chỉ dẫn LDR để load một 32
bit liên tục vào PC. Cách này tốn nhiều bộ nhớ hơn, nhưng cho phép bạn đặt code ở bất
cứ đâu trong 4Gb địa chỉ của ARM9.
Bảng vector và bảng các hằng số mất đến 64 byte đầu tiên của bộ nhớ.Trên STR9
bộ nhớ tại 0x00000000 có thể được ánh xạ từ một số nguồn khác nhau hoặc trên chip
FLASH, RAM hoặc bộ nhớ Flash bên ngoài. Dù bạn dùng cách nào, bạn có trách nhiệm
quản lý các bảng vector trong code khởi động, vì nó không được thực hiện tự động bởi
trình biên dịch.
Mã khởi động cũng chịu trách nhiệm cấu hình ngăn xếp con trỏ cho mỗi phương
thức điều hành.
Hình 3.35 Cấu hình ngăn xếp
6 ngăn xếp con trỏ trên chip (R13) được khởi tạo ở trên cùng của bộ nhớ on-chip.
Buộc phải đảm bảo cấp phát bộ nhớ đủ cho kích thước tối đa của mỗi stack.
63
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Vì mỗi chế độ hoạt động có một R13 riêng, có sáu ngăn xếp hiệu dụng trong
ARM9 này. Các chiến lược được sử dụng bởi trình biên dịch này là để xác định vị trí các
biến của người dùng từ sự khởi đầu của RAM trên chip và tăng trưởng trở lên. Các ngăn
xếp được đặt ở phía trên của bộ nhớ và phát triển xuống dưới. Mã khởi động vào mỗi
chế độ khác nhau của ARM9 và tải mỗi R13 với địa chỉ bắt đầu của ngăn xếp.
Các User Stack là quan trọng nhất và phải được đặt tại địa chỉ thấp nhất.Các
Heap được đặt ở dưới cùng của khu vực User Stack và điều này cần để có thể sử dụng
bộ nhớ giữa các User Stack và dữ liệu khu vực chưa khởi tạo (BSS).
Hình 3.36 User stack
Giống như bảng vector, bạn có trách nhiệm cấu hình kích thước ngăn xếp. Điều
này có thể được thực hiện bằng cách chỉnh sửa trực tiếp mã khởi động.
64
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.37 Kích thước ngăn xếp
Các ngăn xếp CPU được thiết lập và kiểm tra trong trình sửa lỗi. Các lĩnh vực
quan trọng khác của mã khởi động cũng được xem xét.
(a) The ARM Procedure Call Standard (APCS)
APCS định nghĩa cách các thanh ghi file ARM9 được sử dụng bởi trình biên dịch
trong thời gian chạy. Về lý thuyết, APCS cho phép mã được xây dựng trong bộ công cụ
khác nhau để làm việc cùng nhau, từ đó bạn có thể lấy một thư viện được biên soạn bởi
các trình biên dịch ARM và sử dụng nó với các công cụ GCC.
Hình 3.38 ARM Procedure Call Standard (APCS)
65
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
APCS định nghĩa cách các thanh ghi CPU người dùng được sử dụng bởi các trình
biên dịch. Tôn trọng những tiêu chuẩn này cho phép làm việc giữa các công cụ sản xuất
khác nhau.
APCS chia tách thanh ghi file vào một số khu vực. R0 tới R3 được sử dụng cho
tham số truyền giữa các chức năng. Nếu bạn cần phải vượt qua hơn 16 byte thì các tham
số tràn được truyền qua các ngăn xếp. Các biến địa phương được phân bổ R4 - R11 và
R12 được dành làm vị trí bộ nhớ cho mã intra-call veneer. Khi bạn chọn thêm tùy chọn
cho các mã đã tạo ra như nhập lại và kiểm tra-stack, trình biên dịch cho thêm mã
Assembler bổ sung để hỗ trợ các tính năng này. Các veneer Assembler thêm chi phí cho
mã của bạn, do đó chỉ cho phép các tính năng mà bạn có ý định sử dụng. APCS cũng
định nghĩa một stack frame để giữ trạng thái của các thanh ghi CPU kèm theo một con
trỏ tới stack frame trước đó.
Đây là một nhiệm vụ sửa lỗi phần mềm rất hữu ích trong hệ điều hành như Linux,
nhưng nó không phải là hữu ích cho một trình gỡ rối JTAG. Chuẩn ACPS có tác động
lớn vào tốc độ thực hiện và kích thước ngăn xếp cho ứng dụng cuối cùng. Do đó đối với
một vi điều khiển nhúng nhỏ như STR9 tốt nhất là ngăn chặn các trình biên dịch tiêu
chuẩn này. Lệnh được sử dụng để bật tiêu chuẩn APCS là:
-mapcs-frame or -apcs
Và để vô hiệu hóa nó
-mno-apcs-frame
Theo mặc định StartEasy tạo ra một dự án đã vô hiệu hóa việc sử dụng các
APCS.
(b) ARM và THUMB
Một trong những tính năng quan trọng nhất của CPU ARM9 là khả năng chạy mã
THUMB 16 bit và mã ARM 32 bit. Để có được một ứng dụng phức tạp-hợp lý phù hợp
với các bộ nhớ Flash trên chip, nó là rất quan trọng để interwork những hướng dẫn hai
66
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
bộ để có hầu hết các mã ứng dụng được mã hóa trong các tập lệnh THUMB và có hiệu
quả nén để có không gian tối thiểu trong bộ nhớ Flash trên chip. Bất kỳ thời gian thói
quen quan trọng, nơi sức mạnh xử lý đầy đủ của ARM 7 là yêu cầu cần phải được mã
hóa trong tập 32 ARM hướng dẫn bit. Khi tạo mã, trình biên dịch phải được cho phép để
cho phép ảnh hưởng lẫn nhau. Điều này đạt được với sự chuyển đổi sau đây:
-mTHUMB-interwork
Các trình biên dịch GCC được thiết kế để biên dịch một module C đưa ra trong
hoặc là THUMB hoặc tập lệnh ARM. Vì vậy, bạn phải đặt ra mã nguồn của bạn để mỗi
môn chỉ có chức năng đó sẽ được mã hóa theo chức năng ARM hoặc THUMB. Theo
mặc định các trình biên dịch sẽ mã hóa tất cả các mã nguồn trong các tập lệnh ARM.
Buộc một mô-đun được mã hóa trong các tập lệnh THUMB, sử dụng các chỉ thị sau khi
bạn biên dịch mã:
-mTHUMB
Tùy chọn này có thể được thêm vào một module được trong IDE HiTOP.
67
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
1.12.7Chương trình nhúng – HiTOP Debugger
Chương trình được viết bằng ngôn ngữ C++ trên công cụ phát triển HiTOP
Debugger được cung cấp kèm theo STR9-comstick.
Hình 3.39 Giao diện HiTOP Debugger
HiTOP là kết thúc cho tất cả các trình sửa lỗi Hitex và giả lập in-circuit. Trong
trường hợp của STR9, HiTOP kết nối đến trình sửa lỗi JTAG TantinoARM 7-9. JTAG
cho phép HiTOP tải các đoạn mã vào STR9 FLASH hoặc RAM và sau đó sửa lỗi mã
như nó chạy trên vi điều khiển. Ngoài tính năng sửa lỗi của nó, HiTOP bao gồm editor
của người lập trình, hỗ trợ cho các công cụ biên dịch khác nhau và tạo các tiện ích cho
phép bạn duy trì các chương trình STR9 hiện có.
Môi trường HiTOP phát triển có thể được sử dụng với công cụ biên dịch khác
nhau. Chúng bao gồm các trình biên dịch từ ARM, Keil, Greenhills, tác vụ và IAR.
Ngoài ra còn có một cổng của trình biên dịch GNU GCC có sẵn cho các dòng CPU của
68
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
ARM. GCC có lợi thế là một trình biên dịch tự do biên dịch C và C + + cho tất cả các
dòng CPU của ARM.
Các trình biên dịch thương mại là con đường phía trước của những công cụ GNU
về mật mã và tốc độ thực thi. Càng ngày, các trình biên dịch thương mại bao gồm hỗ trợ
trực tiếp cho vi điều khiển ARM-based trong các hình thức trình gỡ rối với sự hỗ trợ cho
các STR9 và thiết bị chuyển mạch biên dịch chuyên dụng. Những lý do để sử dụng mỗi
trình biên dịch đưa ra có thể được tóm tắt như sau: nếu bạn muốn mã nhanh nhất và các
công cụ tiêu chuẩn với sự hỗ trợ kỹ thuật thích hợp sử dụng một công cụ thương mại
như các trình biên dịch Keil ARM RealView. Nếu bạn không có ngân sách, một dự án
đơn giản hoặc có kinh nghiệm đáng kể trước đó của nó, sử dụng GNU. Cung cấp với các
bộ STR9 starter là một cài đặt miễn phí của các trình biên dịch GNU, được tích hợp với
trình gỡ rối HiTOP IDE để bạn có thể biên dịch chương trình đơn giản. Các ví dụ đưa ra
ở đây sử dụng các trình biên dịch GNU.
Hình 3.40 Các cửa sổ thao tác HiTOP
Cũng bao gồm trong chuỗi công cụ phát triển là một biên tập viên thứ hai gọi là
Trợ lý Phát triển cho C. Đây là một biên tập viên cao cấp ứng mục tiêu phát triển các hệ
69
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
thống nhúng. Cũng như có tất cả các tính năng bạn mong đợi ở một trình soạn thảo của
lập trình, DA-C bao gồm một số tính năng nâng cao giúp bạn để sản xuất chất lượng cao
và được tài liệu mã nguồn C. DA-C bao gồm một kiểm tra tĩnh sẽ phân tích mã của bạn
cho các lỗi lập trình thông thường, tạo ra các biểu đồ dòng chảy và phân cấp gọi. DA-C
cũng bao gồm một trình duyệt mã, vì vậy bạn có thể dễ dàng di chuyển mã của bạn và
một số liệu module nên các mã nguồn có thể được phân tích bằng cách sử dụng các biện
pháp tiêu chuẩn chất lượng.
Các mục cuối cùng của phần mềm trên là một thử nghiệm bộ phần mềm công cụ
gọi là TESSY. Các công cụ tự động hóa TESSY thử nghiệm chức năng của vi điều khiển
nhúng và phần cứng mục tiêu của họ. Trong nhiều ngành công nghiệp (đặc biệt là hàng
không vũ trụ và y tế), xác nhận các phần mềm vi điều khiển là một quá trình dài và quan
trọng. TESSY đặc biệt thích hợp để thử nghiệm vi điều khiển dấu chân nhỏ chỉ có một
lượng nhỏ trên chip bộ nhớ. Thay vì xây dựng khai thác thử nghiệm sẽ được tải vào bộ
nhớ mục tiêu của thiết bị đo kiểm, TESSY làm cho không có thay đổi mã theo thử
nghiệm, nhưng xây dựng khai thác thử nghiệm của nó trong ngôn ngữ HiScript được xây
dựng trong trình sửa lỗi. Bằng cách này, việc áp dụng đầy đủ các mục tiêu có thể được
thực hiện mà không mất bất kỳ tài nguyên trên chip.
Trên đây là các kiến thức cần biết về công cụ HiTOP Debugger để có thể sử dụng
tốt cho việc xây dựng hệ thống. Các bước xây dựng được mô tả ở phần dưới đây.
TC được khởi tạo với IP được cấp sẵn. Khi vừa khởi động, chương trình sẽ thực
hiện việc khởi tạo socket TCP lắng nghe trên cổng 2001. Tiếp sau đó là vòng lặp uIP
kiểm tra bộ đệm gói tin gửi đến và thực hiện các ứng dụng tương ứng. Thân chương
trình được chia làm 5 khối chính như sau:
70
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.41 Sơ đồ khối chương trình nhúng
(a) Khối khởi tạo (init)
Nhiệm vụ chính của khối này là khởi tạo các thông số chính lúc khởi động cho
TC. Ứng dụng trong hệ thống đó là việc thực hiện khởi tạo IP cho TC, khởi tạo socket
TCP lắng nghe trên cổng định trước để sẵn sàng cho quá trình đo.
Thao tác được thực hiện nhờ thư viện 91x và uIP.
Khởi tạo địa chỉ IP, default gateway, subnet mask với hàm uip_ipaddr().
Khởi tạo socket TCP lắng nghe với hàm uip_listen().
Hình 3.42 Hàm khởi tạo sơ lược
71
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(b) Khối chương trình chính (main)
Nhiệm vụ chính của khối này là thực hiện các hàm giúp TC hoạt động bình
thường. Ứng dụng trong hệ thống đó là việc khởi tạo vòng lặp uIP để hỗ trợ Ethernet
phục vụ kịch bản đo.
Thao tác được thực hiện nhờ thư viện 91x.
Hình 3.43 Hàm Main sơ lược
72
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(c) Khối uIP
Nhiệm vụ chính của khối này là thực hiện các hàm hỗ trợ bởi thư viện uIP. Ứng
dụng trong hệ thống đó là làm cơ sở cho các khối xử lý gói tin gửi đến theo giao thức
TCP/IP.
Thao tác được thực hiện nhờ thư viện 91x và uIP.
Kiểm tra các gói tin gửi đến và thực hiện gọi các khối tương ứng.
Hình 3.44 Hàm uip sơ lược
73
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(d) Khối ICMP
Nhiệm vụ chính của khối này là gọi các ứng dụng tương ứng với gói tin ICMP
được gửi đến TC. Ứng dụng trong hệ thống đó là việc thực hiện phản hồi gói ping từ
MC bằng cách gửi gói pong trở lại.
Thao tác được thực hiện nhờ thư viện uIP.
Định nghĩa cấu trúc gói ICMP bao gồm các trường tương ứng để TC hiểu được.
Thực hiện việc tạo gói pong phản hồi khi có gói ping gửi đến TC bằng cách thay
đổi trường type của gói ping từ 8 thành 0, đảo ngược hai trường source IP address và
destination IP address. Sau đó sử dụng hàm uip_send() để gửi trả lại MC.
74
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.45 Hàm ICMP sơ lược
75
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(e) Khối TCP
Nhiệm vụ chính của khối này là gọi các ứng dụng tương ứng với gói tin TCP
được gửi đến TC. Ứng dụng trong hệ thống đó là thực hiện kết nối TCP với MC và gửi
nhận các gói tin theo kịch bản đo.
Thao tác được thực hiện nhờ thư viện uIP.
Định nghĩa cấu trúc gói TCP bao gồm các trường tương ứng để TC hiểu được.
Khi có gói TCP gửi đến, khối TCP thực hiện gọi hàm uip_appcall(). Bằng các
hàm kiểm tra uip_newdata(), uip_acked(), uip_rexmit(), uip_closed(), uip_abort(), ta sẽ
thực hiện các lệnh gửi gói tin tương ứng để hoàn thành kịch bản đo.
76
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 3.46 Hàm TCP sơ lược
77
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Kiểm tra – đánh giá hệ thống
1.13 Kiểm tra – đánh giá
1.13.1Mạng PLC
(a) Cấu trúc mạng PLC
Mạng truy nhập PLC dựa trên mạng lưới truyền tải và cung cấp điện hạ thế (lưới
hạ thế kết nối với lưới điện trung thế và cao thế thông qua các máy biến áp). Có thể thấy
trên hình 1.2, mạng truy nhập PLC có thể kết nối với mạng diện rộng WAN thông qua
các trạm gốc đặt tại vị trí các máy biến thế, còn các thuê bao PLC kết nối với các trạm
gốc thông qua các modem PLC đặt tại vị trí các công tơ đo đếm điện hoặc ổ cắm điện
trong nhà.
Hình 4.47 Cấu trúc mạng PLC
Mạng PLC trong nhà sử dụng mạng điện trong nhà làm phương tiện truyền dẫn,
để kết nối các thiết bị sử dụng trong nhà như máy tính, điện thoại, máy in và các thiết bị
video, gọi là hệ thống mạng PLC LAN. Về cấu trúc, mạng PLC trong nhà không khác
78
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
nhiều so với cấu trúc mạng truy nhập PLC sử dụng lưới điện hạ thế. Trong cấu trúc này,
có một trạm gốc PLC (BS) đặt tại vị trí công tơ điện để kết nối với mạng PLC backbone.
Các thiết bị trong nhà kết nối với trạm gốc thông qua các modem PLC đặt tại các ổ cắm
điện. Mạng PLC trong nhà không chỉ có thể kết nối đến mạng truy nhập sử dụng công
nghệ PLC mà còn có thể kết nối đến các mạng truy nhập khác.
Hình 4.48 Cấu trúc mạng PLC trong nhà
(b) Các phần tử của mạng PLC
Các phần tử mạng cơ bản
_Modem PLC: Là thiết bị đơn vị PLC, dùng để kết nối các thiết bị người sử
dụng (máy tính, điện thoại…) với đường dây điện. Modem PLC ngoài chức
năng chuyển đổi tín hiệu, còn có vai trò là bộ phối hợp trở kháng, bộ lọc tách tín
hiệu điện (tần số 50 hoặc 60Hz) và tín hiệu thông tin (tần số trên 9kHz). Modem
PLC không chỉ thực hiện tất cả các chức năng lớp vật lý (Physical layer) như
mã hoá, điều chế mà còn thực hiện các chức năng lớp Data link (MAC và LLC)
trong mô hình tham chiếu OSI .
_Trạm gốc PLC: Là nút trung tâm nắm quyền kiểm soát cả mạng PLC, làm nhiệm
vụ tập trung lưu lượng tải lên và tải xuống từ/tới tất cả các modem PLC trong cell
79
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
của nó. Ngoài ra nó còn có chức năng kết nối mạng truy nhập PLC với mạng
backbone.
Trạm lặp: Trong trường hợp khoảng cách giữa các modem PLC với trạm gốc là
rất xa, cần sử dụng các bộ lặp tín hiệu (repeater). Các bộ lặp này có chức năng khuếch
đại tín hiệu.
Hình 4.49 PLC sử dụng trạm lặp
PLC Gateway: Các thuê bao PLC có thể kết nối vào mạng truy nhập PLC
bằng hai cách:
_Kết nối trực tiếp.
Hình 4.50 Thuê bao PLC kết nối trực tiếp
_Kết nối gián tiếp qua PLC gateway.
80
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 4.51 Thuê bao PLC kết nối gián tiếp
1.13.2Kiểm tra đánh giá
Để đánh giá kết quả và kịch bản đã chính xác hay chưa chúng em sử dụng phần
mềm Wireshark chuyên bắt gói tin.
Lợi ích Wireshark đem lại đã giúp cho nó trở nên phổ biến như hiện nay. Nó có
thể đáp ứng nhu cầu của cả các nhà phân tích chuyên nghiệp và nghiệp dư và nó đưa ra
nhiều tính năng để thu hút mỗi đối tượng khác nhau.
Các giao thực được hỗ trợ bởi WireShark:
WireShark vượt trội về khả năng hỗ trợ các giao thức (khoảng 850 loại), từ
những loại phổ biến như TCP, IP đến những loại đặc biệt như là AppleTalk và Bit
Torrent và quan trọng Wireshark hỗ trợ hầu hết các loại hệ điều hành hiện nay.
Quá trình kiểm tra đánh giá được trình bày dưới đây:
81
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(a) Lệnh ping
Hình 4.52 Mô tả lệnh Ping qua wireshark
Gồm 2 gói tin echo request và echo reply , giao thức ICMP đã chính xác với lí thuyết.
82
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
(b) Thông lượng
Hình 4.53 Quá trình bắt tay 3 bước
Ở đây wireshark sẽ cung cấp cho ta những thông tin sau :
IP nguồn đến Ip đích 192.168.1.5 -192.168.1.10
Giao thức truyền tải ở đây là TCP
Port nguồn và port đích 54243 và dc(2001)
1 vài trường cơ bản của TCP header sẽ được giải thích ở dưới
Các trạng thái gói tin và kích thước phần data.
Quá trình đo thông lượng diễn ra như sau:
*Đầu tiên la quá trình bắt tay 3 bước khởi tạo 1 phiên kết nối :
- MC gửi tin TCP syn biến sequence number ( giúp gói tin truyền 1 cách tuần tự ) bằng 0
-STR gửi lại TCP syn ack xác nhận đã nhận gói TCP syn bằng gói tin có biến ack
number= 1( xác nhận đã nhận gói syn=0) và thêm tham số sequence number = 0.
83
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
-MC nhận được TCP syn ack cũng gửi tiếp cho STR 1 gói tin xác nhận đã nhận được
(ack = 1 , sequence=1 )
* Sau khi bắt tay 3 bước là các gói báo hiệu và các gói dữ liệu dùng cho việc đo thông
lượng:
Hình 4.54 Khảo sát thông lượng mạng Ethernet
-Trường hợp mạng băng thông rông ôn định diễn ra đúng với kịch bản không có lỗi xảy
ra trên đường truyền.
Chú ý: hàm Push đẩy dữ liệu ra ngoài bộ đệm cho các ứng dụng nhận
-Trường hợp mạng điện mà chúng ta khảo sát
84
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Hình 4.55 Khảo sát thông lượng đường điện
Dễ thấy có nhiều lỗi xảy ra trên đường truyền nhưng chương trình vẫn theo đúng kịch
bản:
TCP out of order: gói tin bị lỗi
TCP fast retransmission: cơ chế hoạt động như sau nếu người gửi nhận được 3 bản sao
ACK cùng giá trị ACK number thì TCP sender sẽ chắc chắn rằng segmet( đoạn) tiếp
theo sẽ bị drop (mất) và không đến theo trật tự và TCp sender sẽ gửi lại gói bị drop đó.
Kết luận : Chương trình xây dựng đúng với kịch bản đã đề ra đo đạc 1 quá trình gửi dữ
liệu xảy ra trên mạng.
Về công thức thông lượng sử dụng chúng em dựa trên các tài liệu tham khảo và các phần
mềm đo băng thông , thông lượng đều dựa trên cùng định nghĩa để xây dựng công thức.
85
Hệ thống đo các thông số mạng trên đường truyền băng hẹp điều khiển qua Internet
Tài liệu tham khảo
[1] Adam Dunkels, The uIP Embedded TCP/IP Stack, June 2006.
[2] www.hitex.co.uk, The Insider’s Guide To The STR91x ARM®9, June 2006.
[3] www.st.com, STR91x softwar library, May 2006.
[4] www.wikipedia.com
[5] www.msdn.com
[6] www.php.net
[7] www.codeproject.com
[8] www.congdongcviet.com
86