Thursday, August 29, 2013

Tuning Iperf Test Results


As mentioned above iPerf uses many parameters to control TCP and UDP functions during a test. The following paragraph will show a methodology that was used with one of our customers.

Here is the scenario:

·         2 sites
·         Sites connected through one 50Mbps EVPL EVC
·         PCs were used at each end with no other devices using the link

Parameters used:

·         TCP window size
·         Number of concurrent TCP sessions
·         MTU size

General steps:

·         Step 1 iPerf used with default settings
·         Step 2 to step 6 TCP window size was modified until optimal throughput was achieved
·         Step 7 to step 21 Number of TCP sessions was modified until optimal throughput was achieved
·         Step 22 MTU size was modified until optimal throughput was achieved



Detailed steps along with results at each step: (again based on 50Mbps EVC)

Step 1:

Server PC command line = iperf s

Client PC command line = iperf c (ip address of server)

Result achieved = 2.68Mbps throughput



Step 2: ( for this step use optimal window size based on calculation à bandwidth * delay)

Calculation for 50Mbps and 30m/s round trip delay = 50,000,000 * 0.030 = 1,500,000 / 8 bits = 187,500 / 1000 = 187.5 kBytes (we used 190 kBytes as our first window size)

Server PC command line = iperf s w 190k

Client PC command line = iperf c (ip address of server) w 190k

Result achieved = 13.8Mbps throughput



Step 3:

Server PC command line = iperf s w 90k

Client PC command line = iperf c (ip address of server) w 90k

Result achieved = 13.5Mbps throughput


Step 4:

Server PC command line = iperf s w 290k

Client PC command line = iperf c (ip address of server) w 290k

Result achieved = 14.8Mbps throughput  
BEST RESULT FOR TCP WINDOW VARIATION


Step 5:

Server PC command line = iperf s w 1000k

Client PC command line = iperf c (ip address of server) w 1000k

Result achieved = 12.9Mbps throughput


Step 6:

Server PC command line = iperf s w 500k

Client PC command line = iperf c (ip address of server) w 500k

Result achieved = 13.0Mbps throughput


Step 7:

Now we varied the amount of sessions. We kept the optimal 290kByte window size.

Server PC command line = iperf s w 290k P 2

Client PC command line = iperf c (ip address of server) w 290k P 2

Result achieved =          Session #1 15.2Mbps throughput
                                    Session #2 6.18Mbps throughput
                                    Total throughput = 20.8Mbps                              


Step 8:

Server PC command line = iperf s w 290k P 3

Client PC command line = iperf c (ip address of server) w 290k P 3

Result achieved =          Session #1 8.12Mbps throughput
                                    Session #2 8.92Mbps throughput
                                    Session #3 6.18Mbps throughput
                                    Total throughput = 22.5Mbps


Step 9:

Server PC command line = iperf s w 290k P 4

Client PC command line = iperf c (ip address of server) w 290k P 4

Result achieved =          Session #1 11.1Mbps throughput
                                    Session #2 5.81Mbps throughput
                                    Session #3 11.0Mbps throughput
                                    Session #4 6.75Mbps throughput
                                    Total throughput = 33.9Mbps


Step 10:

Server PC command line = iperf s w 290k P 5

Client PC command line = iperf c (ip address of server) w 290k P 5

Result achieved =          Total throughput = 43.4Mbps (from this point only total throughput is shown)

Step 11:

Server PC command line = iperf s w 290k P 6

Client PC command line = iperf c (ip address of server) w 290k P 6

Result achieved =          Total throughput = 42.8Mbps


Step 12:

Server PC command line = iperf s w 290k P 7

Client PC command line = iperf c (ip address of server) w 290k P 7

Result achieved =          Total throughput = 43.5Mbps


Step 13:

Server PC command line = iperf s w 290k P 8

Client PC command line = iperf c (ip address of server) w 290k P 8

Result achieved =          Total throughput = 45Mbps


Step 14:

Server PC command line = iperf s w 290k P 9

Client PC command line = iperf c (ip address of server) w 290k P 9

Result achieved =          Total throughput = 43.6Mbps


Step 15:

Server PC command line = iperf s w 290k P 10

Client PC command line = iperf c (ip address of server) w 290k P 10

Result achieved =          Total throughput = 44.8Mbps


Step 16:

Server PC command line = iperf s w 290k P 11

Client PC command line = iperf c (ip address of server) w 290k P 11

Result achieved =          Total throughput = 45.4Mbps


Step 17:

Server PC command line = iperf s w 290k P 12

Client PC command line = iperf c (ip address of server) w 290k P 12

Result achieved =          Total throughput = 47.1Mbps
BEST RESULT FOR NUMBER OF TCP WINDOWS  VARIATION


Step 18:

Server PC command line = iperf s w 290k P 13

Client PC command line = iperf c (ip address of server) w 290k P 13

Result achieved =          Total throughput = 44.5Mbps


Step 19:

Server PC command line = iperf s w 290k P 14

Client PC command line = iperf c (ip address of server) w 290k P 14

Result achieved =          Total throughput = 47.1Mbps
EQUAL TO PREVIOUS BEST RESULT FOR NUMBER OF TCP WINDOWS  VARIATION


Step 20:

Server PC command line = iperf s w 290k P 15

Client PC command line = iperf c (ip address of server) w 290k P 15

Result achieved =          Total throughput = 46.7Mbps


Step 21:

Server PC command line = iperf s w 290k P 16

Client PC command line = iperf c (ip address of server) w 290k P 16

Result achieved =          Total throughput = 46.1Mbps


Step 22:

At this point we can changed the MTU size

Saturday, August 17, 2013

IP地址规划详解

