摘要: 这节的内容相当多,主要是介绍OpenFlow标准特别是流表的相关特性。 典型的OpenFlow标准由三部分组成:安全通道,流表和OpenFlow协议。注意这个标准是一份设备标准,并不单指OpenFlow协议。后来引入了流水线式的多流表以及组表(Group Tabel)。 (图摘自SDNAP的文章) 安全通道是交换机与控制器进行通讯的接口,在实现上推荐使用(在缺省情况下就是)TLS用来保证认证性和数据隐私。而OpenFlow协议是用来描述控制器和交换机之间交互信息的接口标准。OpenFlow协议支持三种类型的信息:controller-to-switch(控制器到交换机)、asynch... 阅读全文
posted @ 2014-03-10 17:55 7hat 阅读(1129) 评论(1) 推荐(1) 编辑
摘要: 问题:打冰球。冰球可以往上下左右4个方向走,只有当冰球撞到墙时才会停下来,而墙会消失。当冰球紧贴墙时,不能将冰球往那个方向打。冰球出界就当输,超过10次还没将冰球打到目标位置也当输。求用最小次数将冰球打到目标位置,或输出-1表示输了。分析:一般来说,求最小步数之类的迷宫问题都是用BFS解决的,但这题涉及到迷宫状态的变化(墙),BFS要不断记录状态的变化很复杂,不过网上好像也有人用BFS做的。DFS更加适合这种状态一直变化的,只不过要保存最优值而已,其实最优值也方便剪枝(当前步数已经是当前最优值大小但还没到达目的地也就没必要进行下去了)。需要注意的是,这题并不是移动一格,而是一直移动直到遇到障碍 阅读全文
posted @ 2014-03-10 16:33 7hat 阅读(1457) 评论(0) 推荐(0) 编辑
摘要: 对于SDN交换机的技术,其实也适用于传统的交换机,只不过控制部分被分离出来而已。传统交换机的控制面主要是转发表的管理以及网络状态之类的各种表,现在这些都由控制器来担心。转发面主要由转发决策、背板和输出链路调度组成。 转发决策是指数据包从输入端口进入交换机后,接下来怎么办。在SDN架构上,就是查询流表。 背板是指作出决策后数据包到达输出端口所经过的地方。主要由两种背板设计方式,一是共享总线型,发往不同端口的数据包共享总线来传输,这个比较容易冲突,类比下以太网;二是交叉开关矩阵型,就是不同的输入端口与输出端口之间存在多条通路,可以类比一下矩阵。 输出链路调度是指在数据包到达输出端口后,需要排队输. 阅读全文
posted @ 2014-03-09 20:40 7hat 阅读(481) 评论(0) 推荐(1) 编辑
摘要: 题意:按给定顺序从A口放标号位1-10的10个球,利用挡板可以使球落到B或C,问能否使B和C里的球标号从下往上递增。分析:对于第 i 个球,若a[i]大于B口上方的球,则可放入B口;若a[i]大于C口上方的球,则可放入C口。利用深度优先搜索,选取合适的操作,若能按要求放完10个球,则成功。若所有情况都不能,则失败。C++代码:/*input:23 1 4 2 5 6 7 8 9 1010 9 8 7 6 5 4 3 2 1output:YESNO*/#include int a[10];bool dfs(int k, int B, int C){ if(k == 10) return t... 阅读全文
posted @ 2014-03-09 20:17 7hat 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 日文题。。。题意:一个面积为H*W的果园,种了苹果,梨和蜜柑。相邻(上下左右)的果树属于同一个区域,问果园共有多少个区域。分析:迷宫问题。对于每一个格子,可以用深度优先搜索把相同果树的格子遍历并标记。也就是说,每做一次DFS,消灭掉一个区域。只需要遍历果园,对每一个未被标记的格子做DFS,做DFS的次数就是果园的区域数。这里不需要另外用其他数组标记格子已访问,只需要将格子的元素改为一个不会出现的元素如1即可。C++代码: 1 #include 2 #include 3 4 const int MAX_H = 100; 5 const int MAX_W = 100; 6 7 //输入 ... 阅读全文
posted @ 2014-03-07 10:36 7hat 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 第一章主要是概况。新技术有一个特点是,每家都有不同的说法。这里我只说说我比较认同的部分。 SDN的核心概念大概有两个:转发面与控制面分离、开发可编程化。书里还说逻辑上集中控制,其实这个就可以从转发与控制分离推出;至于说到网络虚拟化,我看这只是其中一个结果吧。 ONF的SDN架构分为三层:应用层、控制层和基础设施层。与其他架构不同的是,它的南向接口规定是OpenFlow,不过我想很难统一化。北向接口因为与业务的关联比较大,因此也没什么标准可言。OpenDayLight的架构非常庞大,基本上包括了ONF的三层,南向接口支持多种协议,北向接口支持现在比较流行的REST API。 S... 阅读全文
posted @ 2014-03-07 10:20 7hat 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 题意:有红色和黑色的格子,只能走黑色的,问从起始位置出发,最多能走到达多少块黑色格子。分析:相当于走迷宫,黑色格子是路,红色格子是墙,每次到达一个未到达过的格子时计数,原点也算是一个。每次可以走上下左右四个方向,用深度优先遍历从原点起始,一直到遍历所有能到达的格子。需要注意的是,不要重复走同一个格子,可以采取数组标记已走过的格子,但这里只需简单将已走过的格子标记为红色就可以达到目的,因为红色的格子也不可走。C++代码: 1 #include 2 3 const int MAX_W = 20; 4 const int MAX_H = 20; 5 6 //输入 7 int W; 8 int ... 阅读全文
posted @ 2014-03-06 08:24 7hat 阅读(459) 评论(0) 推荐(0) 编辑
摘要: SDN(软件定义网络),顾名思义,通过软件来控制或驱动整个网络。SDN的核心概念有两个,第一是转发面与控制面的分离;第二是开放的可编程接口。另外,SDN强调集中式控制,通过软件来控制整个网络,但这并不意味着只有一个Controller,在大型网络中,更多是使用分布式Controller的架构来管理,如Onix。 SDN是一个部署网络的框架,并不是具体的某个技术,更不是OpenFlow。OpenFlow协议只是Switch和Controller用来通信的应用比较广泛的一个协议,还有其他一些协议。 NV(网络虚拟化)不是SDN。网络虚拟化是指利用Tunnel技术将虚拟机连接起来实现一个运行在... 阅读全文
posted @ 2014-03-06 08:08 7hat 阅读(1284) 评论(0) 推荐(0) 编辑
摘要: 描述:某厂根据计划安排,拟将n 台相同的设备分配给m 个车间,各车间获得这种设备后,可以为国家提供盈利Cij(j 台设备提供给i 号车间将得到的利润,1≤i≤m,1≤j≤n) 。问如何分配,才使国家得到最大的盈利?算法基本思路:1.求最大利润输入:c[i][j] = 将 j+1 台设备分配给 i+1 号车间得到的利润。定义:将 j 台设备分配给前 i 个车间的最大利润 p[i][j](即题目所求的是p[m][n]),因此p[i][j]是以下两种情况的较大值:(1)不分配给 i 号车间,此时的最大值为将j 台设备分配给前 i-1 个车间的最大值,p[i][j] = p[i-1][j];(2)分配 阅读全文
posted @ 2013-12-09 12:28 7hat 阅读(1599) 评论(1) 推荐(1) 编辑
摘要: 描述:给定一个由n 行数字组成的数字三角形(例如下图)。输出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。(红色路径表示最优路径,结果为9+3+8+7+5 = 32)算法基本思路:显然用一个二维数组rec[0..n-1][0..n-1]可以保存该三角形作为输入(用二维数组对角线以下的位置保存三角形)。对于任意rec[i][j],我们可以定义一个表m[i][j] 来表示以rec[i][j]作为当前路径的终点所得到的最优值。对于m[i][j],要到达这个数字,必须经过前面的某个数字,可以通过计算前面的最优解来构造m[i][j]的最优解。求解m[i][j]的最优解,可以通过子集的最优解构造 阅读全文
posted @ 2013-12-08 18:52 7hat 阅读(968) 评论(1) 推荐(0) 编辑