Trema Day #1ã§OpenFlow 1.3ã«ã¤ãã¦æã£ããã¨
Trema Day #1ã«åå ãããã¾ã£ããã¨ããé°å²æ°ã®ä¸ãTremaã«éããSDNé¢é£ã®ããããªçºè¡¨è´ãã¦ä¼æ¥ãæ½°ãã¦ãååå ãåããããã®ä¸ã§OpenFlow 1.3ã®è©±ãããã¤ãåºã¦ããã®ã§ãã¾ã¨ãã¦ããããã¨æããå½æ¥ã®æ§åã¯usté²ç»ããã¦ããã¨ã®ãã¨ãªã®ã§ãã¾ã è¦è´ã§ããã¨æãã
1.0ãã1.3ã¸ã®å¤æ´ã«ã¤ãã¦ãæ©è½ã¬ãã«ã§IPv6ãMPLSãPBBãªã©ã«å¯¾å¿ããã¨ããã®ã¯ãã¡ãã¡ã§è³ã«ããã®ã§ãããã§ã¯è¸ã¿è¾¼ã¾ãªããã°ã«ã¼ããQoSã®ãããããå ·ä½çã«ã©ã使ãã®ããã¾ãã¡åãã£ã¦ããªãããå人çã«ã¯äºæ³ä»¥ä¸ã«ãããã³ã«ãå¤ãã£ã¦ããã¨ããå°è±¡ãå¼·ãåããã詳ããã¯å¾ã§æ¸ããã©ãpacket inã«é¢ããé¨åã¯ç¹ã«å¤ãããããããªãããªãç¾å®ã«å³ãããã«å¤æ´ãããã®ã ã¨ã¯æããã©ãTremaéçºã®ä¸å¿äººç©ã§ããé å ¯ããã¯ã1.0ã¨1.3ã®äºææ§ãåããªããã³ã³ããã¼ã©ãä½ãã®ã¯ç¡çãããªããã¨ãã£ããã£ã¦ããããã®ã¬ãã«ã®å¤æ´ããã®é »åº¦ã«ããããã¨ã確ãã«ãã³ãã¯çãã¦æ¥ãããªãããªã1.3ã§ä»æ§çå®ããã¼ã¹ãã¦ã³ãã¾ãããã¨ããONFã®å¤æã¯ç´å¾ã§ããã
packet inã¯OpenFlowãããããæè»æ§ã®èã§ãããOpenFlowãåºã¦ããã¨ããããã¼ãã¼ãã«ã¯proactiveã«ãreactiveã«ãè¨å®ã§ãããã©ãpacket inã使ã£ã¦reactiveã«ããã®ãOpenFlowæµã¿ããã«ç§ã¯åãåã£ãããã®å¾ãæ¬å½ã«ãããªã®ããªã¨æ¶ã ã¨ãã¦ãããã©ãComSys 2012ã§è¤ç°@NTTããããpacket inãããè² ããã¨ããã®ãè¬æ¼åé ãããã£ããã£ã¦ãã¦ãã¹ãããªãããOpenFlowã ããä½ã§ãã§ãããããããªãã¦ãé©ç¨ã§ããç¯å²ã¨ãããã®ãå¾ã ã«æããã«ãªã£ã¦ããã®ã ãããOpenFlowã®ä»æ§ãããã«åããã¦å¤ãã£ã¦ããã®ã ã¨æãã@tsuboiããã«ããã¨ãã¯ã©ã¦ã/éä¿¡äºæ¥è ãOpenFlowãé©ç¨ããã¨ãã®åæ©ã¨ãã¦ãéç¨ã®èªååã大ãããreactiveã§ã¯ãèªååã®é»å®³è¦å ã«ãªããããªãã®ã§ãproactiveãä¸å¿ã«ããã¢ã¼ããã¯ãã£ã¨ãã¦æ¤è¨ããç´ããã®ã ããã¨ã®ãã¨ã§ããããªãã»ã©ã
ã¾ã1.3ã«ãªãã¨ãããã©ã«ãã§ã¯packet inã¯ã³ã³ããã¼ã©ã«ä¸ãã£ã¦ããªããããã¯çµæ§è¡æçã ã£ããpacket inãå¿ è¦ãªå ´åã¯ãã³ã³ããã¼ã©ãæ示çã«flow modã§è¨å®ããå¿ è¦ããããpacket inã«ä»å±ããæ å ±ãï¼å¾è¿°ããããã«ï¼å¤ãã£ã¦ãã¦ãè¥å¤§åã®å¾åã«ãããå½ç¶ã³ã³ããã¼ã©ã®è² è·ã¯å¢ãããããã§ã»ãã¥ã¢ãã£ãã«ä»¥å¤ã«ãAuxiliary Connectionsï¼ããã¯UDPï¼ï¼ã使ã£ã¦ãpacket inããªããã¼ããããã¨ãã話ãããããã ãã¾ãã1.0ã®flow modã¯ããããããã¢ã¯ã·ã§ã³ãå®è¡ããã¨ããåç´ãªãã®ã ã£ãããã¤ã³ã¹ãã©ã¯ã·ã§ã³ãå ¥ã£ã¦ãã¢ã¯ã·ã§ã³ããã¤ãã©ã¤ã³åãããã¨ãå¯è½ã«ãªã£ããä¼å ´ããã¯æ¬å½ã«ãã¼ãã¦ã§ã¢åã§ããã®ãããããªãä½æ®µï¼ã¨ãã質åãåºã¦ãã*1ã
ãã¨ã¯ã¹ã¤ããã®ãã¼ãæ å ±ãfeatures replyã§ä¸ãã£ã¦ããªãã®ã§ãèªåã§æ¤ç´¢ããå¿ è¦ãããã¨ãããã¶ã大è¦æ¨¡ãã¼ã¿ã»ã³ã¿ã§ã®éç¨ãè¦æ®ããå¤æ´ã ãããã©ãTremaã¢ããªãæ¸ã人ã¯æ°ãã¤ããå¿ è¦ãããã
話ã¯å¤ããããOpenFlow対æï¼ã¨ãã¦ãJuniperãCiscoããIETFã§æ¨æºåãé²ãã¦ããI2RS (Interface to the Routing System)ã¯ã¼ãã³ã°ã°ã«ã¼ãã®ååãæ°ã«ãªããä½ã§ãããã°ã©ããã«ã«å¯¾ããæºãæ»ãã¨ãã¦ãã©ã®ãããã«çå°ç¹ãè¨å®ãã¦ããã®ã ãããã
ã¡ãªã¿ã«ä¸ã®åçã¯æ親ä¼ã§ããã£ãTrema Tã·ã£ããpacket_inæ§é ä½ã®å®ç¾©ããªãTrema?ã¨æã£ãããTremaç¬èªã®æ½è±¡åãå ¥ã£ã¦ããã®ã§ãOpen vSwitchã®ãã®ã¨ã¯éãããã ãTã·ã£ãã«ãããTremaã®å®ç¾©(src/lib/openflow_application_interface.h)ã¯æ¬¡ã®éãã
typedef struct { uint64_t datapath_id; uint32_t transaction_id; uint32_t buffer_id; uint16_t total_len; uint16_t in_port; uint8_t reason; const buffer *data; void *user_data; } packet_in;
ããã«å¯¾ãã¦ãOpen vSwitchã®å®ç¾©(include/openflow/openflow-1.0.h)ã§ã¯ãããªãã
struct ofp10_packet_in { ovs_be32 buffer_id; /* ID assigned by datapath. */ ovs_be16 total_len; /* Full length of frame. */ ovs_be16 in_port; /* Port on which frame was received. */ uint8_t reason; /* Reason packet is being sent (one of OFPR_*) */ uint8_t pad; uint8_t data[0]; /* Ethernet frame, halfway through 32-bit word, so the IP header is 32-bit aligned. The amount of data is inferred from the length field in the header. Because of padding, offsetof(struct ofp_packet_in, data) == sizeof(struct ofp_packet_in) - 2. */ };
ãªãã»ã©ãdatapath_idãtransaction_idãuser_dataããããTremaã§ã¯è¿½å ããã¦ãããã¡ãªã¿ã«OpenFlow 1.3ã§ã¯table_inãcookieã追å ãããin_portãåé¤ããã¦ãããpacket_inã§in_portã¯ããããªãã®ã§matchãæ¤ç´¢ããã¨è¨ããã¨ãããã
Open vSwitchã®masterãã©ã³ãã«ã¯openflow-1.3.hã¯å«ã¾ãã¦ãããã©ã次ã®long term supportã«ãªã1.9ç³»ã§ã¯OpenFlow 1.3ã¯å¯¾å¿ãããªãããããOpenFlow 1.3対å¿ãããã£ã¦ããã®ã¯ããå°ãå ã«ãªãã®ããªãTremaã1.1ã¨1.2ãé£ã°ãã¦1.3対å¿ãããã¨ã«å¯¾ãã¦ãä¼å ´ã§ã¯æ¦ãç´å¾ã¨ããåå¿ã ã£ããPica8ã¯æè¿ã®Updateï¼PicOS 1.6ï¼ã§Open vSwitch 1.7.1ãã¼ã¹ã«ãªããOpenFlow 1.2対å¿ã¨å»ãã§ãããAcctonãOpenFlow 1.2対å¿ã¨è¨ã£ã¦ããã¯ãï¼Acctonã®ã¹ã¤ãããOpen vSwitchãã¼ã¹ãªã®ããªï¼ï¼ããã®è¾ºã«ã¯ãããã大人ã®äºæ ããããã ããã
Trema edgeãæ£å¼ãªãªã¼ã¹ãããã°ãpacket_inã®å®ç¾©ã1.3対å¿ãããã®ã§ãæ°ããTã·ã£ããä½ãããã¨ã®ãã¨ãTrema Dayã§LTããããTremaã«ããããæãããããããTã·ã£ããããããããã¡ãªã¿ã«Trema Dayã¯ãä»å¾ã3ã¶æã«ä¸åº¦ãããã®é »åº¦ã§éå¬äºå®ã¨ãããã¨ã ã
å人çã«ã¯OpenFlowã®仕様書ãä¸åº¦çé¢ç®ã«èªãã§ã¿ããã¨æã£ãã
ï¼è¿½è¨ï¼ã¯ã¦ãã«Plan9æ¥è¨ãªã®ã«Plan 9ã«ã¤ãã¦æ¸ããã¦ããªããããªããã¿ãããªãã¨ãæ¸ããã¦ããã®ã§ãã¡ãã£ã¨ã ãè足ãTrema Dayã®æ親ä¼ã§Plan 9ã¨acmeã®è©±ãåºã¦ãããããã次åã¯å®´ä¼è¸ã¨ãã¦ãacmeã¸ã®æãèªãããï¼ï¼
*1:ONFã®ä»æ§çå®æ¹æ³ã«ã¤ãã¦ã話é¡ã«ä¸ã£ããã¹ã¿ã³ãã©ã¼ã大å¦ãé³é ãåã£ã¦ãã1.0ã¾ã§ã¯ãå®è£ ããªãã¨æ¨æºåããªãã¨ããããªã·ã ã£ããããããONFè¨ç«å¾ãå®è£ ããªãã¾ã¾1.1ããªãå´©ãçã«ãªãªã¼ã¹ããã¦ãã¾ãã¨ããããæ £ç¿ã¨ãªã£ã¦ãã¾ã£ããONFå ã®åé¢ä¿ãã©ããªã£ã¦ãããç¥ããªããã©ããã¼ãã¦ã§ã¢ãã³ããããNiciraã®ãããªã½ããã¦ã§ã¢ãã³ãã®åã®æ¹ãå¼·ãããã¼ãã¦ã§ã¢åãå°é£ãªãã®ãå ¥ã£ã¦ãã¾ãã®ããªã¨æã£ããã