IP地址规划
  IP地址的合理规划是网络设计中的重要一环,大型网络必须对IP地址进行统一规划并得到实施。IP地址规划的好坏,影响到网络路由协议算法的效率,影响到网络的性能,影响到网络的扩展,影响到网络的管理,也必将直接影响到网络应用的进一步发展。如果要看一个网络的规划质量、如果要看一个网络设计师的技术水准,直接看他的IP地址规划好了。
  1.IP地址规划的基本原则
  唯一性:
  一个IP网络中不能有两个主机采用相同的IP地址。即使使用了支持地址重叠的MPLS/VPN技术,也尽量不要规划为相同的地址。
  连续性:连续地址在层次结构网络中易于进行路径叠合,大大缩减路由表,提高路由算法的效率。
  扩展性:地址分配在每一层次上都要留有余量,在网络规模扩展时能保证地址叠合所需的连续性。
  实意性: “望址生义”,好的IP地址规划使每个地址具有实际含义,看到一个地址就可以大至判断出该地址所属的设备。这是IP地址规划中最具技巧型和艺术性的部分。最完美的方式是得出一个IP地址公式,以及一些参数及系数,通过计算得出每一个需要用到的IP地址。
  2.IP地址的分类--loopback地址
  loopback地址概述为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址,管理员会使用该地址对路由器远程登录(telnet),该地址实际上起到了类似设备名称一类的功能。同时各种上层协议需要使用TCP或UDP来建立连接时也需要使用该地址作为源地址。
  3.loopback地址规划技巧
  务必使用32位掩码的地址。最后一位是奇数的表示路由器,是偶数的表示交换机。越是核心的设备,loopback地址越小。
  4.IP地址的分类--互联地址
  互联地址概述互联地址是指两台网络设备相互连接的接口所需要的地址。
  5.互联地址规划技巧
  务必使用30位掩码的地址。核心设备,使用较小的一个地址(即:loopback地址较小的设备使用互联地址中较小的一个)。互联地址通常要聚合后发布,在规划时要充分考虑使用连续的可聚合地址。
  6.IP地址的分类--业务地址
  业务地址概述
  业务地址是连接在以太网上的各种服务器、主机所使用的地址以及网关的地址。
  7.业务地址规划技巧
  所有的网关地址统一使用相同的末位数字,如:.254都是表示网关。

Router/Switch CONFIGURATION MANAGEMENT - Archive Command


If you’ve ever had to manage and configure more than a few routers in a production environment, you’ve probably stumbled across questions like these:
Who changed the configuration on a router that stopped working? What was changed?
What’s the difference between the current configuration and the startup configuration?
Do we have a backup of a working configuration?
What was the router configuration before the last mistake was committed to the startup configuration?
Do I have a copy of the configuration that was used a month ago?
How do I rollback from the current mess to the startup configuration without reloading the router?
For the last 20 years, Cisco did almost nothing to help us, so router configuration management was a lucrative niche market for network management vendors offering more and more complex tools with fancy graphic user interfaces. The landscape seemed to change radically with Cisco IOS release 12.4, which includes a number of router configuration management features, including Contextual Configuration Diff utility, Configuration Change Notification and LoggingConfiguration archive and Configuration Replace and Rollback. They sounded almost too good to be true, so I decided to give them a few hard tasks. This article describes two of these features: the abilities of the Configuration Change Notification feature and the usage guidelines for the Contextual Configuration Diff feature, their benefits as well as their shortcomings and current limitations.

What’s Going On?

Network managers who implemented centralized Authentication, Authorization and Accounting (AAA) with Cisco’s proprietary TACACS+ protocol long had the ability to log any command executed on the routers in their network; the rest of us could only guess what someone configuring our routers did to them. The Configuration Change Notification feature first introduced in IOS release 12.3(14)T and integrated in mainstream release 12.4 solves this problem – after you configure it, all the configuration commands entered on the router are stored in a circular buffer (you can even specify its length) and optionally sent to syslog server. A typical configuration is shown in Listing 1; you can get the description of individual commands in Cisco IOS documentation.
LISTING 1
Configuration commands for Configuration Change Notification and Logging feature
archive
 log config
  logging enable
  logging size 200
  notify syslog
  hidekeys
NOTE
The hidekeys command hides the passwords and other sensitive information in log buffer and syslog messages.
After you’ve configured the configuration change logging, all configuration commands are stored in a circular buffer in router’s memory. You can inspect the commands with the show archive log config command, which displays all configuration commands recently entered on the router, or commands entered by a particular user or even within a particular configuration session (from the moment you enter configure terminal to the time you exit the configuration mode). A sample printout of this command is shown in Listing 2.
LISTING 2
Display of logged configuration commands
fw#show archive log config all
 idx   sess           user@line      Logged command
    1     1        console@console  |  logging enable
    2     1        console@console  |  logging size 200
    3     1        console@console  |  notify syslog
    4     2        console@console  |archive
    5     2        console@console  | log config
    6     2        console@console  |  hidekeys
If you’ve also configured the notify syslog option of the log config configuration command, all configuration commands entered on a router are also sent to the logging subsystem, which delivers them to various logging destinations, including console and syslog hosts. The syslog messages usually contain the username and the configuration command, but they could also report changes in significant data structures. For example, if you add a local user with the username command, the router will generate the two syslog messages in Listing 3.
LISTING 3
Syslog messages generated by security-relevant configuration command
fw#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
fw(config)#user x password y
01:43:06: %PARSER-5-CFGLOG_LOGGEDCMD: User:console  logged command:username x password *****
01:43:06: %PARSER-5-CFGLOG_LOGGEDCMD: User:console  logged command:!config: USER TABLE MODIFIED

Monday, August 12, 2013

思科设备使用FreeRADIUS验证

即使我在我的实验室设备和家庭网络的唯一管理员,我想这将是很好有某种形式的对这些设备的集中认证,授权和计费。不过,我很快就意识到,使用专用设备,如思科ACS或ISE将意味着增加另一个总是VM我的实验室环境。我还没有准备好,开始我的实验室资源浪费的一个基本功能像AAA。因此,而不是使用专用设备在Ubuntu Linux服务器,我使用的DNS,DHCP,系统日志,和其他网络服务,在我的实验室,我决定实施FreeRADIUS的。

虽然,TACACS +,通常是思科AAA协议的首选,我的要求很简单,足够RADIUS将工作一样。 FreeRADIUS是包含在标准的Ubuntu软件库,这应该是很容易安装。

我的要求很简单。我想使用RADIUS服务器来验证用户,然后分配两个剖面之一:“管理员”配置文件里面有完整的管理权(相当于IOS的权限级别15或NX-OS网络管理员的角色)和“运算符“配置文件具有只读权限(相当于IOS的特权级别1或NX-OS网络操作员角色)。这些用户配置文件应指定通过RADIUS协议。当然,我也希望一些基本的会计。因为我不需要票友的功能,如命令授权,RADIUS应该足够了。

我部署一个新鲜的Ubuntu的虚拟机而不是搞乱我的服务器经常用于测试目的。然后,我使用的apt-get安装的freeradius的freeradius-utils的包:

tom@freeradius:~$ sudo apt-get install freeradius freeradius-utils

The freeradius-utils package is not strictly necessary, but nice to have when you need to troubleshoot the RADIUS implementation. Especially the radtest and radsniff commands are useful to verify the attributes that are exchanged between the client and the server.

Note: I had to do a fair amount of troubleshooting to find a set of attributes that works for the combination of IOS devices, NX-OS devices and ASAs. To keep this post clean, I will not list all the intermediate steps and stuff I tried that didn’t work, but simply present the eventual working configurations that I ended up with.

