Lời cảm ơn GVHD ThS Bùi Quốc Bảo ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ o0o BÁO CÁO THỰC TẬP TỐT NGHIỆP THỰC HÀNH VỚI HỆ ĐIỀU HÀNH CHO SWITCH CỦA A[.]
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
-o0o -BÁO CÁO THỰC TẬP TỐT NGHIỆP
THỰC HÀNH VỚI HỆ ĐIỀU HÀNH CHO SWITCH
CỦA ALCATEL LUCENT
GVHD: ThS Bùi Quốc Bảo SVTH: Nguyễn Khánh Hưng MSSV: 1913637
Đơn vị thực tập: Công ty TMA Solutions
TP HỒ CHÍ MINH, THÁNG 9 NĂM 2022
Trang 2LỜI CẢM ƠN
Sau thời gian thực tập và tìm hiểu đầy đủ các kiến thức tại nhà trường, đây là lần đầu tiên em được nhà trường sắp xếp cho đi thực tập thực tế bên ngoài Đây là thời
gian mà em được thực tập thực tế, trau dồi lại những kiến thức mà mình đã đuợc học,
chuẩn bị những kĩ năng cơ bản trước khi ra trường Trong đợt thực tập này em đã được
học tập rất nhiều những công việc thực tế bên ngoài So với quá trình học tập thì thực
tế bên ngoài có khá nhiều điều khác biệt, khi thực tập thì cũng có nhiều điều chưa làm
tốt, xong em cũng đã có được nhều kinh nghiệm quí báu về chuyên môn cũng như các
kĩ năng khác
Trong thời gian thực tập, được sự phân công của chị Nguyễn Tường Uyên, project manager của công ty TNHH giải pháp phần mềm Tường Minh(TMA Solutions
lab 3), em đã được thực tập với vị trí C/C++ developmer Qua đây, em xin gửi cảm ơn
đến thầy Bùi Quốc Bảo đã tạo điều kiện cho em được thực tập bên ngoài để cọ xát thực
tế Em cũng xin chân thành cảm ơn đến ban lãnh đạo công ty TMA Solutions đã tạo
điều kiện cho em trong quá trình thực tập tại công ty
Trong quá trình thực tập tại doanh nghiệp, được sự giúp đỡ của anh Nguyễn Khánh Vĩnh-Cán bộ hướng dẫn thực tập tại đơn vị, cùng với các anh chị trong công ty
TMA Solutions, em đã hoàn thành bài báo cáo thực tập của mình Tuy nhiên với kiến
thức còn hạn chế và thời gian tìm hiểu công nghệ và ngôn ngữ mới chưa nhiều nên bài
báo cáo không thể tránh khỏi sai sót Vì vậy, em rất mong nhận được sự góp ý của Quý
Thầy Cô để em khắc phục được những nhược điểm và ngày càng hoàn thiện hơn
Em xin chân thành cảm ơn thầy Bùi Quốc Bảo và các anh chị trong công ty đã giúp đỡ em trong thời gian qua Chúc thầy và các anh chị luôn mạnh khỏe và thành đạt,
chúc công ty luôn phát triển, thành công rực rỡ trong tương lai
Tp Hồ Chí Minh, ngày 19 tháng 9 năm 2022
Nguyễn Khánh Hưng
Trang 4MỤC LỤC
I GIỚI THIỆU 1
1.1 Giới thiệu về công ty TMA Solutions 1
1.1.1 Quá trình hình thành và phát triển của công ty TMA Solutions 1
1.1.2 Sơ đồ tổ chức công ty 3
1.2 Nhiệm vụ được giao thực tập 4
1.3 Thời gian và lịch trình thực tập 4
II NỘI DUNG THỰC TẬP 6
2.1 Tìm hiểu về hệ điều hành Linux và ôn tập các kiến thức về C/C++ 6
2.1.1 Hệ điều hành Linux 6
2.1.2 Các kiến thức về C 7
2.2 Tạo chatroom bằng socket và multithreading Error! Bookmark not defined.10 2.2.1 Yêu cầu đặt ra 10
2.2.2 Giải thuật thiết kế 10
2.2.3 Kết quả mô phỏng 11
2.3 Tìm hiểu và nghiên cứu về OmniSwitch AOS Release 8……… 13
2.3.1 Tổng quan về thiết bị Switch Alcatel-Lucent……… 13
2.3.2 Kiến trúc phần mềm……… 15
2.3.3 Tổng quan về Port-Mirroring và Port-Monitoring 16
2.3.4 Những lợi ích mà Switch Alcatel-Lucent đem lại 19
III TỔNG KẾT CÔNG VIỆC THỰC TẬP 21
3.1 Kết quả công việc thực tập 21
3.2 Kinh nghiệm học được sau khi thực tập 21
IV TÀI LIỆU THAM KHẢO 23
V PHỤ LỤC 24
Trang 6DANH SÁCH HÌNH MINH HỌA
Hình 1.1 Sơ đồ tổ chức công ty TMA Solutions Error! Bookmark not defined.3
Hình 2.1 Tiến trình single-thread và multi-thread .7
Hình 2.2 Mô hình server client TCP 9
Hình 2.3 Khởi động server .11
Hình 2.4 Khởi động client (client1, client2, client 3) 11
Hình 2.5 Server sau khi các client kết nối .11
Hình 2.6 Chat public trên toàn server 12
Hình 2.7 Chat private (giữa client1 và client2) 13
Hình 2.8 Alcatel Lucent switch .14
Hình 2.9 Kiến trúc phần mềm cho tính năng Foobar 15
Hình 2.10 Bidirectional port-mirroring 17
Hình 2.11 Remote port-mirroring 18
Hình 2.12 Port-monitoring 19
Trang 7DANH SÁCH BẢNG SỐ LIỆU
Bảng 1.1 Lịch trình thực tập 4
Bảng 2.1 Kiểu dữ liệu POSIX Thread 8
Bảng 2.2 Các thuật ngữ 15
Bảng 2.3 Định nghĩa port-mirroring và port-monitoring 16
Trang 8I GIỚI THIỆU
1.1 Giới thiệu về công ty TMA Solutions
1.1.1 Quá trình hình thành và phát triển của công ty TMA Solutions
TMA được thành lập năm 1997 và nhanh chóng trở thành công ty phần mềm hàng đầu Việt Nam với tốc độ tăng trưởng trung bình hàng năm là hơn 50% Mục tiêu của TMA là trở thành tập đoàn công nghệ hàng đầu và góp phần đưa tên Việt Nam vào bản đồ gia công phần mềm thế giới
TMA Solutions là công ty chuyên cung cấp các:
• Phần mềm nhúng và di động: VxWorks, RT-Linux, Symbian, Windows Mobile, J2ME, iPhone, SMS, WML
• Phần mềm ứng dụng cho doanh nghiệp: dựa trên công nghệ Microsoft
• Kiểm tra toàn bộ hệ thống
• Kiểm soát chất lượng
• Giải pháp kiểm thử phần mềm
Trang 9• Tự động hóa Testing Đội ngũ kỹ sư:
• Hơn 2000 kỹ sư
• 90% có bằng đại học, 10% có bằng thạc sĩ hoặc tiến sĩ
• Hơn 1/3 kỹ sư có ít nhất 5 năm kinh nghiệm làm việc
• 40% kỹ sư có kinh nghiệm học tập và làm việc ở nước ngoài
• Tiếng Anh là ngôn ngữ chính giao tiếp trong công việc Những ngon ngữ khác: tiếng Nhật, tiếng Pháp, tiếng Hoa
Quy trình chất lượng:
• ISO 9001:2000
• TL 9000
• CMMi-Level 3 Công ty TMA tự hào là:
• Công ty phần mềm có quy mô lớn tại Tp.Hồ Chí Minh và Việt Nam với trên 2000 kỹ sư
• 6 năm liền đạt huy chương vàng xuất khẩu phần mềm
• Công ty phần mềm viễn thông hàng đầu Đông Nam Á
• Được các công ty hàng đầu thế giới tin tưởng và hợp tác lâu dài
• Được nhiều đài truyền hình và báo chí quốc tế giới thiệu: CNN(Mỹ), NHK(Nhật), Global (Brazil), Nation (Thái Lan) để minh chứng cho sự phát triển của ngành phần mềm của Việt Nam
Trang 101.1.2 Sơ đồ tổ chức công ty
Hình 1.1- Sơ đồ tổ chức công ty TMA Solutions
- Board of Advisors: Cốvấn cho công ty
- CEO: Giám đốc điều hành của công ty
- Delivery Centers: Trung tâm chuyển giao sản phẩm cho khách hàng
- TMA Mobile Solutions (TMS): Phát triển ứng dụng di động, thử nghiệm cũng như tạo ra các dịch vụ điện thoại di động, giá trị gia tăng và các ứng dụng cho các nhà khai thác di động, cung cấp nội dung và doanh nghiệp
- ICT R&D Center (iRDC -Information and Communications Technology Research & Development Center): Trung tâm nghiên cứu và phát triển công nghệ thông tin và truyền thông
- TMA Training Center (TTC): Trung tâm đào tạo nhân lực
- Student Development Center (SDC): Có nhiệm vụ liên kết với sinh viên, nhận sinh viên thực tập tại công ty nhằm thu hút và bồi dưỡng nhân tài
Trang 11- Business Development: Tăng cường quan hệ với khách hàng hiện tại cũng như tạo thêm các mối quan hệ với các khách hàng khác.
1.2 Nhiệm vụ được giao thực tập
Nội dung 1: Tìm hiểu hệ điều hành Linux và ôn tập các kiến thức về C/C++ Nội dung 2: Tạo chatroom sử dụng socket và multi-threading
Nội dung 3: Tìm hiểu và nghiên cứu về OmniSwitch AOS Release 8 CLI
1.3 Thời gian và lịch trình thực tập
Thời gian thực tập từ 3/7/2022 – 3/10/2022
Lịch trình thực tập:
1 1 Self-study Security Awareness online course and take
a test
3/7/2022
- 7/7/2022
2 Install MobaXtern and TortoiseSVN
3 Introducing MobaXterm, readed document Introduce Linux
4 Use commands basic on MobaXterm
- 15/7/2022
2 Readed and executed the examples in the document Beginning Linux Programming (Shell programming, the Linux environment, data management, POSIX
Threads, )
- 22/7/2022
2 Joined the training session of TMA Agile Development Process
3 Researched Semaphores, Shared Memory and Message Queues
4 1 Researched Sockets and programming GNOME using
GTK+
25/7/2022
- 29/7/2022
2 Researched programming KDE using Qt
- 5/8/2022
2 Joined the training session of TMA Agile Development
7 1 Created chatroom using socket programming and
multithreading in C
15/8/2022
- 19/8/2022
2 Researched AoSswitch
Trang 128 1 Readed and researched OmniSwitch AOS Release
8CLI Reference Guide
22/8/2022
- 26/8/2022
2 Researched Vlan Management and UDLD commands
3 Researched Diagnosing Switch Problems
- 31/8/2022
2 Researched Configuring IP Multicast Switching
- 9/9/2022
2 Researched Configuring VLAN Stacking
3 Readed Managing Authentication Servers and Managing Policy Servers
11 1 Readed Managing Authentication Servers and
Managing Policy Servers
12/9/2022
- 16/9/2022
2.Reseached Software Functional Specification Port Mirroring and Monitoring
Bảng 1.1 Lịch trình thực tập
Trang 13II NỘI DUNG THỰC TẬP
2.1 Tìm hiểu hệ điều hành Linux và ôn tập các kiến thức về C/C++
2.1.1 Hệ điều hành Linux
Linux là một hệ điều hành máy tính được phát triển từ năm 1991 dựa trên
hệ điều hành Unix và bằng viết bằng ngôn ngữ C
Do Linux được phát hành miễn phí và có nhiều ưu điểm vượt trội nên Linux vẫn giữ được một chỗ đứng vững chắc trong lòng người dùng trước các hệ điều hành lớn như Windows hay MacOS
- Cấu trúc hệ điều hành Linux + Kernel: Hay được gọi là phần Nhân vì đây là phần quan trọng nhất trong máy tính bởi chứa đựng các module hay các thư viện để quản lý, giao tiếp giữa phần cứng máy tính và các ứng dụng
+ Shell: Shell là phần có chức năng thực thi các lệnh (command) từ người dùng hoặc từ các ứng dụng yêu cầu, chuyển đến cho Kernel xử lý Shell chính là cầu nối để kết nối Kernel và Application, phiên dịch các lệnh từ Application gửi đến Kernel để thực thi
Có các loại Shell như sau: sh (the Bourne Shell), bash (Bourne-again shell), csh (C shell), ash (Almquist shell), tsh (TENEX C shell), zsh (Z shell)
+ Application: Đây là phần quen thuộc với chúng ta nhất, phần để người
dùng cài đặt ứng dụng, chạy ứng dụng để người dùng có thể phục vụ cho nhu cầu của mình
- Công dụng của hệ điều hành LinuxTương tự như các hệ điều hành khác, Linux cũng cấp môi trường trung gian
để người dùng có thể giao tiếp với phần cứng máy tính, thực hiện các công việc của mình Bên cạnh đó, nhờ ứng dụng mã nguồn mở mà Linux đem lại nhiều
sự thoải mái hơn cho người dùng, đặc biệt các lập trình viên, nhà phát triển
- Ưu và nhược điểm của hệ điều hành Linux + Ưu điểm
• Miễn phí và được hỗ trợ các ứng dụng văn phòng OpenOffice và LibreOffice
Trang 14a POSIX Thread và Mutex
Thread là một cơ chế cho phép một ứng dụng thực thi đồng thời nhiều công việc (multi-task) Thread là một thành phần của tiến trình, một tiến trình có thể chứa một hoặc nhiều thread Hệ điều hành Unix quan niệm rằng mỗi tiến trình khi bắt đầu chạy luôn có một thread chính (main thread); nếu không có thread nào được tạo thêm thì tiến trình đó được gọi là đơn luồng (single-thread), ngược lại nếu có thêm thread thì được gọi là đa luồng (multi-thread) Các thread trong tiến trình chia sẻ các vùng nhớ toàn cục (global memory) của tiến trình bao gồm initialized data, uninitialized data và vùng nhớ heap
Hình 2.1 Tiến trình single-thread và multi-thread Quay lại thời điểm sơ khai của thread, khi đó mỗi nhà cung cấp phần cứng triển khai thread và cung cấp các API để lập trình thread của riêng mình Điều này gây khó khăn cho các developer khi phải học nhiều phiên bản thread và viết
1 chương trình thread chạy đa nền tảng phần cứng Trước nhu cầu xây dựng
Trang 15một giao diện lập trình thread chung, tiêu chuẩn POSIX Thread (pthread) cung cấp các giao diện lập trình thread trên ngôn ngữ C/C++ đã ra đời
- Pthread data type
pthread_t Số định danh của thread (threadID)
pthread_mutexattr_ Thuộc tính của Mutex
pthread_condattr_t Thuộc tính của biến điều kiện
pthread_key_t Khóa cho dữ liệu của thread
pthread_attr_t Thuộc tính của thread
Bảng 2.1 Kiểu dữ liệu POSIX Thread
Kỹ thuật mutual exclusion (gọi tắt là mutex) dùng để bảo vệ tài nguyên chia
sẻ (shared variable) mà chủ yếu là biến chia sẻ (shared variable) giữa các thread
Có thể hình dung cách hoạt động của mutex giống như là một cái khóa: Mỗi vùng critical section sẽ được bảo vệ trong phòng và có một cái khóa ở cửa, một thread trước khi chạy vào critical section sẽ khóa lại rồi vào làm những gì mình muốn làm; sau khi xong việc nó sẽ mở khóa để cho các thread khác truy cập Các thread khác nếu thấy cửa đang khóa thì phải chờ (đi vào trạng thái blocked) cho đến khi thread trước mở khóa; sau đó nó tiếp tục khóa lại rồi chạy vào critical section và mở khóa ra sau khi xong việc Cần lưu rằng chỉ có thread nào khóa mutex thì mới mở được mutex đó Như vậy, việc thực hiện đồng bộ thread để bảo vệ tài nguyên chia sẻ gồm 3 bước rõ ràng như sau:
• Khóa mutex trước khi vào critical section
• Thực thi code trong critical section
• Nhả khóa mutex sau khi kết thúc critical section Lock và Unlock là một cơ chế rất đơn giản và hiệu quả để bảo vệ biến toàn cục được sử dụng không chỉ trong lập trình multi-thread mà còn rất nhiều tình huống khai thác chung tài nguyên chia sẻ như đa tiến trình, hoặc đọc/ghi vào cơ
sở dữ liệu Khi một thread gọi hàm yêu cầu khóa để vào critical section mà có một thread khác đang khóa, nó sẽ chờ cho đến khi thread kia mở khóa rồi chiếm
Trang 16quyền Trạng thái một thread khóa một mutex mà rơi vào trạng thái chờ không thể giải thoát được gọi là deadlock
b Lập trình socket, giao tiếp client và server bằng ngôn ngữ C
Socket là một giao diện lập trình (API – Application Program Interface) ứng dụng mạng thông qua giao diện này có thể lập trình điều khiển việc truyền thông giữa 2 máy sử dụng các giao thức mức thấp như TCP, UDP… , Có thể tưởng tượng nó như một thiết bị truyền thông 2 chiều tương tự như tệp tin, chúng ta gửi/nhận dữ liệu giữa 2 máy, tương tự như việc đọc ghi trên tệp tin
Hình 2.2 Mô mình server client TCP
- Cấu trúc socket:
+ Socket được định nghĩa trong hệ điều hành bằng một cấu trúc, được xem như điểm nối để hai process giao tiếp với nhau
+ Cấu trúc socket gồm 5 field được mô tả:
• Family: xác định protocol group
• Type: xác loại socket, stream, datagram hay raw socket
Trang 17• Protocol: là field thường dán giá trị bằng 0
• Local socket address và Remote socket address: là địa chỉ socket của process cục bộ và từ xa
2.2 Tạo chatroom bằng socket và multithreading
2.2.1 Yêu cầu đặt ra
Thiết kế multi-roomchat với các yêu cầu:
- Tạo một server-side chứa một vài method khi mà user subcribes, unsubscribe và gửi data đến client
- Tạo client-side để đăng ký server-side và một số method connection/disconnection với server để gửi và nhận dữ liệu
- Các client (với địa chỉ IP) sẽ kết nối với nhau bằng ID roomchat (chế độ private) hoặc kết nối với toàn bộ các client đang kết nối với server (chế độ public)
- Ở chế độ private: client chủ có thể mute hoặc kích client khách nếu muốn… 2.2.2 Giải thuật thiết kế
- Lớp TcpServer: hỗ trợ tạo một server, lắng nghe, quản lý và phục vụ các kết nối (gửi và nhận dữ liệu)
- Lớp TcpSocket: tạo kết nối socket, quản lý các kết nối, gửi /nhận dữ liệu từ socket được thiết lập
dữ liệu đến tất cả client đã đăng kí Bằng cách này server và clienr đều biết được trạng thái của data để có thể dễ dàng đồng bộ khi xuất hiện sự thay đổi
Trang 182.2.3 Kết quả mô phỏng
Hình 2.3 Khởi động server
Hình 2.4 Khởi động client (client1, client2, client3)
Hình 2.5 Server sau khi các client kết nối