虚拟交换设备的设计和管理实现

时间:2023-04-25 14:48:03 教案设计 来源:网友投稿


打开文本图片集

摘 要 本文介绍了在一台物理设备上虚拟出多台虚拟设备的实现方案,以及针对这些虚拟交换设备的管理方法。

关键词 虚拟交换设备;VSD

中图分类号TP39 文献标识码A 文章编号 1674-6708(2013)98-0000-00

1虚拟交换设备概述

在一些应用场景中,用户希望网络设备能够提供类似服务器“虚拟机”的能力,在一台物理设备上虚拟出多台虚拟设备,用以提升设备资源利用率,分别用于不同用户群管理,分别承载不同业务。例如,数据中心交换机引入“虚拟机”后,可以将一台物理网络设备虚拟成多台独立的逻辑网络设备,满足多业务区或多用户共享核心网络设备的需求。这样,在保证最佳安全性的同时,可以极大地提升了设备利用率,并有效地降低网络投资。

源于上述用户需求,我们提出了虚拟交换设备(Virtual Switch Device,VSD)的概念。VSD技术允许网络管理者在一台物理设备中创建多个虚拟交换设备,每一个虚拟交换设备(在本文中后续统一称之为VSD)都拥有自身的软件进程、硬件资源以及独立的管理环境,可以实现独立的安全管理界限划分和故障隔离。VSD是在一台物理设备上,虚拟出来的逻辑设备,但从业务功能方面上看,和单台的物理设备没有区别。

2 VSD的虚拟化

为了能把一台设备虚拟成多台设备,可以有多种虚拟化方案,其中一种方式是在业务和协议上隔离。在这种方案中,VSD可以看成运行在同一物理设备上的多个“虚拟机”,它们拥有自己的硬件资源,独立的数据转发面和协议栈。每个VSD都可以独立运行,都可以像单独的设备一样重启,而不影响其他VSD。

VSD的划分是基于业务的,因此支持VSD的业务需要在每一个VSD中运行一份实例。这样VSD之间在进程这一级别上就实现了隔离,如果某个VSD出现故障,不会影响到其他VSD的正常工作。

VSD作为一个单独的逻辑实体在物理设备中运行,具有其自己独立的软件进程集合,并拥有各自独立的配置,每个VSD可以由一个单独的管理员负责管理。Linux网络操作系统将空间划分为用户空间(又称为进程空间)和内核空间,VSD软件的进程集合运行在进程空间,不同的VSD软件进程集合是独立的。当一个VSD出现故障的时候,重新运行这个VSD中的软件程序就可以恢复。

网络设备的内核空间运行的主要是数据转发平面相关的模块,每个VSD都可以独立地与操作系统内核中的转发平面进行通信,可以通过内核转发平面所提供的接口进行数据报文收发。内核转发平面能够根据报文所携带的标识区分不同VSD的数据,不同VSD的数据转发不会互相串扰。

如上图,在一台物理设备虚拟出多个VSD,其中VSD-0是一个特殊的域,由VSD-0创建出其他VSD。因此,VSD-0也可以称为根(ROOT)VSD或者超级VSD,其他VSD称为客户VSD。在根VSD中,存在一个VSD管理程序,用于创建、删除和管理其他客户VSD。

2.1资源分配

在缺省情况下,整个物理网络设备在逻辑上为单个VSD(默认VSD,即上文所述的VSD-0)。在创建一个新VSD的时候,系统平台需要将硬件资源分配给该VSD,包括CPU、内存、文件系统以及物理网络接口,并且每个VSD都维护自己的配置文件。

为不同的虚拟设备隔离和分配硬件资源,可以有效地隔离和遏制故障。在创建VSD的时候,需要灵活区分硬件资源,将硬件资源分配到特定的虚拟设备。为了隔离故障的需要,一些硬件资源可以设置为非共享的。例如以太网端口等资源可以专门用于某个VSD,一旦某个端口被分配给一个VSD之后,其他VSD就将无法使用该端口。

2.2运行程序集