Next, I add an entry to the /etc/freeradius/clients.conf file to define the RADIUS key for a group of devices:

client 192.168.36.0/24 {
        secret = Fr33-R@d1u$
        shortname = lab-network
        nastype = cisco
}

Rather than creating separate entries for every client device, I create a blanket statement that allows all devices in my lab IP range to use the same RADIUS key. Of course you can create individual entries for each client if you prefer.

Now it is time to define my “admin” and “ops” users. I add the following entries to the /etc/freeradius/users file:

admin           Cleartext-Password := 1234QWer
                Service-Type = Administrative-User,
                Cisco-AVPair = "shell:roles=network-admin",
                Cisco-AVPair += "shell:priv-lvl=15"

ops             Cleartext-Password := 1234QWer
                Service-Type = NAS-Prompt-User,
                Cisco-AVPair = "shell:roles=network-operator",
                Cisco-AVPair += "shell:priv-lvl=1"

tom             Auth-Type := System
                Service-Type = Administrative-User,
                Cisco-AVPair = "shell:roles=network-admin",
                Cisco-AVPair += "shell:priv-lvl=15"

And of course I restart the freeradius service to commit my changes:

tom@freeradius:~$ sudo service freeradius restart
* Stopping FreeRADIUS daemon freeradius
   ...done.
* Starting FreeRADIUS daemon freeradius
   ...done.

There are a couple of things that are worth noting about this configuration:

    First of all, this post is not intended as a guide for setting up a production FreeRADIUS deployment. As such, the entries above do not represent best practices. My primary objective is to describe the attributes required for the various types of Cisco devices. For example, defining the passwords directly in the users file using the Cleartext-Password attribute is not good practice, but can be useful when you’re testing and experimenting. Also, defining the Auth-Type for a specific user is frowned upon. You may want to refer to the FreeRADIUS documentation if you intend to use FreeRADIUS in a production environment.
    For the “admin” and “ops” users I defined the password directly in the users file using the Cleartext-Password attribute. On the other hand, the user “tom” is tied to the existing local system account on the Ubuntu server.
    The “admin” and “tom” users are set up as Service-Type = Administrative-User, while the user “ops” is set up as Service-Type = NAS-Prompt-User. This distinction is primarily relevant for the ASA. For the ASA the Service-Type determines whether a user can use the enable command to go to privileged mode or not. This is documented in the ASA Management Access Configuration Guide. Some basic testing revealed that IOS also honors the Service-Type out of the box. It assigns privilege 1 to users of type NAS-Prompt-User, while it assigns privilege 15 to users of type Administrative-User. However, it is still possible to elevate NAS-Prompt-Users to privilege level 15 through use of the shell:priv-lvl Cisco AV pair. NX-OS does not honor the Service-Type by default, but requires the shell:roles Cisco AV pair to assign the network-admin or network-operator roles to the user. Therefore, I feel that it is better to always explicitly define the privilege level or role for IOS and NX-OS users.
    Because this configuration is intended to be used for both IOS and NX-OS, it is necessary to define two Cisco-AVPair attributes. To pass both these attributes in the response instead of just the first one, it is necessary to use the “+=” operator on the second Cisco AV pair.
    If you run into situations where the RADIUS client refuses the connection because it does not understand one of the two Cisco-AVPair attributes, you could replace the “=” in the AV pair with a “*” to make it an optional attribute (for example "shell:roles*network-admin" instead of "shell:roles=network-admin"). With the versions of NX-OS, IOS and ASA software that I used for testing this was not necessary.
    And finally, I first tried to name my “ops” user “operator”, finding out the hard way that this is one of the reserved NX-OS usernames, causing the logins to fail. Other names that cannot be used are defined in the NX-OS documentation, for example the Nexus 1000v Security Configuration Guide. So be warned, these names really cannot be used!

Now that we have a our basic FreeRADIUS configuration in place, we can start adding AAA configuration to the various devices and start testing. First I configure my lab Nexus 1000v:

radius-server host 192.168.36.102 key Fr33-R@d1u$ authentication accounting
!
aaa group server radius FREERADIUS
    server 192.168.36.102
    use-vrf management
    source-interface mgmt0
!
aaa authentication login default group FREERADIUS
aaa accounting default group FREERADIUS

Next I login as the user “tom” and verify my role:

tom@freeradius:~$ ssh [email protected]
Nexus 1000v Switch
Password:
Cisco Nexus Operating System (NX-OS) Software
TAC support: http://www.cisco.com/tac
Copyright (c) 2002-2013, Cisco Systems, Inc. All rights reserved.
The copyrights to certain works contained in this software are
owned by other third parties and used and distributed under
license. Certain components of this software are licensed under
the GNU General Public License (GPL) version 2.0 or the GNU
Lesser General Public License (LGPL) Version 2.1. A copy of each
such license is available at
http://www.opensource.org/licenses/gpl-2.0.php and

http://www.opensource.org/licenses/lgpl-2.1.php

n1kv# show user-account tom
user:tom
        roles:network-admin
account created through REMOTE authentication
Credentials such as ssh server key will be cached temporarily only for this user account
Local login not possible

And of course I also want to verify my “ops” user and its assigned role:

tom@freeradius:~$ ssh [email protected]
Nexus 1000v Switch
Password:
Cisco Nexus Operating System (NX-OS) Software
TAC support: http://www.cisco.com/tac
Copyright (c) 2002-2013, Cisco Systems, Inc. All rights reserved.
The copyrights to certain works contained in this software are
owned by other third parties and used and distributed under
license. Certain components of this software are licensed under
the GNU General Public License (GPL) version 2.0 or the GNU
Lesser General Public License (LGPL) Version 2.1. A copy of each
such license is available at
http://www.opensource.org/licenses/gpl-2.0.php and

http://www.opensource.org/licenses/lgpl-2.1.php

n1kv# show user-account ops
userps
        roles:network-operator
account created through REMOTE authentication
Credentials such as ssh server key will be cached temporarily only for this user account
Local login not possible

As can be seen, these users are properly authenticated and assigned their respective roles. Next, I configure AAA on a CSR 1000v instance to test the FreeRADIUS configuration on an IOS device:

aaa new-model
!
radius server FREERADIUS
address ipv4 192.168.36.102 auth-port 1812 acct-port 1813
key Fr33-R@d1u$
!
aaa group server radius LAB-RADIUS
server name FREERADIUS
ip vrf forwarding Mgmt-intf
ip radius source-interface GigabitEthernet0
!
aaa authentication login default group LAB-RADIUS local
aaa authorization exec default group LAB-RADIUS local
aaa accounting exec default start-stop group LAB-RADIUS

