[课程背景]
    随着移动互联网和云计算的成熟,越来越多的网络通讯变成现实。这里的核心问题是“性能“和“安全“。越来越多的公司需要更高级别的网络开发人员,其要求不再仅限于编写网络应用程序,而是深入理解网络协议栈,进而改进网络通讯的性能,解决网络安全问题,开发新的网络通讯协议。典型的例子包括防火墙,高性能交换机,电信的各种通讯网关。潜在的就业机会位于像华为和大唐等大型网络设备研发公司。
    在此背景下,“高性能网络核心技术“这门课程,直接从网卡驱动和TCP/IP协议栈入手,解释Linux如何利用多核技术实现高性能网络通讯,并且介绍Linux为改进性能而设计的一系列接口(例如NAPI等)。本课程需要学员事先掌握网络应用程序编写的技能(socket编程),具备C语言开发能力。教学过程会大量联系实际代码,但是采用深入浅出的方式,引导学员理解现象后面的本质。
[培养目标]
初级目标:(驱动层,高性能网卡驱动)
  目标1:理解高性能网卡驱动和NAPI接口。
  目标2:理解队列层(queuing layer)的实现原理。
中级目标:(协议层,TCP/IP协议的实现)
  目标3:理解路由表的实现。
  目标4:理解IP和TCP层的实现。
  目标5:理解socket 层的实现。
高级目标:(整体改进,安全和性能)
  目标6:了解Linux TCP/IP协议栈安全机制的实现。
  目标7:了解改进协议栈性能的若干方法。
[基础要求]
  熟悉Linux操作系统
  熟悉Linux下网络协议等
  有Linux下C语言开发经验
[推荐教材]
  《亚嵌高性能网络核心技术培训班讲义》
[教师简介]
    王老师 清华大学博士,亚嵌金牌讲师,SkyEye嵌入式开源项目核心开发成员,对于嵌入式Linux的实现和应用有深入研究。精通嵌入式处理器ARM和 PowerPC,编写了ARM处理器的 bootloader,并将blob移植到标准的ARM开发环境中;精通嵌入式Linux操作系统移植,独立完成了将uClinux系统移植到飞利浦处理器上的芯片级移植工作;在清华大学参与过动态电压调节算法的研究与实现工作,分析各种调节算法的优劣和适用情况,并且给出实现方法;研究生期间参与过教研组课题搜索引擎的开发工作,实现了Web+Search+Database的三层体系结构;同时参与了《 Embedded Linux System Design and Development 》一书的翻译工作(待出版)。
[开课情况]
  开课时间:12学时;
  上课地点:亚嵌教育中科院校区
  学    费:2800元
            为保证教学质量,本班为小班授课,15人为满,报满15人即停止报名或顺延下一期,如您决定上课请
  及时填写报名表并办理报名手续。(报名时需携带本人身份证复印件1张及本人一寸照片3张)
   课程安排 课程内容
第一天上午
理论课
3学时
网络设备驱动程序开发
   1. 网卡设备介绍
       ◆ 常见网卡
       ◆ 网卡芯片所实现的协议层功能
       ◆ cs8900网卡芯片手册导读
       ◆ cs8900网卡硬件电路分析
   2. Linux网络驱动结构
       ◆ Linux TCPIP网络结构概述
       ◆ Linux网络设备结构
          ◇ 网络设备的注册
          ◇ net_device结构分析
          ◇ 网络设备驱动的发送,接收和中断处理
   3. 网卡设备介绍
       ◆ 常见网卡
       ◆ 网卡芯片所实现的协议层功能
       ◆ cs8900网卡芯片手册导读
       ◆ cs8900网卡硬件电路分析
第一天下午
实验课
3学时
【实验】
   1. 实验一:ifconfig等命令实验
   2. 实验二:字符设备的网卡驱动实现(上)
   3. 实验三:字符设备的网卡驱动实现(下)
   4. 实验四:驱动的测试程序编写运行
第二天上午
理论课
3学时

Linux下的TCP/IP协议栈——队列层(Queuing Layer)
   1. 基本数据结构和初始化
       ◆softnet data
       ◆ptype记录表
       ◆队列层初始化
   2. 数据包的接收
       ◆NAPI接口
       ◆netif rx接口

第二天下午
理论课
3学时

   3. 数据包的发送
       ◆队列规则(Queuing Discipline)
       ◆发送流程.