From 37fae52b9fb693ba1f4c62e850e2be263abcdcf0 Mon Sep 17 00:00:00 2001 From: XDL Date: Thu, 4 Mar 2021 18:03:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E7=AC=AC5=E5=8D=95?= =?UTF-8?q?=E5=85=83=E5=92=8C=E9=99=84=E4=BB=B6=E9=83=A8=E5=88=86=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E7=9A=84=E5=A4=A7=E5=B0=8F=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=86=E4=B8=AA=E5=88=AB=E6=96=87=E5=AD=97=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E6=9B=B4=E5=A5=BD=E6=8E=92=E7=89=88=E3=80=82=E5=8F=A6=E6=9C=89?= =?UTF-8?q?=E5=87=A0=E4=B8=AA=E6=BC=8F=E5=AD=97=E5=92=8C=E7=BC=BA=E5=AD=97?= =?UTF-8?q?=E5=B7=B2=E4=BF=AE=E6=AD=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/appendix/fast.tex | 36 +++++++++++------------ data/ch_router-openbox/preface.tex | 2 +- data/ch_router-openbox/sec_networking.tex | 2 +- data/ch_router-openbox/sec_router.tex | 7 ++--- data/ch_router-openbox/sec_switch.tex | 2 +- data/ch_sdn-openbox/sec_sdn.tex | 28 +++++++----------- data/ch_sdn-openbox/sec_topo.tex | 2 +- 7 files changed, 35 insertions(+), 44 deletions(-) diff --git a/data/appendix/fast.tex b/data/appendix/fast.tex index 82476cd..64cea43 100644 --- a/data/appendix/fast.tex +++ b/data/appendix/fast.tex @@ -11,21 +11,21 @@ FAST开源项目的诞生与发展深受斯坦福大学Nick Mckeown教授在NetF \begin{enumerate} \item \textbf{FPGA:}FAST实现的核心载体是可编程FPGA,是用Verilog语言编程实现的硬件功能。FPGA的现场可编程特性为实现用户创新的网络架构、算法、实现机制提供了极大的灵活性,而且可以获得较高的性能,支持在实际网络中部署运行; -\item \textbf{Accelerated:}PGA实现的不是网络处理的全部功能,而是部分需要硬件加速的分组处理功能。FAST的核心是一套软硬件协同的分组处理模型,用户可以通过Verilog编程实现的硬件功能的加速,也可以在现有的FAST硬件平台的CPU上编程实现特定的分组处理功能; +\item \textbf{Accelerated:}FPGA实现的不是网络处理的全部功能,而是部分需要硬件加速的分组处理功能。FAST的核心是一套软硬件协同的分组处理模型,用户可以通过Verilog编程实现的硬件功能的加速,也可以在现有的FAST硬件平台的CPU上编程实现特定的分组处理功能; -\item \textbf{Switching:}AST面向的领域是网络交换领域,支持各种新型交换技术,如软件定义网络(SDN)、时间敏感网络(TSN)、网络安全一体化网络甚至是智能网卡的实现研究,而不是支持以人工智能(AI)为代表的应用加速; +\item \textbf{Switching:}FAST面向的领域是网络交换领域,支持各种新型交换技术,如软件定义网络(SDN)、时间敏感网络(TSN)、网络安全一体化网络甚至是智能网卡的实现研究,而不是支持以人工智能(AI)为代表的应用加速; \item \textbf{plaTform:}与目前其他开源项目一样,FAST提供的是一个硬件平台无关的,支持用户通过软硬件编程实现其特定分组处理功能的环境。FAST通过提供标准的规范、开源的平台软硬件实现代码和demo应用,支持用户基于平台进行创新的应用开发和设备原型的快速实现。 \end{enumerate} \subsection{FAST架构} -FAST平台的架构是一种通用多核CPU加FPGA形态的网络处理架构。通常对处理性能要求较高的分组处理功能由FPGA实现,对处理性能要求较低,实现复杂的功能可由CPU实现。用户既可通过扩展FPGA硬件流水线功能也可以通过CPU上编程实现对分组交换功能的扩充。该平台架构主要由硬件逻辑和软件逻辑两部分组成,实现软硬件耦合通信与支持软硬件可编程的网络创新实验系统。其中硬件包括平台相关的数据IO和FAST硬件逻辑。软件部分包括通用操作系统与FAST软件逻辑。FAST软件逻辑包括软件开发环境和UA程序。该平台,不仅支持FAST的UA编程开发,同时也支持通用Socket APP的开发与运行。 +FAST平台的架构是一种通用多核CPU加FPGA形态的网络处理架构。通常对处理性能要求较高的分组处理功能由FPGA实现,对处理性能要求较低,实现复杂的功能可由CPU实现。用户既可通过扩展FPGA硬件流水线功能也可以通过CPU上编程实现对分组交换功能的扩充。该平台架构主要由硬件逻辑和软件逻辑两部分组成,实现软硬件耦合通信与支持软硬件可编程的网络创新实验系统。其中硬件包括平台相关的数据IO和FAST硬件逻辑。软件部分包括通用操作系统与FAST软件逻辑。FAST软件逻辑包括软件开发环境和UA程序。该平台不仅支持FAST的UA编程开发,同时也支持通用Socket APP的开发与运行。 FAST交换平台的实现不依赖特定的CPU与FPGA型号,但为了更好地提供交换功能扩充能力,保证软硬件协同分组处理的基本性能,FAST的交换平台必须具有如下两个特点: \begin{enumerate} \item \textbf{所有网络接口均与FPGA相连;} -进入交换平台的分组首先送FPGA处理,离开交换平台的分组最后由FPGA发出。这样有两个优点。一是交换平台可精确获取分组接收时间以及控制发送时间,实现类似1588透明时钟的控制,支持时间敏感交换;二是平台可以支持各种新型的分组格式,支持内容中心网络(ICN)等非IP交换。 +进入交换平台的分组首先送FPGA处理,离开交换平台的分组最后由FPGA发出。这样有两个优点。一是交换平台可精确获取分组接收时间以及控制发送时间,实现类似1588透明时钟的控制,支持时间敏感交换;二是平台可以支持各种新型的分组格式,支持内容中心网络等非IP交换。 \item \textbf{FPGA通过高带宽总线与CPU连接。} 与传统交换芯片通过低带宽的SPI总线、以太网或是单Lane的PCIE总线与控制CPU连接不同,FAST平台中FPGA通过高带宽的总线与CPU连接,提升软硬件协同分组处理的性能,支持通过CPU软件对数据平面处理功能进行扩展。 @@ -73,14 +73,14 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU \begin{figure}[!ht] \centering -\includegraphics[width=10cm]{f01} +\includegraphics[width=7.5cm]{f01} \caption{OpenBox-S4设备前端图} \label{fig:a:ob_f01} \end{figure} \begin{figure}[!ht] \centering -\includegraphics[width=10cm]{f02} +\includegraphics[width=7.5cm]{f02} \caption{OpenBox-S4设备后端图} \label{fig:a:ob_f02} \end{figure} @@ -96,10 +96,10 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU 设备使用标准USB口和Micro USB接口的线作为串口连接线,标准USB口连接在用户操作设备上,Mirco USB接口与设备对应串口连接。 \item 打开并配置串口工具。 -在用户操作设备上打开串口工具,配置好相应串口参数后打开串口,即可通过串口管理设备。以putty为例,其配置参数如图\ref{fig:a:ob_f11}所示: +在用户操作设备上打开串口工具,选择串口模式,配置串口参数后点击打开按钮,即可通过串口管理设备。以putty为例,其配置参数如图\ref{fig:a:ob_f11}所示: \begin{figure}[!ht] \centering -\includegraphics[width=7cm]{f11} +\includegraphics[width=8cm]{f11} \caption{串口工具参数配置图} \label{fig:a:ob_f11} \end{figure} @@ -115,7 +115,7 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU 通过网连接连接设备,必须确保用户操作主机与设备管理网口在相同的网段,如不记得管理网口的IP,可以通过串口方式查看。设备默认网段为192.168.50.0网段,故用户操作主机的IP地址配置信息参考如图\ref{fig:a:ob_f12}所示: \begin{figure}[!ht] \centering -\includegraphics[width=10cm]{f12} +\includegraphics[width=9cm]{f12} \caption{网口连接的主机IP配置图} \label{fig:a:ob_f12} \end{figure} @@ -146,7 +146,7 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU \begin{figure}[!ht] \centering -\includegraphics[width=10cm]{f17} +\includegraphics[width=10.2cm]{f17} \caption{二端主机PING通结果图(二层交换)} \label{fig:a:ob_f17} \end{figure} @@ -163,11 +163,11 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU \item OpenBox-S4上运行三层路由程序 - 用串口或网线连接用户操作主机与设备,通过串口登录界面或网络登录界面控制设备,在界面终端输入命令:l3router,如图\ref{fig:a:ob_f19}所示: + 用串口或网线登录设备,在控制界面终端输入命令:l3router,如图\ref{fig:a:ob_f19}所示: \begin{figure}[!ht] \centering -\includegraphics[width=10cm]{f19} +\includegraphics[width=10.2cm]{f19} \caption{运行三层路由程序} \label{fig:a:ob_f19} \end{figure} @@ -178,7 +178,7 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU \begin{figure}[!ht] \centering -\includegraphics[width=9cm]{f20} +\includegraphics[width=10cm]{f20} \caption{端主机PING通结果图(三层路由)} \label{fig:a:ob_f20} \end{figure} @@ -190,8 +190,8 @@ OpenBox-S4设备是一款严格遵照FAST原理与架构设计的通用多核CPU \begin{enumerate} \item 搭建SDN交换拓扑 - -SDN交换实验的两台测试主机可以随意连接到设备的数据接口位置(网口0到网口4均可),SDN控制器主机的网线一定要连接在设备的管理网口(MGMT)。控制器主机和测试主机的IP地址配置及连接拓扑如图\ref{fig:c:sdn-ob_sdn-topo}所示: +测试主机可以随意连接到设备的数据接口位置, +SDN控制器主机连接在设备的管理网口(MGMT)。控制器主机和测试主机的IP地址配置及连接拓扑如图\ref{fig:c:sdn-ob_sdn-topo}所示: \item 在SDN控制器主机中启动SDN控制器 @@ -199,7 +199,7 @@ SDN交换实验的两台测试主机可以随意连接到设备的数据接口 \begin{figure}[!ht] \centering -\includegraphics[width=8cm]{f22} +\includegraphics[width=10cm]{f22} \caption{启动floodlight控制器} \label{fig:a:ob_f22} \end{figure} @@ -210,7 +210,7 @@ SDN交换实验的两台测试主机可以随意连接到设备的数据接口 \begin{figure}[!ht] \centering -\includegraphics[width=8cm]{f23} +\includegraphics[width=10cm]{f23} \caption{运行SDN交换程序} \label{fig:a:ob_f23} \end{figure} @@ -232,7 +232,7 @@ SDN交换实验的两台测试主机可以随意连接到设备的数据接口 \begin{figure}[!ht] \centering -\includegraphics[width=7cm]{f25} +\includegraphics[width=10cm]{f25} \caption{端主机PING通结果图(SDN交换)} \label{fig:a:ob_f25} \end{figure} diff --git a/data/ch_router-openbox/preface.tex b/data/ch_router-openbox/preface.tex index aa7e684..c54442c 100644 --- a/data/ch_router-openbox/preface.tex +++ b/data/ch_router-openbox/preface.tex @@ -12,5 +12,5 @@ 平台的软硬件逻辑代码开源免费,支持用户二次开发。 其基本使用方法见附录\ref{app:openbox}:《FAST平台介绍与操作说明手册》。 本实验指导书中选择了OpenBox-S4作为可编程网络设备实例,文档中简称为“可编程网络平台”, -在实验图中的图标记为为“FAST”,节点名称记为“OpenBox-S4”。 +在实验图中的图标记为“FAST”,节点名称记为“OpenBox-S4”。 diff --git a/data/ch_router-openbox/sec_networking.tex b/data/ch_router-openbox/sec_networking.tex index 17035ba..21098ed 100644 --- a/data/ch_router-openbox/sec_networking.tex +++ b/data/ch_router-openbox/sec_networking.tex @@ -38,7 +38,7 @@ \label{subsec:c:router-ob:s:networking_requirement} \begin{itemize} - \item 可编程网络平台两个,交换测试主机两台,网络配置与连接拓扑如 + \item 可编程网络平台两个,测试主机两台,网络配置与连接拓扑如 图\ref{fig:c:router-ob_networking-topo}所示; \item 串口线两根,网线三根; \item 学生自研路由器程序。 diff --git a/data/ch_router-openbox/sec_router.tex b/data/ch_router-openbox/sec_router.tex index b62bfba..dbfc1da 100644 --- a/data/ch_router-openbox/sec_router.tex +++ b/data/ch_router-openbox/sec_router.tex @@ -47,7 +47,7 @@ \label{subsec:c:router-ob:s:router_requirement} \begin{itemize} - \item 可编程网络平台一个,路由测试主机两台,IP配置及连接拓扑如图\ref{fig:c:router-ob_router-topo}所示; + \item 可编程网络平台一个,测试主机两台,IP配置及连接拓扑如图\ref{fig:c:router-ob_router-topo}所示; \item 串口线一根,网线两根; \item 三层路由器框架源代码(开发环境与编译工具系统自带)。 \end{itemize} @@ -151,7 +151,7 @@ //查不到MAC,入队后学习MAC Data Plane->port[0],NEIGH[1],IN QUEUE[1] Data Plane->Active Thread on Port[0],QUEUE[1] len:2 - //查询到MAC,直接封闭二层数据后发送 + //查询到MAC,直接封装二层数据后发送 Data Plane->port[2],NEIGH[0],DMAC->B8:27:EB:C1:D1:39 Pack L2 on Port[2] pkt_send_normal->0xb2c00468,outport:2,len:130 @@ -200,8 +200,7 @@ \begin{enumerate} \item 系统内核的FIB表是如何生成的?生成FIB表的路由协议有哪些,各适应哪些环境? \item 什么是静态路由表?什么是动态路由表? - \item FIB表查表不命中如何处理? - FIB表指示的下一跳IP的MAC地址不存在如何处理当前分组数据? + \item FIB表查表不命中如何处理?下一跳IP的MAC地址不存在如何处理当前分组数据? \item 本程序采用单核单线程处理多个端口的数据转发,如何改成多核多线程方式? \end{enumerate} diff --git a/data/ch_router-openbox/sec_switch.tex b/data/ch_router-openbox/sec_switch.tex index 8edf06b..3812eaf 100644 --- a/data/ch_router-openbox/sec_switch.tex +++ b/data/ch_router-openbox/sec_switch.tex @@ -170,7 +170,7 @@ \begin{itemize} \item 其中,端口接收到报文时,终端会显示输入端口及源目的MAC地址内容; \begin{code}[text] - inport:0,dstmid:129,len:102,dmac:33:33:00:00:00:02, smac:B8:27:EB:04:FC:F0 + inport:0,dstmid:129,len:102,dmac:33:33:00:00:00:02,smac:B8:27:EB:04:FC:F0 \end{code} \item 然后进入源MAC学习阶段,并更新MAC时间; \begin{code}[text] diff --git a/data/ch_sdn-openbox/sec_sdn.tex b/data/ch_sdn-openbox/sec_sdn.tex index d738c3e..a592b15 100644 --- a/data/ch_sdn-openbox/sec_sdn.tex +++ b/data/ch_sdn-openbox/sec_sdn.tex @@ -50,7 +50,7 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \item \textbf{建立连接:}OpenFlow协议代理运行时, 交换机首先和控制器建立连接, - 并发送OFP\_HELLO消息用以确认双方都支持的OFP协议版本信息; + 并发送OFP\_HELLO消息用以确认双方都支持的OpenFlow协议版本信息; \item \textbf{查询或设置数据:} 控制器通过OpenFlow的具体消息协议查询或设置交换机其他相关功能的数据, 如OFPT\_HELLO、OFPT\_ECHO\_REQUEST、OFPT\_PACKET\_IN、OFPMP\_DESC、 @@ -97,7 +97,6 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \subsubsection{编译运行SDN交换机,验证交换机基本功能;} 请参考附录\ref{app:openbox}:《FAST平台介绍与操作说明手册》完成。 - \subsubsection{基于SDN交换机源码,选择实现自己的协议功能;} \begin{enumerate} @@ -134,7 +133,6 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 root@HNXS-FAST:/home/hnxs/sdn# \end{code} \end{enumerate} - \subsubsection{运行修改后的交换机,再次验证SDN交换机的功能;} \begin{enumerate} \item 运行SDN交换机,交换机正常工作后输出如下: @@ -145,36 +143,30 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 fastU->REG Version:20180827,OpenBox HW Version:2030200722 port_name:eth0,port:0 port_name:obx0,port:0 - xofp uses obsolete (PF_INET,SOCK_PACKET) port_name:obx1,port:1 port_name:obx2,port:2 port_name:obx3,port:3 fastU->librule version:20181015,Default Action:0x40000080 xofp)Connect to SDN Controller [ 192.168.1.3:6653 ] OK! 0_nms_of13)DELETE ALL RULE! - eth0 ADD! - obx0 ADD! - obx1 ADD! - obx2 ADD! obx0(0x29008) Start... obx2(0x2e100) Start... obx3(0x30958) Start... obx1(0x2b890) Start... - obx3 ADD! \end{code} \item 查看控制器界面基本信息,在浏览器打开控制器WEB网站http://192.168.1.3/ui/index.html,控制界面如图\ref{fig:c:sdn-ob_sdn-main}所示: \begin{figure}[ht!] \centering - \includegraphics[width=9cm]{sdn-main} + \includegraphics[width=11cm]{sdn-main} \caption{SDN主界面信息} \label{fig:c:sdn-ob_sdn-main} \end{figure} \item 查看连接交换机信息,如图\ref{fig:c:sdn-ob_sdn-switch}所示: - \begin{figure}[htp!] + \begin{figure}[H] \centering - \includegraphics[width=9cm]{sdn-switch} + \includegraphics[width=11cm]{sdn-switch} \caption{SDN交换机信息} \label{fig:c:sdn-ob_sdn-switch} \end{figure} @@ -182,15 +174,15 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \item 查看连接测试主机信息,SDN主机及连接信息如图\ref{fig:c:sdn-ob_sdn-host}所示: \begin{figure}[htp!] \centering - \includegraphics[width=9cm]{sdn-host} + \includegraphics[width=12cm]{sdn-host} \caption{SDN主机信息} \label{fig:c:sdn-ob_sdn-host} \end{figure} - \item 查看端口状态与计数信息与流表信息,端口与流表信息如图\ref{fig:c:sdn-ob_port-flowtable}所示: + \item 查看端口状态与计数信息与流表信息,端口与流表信息如图\ref{fig:c:sdn-ob_port-flowtable}所示。交换机流表详细信息查询方法见下一小节描述。 \begin{figure}[htp!] \centering - \includegraphics[width=9cm]{port-flowtable} + \includegraphics[width=12cm]{port-flowtable} \caption{端口状态与流表计数信息} \label{fig:c:sdn-ob_port-flowtable} \end{figure} @@ -198,7 +190,7 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \item 查看网络拓扑信息,网络拓扑信息如图\ref{fig:c:sdn-ob_sdn-test-topo}所示: \begin{figure}[htp!] \centering - \includegraphics[width=9cm]{sdn-test-topo} + \includegraphics[width=10cm]{sdn-test-topo} \caption{SDN网络拓扑信息} \label{fig:c:sdn-ob_sdn-test-topo} \end{figure} @@ -209,7 +201,7 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \item ping之前的流表信息为空,如图\ref{fig:c:sdn-ob_empty-flowtable}所示: \begin{figure}[htp!] \centering - \includegraphics[width=9cm]{empty-flowtable} + \includegraphics[width=10cm]{empty-flowtable} \caption{空流表信息} \label{fig:c:sdn-ob_empty-flowtable} \end{figure} @@ -217,7 +209,7 @@ SDN将传统的紧耦合网络设备拆分成了应用、控制和转发三层 \item ping之后的流表信息,如图\ref{fig:c:sdn-ob_flowtable-ping}所示: \begin{figure}[htp!] \centering - \includegraphics[width=9cm]{flowtable-ping} + \includegraphics[width=10cm]{flowtable-ping} \caption{ping通后流表信息} \label{fig:c:sdn-ob_flowtable-ping} \end{figure} diff --git a/data/ch_sdn-openbox/sec_topo.tex b/data/ch_sdn-openbox/sec_topo.tex index 940cc69..3651113 100644 --- a/data/ch_sdn-openbox/sec_topo.tex +++ b/data/ch_sdn-openbox/sec_topo.tex @@ -51,7 +51,7 @@ SDN交换机使用LLDP链路探测协议主要是通过PACKET\_OUT消息发送LL 则会学习到这两个交换机之间存在一条连接链路; \item 网络设备信息学习:主机连接到交换机后, 主机端会主动构造一些广播报文发送到网络上, - 这些报文会携带上本机的MAC地址和IP地址等信息 + 这些报文会携带上本机的MAC地址和IP地址等信息。 交换机接收到主机发送报文后,在其交换流表中找不到转发表项, 则会将该报文完整内容和其所输入的端口信息封装在OpenFlow协议的PACKET\_IN方法中, 将报文送到SDN控制器;控制器接收到该消息后,