Again, I log in as user “tom” and verify my privilege level:

tom@freeradius:~$ ssh [email protected]
Password:
csr1kv#show privilege
Current privilege level is 15

And I also test the ops user account:

tom@freeradius:~$ ssh [email protected]
Password:
csr1kv>show privilege
Current privilege level is 1

Again, the output confirms that the users have been successfully authenticated and proper privilege levels have been assigned. Finally, I configure my ASA:

aaa-server FREERADIUS protocol radius
aaa-server FREERADIUS (inside) host 192.168.36.102
key Fr33-R@d1u$
authentication-port 1812
accounting-port 1813
aaa authentication http console FREERADIUS LOCAL
aaa authentication ssh console FREERADIUS LOCAL
aaa authentication enable console FREERADIUS LOCAL
aaa accounting ssh console FREERADIUS
aaa authorization exec authentication-server

And again, I login as user “tom”:

tom@skywalker:~$ ssh [email protected]
[email protected]'s password:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++ +                                                       +
+ +                 This is firewall r2d2                 ++
++            Nothing to see here, so go away!           + +
+                                                       + ++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Type help or '?' for a list of available commands.
r2d2> show curpriv
Username : tom
Current privilege level : 1
Current Mode/s : P_UNPR
r2d2> enable
Password: ********
r2d2# show curpriv
Username : tom
Current privilege level : 15
Current Mode/s : P_PRIV

As you can see the ASA does not immediately drop the user in privileged mode. However, it does allow a user that has the Service-Type = Administrative-User attribute to issue the enable command and go to privileged mode using the user’s RADIUS password instead of the locally defined enable password. Now let’s see what happens when I log in as the user “ops”:

tom@skywalker:~$ ssh [email protected]
[email protected]'s password:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++ +                                                       +
+ +                 This is firewall r2d2                 ++
++            Nothing to see here, so go away!           + +
+                                                       + ++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Type help or '?' for a list of available commands.
r2d2> show curpriv
Username : ops
Current privilege level : 1
Current Mode/s : P_UNPR
r2d2> enable
Password: ********

[ ops ] You do NOT have enable Admin Rights to the console
Password:

As can be seen, this time the ASA does not allow the user to use the enable command to go to privileged mode based on the Service-Type = NAS-Prompt-User attribute. So for CLI access everything  now works as I had set down in my requirements. However, there is still a little catch here. When I login to ASDM, the “ops” user still gets full access. Apparently, just setting the Service-Type is not sufficient for ASDM, because it does not use the enable command and the ASA does not honor the Cisco shell:priv-lvl attribute. When I log in to ASDM as the “ops” user, it lists a privilege level of 15 in the bottom right corner next to the user name. So it looks like we need another RADIUS tweak.

To fix this we need to use another RADIUS attribute to set the privilege level for the ASA. This attribute originally comes from the Cisco/Altiga VPN 3000 concentrators. Unfortunately, the Cisco VPN dictionary is disabled by default in the FreeRADIUS dictionary file in /usr/share/freeradius/dictionary:

#
#        The Cisco VPN300 dictionary is the same as the altiga one.
#        You shouldn't use both at the same time.
#
#$INCLUDE dictionary.cisco.vpn3000

Despite the comment in the file, the Altiga dictionary is not enabled by default either, so I decide to simple uncomment the $INCLUDE dictionary.cisco.vpn3000 line to include the VPN 3000 dictionary. This enables the use of the CVPN3000-Privilege-Level attribute (vendor ID 3076 and attribute ID 220), which can be used to set the privilege level for the ASA.

Now that the Cisco VPN 3000 library has been enabled I add the appropriate privilege levels to the users in my user file:

admin           Cleartext-Password := 1234QWer
                Service-Type = Administrative-User,
                Cisco-AVPair = "shell:roles=network-admin",
                Cisco-AVPair += "shell:priv-lvl=15",
                CVPN3000-Privilege-Level = 15

ops             Cleartext-Password := 1234QWer
                Service-Type = NAS-Prompt-User,
                Cisco-AVPair = "shell:roles=network-operator",
                Cisco-AVPair += "shell:priv-lvl=1",
                CVPN3000-Privilege-Level = 3

tom             Auth-Type := System
                Service-Type = Administrative-User,
                Cisco-AVPair = "shell:roles=network-admin",
                Cisco-AVPair += "shell:priv-lvl=15",
                CVPN3000-Privilege-Level = 15

And of course I need to restart the service again to commit my changes:

tom@freeradius:~$ sudo service freeradius restart
* Stopping FreeRADIUS daemon freeradius
   ...done.
* Starting FreeRADIUS daemon freeradius
   ...done.

You may wonder why I am setting the privilege level of the “ops” user to 3, instead of using level 1 like I did for IOS. The reason for this is that ASDM requires users to have a minimum privilege level of 2 to allow them to login. In addition, ASDM has a special button that makes it simple to setup the required command authorization for a monitor-only user like my “ops” user.

This is actually the next step in the procedure: I log in to ASDM as the admin user and then navigate to “Configuration > Device Management > Users/AAA > AAA Access > Authorization”. Next, I check the command authorization checkbox and set it to local. Then I click the “Set ASDM Defined User Roles” button to assign appropriate privilege levels to a predefined set of commands. Once these settings are applied, the following list of commands is added to the ASA:

aaa authorization command LOCAL

