tcp congestion control

86
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

Upload: phan-van-huan

Post on 07-Aug-2015

250 views

Category:

Documents


9 download

DESCRIPTION

TCP Congestion Controls

TRANSCRIPT

Page 1: TCP Congestion Control

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

Page 2: TCP Congestion Control

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

Page 3: TCP Congestion Control

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

Page 4: TCP Congestion Control

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

Page 5: TCP Congestion Control

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

Page 6: TCP Congestion Control

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

Page 7: TCP Congestion Control

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

Page 8: TCP Congestion Control

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

Page 9: TCP Congestion Control

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

Page 10: TCP Congestion Control

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

Page 11: TCP Congestion Control

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

Page 12: TCP Congestion Control

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

Page 13: TCP Congestion Control

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

Page 14: TCP Congestion Control

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

Page 15: TCP Congestion Control

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

Page 16: TCP Congestion Control

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

Page 17: TCP Congestion Control

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

Page 18: TCP Congestion Control

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

Page 19: TCP Congestion Control

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

Page 20: TCP Congestion Control

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

Page 21: TCP Congestion Control

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

Page 22: TCP Congestion Control

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

Page 23: TCP Congestion Control

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

Page 24: TCP Congestion Control

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

Page 25: TCP Congestion Control

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

Page 26: TCP Congestion Control

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

Page 27: TCP Congestion Control

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

Page 28: TCP Congestion Control

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

Page 29: TCP Congestion Control

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

Page 30: TCP Congestion Control

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

Page 31: TCP Congestion Control

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

Page 32: TCP Congestion Control

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

Page 33: TCP Congestion Control

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

Page 34: TCP Congestion Control

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

Page 35: TCP Congestion Control

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

Page 36: TCP Congestion Control

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

Page 37: TCP Congestion Control

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

Page 38: TCP Congestion Control

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

Page 39: TCP Congestion Control

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

Page 40: TCP Congestion Control

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

Page 41: TCP Congestion Control

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

Page 42: TCP Congestion Control

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

Page 43: TCP Congestion Control

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

Page 44: TCP Congestion Control

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

Page 45: TCP Congestion Control

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

Page 46: TCP Congestion Control

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

Page 47: TCP Congestion Control

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

Page 48: TCP Congestion Control

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

Page 49: TCP Congestion Control

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

Page 50: TCP Congestion Control

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

Page 51: TCP Congestion Control

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

Page 52: TCP Congestion Control

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

Page 53: TCP Congestion Control

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

Page 54: TCP Congestion Control

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

Page 55: TCP Congestion Control

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

Page 56: TCP Congestion Control

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

Page 57: TCP Congestion Control

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

Page 58: TCP Congestion Control

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

Page 59: TCP Congestion Control

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

Page 60: TCP Congestion Control

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

Page 61: TCP Congestion Control

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

Page 62: TCP Congestion Control

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

Page 63: TCP Congestion Control

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

Page 64: TCP Congestion Control

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

Page 65: TCP Congestion Control

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

Page 66: TCP Congestion Control

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

Page 67: TCP Congestion Control

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

Page 68: TCP Congestion Control

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

Page 69: TCP Congestion Control

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

Page 70: TCP Congestion Control

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

Page 71: TCP Congestion Control

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

Page 72: TCP Congestion Control

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

Page 73: TCP Congestion Control

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

Page 74: TCP Congestion Control

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

Page 75: TCP Congestion Control

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

Page 76: TCP Congestion Control

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

Page 77: TCP Congestion Control

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

Page 78: TCP Congestion Control

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

Page 79: TCP Congestion Control

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

Page 80: TCP Congestion Control

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

Page 81: TCP Congestion Control

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

Page 82: TCP Congestion Control

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

Page 83: TCP Congestion Control

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

Page 84: TCP Congestion Control

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

Page 85: TCP Congestion Control

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

Page 86: TCP Congestion Control

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