在VSD虚拟化方案中,VSD是一个应用程序的集合,运行时则是进程的集合。为了使每个VSD能提供独立的业务功能,各个业务软件程序将在每个VSD中启动一份进程实例,不同VSD中的实例之间是没有关联的,在进程级别上是隔离的。因此,在创建VSD的时候,需要同时确定在该VSD中运行的应用程序的集合。

为了实现上述隔离效果,网络操作系统平台在启动一个VSD时,会在该VSD的空间内加载集合中的应用程序,这些应用程序也会在该VSD的空间中创建业务相关的进程。同样,在关闭一个VSD时候,也需要关闭该VSD中所运行的应用程序,以及终止这些应用程序所创建的所有进程。

在网络操作系统的进程空间中,进程之间交换数据采用IPC(进程间通信)方式。采用IPC方式的进程,需要知道对方的所在,例如采用Unix域套接口(Unix Domain Socket)的方式,就需要知道对端通讯协议地址所绑定的文件路径。由于不同的VSD具有独立的文件系统空间和工作目录,并且除了根VSD中的少数进程(主要是VSD管理模块)以外,其他VSD内的进程都只需要与本VSD内的进程通信。这样,运行在VSD中的大多数业务进程,都将感觉不到VSD的存在,就像运行在一台独立的设备中一样。

3 VSD的管理

每个VSD给用户提供独立管理界面,使得从用户角度看,每个VDC都是一个“真正独立”的设备。这样,管理界面就需要能够实现各VSD内的管理隔离,也就是说每个VSD中的命令配置、网管管理等手段都能够互相不影响。管理界面功能主要位于进程空间,管理界面程序包括命令行界面(CLI)、终端管理及协议(包括控制台、TELNET和SSH)、系统日志(SYSLOG)、WEB界面以及简单网管协议(SNMP)等等。

3.1 TCP/IP协议

既然每个VSD是一个“真正独立”的设备,那么在不同的VSD上,可以运行相同的协议,侦听相同的协议端口。例如,在两个VSD上配置不同的IP地址,并且都侦听TCP(23)端口,那么用户可以通过TELNET客户端,根据IP地址分别连接两个不同的TCP(23)端口,就像连接两台独立的IP主机设备一样。

根据网络分层方式,很多网络管理相关的协议都是属于TCP/IP协议族的,例如TELNET和SSH协议运行在TCP协议之上,SYSLOG和SNMP运行在UDP之上。因此,为了支持VSD的网络管理方式,需要在每个VSD上提供独立的TCP/IP协议,这样不同的网络管理协议可以采用标准的套接口接口侦听端口、建立连接和收发报文。

3.2命令行界面

命令行界面(CLI)为网络设备默认的管理界面,相当于Unix/Linux系统中的Shell。正如前文所述,对于用户来说,VSD就是一个独立的设备。那么,用户就可以通过设备所提供的终端登录其CLI界面。创建VSD以后需要在每个VSD中启动一个CLI服务进程来提供命令行界面,不同VSD中的CLI服务进程之间没有联系。这样,可以保证每个VSD中只会显示出该VSD所包含模块的命令,并且命令也只对该VSD内的进程生效。

3.3终端管理

在正常的网络设备上,终端可以分为实终端(包括控制台和异步口TTY)和虚终端(VTY)。VSD既然像一台“独立的设备”,那么就需要拥有独立的终端和终端管理,用户可以通过终端登录并进入VSD的CLI界面。

实终端(TTY)属于物理硬件,不同的VSD不能同时使用同一个实终端,如上文所述,在创建VSD的时候需要为其分配所能使用的TTY。其中,网络设备一般都只有一个控制台(Console),并且Console端口是网络设备出厂时默认的管理端口,甚至首次配置网络设备(包括划分VSD)都需要先通过Console进行。因此Console终端被分配给根VSD(即VSD-0)专用。用户使用串口线连接网络设备TTY所对应的控制台或异步口,打开终端仿真软件(例如Windows所带的“超级终端”)并设置好速率(默认为9600bps),就可以连接并管理VSD了。