privilege cmd level 3 mode exec command perfmon
privilege cmd level 3 mode exec command ping
privilege cmd level 3 mode exec command who
privilege cmd level 3 mode exec command logging
privilege cmd level 3 mode exec command failover
privilege cmd level 3 mode exec command vpn-sessiondb
privilege cmd level 3 mode exec command packet-tracer
privilege show level 5 mode exec command import
privilege show level 5 mode exec command running-config
privilege show level 3 mode exec command reload
privilege show level 3 mode exec command mode
privilege show level 3 mode exec command firewall
privilege show level 3 mode exec command asp
privilege show level 3 mode exec command cpu
privilege show level 3 mode exec command interface
privilege show level 3 mode exec command clock
privilege show level 3 mode exec command dns-hosts
privilege show level 3 mode exec command access-list
privilege show level 3 mode exec command logging
privilege show level 3 mode exec command vlan
privilege show level 3 mode exec command ip
privilege show level 3 mode exec command ipv6
privilege show level 3 mode exec command failover
privilege show level 3 mode exec command asdm
privilege show level 3 mode exec command arp
privilege show level 3 mode exec command route
privilege show level 3 mode exec command ospf
privilege show level 3 mode exec command aaa-server
privilege show level 3 mode exec command aaa
privilege show level 3 mode exec command eigrp
privilege show level 3 mode exec command crypto
privilege show level 3 mode exec command ssh
privilege show level 3 mode exec command vpn-sessiondb
privilege show level 3 mode exec command vpnclient
privilege show level 3 mode exec command vpn
privilege show level 3 mode exec command dhcpd
privilege show level 3 mode exec command blocks
privilege show level 3 mode exec command wccp
privilege show level 3 mode exec command dynamic-filter
privilege show level 3 mode exec command webvpn
privilege show level 3 mode exec command service-policy
privilege show level 3 mode exec command module
privilege show level 3 mode exec command uauth
privilege show level 3 mode exec command compression
privilege show level 3 mode configure command interface
privilege show level 3 mode configure command clock
privilege show level 3 mode configure command access-list
privilege show level 3 mode configure command logging
privilege show level 3 mode configure command ip
privilege show level 3 mode configure command failover
privilege show level 5 mode configure command asdm
privilege show level 3 mode configure command arp
privilege show level 3 mode configure command route
privilege show level 3 mode configure command aaa-server
privilege show level 3 mode configure command aaa
privilege show level 3 mode configure command crypto
privilege show level 3 mode configure command ssh
privilege show level 3 mode configure command dhcpd
privilege show level 5 mode configure command privilege
privilege clear level 3 mode exec command dns-hosts
privilege clear level 3 mode exec command logging
privilege clear level 3 mode exec command arp
privilege clear level 3 mode exec command aaa-server
privilege clear level 3 mode exec command crypto
privilege clear level 3 mode exec command dynamic-filter
privilege cmd level 3 mode configure command failover
privilege clear level 3 mode configure command logging
privilege clear level 3 mode configure command arp
privilege clear level 3 mode configure command crypto
privilege clear level 3 mode configure command aaa-server

When I log in to ASDM as the “ops” user, I now properly get a privilege level of 3 assigned and I only see the monitor tab, not the configuration tab. I also retest the CLI access for the various devices to verify that these were not affected by the changes.

With this final tweak I now have FreeRADIUS properly set up to provide AAA services to all devices in my home and lab networks. Also, this post can serve as a “known-good” reference configuration for RADIUS implementations on different platforms.

转:Juniper SRX and Cisco ASA ---- 两种网络理念的搏杀

位置 —— 核心还是边界

在Juniper的理想中,网络是分区的。数据在两个区域之间流动,应该受到监管。所以我们在Juniper的配置中,经常能看到security zone这个概念。所有的策略都是在区域和区域之间执行功能,甚至包括VPN也是这样。这样的理念包含了下一代IP网络的特征,也就是状态化骨干网——一种理想化的骨干网络,可以消除很多现阶段看来很头疼的网络攻击。但是防火墙终究是防火墙,完美的状态化和精确的分布式计算Viking架构所能企及的高度还是有限的,最强的SRX现在有160G的带宽,同属Juniper的EX8200交换机背板有多少呢?我们的核心……160G,够么?

在Cisco的理想中,网络是分内外的。内部网络默认都是安全的,或者那些不安全的因素,应该丢给交换机(诸如风暴控制)路由器(RACL?)或者主机(UAC)去完成,防火墙就是一道内外网络之间的铁闸,我们要有很大的接口带宽,很强的IPSec接入能力,SSL VPN,我们还要会L2TP over IPSec。作为一个万能的小强,我们拥有一颗X86的芯……等等,X86?亲,您这是打算坑死在X86架构上么?性能呢?性能呢?5585X已经达到了40G!

面对防火墙在哪里的问题,Cisco明显是明智的。作为网络的出口,40G的处理能力已经足够强大,并且基于廉价的X86平台,Cisco搭上了Intel Xeon的顺风车。X86架构最大的问题就是运算量淤积——强大的内核和孱弱的IO,这种奇怪的组合正好可以应用在Firewall应用上。

架构 —— 分布式还是集中运算

Juniper是将分布式运算进行最彻底的公司。在Juniper所有的产品线当中,RE是一个奇怪的部件,如果直接拔掉,设备现有的转发完全不会停顿(……),有想象过一个动物被扭掉脑袋后还能走路的事情么?这就是分布式的力量。分布式可以轻易的提升处理能力,只要有槽位,SRX的处理能力就可以无止境的提升。SRX使用XLR的网络处理,每处理器32线程,其中24线程用于转发,具有10G处理能力。当一个机箱有多个XLR的时候,会有一个XLR成为ControlPoint,负责其他XLR之间的任务指派。

Cisco则一直停留在对称多处理,也就是SMP的工作上。因此ASA系列都是固定处理能力配置,固定型号的CPU频率和数量是固定的(除非您自己回家偷偷换)。ASA的实际处理能力实际上就是由搭载的处理器性能限定的。新一代的5585x借助了Intel Xeon的新一代处理器,处理性能相比起5580有了飞跃,这种飞跃,我认为是硬件体系的飞跃,而不是软件体系的飞跃。

架构上,Juniper的Viking明显是超越Cisco很多的。但是这只是从编程的角度上来讲。防火墙属于严密的逻辑设备,过度的分布式反而增加了设备的不稳定性——试想,当一个数据包需要穿行林林总总8、9块芯片才能完成一次转发,这些芯片当中任何一个出现瑕疵的概率,是不是比只需要穿过5个芯片要高很多呢?Juniper的HA比ASA的要弹性很多,我想,这可能也是为了弥补分布式计算带来的风险。

角色 —— 判官还是路由参与者

Juniper的SRX支持丰富多样的路由和VPN功能。为了更好的支持MPLS下的IPSec,SRX在较新版本的软件中支持了GET VPN,并且通过NHTB,在一定程度上模拟了DMVPN的功能。还有继承自卓越的T/M系列路由器的路由能力,MPLS支持和高级QoS支持,支持跨域的Option A/B/C选项。我们眼前的SRX就是一个全能的金刚,路由器能做的,它都能做,路由器做不了的,它也能做。

Cisco的ASA功能相比较而言就简单很多。也许ASA上也就十几条静态,外加一个缺省路由,就完成了所有的路由配置,或者,你想配置个CBWFQ,却发现只有policer可以用,没有bandwidth可以配置。如果想GET VPN和DMVPN,对不起,那是路由器的活儿。也许你真的想不出ASA在路由方面能做啥。没错,ASA的确不是路由器,那是个防火墙。嗯……“MPLS呢?”“MPLS是啥?”

从这一点区别上,我们更加可以看出这两个公司的区别。Juniper由于产品线的斑驳,无法向市场推出有针对性的产品,于是使用了单一产品功能大而全的策略。Cisco则很淡定的表示我们的ASA就是个安全设备,路由什么的有路由器。在这方面,分不出太多的高下,不过较少的软件功能,也许出错的概率会小一些吧。


