Merge commit '456cc6f9dde9b64def1d2033c87a21f88a9657ac'

edit
Xphi 4 years ago
commit 4a7eaacefc

@ -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}

@ -12,5 +12,5 @@
平台的软硬件逻辑代码开源免费,支持用户二次开发。
其基本使用方法见附录\ref{app:openbox}《FAST平台介绍与操作说明手册》。
本实验指导书中选择了OpenBox-S4作为可编程网络设备实例文档中简称为“可编程网络平台”
在实验图中的图标记为“FAST”节点名称记为“OpenBox-S4”。
在实验图中的图标记为“FAST”节点名称记为“OpenBox-S4”。

@ -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 学生自研路由器程序。

@ -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}

@ -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]

@ -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}

@ -51,7 +51,7 @@ SDN交换机使用LLDP链路探测协议主要是通过PACKET\_OUT消息发送LL
则会学习到这两个交换机之间存在一条连接链路;
\item 网络设备信息学习:主机连接到交换机后,
主机端会主动构造一些广播报文发送到网络上,
这些报文会携带上本机的MAC地址和IP地址等信息
这些报文会携带上本机的MAC地址和IP地址等信息
交换机接收到主机发送报文后,在其交换流表中找不到转发表项,
则会将该报文完整内容和其所输入的端口信息封装在OpenFlow协议的PACKET\_IN方法中
将报文送到SDN控制器控制器接收到该消息后

Loading…
Cancel
Save