"LINC switch系列之配置与运行"
LINC switch 是一个基于 Apache2.0 协议开源的 Openflow 交换机软件,由 flowforwarding.org 主导开发。为了更好地配置和使用 LINC switch,需要了解其配置文件的语法和结构。本文将介绍 LINC switch 的配置文件的基本结构、Erlang 语法快速理解、启用 OF config 支持、配置逻辑交换机、配置 backend、控制器、端口和队列等方面的知识点。
配置文件的语法结构
LINC switch 的配置文件基于 Erlang 语法,因而需要了解 Erlang 语法的基本结构。Erlang 配置文件中可能会包含多种数据结构,如元组、列表、字符串、数字和原子等。例如,字符串可以用双引号括起来,如 "hello";数字可以是整数或浮点数,如 1234 或 1.234;原子可以用小写字母组成,如 this_is_atom;元组可以用大括号括起来,如 {ofs_port_no,1};列表可以用中括号括起来,如 [1,2,3]。
Erlang 语法快速理解
Erlang 的数据结构在很多动态语言中都有,但实际上,Erlang 的数据结构又存在一些不同点:
* 字符串实际上是列表,一个由字母的 ascii 码组成的列表,但字符串在 Erlang 中的使用不及原子(atom)方便。
* 原子以小写字母组成,准确地说是以小写字母开头。可以在元组的第一个位置标识该元组。
* 在 Erlang 中,变量以大写字母开头,变量不可变。
* 在 Erlang 中,“%%”为注释。
启用 LINC 的 OF config 支持
启用 LINC 的 OF config 支持需要在配置文件中添加以下语句:{of_config, enabled},该元组第二个元素可以为 disabled。
配置逻辑交换机
一个交换机实体上可以运行多个逻辑交换机,每个逻辑交换机都可以有一个单独的控制器,端口和队列。例如:
```
{logical_switches, [
{switch, 0, [ ….. ]},
{switch, 1, [ ….. ]},
{switch, 2, [ ….. ]}
]}
```
用户可以指定 backend,控制器,端口等内容,例如:
```
{switch, 0, [
{backend, linc_us4},
{controllers, []},
{ports, []},
{queues_status, disabled},
{queues, []}
]}
```
配置 backend
配置 backend 可以选择不同的版本,例如启用 Openflow1.2 的支持:{backend, linc_us3},启用 openflow1.3 的支持:{backend, linc_us4}。
配置控制器
配置控制器需要指定一个 ipv4 的地址,端口和协议,默认的端口为 6633。例如:
```
{controllers, [
{"Switch0-DefaultController", "localhost", 6633, tcp}
]}
```
配置 input 和 output 的端口
配置 input 和 output 的端口需要在配置文件中添加以下语句:
```
{ports, [
%% {port, 1, [{interface, "eth0"}]},
%% {port, 2, [{interface, "tap0"}]},
%% {port, 3, [{interface, "tap1"}, {ip, "10.0.0.1"}]}
]}
```
配置队列
配置队列可以考虑启用它,默认情况下这个特性是关闭的。例如:
```
{queues_status, enabled}
```
如果启用队列,则需要把它们分配给端口并设置合适的速率。例如:
```
{queues, [
{port, 1, [{port_rate, {100, kbps}}, {port_queues, [{1, [{min_rate, 100}, {max_rate, 100}]}]}]}
]}
```
LINC switch 的配置文件需要了解 Erlang 语法和结构,并且需要了解配置逻辑交换机、backend、控制器、端口和队列等方面的知识点。