Cisco是一个伟大的公司,它不断的在思考,网络应该是个什么样子,需要有那些技术去支撑。那Cisco去研究,去开发,适合推广的,就RFC标准化,成为业界的策略。而其他的大多数公司,都是在深挖RFC的内容,巴不得把每一个Option都做的天花乱坠,却很少自己去想,网络应该是一个什么样的东西。于是我们现在看到的网络,应该都是Cisco-liked的网络,因为只有Cisco在一直耕耘,而其他人,都在埋头追赶。

Tuesday, August 6, 2013

Windows XP Format a USB Flash Drive to NTFS file system

To enable NTFS on your USB Flash Drive drive (USB Flash Memory):

  1. Right click My Computer and select Manage.
  2. Open the Device Manager and find your USB drive under the Disk Drives heading.
    ntfs device manager
  3. Right click the drive and select Properties.
  4. Choose Policies tab and select the "Optimize for performance" option.
    ntfs optimazer
  5. Click OK.
  6. Open My Computer
  7. Select Format on the flash drive.
    ntfs system
  8. Choose NTFS in the File System dropdown box.
  9. Device Formatting is completed.
    ntfs
ntfs note
Important: To remove a device safely without data loss use a "safely remove hardware" procedure or Eject function from Windows Explorer.
Eject function from Windows Explorer

Thursday, August 1, 2013

15个步骤创立技术公司,并收获千万用户