虚终端(VTY)与TTY不同,VTY是由网络协议虚拟出来的,而且不同VSD中可以独立运行网络协议的实例,就可以拥有各自的VTY。每个VSD中默认都拥有5个VTY,并且可以扩展至36个。如果在每个VSD上都配置好IP地址,并且都侦听默认的TCP(23)和TCP(22)端口。用户就可以使用TELNET和SSH客户端软件(例如Putty)远程连接并管理一个VSD,就像在连接并管理一台独立的设备一样。

如果用户想了解某个VSD所拥有的TTY/VTY终端信息,可以在登录到该VSD以后,通过show line命令查看。

每个VSD都可以设置自己的访问安全控制数据,终端登录时,终端会话进程将会在所属VSD中运行登录程序(例如login),并在所属VSD内进行访问控制。如果需要连接远程安全服务器进行校验,则还需要在VSD中运行安全协议(例如RADIUS)相关的应用程序。

3.4系统日志

每一个VSD都需要记录自己的系统日志信息,像独立的设备一样。因此需要在每一个VSD中都运行日志服务程序(例如Syslogd),该程序记录所属VSD的日志信息,并保存在所属VSD独立的文件系统空间中。同时根据需要,日志信息也会打印在所属VSD的TTY/VTY终端会话界面上。

如果用户想查看某个VSD上的日志记录,可以在登录到该VSD以后,通过show logging命令查看。

3.5 WEB界面

同样,每一个VSD也可以拥有独立的WEB管理界面。只要在每个VSD中运行HTTP协议和WEB服务器,并开启对应的TCP端口(HTTP协议默认端口为80),用户就可以通过浏览器访问VSD的WEB页面,就像在访问一台独立的设备一样。

3.6简单网管协议

若是需要使用简单网管协议(SNMP)来管理VSD,则可以在每个VSD中运行SNMP代理(SNMP Agent)程序(例如Snmpd),并且每个VSD都拥有独立的管理信息数据库(MIB)。运行SNMP代理程序后将在VSD中开启UDP 161/162端口,同时需要配置SNMP 团体名(Community,针对SNMPv1和SNMPv2版本)或用户(针对SNMPv3)。之后,用户的SNMP管理工作站(即SNMP客户端)就可以通过SNMP访问VSD中的MIB,同时VSD也可以向SNMP管理工作站主动发送Trap信息。

4结论

VSD技术允许网络管理者在一台物理网络设备上创建多个虚拟交换设备,此项技术可以实现每个模拟出的VSD都拥有它自身的软件进程,专用硬件资源(接口)和独立的管理环境,可以实现独立的安全管理界限划分和故障隔离。

同时VSD技术可以使不同的业务职能或不同的用户之间共享一台物理网络设备,避免了将整个网络设备仅司职单一的功能而导致设备利用率过低。这样可以充分利用现有资源,避免闲置浪费,有助于提升网络设备的运营成本优势。

在工程技术层面,我们充分利用了操作系统平台所具有的模块化、进程化的优势,使得虚拟化技术的实施更为便捷。

参考文献

[1]RFC854,Telnet Protocol Specification.

[2]RFC2616,Hypertext Transfer Protocol-HTTP/1.1.

[3]RFC4251,The Secure Shell (SSH) Protocol Architecture.

[4]RFC3411,Simple Network Management Protocol (SNMP) Management Frameworks.

[5]RFC3164,The BSD syslog Protocol.

[6][美]W.Richard Stevens/Stephen A.Rago:“UNIX环境高级编程(第2版)",人民邮电出版社,2006,5.

[7][美]W.Richard Stevens/Bill Fenner/Andrew M.Rudoff:“UNIX网络编程 第1卷:套接口API(第3版)”, 清华大学出版社,2006,1.

[8][美]W.Richard Stevens:“UNIX网络编程.卷2:进程间通信(第2版)”, 人民邮电出版社,2010,7.

[9][美]W.Richard Stevens:“TCP/IP详解:卷1.协议",机械工业出版社,2000,4.

推荐访问:交换 虚拟 设备 设计 管理