摘要:6Wunderkinder建立时,只有两个人,办公即居住场所。1年后他们收获420万美元风险投资,3年后他们坐拥千万用户,产品为全世界使用。中间不乏挫折,但他们CEO有15锦囊傍身。
6Wunderkinder成立于2010年,是一家位于柏林的德国初创企业,公司创建一年后获得了Skype创始人设立的泛欧投资机构 Atomico投资420万美元。他们最早的产品是跨平台、基于云的任务管理工具——Wunderlist,用户可以使用它来制作详细的待办清单,并可以在朋友及同事之间分享这些代办事宜。随后该公司还发布了名为Wunderkit的项目管理软件,被认为是项目管理软件中的一匹黑马;然而随着用户的增多,Wunderkit暴露出来的问题也是越来越多,同时Wunderlist因多种问题陷入了困境。为此,该公司于2012年9月关闭了Wunderkit项目,基于用户的反馈致力Wunderlist的重新设计。而在2012年底,该公司正式推出Wunderlist 2版本,如今已获得上千万用户。近日6Wunderkinder的首席执行官Christian Reber回溯了自己的创业经历,并分享了创业成功的15个步骤。
以下为博文译文:
我19岁时前往柏林学习计算机科学及国际管理,最大的梦想就是开办一个对欧洲产生深远影响的全球技术公司。回溯创办已接近三年的公司6Wunderkinder,我发现事情的发展与预期存在着巨大的差异。但毋庸置疑的是,这段时间是迄今为止我最愉快的一段时间——一段无与伦比的历程。
作为6Wunderkinder的创始人兼CEO,我已经实现了我的梦想。通过Wunderlist这个国际化产品,我们建立了一个提高生产力的有效途径,无论是个人生活还是商业协作方面。虽然离成功还有一段距离,但是公司当下的状况还是另我满意的,同样公司未来的前景也非常值得期待。
许多学生、程序员、设计师及商业人士都会向我咨询公司创办的早期工作,同样他们也很想知道创办6Wunderkinder过程中所遇到的挑战,以及作为1家40人公司老板,创造的产品有上千万的人使用并被称为市场领导者的感觉。我能理解这些提问者的感受,年轻的时候我也有过这些疑惑,并一直伴随到现在,这里仍然有许多我需要学习的东西。
所以我决定写一系列的博客,来分享我学到的知识以及鼓励有这个想法的人去开始自己的探险。当然企业构建和产品研发的初期阶段,日子永远都不会轻松。因此就有了这个创办技术公司的15个课程。
课程一:大的梦想,小的起步
如果你想创办自己的公司,但是却不知道应该做些什么,甚至是不知道时机是否允许,那么将你的时间用来学习。创建一个快速增长的技术公司是极具挑战性的,需要各种各样技能。学习的过程可以让你结交所需要的人才,同样也可以认清自己的长项。
如果你非常热爱编程或者业务,那么深入学习其中的一个。创始人的技能集通常决定了公司的关注点和企业文化,在6Wunderkinder,我们一直寻找对我们业务有深刻理解的人,然后与之分享我们的创业精神;同样我们有着自己的公司文化——“Wunderkind必须是某个方面的统治者”。所以作为一个创始人,你必须花费一部分时间去挖掘你所需的人才,然后用激情捕获他。
成功的关键因素绝不是学位。当然如果有针对性地选择了大学,你将会获得很多学术以外的东西。如果你就读大学的强项符合你的人才标准,那么你会认识很多有思想的同学,并组建让你获益良多的关系网。
别相信中途退学的人会成为颠覆性的企业家,有很多的例子可以否定这个论调。早期的投资者非常看重创始人的教育程度以及产业经验,如果你想创建自己的公司,这一点必须注意。 美国有很多适合企业家的大学 ,最著名的就是哈佛(Mark Zuckerberg和Bill Gates的母校)以及斯坦福(Elon Musk和Larry Page的母校)。
坐落在硅谷的斯坦福大学
德国的一些大学同样是企业家的摇篮 ,这里有一些我的专攻方向:
根本问题在于:建立公司、管理团队并且维持一个非常成功的国际业务是很不容易的,需要海量的知识;当然可以通过一系列的途径来学习这些知识,取决于具体情况,选取一所合适的大学,从而获得你想要的人才并打造自己的团队。如果能在校园里发现你的联合创始人,那就更加的完美了,创始人知识和技能的投资同样意味给梦想投资。
课程二:工作是为了学习,而不是赚钱
经过努力的学习和艰苦的训练后,是时候该扩充你的技能集了。虽然对业务上某个方面的精通是非常必要的,但是公司创建和运营所需要的知识面是非常广泛的。开创技术公司需要在产品设计、时机选择、趋势预测及市场把握上有着很深的造诣,这些只能通过实际工作来磨练。
在我16岁时阅读了 《Rich Dad, Poor Dad》一书,主要讲述了富人如何教导孩子对金钱的认识。我甚至还阅读了儿童版,这本书我非常喜欢!我将它推荐给了好几个朋友,因为它包含了一个真理:“Work to learn,not to earn。”
这本书可以帮助我们理解成功领导者、公司所具备的基本特质,也是通往成功之路。我曾担任多个企业的雇员及合作伙伴,包括不同的初创公司和大型企业。到柏林以后,我通过自己的设计及网络代理从事这些工作。3年时间,我们几乎涉及过所有业务类型。
这段时间让我们获益很多,同样也是最接近破产的时期。我们没有赚到很多钱,但是足以支撑我们的开销(租金、食物及学费)。之所以能学到这么多,因为我们有一个清晰的目标:我们专注的不是钱,而是知识。这些年我们只有一个目标,那就是创办技术公司而不是代理,我们一直为之努力着。
6Wunderkinder成立时,我们将做代理时学到的所有知识都运用到了新公司和产品。我们了解如何赢得客户,如何正确管理项目,以及该雇佣或者解聘什么样的职员。最重要的是,我们学到了如何面对失败——所有技术公司的基础。回忆往昔,学会面对失败是我们最大的收获。每失败一次,你将变得更加有韧性。只要从事自己喜欢的事情,你将会一直成长。
人的一生中能有一段时间为自己拼搏是非常重要的,然而这并不意味着你就要去做中介。这里有很多选择以获得类似的体验,这里推荐从两个方面学习:第一,在大型、高盈利如Apple、微软及Google这样的技术企业任职;第二,和一个小的,但是成长飞快的初创公司一起成长。对于后者,你可以在另起炉灶前加入类似6Wunderkinder、SoundCloud、Wooga及 ResearchGate这样的初创公司。
经历过这两种公司,你可以获得他们遇到挑战时的应对经验以及他们成功的第一手资料。了解各种公司之间的区别,知道他们如何建立产品、以及如何做长期的管理和领导。你不可能知道所有的事情,但是你可以学习其中大部分,这将给以后自己创办公司带来巨大的帮助。
作为创始人,你的注意力应该放到正确的思路和产品上,正确的定义公司文化同样至关重要。通过在不同公司执行各种任务,你将了解到你希望建立什么样的公司。你同样会学习到你需要拥有什么技能的联合创始人及雇员,通过设计、产品及销售进一步丰富自己的经验。 
课程三:加入社区,结识创始人
与具有闯劲并且志同道合的人结交,从而为自己的道路塑形。大多数我的朋友都是开发者、设计师及企业家,他们在为不同的初创公司效力。当你迈入一个新的城市,请不要吝啬结识创始人的时间,花时间去做吧。Leo Widrich,Buffer的联合创始人之一,写了一篇非常有意义的文章—— 花时间进行交流的重要性 ,其中引用了企业家Jim Rohn的思想:“You are the average of the five people you spend the most time with。”
如果你创建技术公司,你将与世界上那些高智商、有雄心及高技巧的人直接竞争。这是个非常大的挑战,而参加一个由企业家、设计师及开发者组成的社区就变得至关重要。
幸运的是,欧洲,尤其是柏林拥有很棒的一个社区,并且在快速的成长着。但是当我第一次进入这个社区时,我不认识任何初创公司相关人员,没有任何在社区结交这些创始人或者投资者的经验。对于这种情况,你必须尽快适应并融入他们。
除下与创始人交流,与行业先驱者、导师交流也是必不可少的。多多交流,并向他们学习,你将会发现与他们沟通其实比想象中更容易。我花费了大把的时间去了解这些企业家,并且观看他们在YouTube上的采访视频,这里可以在PandoMonthly、Foundation、Stanford’s Entrepreneurship Corner和This Week in Startups上多看一些企业家的采访。
使用社交工具多关注一些创始人、CEO、产业领导者、风险投资家,了解他们的事迹,以及从事的事情,这将帮助你了解趋势及重要话题。多读一些业界成功人士的博客同样会让你受益良多。
课程四:为公司选择一个合适的地址
当我在柏林创建自己的第一个公司时,我和联合创始人在我的公寓里工作及居住。这个时候根本不需要专业的办公室,我们在起居室中完成了自己的成品。工作场所很廉价,但是我们度过了一段非常快乐的时光。当时我们在柏林的市中心Mitte,不断有人过来交流。这也是早期我能收获许多创始人友谊的理由,并且我相信如果在初创公司云集的地方租一个办公场所将会很容易结识到有思想的朋友,并且分享创意。互相鼓舞,齐肩并进,一切都变得轻松、愉快起来。
初创公司最主要的聚集地无疑是旧金山。这是个疯狂的城市,挤满了科技企业,随时都可能诞生下一个大事件。但是对于首次创业者来说有一个巨大的挑战必须面对:开销高的难以置信,同时你需要与世界上最著名的技术企业争夺人才。如果你有幸发现他们,那么你将花费更多的金钱去聘用他们,高于世界上任何一个地方。对此,Jason Evanish发表了一篇很棒的博客——迁往旧金山之前必须了解的25件事
如果你第一次进行创业,旧金山可能是最不适合去的城市。幸运的是,不是所有技术公司聚集地都如旧金山那么的贵,还有许多城市也很适合创业,纽约、特拉维夫以及柏林同样聚集着许多创业公司。位置对公司非常重要,如果是互联网或者软件公司,必需慎重考虑你的选择。我们基于以下几点选择了柏林:
1. 柏林是否是人才的聚集地,并且吸引着全世界的人才赶来?
我们希望公司的人才分布有着合适的比例——既不缺乏经验老道的员工,也不缺乏有天赋的年轻人。Wunderlist的成功帮助我们吸引到更多的顶尖人才,但是柏林同样有着自己的魅力——地下音乐、顶尖的艺术画廊、时尚的酒吧以及廉价的房租。在过去一些年里,柏林吸引了来自世界各地的人才,包括开发者、设计师、营销人员以及创造性人才。
2. 在柏林的开销有多少?
柏林是全世界消费最低,生活标准最高的首都,在临近市中心的地方工作及生活都是容易负担的,即使当下这个城市在飞速的发展。
3. 在人才招聘上的竞争对手?
我们公司创办之初,只有为数不多的国际技术公司坐落于柏林,最著名的就是SoundCloud。柏林当时聚集了大量的技术人才,并且很容易聘请。而当下竞争已变得激烈,因为你要与许多初创公司争夺;但是对比旧金山,仍然好了很多。
4. 柏林的地域文化是否符合我们的业务?
对于初创公司来说,柏林唯一胜过旧金山的地方就是创业态度。每个人都在讨论创业,每个人都在参与创业。更加的生机勃勃,柏林在迎头赶追。我们决定在柏林开始的原因之一也是想共创柏林的创业文化,追赶美国。在柏林,多数的初创公司都位于Mitte、Prenzlauer Berg 以及Kreuzberg。试着在这些地方租一套公寓,如果你的预算紧张,Wedding也不错。这些地方不仅是政治中心,同样风景优美并适合居住。如果你需要一个办公室,可以去寻找一个共同办公场所,柏林有很多:Betahaus、Ahoy!、co-up、mobilesuite、Raumstation等。
课程五:在初期确定想法的优劣
作为创始人,在初期我们有大把的产品思想,甚至每天都会产生新思想。其中有一些看起来很有前景,但是只有少部分能真正通往成功之路、可以快速成长并带来丰厚的效益。
在我们开始Wunderlist之前,我们尝试过了一些不同的产品和想法;最终确定解决一直困扰我们的问题:一个实用的工具来组织我们的个人生活和业务。之前我们从未使用过to-do应用,但是我们使用过项目管理系统来组织我们的项目、与客户协调和交流。我们尝试过很多解决方案,但是一直不满意。我们果断建立了自己的解决方案并且认识到,如果我们能做好,那么这将变成我们自己的业务。
我们用过的大多数产品付费都非常的高,但是有一个共同的特点——使用门槛高、界面丑陋并且不易整合。这些问题就是我们想弥补的地方,但是这个市场上有一个更大的机遇——许多人并未发现。世面上大多数的项目管理系统对于项目组织来说都是个非常强大的解决方案,但是他们缺乏直观设计、复杂的定价,并且难以在现实生活当中使用。没有人真正在生活中使用过项目管理方案,但可以肯定的是,这里存在着巨大的需求。
我们从中认识到,发明一个简单易用(像to-do app一样简单)工具的商机,但是必须具备项目管理软件的强大功能。如你所想,Wunderlist是我们的明星产品,用来解决大型问题最简单的途径——帮助人们打理私人生活和业务。一个简单的方案,却具备服务上千万人的潜质。一旦我们证明了这一愿景,我们就能够按部就班的改善我们的产品。那么你如何确定一个想法有改变世界的资质?
首先要明确自己需要解决的问题,然后思考一个聪明且智能的解决方案。即使很大的问题也拥有众多(成千上万)的简单解决方案,你的工作就是从中寻找一个最好的。你需要成为你最大的评论家,和你的团队一起将想法推至极限。需要注意的是,一个想法最初可能会觉得不错,但是当你深入探讨时就会觉得很一般。很棒的想法并不一定是前所未有的,有些时候只是现有方案的一些改良。而我们的情况就是使用不同的途径去实现生产力软件,而不是重造车轮。
我们并没有深入研究生产效率的提升,而是让生产工具变得更加简单、人性化及增加人们的使用乐趣。同样我们认识到及早的投入使用并且获得反馈是非常重要的;反馈是必须去了解的,但不用听从所有人的意见。要学会识别唱反调的人,并且忽略他们。寻找那些给你有价值建议的人,不要想做出一个所有人都称赞的产品,因为这样的产品在大多数情况下并不存在。
Kevin Systrom曾以Instagram为例去激励创业者,并且分析了成功的原因。我认为Instagram之所以能成功,主要因为它解决了以下3个问题:
  • 在Instagram之前,捕捉漂亮的照片是很难的。iPhone的摄像头和手机上的照片过滤器解决了这个问题。
  • 在Instagram之前,上传照片是很难的。同样iPhone和Instagram的智能上传解决了这个问题。
  • 在Instagram之前,分享图片是很难的。Instagram整合了Tumblr、Facebook、Foursquare及Twitter让分享变得简单。
如你所见,这里涉及的不仅是发现问题,也包括寻找更好的解决方案。这一点非常困难,并且是个漫长的过程。当然这些能力可以通过学习更多的用例以及更多的书籍提升,然而作为一个创始人,你还需要相信自己的直觉。
课程六:认清趋势和市场
在Wunderlist发布时,Dropbox和Evernote是两个增速最快的云服务。他们都证实了将一个普通应用扩展到巨量客户的可能,两家公司的成功将云这个趋势传入用户、记者以及最重要的投资者。云本身就是技术产业的一个巨大主题,他帮助我们获得了大量的关注,并帮助了我们业务的形成。当我们最早筹集资金为建立新的项目管理工具时,投资者都保持了沉默。严肃的说,每当我们提及“项目管理”这个词,投资者的眼神就开始摇摆,没人愿意相信我们。
但是当我们把项目重定义为“云中的to-do app”,反应则大所不同。我们解释了Dropbox和Evernote如何构建一个新型的市场——一个如此大并且充满金矿的市场。这就是云业务周边的趋势,同样也是围绕着生产力应用的市场。当你建立起自己的业务,尝试认清当下的趋势,并且给其附上一件发光的外衣。在我刚去柏林时,趋势的主题是电子商务、社区以及SaaS,然后演变成社交、移动和云。趋势可以让你获得关注,但是一定要当心——趋势只是暂时的,而你的目标是创建一个长久的公司。
作为创始人,你需要为公司设立一个长期的目标。你的产品需要长期的给人们带来利益,不仅是你的客户,还有雇员,这里必须注意不要让产品成为趋势的奴隶;就像冲浪,你不可以去改变大海,你需要做的是观察并且了解水势,在最正确的时机下脚然后乘浪而起。
Skype的联合创始人Niklas Zennström在Wunderlist发布一年后进行了投资。Skype诞生于瑞典,他与我交流的第一件事情就是关于“World Domination”,开始我并不能理解,所以他这么对我说:
着眼Skype,如果我们只想在瑞典获得成功,那么最后必将与成功失之交臂。将Wunderlist打造成跨语言、跨国界的产品。支配全世界!
这对我来说是个非常关键的建议。在Wunderlist发布之后,我们开源了它的第一个版本,期望在我们的社区中获得帮助。仅过去了几天,Wunderlist就被国际化了20多门语言。现在它是个国际产品,遍布US、Asia、Europe以及Africa。我们从中学到了一点,德国是产品的诞生地,而不是产品的唯一市场。我们的市场是全世界,我们是在为整个人类做产品。
随着我们的成长,我们越来越了解世界各地的差异和文化。迄今为止,产品最受欢迎的国家为US、Germany、United Kingdon、Netherlands、China和Japan,但是这些国家都有着显著的差异。美国最容易货币化,但是很难得到关注。
在将想法付诸现实前务必做好前期工作,清楚你的市场究竟有多大,清楚在哪个国家可以获得最快的增长。不只在你的国家,建立全球范围内的品牌和产品,你的市场是整个地球。
译文链接:
15 steps to launch your own startup in Europe - Part 2(编译/仲浩 审校/周小璐)

YouTube Channel